brunch

You can make anything
by writing

C.S.Lewis

[2023. 04. 23] 게임 개발 일지 #0001

Chase and Destroy it

현재 개발중인 게임 Chase and Destroy it 의 개발 로그 입니다.


Chase and Destroy it - prototype demo play

 솔로 개발을 하고 있지만, 장기 프로젝트와 상대적 단기 프로젝트로 두 가지 프로젝트 개발을 진행하고 있는데요. 

 이전에 올린 영상과 포스트 들은 장기 프로젝트로 진행 중 입니다.

 이번에 처음으로 올리는 개발로그는 상대적인 단기 프로젝트로 올해 말이나 내년에는 출시를 목표로 진행하고 있습니다.

 아케이드 레이싱 액션 장르 입니다. 

 타겟 플랫폼은 데스크톱으로 스팀 등에 등록하는 것을 목표로 하고 있고요.

 분노의 질주 같은 영화에서 많이 볼 수 있는 차량 추격전 액션처럼 적 차량을 추격하면서 순간 부스트 등을 이용한 차량충돌 액션과 무기, 도구 및 아이템을 사용한 공격으로 전투하는 레이싱 액션으로 기획했습니다.

 일반적인 레이싱 게임들이 차량 후방이나 운전석에서 보는 View가 많지만, 처음 아이디어를 떠올렸을 때는, 전혀 색다른 방식으로 수 많은 언덕길을 넘나들며 달리는 사이드 스크롤러 뷰 형식을 생각했었습니다.

 현재는 그 게임플레이가 Top Down View 형식으로 진행되는 게임으로 개발 중 입니다.

 개발 진행 중 Shadow 문제로 인해서, Unity URP로 시작했지만, HDRP로 교체해 개발을 진행하고 있습니다. Shadow 문제는 여전히 해결하지 못했으면서도 HDRP로 그대로 진행하고 있습니다. (기본적으로 PC를 대상으로 하지만, 고사양 모바일 대상으로도 가능하면 출시를  하려고 해서 URP로 시작했었습니다. 하지만 어차피 Culling을 적용해 플레이어 시야주변에 차량만 보여지도록 Pooling 시스템을 적용하더라도, 도시에서 몇 십대의 차량이 돌아다녀야 하고, 차량 충돌 효과 등등 막상 해보니 모바일에서 구현할만한 사양의 게임이 아니었습니다)


 게임은 반 오픈월드 형식의 레벨로 진행됩니다. (요즘 대다수 레이싱 게임들, 니드 포 스피드같은 류의 게임들이 취하는 형식) 맵의 어디든지 돌아다닐 수 있지만, 특정 지역에서 레이싱 이벤트나 퀘스트 이벤트 또는 시나리오 이벤트 등이  플레이어의 선택에 의해 실행될 수 있는 방식입니다.

 그렇다보니, 우선 큰 도시 월드 환경이 필요했습니다.


 몇몇 도시와 그 안에서 대충이라도 자연스럽게 운행하는 차량들이 있고, 그 와중에 레이싱이나 특정 액션 퀘스트 등이 일어나는 게임플레이가 구현되도록 기획했습니다.

 유니티엔진으로 개발하는데 제가 구입했던 에셋스토어의 에셋 중에서 도시를 프로시저럴 방식으로 생성하는 Cidy2가(현재는 Deprecated 됐네요 - 방금 확인하니 다시 판매 서비스를 하고 있네요^^ 분명 Deprecated 라고 확인했었는데, 아마 개발자가 지난 4월 14일에 버전업하면서 다시 등록 했나보네요 ) 여러모로 적당하다고 판단되어 이 에셋으로 도시 모델을 구성했습니다. 특히 Cidy 2로 생성한 도시 로드를 인식해서 자동으로 차량 운행 시스템이 만들어지는 몇몇 에셋들이 있고, 저는 그 중 하나인 Simple Traffic System을 사용하기 때문에 Cidy2를 선택하기도 했습니다. 사실 더 쉽게 도시 하나를 만들 수 있는 에셋도 있긴한데 교통시스템을 수동으로 구현해야만 합니다. 그 에셋은 원클릭으로 거대 도시가 생성되고 드로우콜 최적화도 정말 좋긴합니다만... (CScape라는 에셋입니다)


에셋스토어의 도시 생성, 교통 시스템 등의 에셋들이 궁금하신 분들은 이 글을 참고하세요

https://prf.hn/click/camref:1100lvE3Z/destination:https://blog.naver.com/sspsos74/223068703544


 개발 초기에는 사실 PC를 기본 대상으로 하지만, 모바일도(특히 고사양 스마트폰) 대상으로 출시를 하려고 했기 때문에 도시의 빌딩들을 로우 폴리곤으로 구성하려고 했습니다.

 가지고 있는 에셋 중에서 Synty의 폴리곤시티가 적당한 것 같아서 이 에셋 안에 빌딩들을 골라 Prefab으로 추가해서 Cidy2로 도시를 구성해 보았습니다.

 단기 프로젝트로 최대한 빠르게 완성하려는 목표도 있었기 때문이기도 했습니다.

 하지만, 개발 중에 모바일 플랫폼은 생각하지 않기로 했습니다. 

