모험 게임을 계획 중이며 스토리 진행 상태에 따라 레벨의 동작을 구현하는 올바른 방법을 알 수 없습니다.
내 싱글 플레이어 게임은 플레이어가 게임의 다양한 지점에서 마을 사람들과 상호 작용해야하는 거대한 세상을 특징으로합니다. 그러나 스토리 진행에 따라 플레이어에게 다른 것들이 제공 될 것입니다. 예를 들어 길드 리더는 도시 광장에서 도시 주변의 다양한 위치로 위치를 변경합니다. 문은 특정 루틴을 마친 후 하루 중 특정 시간에만 잠금을 해제합니다. 다른 컷 스크린 / 트리거 이벤트는 특정 마일스톤에 도달 한 후에 만 발생합니다.
나는 처음에 switch {} 문을 사용하여 NPC가 무엇을 말해야하는지, 무엇을 찾을 수 있는지를 결정하고 전역 game_state 변수의 상태를 확인한 후에 만 퀘스트 목표를 상호 작용할 수있게 만드는 것을 생각했습니다. 그러나 객체의 동작을 변경하기 위해 많은 다른 게임 상태와 스위치 케이스를 빠르게 실행할 수 있다는 것을 깨달았습니다. 이 switch 문은 디버깅하기가 매우 어려우므로 레벨 편집기에서 사용하기가 어려울 수도 있습니다.
따라서 여러 상태의 단일 객체를 갖는 대신 단일 상태의 동일한 객체의 여러 인스턴스가 있어야한다고 생각했습니다. 이런 식으로 레벨 에디터와 같은 것을 사용하면 NPC 인스턴스를 다른 모든 위치에 배치 할 수 있으며 각 대화 상태에 대한 인스턴스도 배치 할 수 있습니다. 그러나 그것은 레벨 주변에 떠 다니는 비활성의 보이지 않는 게임 객체가 많이 있다는 것을 의미합니다. 메모리에 문제가 있거나 레벨 에디터에서보기가 어려울 수 있습니다.
또는 단순히 각 게임 상태에 대해 동일하지만 별도의 수준을 만듭니다. 이것은 가장 깨끗하고 버그가없는 방식으로 작업을 수행하지만 레벨의 각 버전이 실제로 동일한 지 확인하는 대규모 수동 작업처럼 느껴집니다.
내 모든 방법은 비효율적이므로 내 질문을 요약하면 스토리 진행 상태에 따라 레벨의 동작을 구현하는 더 좋고 표준화 된 방법이 있습니까?
추신 : 아직 레벨 편집기가 없습니다 .JME SDK와 같은 것을 사용하거나 직접 만들 생각입니다.