나는 구성 요소 기반 엔터티 시스템에 잠시 동안 관심이 있었고 그것에 대한 수많은 기사를 읽었습니다 ( 불면증 게임 , 표준 Evolve Your Hierarchy , T-Machine , Chronoclast ...).
그들은 모두 다음과 같은 외부에 구조를 가지고있는 것 같습니다.
Entity e = Entity.Create();
e.AddComponent(RenderComponent, ...);
//do lots of stuff
e.GetComponent<PositionComponent>(...).SetPos(4, 5, 6);
공유 데이터에 대한 아이디어를 가져 오면 (이것은 지금까지 본 데이터 중에서 중복되지 않는 측면에서 가장 좋은 디자인입니다)
e.GetProperty<string>("Name").Value = "blah";
예, 이것은 매우 효율적입니다. 그러나 읽고 쓰는 것이 가장 쉬운 것은 아닙니다. 그것은 매우 어렴풋하고 당신을 대항합니다.
나는 개인적으로 다음과 같은 일을하고 싶습니다 :
e.SetPosition(4, 5, 6);
e.Name = "Blah";
물론 이러한 종류의 디자인을 얻는 유일한 방법은 엔티티-> NPC-> 적-> 플라잉 적-> 플라잉 EnemyWithAHatOn 종류의 계층 구조로 돌아 오는 것입니다.이 디자인은 피하려고합니다.
여전히 유연하면서도 사용자 친화적 인 수준을 유지하는 이러한 종류의 구성 요소 시스템에 대한 디자인을 본 사람이 있습니까? 그리고 그 문제에 대해 (아마 가장 어려운 문제) 데이터 스토리지를 좋은 방법으로 돌파 할 수 있습니까?
사용자 친화적이지만 여전히 유연한 구성 요소 기반 엔터티 시스템에는 어떤 설계가 있습니까?