DirectX 3D/DirectX 3D 게임

230329 태번 마스터 ( Tavern Master ) 모작 - 2

무면허 개발자 2023. 3. 29. 23:12

 

작업 내용 : 

1. 캐릭터들이 이동할 노드 설치 및 A* 알고리즘 적용

캐릭터들이 길을 따라다니게 하기 위한 노드를 설치하고 A*알고리즘을 사용하여 이동을 구현했다.

노드 설치는 TerrainEditor에서 AlphaMap을 활용하여, rgb값중 b값을 검사하여, b값이 0보다 크면 노드를 설치하게끔 구현했다. 노드간의 연결은 노드의 Pos에서 일정 범위안에 노드가 있다면 해당 노드를 서로 연결하는 식으로 구현했다.

 

기존에 공부했던 3D에서의 A* 알고리즘에서는 더 자연스러운 길찾기 이동을 위하여, 다닐 수 있는 노드 이외 노드는 장애물 타입의 노드로 설정하여 출발지점으로부터 도착지점까지 Ray를 쏴서 Ray가 장애물에 충돌하지 않는지점까지를 검색하여 해당 노드를 꺾는 노드 기준으로 삼는 식으로 공부했지만, 현재 포트폴리오로 제작하는 게임에서 길위의 노드 이외의 지점에 전부 장애물노드를 설치했더니, 상당한 프레임 드랍이 일어나서 일단 현재는 장애물 노드는 설치하지 않았다.

 

2. 시간에 따른 밤, 낮 구현

게임의 몰입감을 높이기 위해 Skybox의 텍스쳐와 Environment의 조명을 조절하여, 밤낮을 약식으로 구현했다.

현재는 간단하게 Delta타임을 체크하여, 시간에 따라서 텍스처 변경과, light를 조절하고 있고, 좀 더 보완하여 light에 보간값을 적용시켜, 서서히 light가 밝아지게 하고, Skybox의 텍스쳐도 쉐이더에 secondMap를 적용시켜 더 현실성있는 하늘을 구현해볼 생각이다. 생각은 하고 있지만, 생각보다 로직이 잘 떠오르지 않아 조금 시간이 걸릴듯 하다.

 

3. 캐릭터의 랜덤 모델, 이동시 랜덤 StartPos 적용시킨 Pooling 기법 적용

한쪽에서만이 아닌 양쪽에서 랜덤하게 캐릭터들을 출현시키고, 여러 캐릭터들을 사용하기 위해 Pooling 기법을 적용시켜, 미리 할당한 캐릭터들을 돌리면서 출력시켰다.

 

작업 소감 : 

노드 깔기와 A*알고리즘 적용은 생각보다 잘됐으나, Skybox와 light의 자연스러운 밤낮 구현이 생각보다 어려웠다.

밤낮과 같은 환경과 관련된 것을 가상의 3D공간에 옮기는 것은 프로그래밍적 부분을 포함하여 자연과학적인 부분도 도움이 된다는 것을 많이 깨달았다.

 

작업 예정 :

  • 건물 에디터에서 의자 깔면 노드 추가되어 캐릭터가 앉을 수 있도록 구현해보기
  • 기둥에 전등 붙이기
  • 건물 에디터 UI 디자인 마무리하기
  • 밤 낮 자연스럽게 구현하기 ( 여유될때 조금씩 손보기 )