Game Development/프로젝트: 레이드

네트워크 RPG게임 'Raid' 개발일지 8

3영2 2019. 3. 27. 11:26
반응형

네트워크 RPG게임 'Raid' 개발일지 8


한달동안 꾸준히 만들고 있었다. 개발일지를 작성하기 귀찮았던 것도 있었지만 워낙 여기저기 코드 내부를 바꾼게 많다보니 막 정리하기 쉽지 않았다... 그래도 가장 큰 추가 및 수정 사항을 정리해면 다음과 같다.


1. 서브몬스터 완성

총 3개의 서브몬스터, EnemyNormal를 완성시켰다. 기존 EnemyBoss와 같은 클래스(Enemy Movement, Enemy Manager, Enemy Health, 등등)를 공유하기 때문에 네트워크에 instantiate했을때 InGame Manager에서 Enemy Type을 결정한 후 리스트에 추가하는식으로 구성되어있다.

서브몬스터 같은 경우 기존 Boss와 움직임이 다른데 InGame Manager에서 관리는 구역 A0~A4 에 따라 서로 다른 Patrol Point을 왔다갔다 한다. 이때 플레이어가 충분히 가까워지면 플레이어를 쫓아가게끔 구성했다. 또 플레이어가 일정 범위이상 멀어지면 다시 Patrol Point 사이를 랜덤으로 움직인다.



2. 구역 설정

맵을 보면 총 구역이 6개로 나뉜다. 시작지점인-A0, 일반스테이지인-A1~A3, 보스스테이지인-A4, 그리고 보너스 지역 S0이다. 각각 구역을 클리어 할 시 다음 지역으로 나아갈 수 있다.



3. 네트워크 관련 부분 대응
사실 이 부분이 가장 많이 어려웠다. 여러 클라이언트중 하나만 Master Client이기때문에 이 Master Client가 나가면 다시 설정해줘야하는 부분들이 많다. (Master Client가 기본적인 게임 진행을 이끄는 부분이 많다) 또한 공격처리하는 부분의 경우 각각의 클라이언트에서 처리하기 때문에 이 처리한 결과를 동기화시켜줘야 하는 방식이다. 어쨋든 게임 구조가 복잡해질 수록 자꾸 헷갈린다... (단순하게 모든 오브젝트들을 Network Instantiate할 수는 없는 노릇이다...) 게임이 복잡해질수록 스파케티코드가 되는것 같은 느낌이 든다... 이래서 클래서 구조가 중요한건가?...ㅎㅎ


4. 메쉬 컴바인(Mesh Combine/Bake)

모바일 게임이다 보니 최적화를 위해 하나의 게임오브젝트로 맵의 Mesh Object들을 에셋을 활용하여 컴바인했다. 메쉬를 컴바인하니 Batch수가 확실히 많이 줄어들었다.


반응형