내 질문은 이것입니다 :
어떻게 글로벌 컨텍스트 데이터를 저장하겠습니까? 엔터티 구성 요소 시스템의 월드 데이터 정보, 현재 월드 타임 등?
저는 C ++에서 Dwarf Fortress 스타일의 개방형 세계 시뮬레이션 게임을 구축하려고 노력하고 있습니다. 나는 재미를 위해 엔터티 구성 요소 스타일의 게임 엔진을 구축했으며 현재 내가 원하는 모든 기능에서 어떻게 작동하는지 알아 내려고 노력 중입니다. 표준 게임 플레이 (렌더링, 물리학, 개체 별 구성 요소 데이터 등) 외에도 모든 관련 시스템이 액세스 할 수있는 일부 글로벌 컨텍스트 데이터 (예 : 현재 연도와 같은 세계 데이터)를 갖고 싶습니다. , 지구 온난화가 일어나고 있는지 여부, 세상을 시뮬레이션하는 것과 관련된 모든 것). 원래는 "세계"구성 요소를 만들려고 생각했지만, 많은 다른 시스템이이 논리적 "전역"데이터에 액세스해야하는 경우에는 의미가없고 어려워 보입니다.
"세계"컴포넌트를 갖는 것이 이치에 맞습니까? 아니면이 데이터를 다른 방법으로 저장해야합니까?
또한이 데이터를 단순히 전역으로 만들어서 사용하려는 모든 시스템에 액세스 할 수있는 방법을 생각했습니다. 그것은 일반적으로 엔티티 구성 요소 원칙을 위반하는 것처럼 보이고 다른 이유로 지저분 할 수 있지만 실제로는 효과가 있다고 생각했습니다.
내가 생각한 또 다른 것은 실제로 관련 세계 컨텍스트 데이터를 시스템 자체에 직접 포함시키는 것입니다. 예를 들어, 구성 요소가 있거나없는 AgeSystem
것을 가진 모든 엔티티를 "연령" getsWeakerAsTimePasses
한 경우이 시스템은 시간 경과를 계산하는 데 사용할 멤버 데이터로 월드에 대한 관련 시간 데이터를 직접 저장할 수 있습니다. 이 세 번째 옵션은 내가 가장 좋아하는 것이었지만 브레인 스토밍에서 나에게 일어난 일이었습니다.
누구든지 조언 할 수 있습니까?