000-Unity FPS Sample Project
#유니티, 유니티 튜토리얼, 유니티 강좌, Unity, Unity tutorial, HDRP, FPS Sample, 게임 개발, C#
FPS Sample은 Unite 2018 LA에서 공개된 프로젝트로 Unity로 제작된 FPS(First Person Shooting) 스타일의 게임에 대한 Full Source가 제공됩니다. 이 프로젝트는 Unity 엔진을 사용해서 만든 사용 수준의 게임입니다.
FPS Sample은 Unite 2018 LA에서 공개되었는데, Leader programmer인 Peter Andreasen이 이것에 대한 연설을 했습니다. 그는 Unity에 Join한 이후, 여러 샘플들을 살펴보고, 공부했는데, Unity는 엄청난 기능과 가능성이 있었지만, 이 모든 것들을 어떻게 하나로 만들어 게임을 만들지? 라는 의문이 생겼고, 그것이 이 Sample project를 시작한 계기가 되었다고 말합니다.
그는 이 Sample project 수행을 위해서 다수의 게임을 제작 경험이 있는 인원으로 팀을 구성했고, 프로젝트를 시작하면서 이렇게 팀원들에게 물었습니다.
What would you like to see in an example project?
What is the most your profession to see?

그들은 이런 스스로에 대한 질문을 바탕으로 Sample project를 수행했고, 마침내 완성된 프로젝트가 세상에 공개됩니다. 공개된 플래이 영상은 어느 FPS 게임과 비교해도 뒤지지 않을 정도의 높은 퀄리티를 보여 주었습니다.

멋진 플래이 영상을 청중에게 보여준 후 그는 또 이렇게 이야기합니다.
You can't take a look at game frame like this without start to think, how was all made? How did they do these things?
저는 이 문장이 이 프로젝트의 모든 존재 이유와 가치를 말한다고 생각합니다. 이 문장은 순간 저의 가슴을 흔들었고, 그동안 식어 있었던, 저의 열망에 다시 불을 붙였습니다. 그렇게도 궁금하고, 보고 싶었던, 진짜 대형 게임 개발자들이 만든 게임에 대한 Full 소스코드입니다. 이것은 현재까지 일반인에게 공개된 것이 없었습니다. 적어도 이 프로젝트를 이해하고 내 것으로 만든다면, 이 프로젝트를 만든 팀원들과 비슷한 생각을 하고, 그러면 그들처럼 전문 게임 개발자에 한 걸음 더 다가갈 수 있지 않을까요?
일반인들도 아마 멋진 게임을 플래이하다 보면, 이런 생각을 하겠죠. 이건 도대체 어떻게 만든걸까? 하물며 게임 개발자라면 이런 의문은 지극히 당연하고, 궁금해 하는 가장 원초적인 질문 중의 하나일 것입니다.
그는 다시 또 말합니다.
FPS Sample은 이런 질문에 대한 해답입니다. FPS Sample의 소스코드, 프로젝트를 직접 확인하면 되는 거죠.
그는 FPS Sample의 목적은 이것뿐만이 아니라면서, 게임 게발자들이 생각해야 하고, 프로젝트를 수행하면서 접하게될 여러 기술적인 Detail이 포함되어 있다고 합니다. Animation, Network, HDRP, Game Loop, Game Performance 등 아주 많은 부분에서 힌트와 영감을 얻을 수 있을 것이다 라고도 했죠.

특히 FPS Sample에는 HDRP가 적용되어 있어, 이것을 어떻게 실제 게임 제작에 적용하는지를 직접 살펴 볼 수 있습니다. 요즘에는 HDRP에 대한 Tutorial이 많지만, 공개 당시에는 이러한 자료가 그리 많지는 않았습니다. HDRP를 어떻게 적용하고, 수많은 parameter들이 Game 화면에서 어떻게 보여지는지, 전문 개발자들은 어떻게 이것을 사용하는지에 대한 훌륭한 예제라고 합니다.
그는 이 프로젝트를 A manual without words 라고도 표현했습니다. 모든 설정들을 바꾸어 가면서 직접 확인하고, 그것을 자기것으로 만들라는 것이죠.

앞에서 언급했던, 게임 개발자들이 사용하는 Detail이라는 것에 대해 조금 더 언급하자면, Peter Andreasen 씨는 이 프로젝트는 All the little detail을 포함하고 있다고 표현했습니다. 이 것은, 게임을 개발하는 모든 팀들이 겪는 여러 문제들이 있는데, 이런 문제들은 일반인에게는 쉽게 공개되지가 않는다는 것이고, FPS Sample에서는 이런 부분도 확인이 가능하다는 것이죠. 일반인들이 접하게 되는 데모나 튜토리얼에서는 그런 것들이 전혀 이야기하지 않고 있습니다. FPS Sample에는 이런 Detail한 부분이 아주 많이 포함되어 있습니다. 이런 맥락에서 그는 발표장에서 몇가지 tool을 시연하기도 했습니다.

예를 들어 Build Tool은 서버를 실행하고, 2개의 client를 띄워서 직접 플레이할 수 있도록 하는 기능이 있고, 어떤 Tool은 Material을 Override 하는 기능이 있습니다. 개발자들이 사용하는 이런 tool 들에 대해 직접 소스코드를 살펴볼 수 있는 것은 어떤 튜토리얼도, 데모도 제공하지 않았었습니다.
Unity의 공식 FPS Sample Page에는 FPS Sample의 특징을 아래와 같이 설명하고 있습니다. 아래 부분들은 직접 프로젝트를 따라하면서 살펴보기로 합니다.
1 fully populated arena level, including high-quality assets for HDRP
2 fully rigged characters with 4 unique weapons
Up to 16 players
Deathmatch and Assault game modes
Support for PC
FPS netcode based on an authoritative server architecture
아래의 링크에서 정보를 확인할 수 있습니다.
FPS Sample - A multiplayer shooter game project | Unity
Use it to learn about the latest features in Unity, extract and use the parts you need or use the full project as a starting point for your own games.
unity.com
FPS Sample은 현재도 진행 중인 Project입니다. 내부의 Network와 관련된 Netcode를 모두 ECS로 구현하는 것, 게임 실행 중 Scene에서 수정한 사항이 Game play 중에 실시간으로 반영되는 기능 등이 추가될 예정임을 2019 Unite 코펜하겐 및 GDC2019에서 언급했고, 실제 Play 모습이 공개 되었습니다. 이 부분에 대한 Complete soruce가 곧 공개가 된다고 하니, 그날이 기다려집니다.
저는 이제부터 이 프로젝트를 하나하나 분석해 보고, 똑같이 만들어볼 계획입니다. 만드는 과정이 어렵고, 오랜 시간이 걸리겠지만, 그들과 비슷해지고, 그들의 코드와 생각을 느껴볼 수 있는 방법은 이 방법이 가장 빠른 방법이라고 생각합니다. 현재로서는 이것만큼 가치 있어 보이는 일이 없다고 생각이 들고, 뭔가 설레이는 마음이 드는 것을 보니, 이제 다시 저에게 열정이란 것이 생기는가 봅니다.
FPS Sample과 동일한 Repeat FPS Sample 프로젝트를 만들어 Build를 해보는 것을 목표로 차근차근 정리해 보겠습니다.
저는 A manual with word .
- 다소승탁진 -
2020.01.09-수정
#유니티, 유니티 튜토리얼, 유니티 강좌, Unity, Unity tutorial, HDRP, FPS Sample, 게임 개발, C#