게임용 데이터 중심 디자인을 다루는 기사를 많이 읽었습니다. 다음과 같이 보입니다.
- 하드 코딩 없음
- 엔진에 게임 특정 코드가 없습니다
- AI, 컷씬 등을위한 스크립팅.
- 재사용 성을위한 코드 일반화
- 구성 요소 설계
- 모듈성
- 낮은 커플 링
- 편집자 (데이터,지도, 스크립트 용)
- 외부 데이터 검색
- 상수 텍스트 파일에 보관 (
.ini
또는 기타) - 디자이너의 스크립팅 및 조작을 위해 편집기를 통해 데이터 노출
이제 내 질문은,이 이해가 맞습니까?
게임용 데이터 중심 디자인을 다루는 기사를 많이 읽었습니다. 다음과 같이 보입니다.
.ini
또는 기타)이제 내 질문은,이 이해가 맞습니까?
답변:
이것이 올바르지 않다고 말하고 싶습니다. 데이터 기반 디자인에서 가장 중요한 아이디어는 데이터를 수정하거나 업데이트하는 것과 데이터를 분리하는 것 입니다.
따라서 표준 OO 심층 계층 구조에서 다음과 같이 진행하십시오.
class MyCreature{
vector position;
void update(){ position += 1; }
}
별도의 상태와 시스템으로
class CreatureState{
vector postion;
}
class MovementSystem{
list<CreatureState> states;
void update() {
for each CreatureState state in states {
state.position += 1;
}
}
현재 가장 영향력있는 DDD 패러다임에는 Entity Systems가 있습니다. 찾아 볼만한 멋진 자료는 다음과 같습니다.
http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/
http://entity-systems.wikidot.com/
물론 모든 패러다임 / 아이디어와 마찬가지로 정확한 정의가 없으며 DDD를 말할 때 모두가 동일한 아이디어를 이해하는 것은 아니지만 이것이 내가 가장 중요하게 생각하는 것입니다.
나는 당신이 정의를 지나치게 복잡하게 생각합니다. 글 머리 기호 목록에 포함 된 많은 원칙 은 소프트웨어 엔지니어링 관점에서 좋은 원칙 이지만 반드시 "데이터 중심"정의의 일부는 아닙니다. 이들 중 많은 부분이 겹치거나 데이터 기반 접근 방식을 사용하여 가장 잘 구현 되지만 데이터 구동 방식을 구성하지는 않습니다.
데이터 중심 소프트웨어 개발의 실제 정의는 일반적으로 상당히 간단합니다. 프로그램은 주로 코드 내에 사전 정의되고 고정 된 일련의 단계를 거치지 않고 일부 외부 정보 (일부 레벨 데이터, 스크립트 데이터 등)를 기반으로 작업을 수행합니다. 제어 흐름을 결정하는 자체