12월, 2023의 게시물 표시

좀비게임-1 = 조잡한 계획 그리고 또 다른 길찾기 문제

가장 기본이 되는 적부터 계획해봤다, 적의 행동양식은 Idle, Search, Attack 상태로 나누어진다 기본적으로 적은 Idle로부터 시작한다 Idle은 말 그대로 할 능력은 있지만 목적이 없는 것 마냥  주변을 걸어다니거나 가만히 있는다 이 상태에서 무언가 흥미를 끄는 것( 소리, 불빛 ) 봤거나 플레이어에게 공격당했다면 Search로 전환하고 플레이어를 발견했다면 Attack로 전환한다. Search는 어떠한 목적이 있어 탐색하러 어떠한 곳으로 이동한다 도착한뒤 그 근방을 기준으로 배회하는데 30초 후 Idle로 전환한다 Attack의 트리거는 Idle과 동일하다 Attack은 플레이어가 보이는 상태이며 공격하기 위해 쫒아가는 행동이다 지정된 거리의 동료를 Search 상태로 변환해 Attack 상태로 되어있는 것을 따라간다 플레이어가 빠르게 도망쳐 보이지 않는 상태가 되면  마지막으로 보인 곳을 탐색하다 파괴할 것이 있다면 파괴한다 파괴할 것이 없다면 근처를 배회하고 30초후 Idle로 전환한다. 시작과 목표가 각각 하나라면 A*으로 충분하지만 시작이 여러명이면 어떻게 해야할지 모르기에 검색해본 결과 RVO, flowfield, flocks/boid 가 중심이 되었다 그중에  RVO는 reciprocal velocity obstacle 이란 뜻인데,  구현하는 거 설명 들어봤더니 뭐라 하는지 이해가 안돼 포기했다 나머지는 다행이 이해가 됐다 이해한 뒤 얻어낸 결론으로 Navmesh와 A*만으로도 충분하다는 계산이 나왔다 맵이 매우 크고 복잡하거나 스크린에 나오는 유닛들이 수백개 이상이면 HPA* 의 캐싱으로 나눠진 섹터들로 A*하여 이어진 섹터들을 Flowfield로  길찾기 하거나, 간단하게 Navmesh와 flowfield만으로도 충분히 작동될 수 있겠다 허나 본인이 감당가능할 정도의 단순하고 작은 맵에  유닛도 약 백마리도 안되는 간단한 게임이라 일단 완성해놓고 필요하다면 최적화할 생각이다