1. 우선 교통시스템을 구현하는데 CPU자원이 크게 소모 됩니다.

2. 시각적으로... 그래도 PC를 타겟으로 하는데, 제 개인적으로 로우폴리로 만들어진 도시가 자꾸만 어색하게만 보이네요. 물론 Synty의 폴리곤시티같은 경우 Synty가 제공하는 샘플도시는 비주얼적으로 꽤 괜찮습니다만, 이 모델을 이용해서 Cidy2를 가지고 만든 도시는 볼 수록 좀 어색하다는 느낌이 듭니다.

3. 기획에서도 밝힌 바, 차량 충돌/폭파 같은 액션에 비중을 두려고 하는데, 개발하다보니 이를 구현하기 위해서는 Physics, Vertex 변형 같은 부분에 큰 성능이 요구되더군요. 이건 현 유니티에서는 CPU로 구현되는거라서, 또 CPU자원이 크게 요구됩니다.

 결론적으로 이런 저런 성능제약으로 PC에서도 아주 원할한 건 아닌 정도의 게임이어서 모바일로는 구현되기 힘든 게임이라는 결론을 냈습니다.

 

 Cydi2를 이용하면 굉장히 간단하고 쉽게 마음대로 도시를 만들 수 있습니다. 그리고 기본적으로 도시를 구성할 모델들을 제공합니다. 하지만, PC를 대상으로 하기에 모바일을 대상으로 하는 것보다는 훨씬 시각적 수준이 높아야 할 것 같아서 Cidy2에서 제공하는 기본 빌딩에셋들을 그대로 사용하지 않고, 우선 빌딩들은 다른 에셋들의 prefab으로 교체해서 만들었습니다.

 Cidy2는 생성되는 빌딩들에 대해서 특정 경로 폴더내에 들어있는 prefab들 중에서 랜덤하게 선택되어 세워지게 되는 방식입니다. 거리 중간에 세워지는 Props(소품들)같은 것도 마찬가지 입니다.

 빌딩은 제가 구입해 가지고 있는 에셋들 중에서 고퀄리티인 Japanese City : Modular Pack을 썼고요.

 링크 : https://assetstore.unity.com/packages/3d/environments/japanese-city-modular-pack-v1-4-239043?aid=1100lvE3Z


Sherman Waffle Studios 에서 판매하고 있는 에셋으로 이 제작자가 판매하는 에셋은 몇 개 없지만 비주얼 퀄리티는 에셋스토어 최상위 수준이라고 생각됩니다.

다른 에셋인 Kowloon walled city Asian Apartments | Modular Pack 같은 경우는 제가 아직은 사용할 일이 없어서 구입하고 있지는 않지만, 더 높은 수준의 비주얼 퀄리티를 보여줍니다.

링크 : https://assetstore.unity.com/packages/3d/environments/kowloon-walled-city-asian-apartments-modular-pack-206812?aid=1100lvE3Z


그리고 빌딩에 사용한 또 다른 에셋은 Stylized Town 입니다.

링크 : https://assetstore.unity.com/packages/3d/environments/urban/stylized-town-178797?aid=1100lvE3Z


그리고 Skyscrapper 높은 빌딩들은 City & Terrace Pack 

링크 : https://assetstore.unity.com/packages/3d/environments/city-terrace-pack-38412?aid=1100lvE3Z


 물론 이들 에셋들을 제 게임 프로젝트에 맞게 재구성해서 사용했습니다.


 에셋 홍보 영상에서 보실 수 있듯이 꽤나 좋은 비주얼을 보여주는 3D모델이지만, 최적화는 그다지 완벽하진 않습니다. 그대로 사용시에 아무리 PC 플랫폼이라도 버거울 정도로 너무 많은 드로우콜이 생성됩니다.


 Mesh Baker 를 사용해 최적화 시키기도 했고, 직접 Mesh를 수정해 모델링하고, UV도 새로 편집하는 등의 수작업도 많이 했습니다.


 링크 : https://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017?aid=1100lvE3Z

 이렇게 해서, 도시를 생성했습니다.


 아래 영상은 유니티 내에서 도시 생성하는 과정을 보여줍니다. Cidy2의 기본 에셋으로 만들어지는 것과는 다르게 제가 추가한 빌딩과 소품 에셋으로 만들어 지고 있지요.

플레이 중 캡쳐장면

다음 Dev Log에서는 Terrain 생성에 대해서 다루게 되겠네요.





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari