최근에 저는 C#으로 게임을 코딩 할 때 손을 잡으려고했습니다. 나는 XNA를 사용하고 있지 않다. 처음부터 게임을 코딩했다면 더 많은 것을 배울 것이라고 생각했기 때문에 (멀티미디어 엔진을 사용하고 있지만).게임 프로그래밍 - 2 차원 게임 개체 간의 통신
2D RPG 게임을 디자인하려고합니다.하지만 게임의 기본 부분 (즉, 보일러 플레이트 코드)을 합리적으로 잘 이해하고 있으며, 내가 여기에서 어디로 가야할지 모르겠다.
2D 게임에서 다른 '지역'을 걷는 게임을 진행합니다. '포털 타일'을 치면 다음 지역으로 이동합니다.
이 지역 개체를 설정하는 방법을 이해하는 데 문제가 있습니다. 이것이 제 첫 번째 아이디어였습니다. 각 영역에는 몇 가지 컬렉션 구조가 있습니다 (예 : 가시성 쿼트 트리, 충돌 쿼드 트리, AI 엔티티 목록 등). 따라서 적의 개체를 게임에 추가한다면 가시성 쿼터 트리 인 충돌 quadtree (엔티티와 충돌 할 수 있기 때문에)와 AI 개체 목록에 추가됩니다. 영역은 업데이트 요청을 받으면 각 구조가 자신을 업데이트하도록 지시하고 엔티티가 자신을 업데이트하도록 지시합니다. 지금까지는 좋았어.
내 질문은 :이 적을 다른 물건과 통신해야한다면 어떨까요? 예를 들어, 플레이어가 특정 범위 내에 있는지 여부를 알아야 할 수도 있습니다. 또는 플레이어가 맞았는지 여부. 또는 모든 충돌 가능한 객체가 해당 영역에있는 경우 (경로 찾기가 가능할 수 있습니다).
이 문제의 첫 번째 (나쁜) 해결책은 단순히 각 엔티티에 각 컬렉션에 대한 참조를 전달하는 것입니다. 그러나 이것은 분명히 단단히 결합 된 객체를 장려하는 것이므로 좋지 않습니다.
내가 생각해 낸 두 번째 해결책은 각 엔터티가 메시지 구조를 통해 영역을 쿼리 할 수있게하는 것이 었습니다. 따라서 적군은 "내 위치의 X 거리 내에있는 각 개체의 목록을 내게주세요"라고 대답 할 수 있고 그 영역은 대답을 반환합니다. 그러나이 영역에 점점 더 많은 가능성을 코드화해야하기 때문에 점점 어려워 질 것입니다 ("자신에게 X 거리가 아닌 엔티티 목록을 제공하십시오", "나보다 낮은 건강을 가진 모든 엔티티 목록을 제공하십시오" X "등).
내가 찾고있는 것은이 객체 간 통신 문제에 대한 시간을 테스트 한 솔루션이며 기본적으로 영역을 설정하는 방법입니다. 확실하지는 않지만 메시징 시스템도 필요하다고 생각합니다.
읽어 주셔서 감사합니다.
벽 무서운 – Chad