모바일 게임 제작팀이 언리얼 엔진으로 PS4 게임을 만들면서 느낀 점

게임뉴스 | 이현수 기자 | 댓글: 16개 |
에픽게임즈 코리아(대표 박성철)는 언리얼 엔진의 최신 기술 및 정보를 개발자들과 공유하는 국내 최대 규모의 언리얼 엔진 컨퍼런스인 서울(Unreal Summit 2018 Seoul, 이하 언리얼 서밋 2018)'을 오늘(18일), 서울 코엑스 그랜드볼룸과 컨퍼런스룸(북)에서 진행했다.

이 행사에서 강단에 오른 넥스트스테이지는 모바일 액션 RPG '다이스 이즈 캐스트'와 '프로젝트 아크'를 개발한 팀으로 지금은 PS4 로그라이크액션 RPG '울트라 에이지'를 개발 중이다. 규모가 작은 인디 개발사에서 언리얼 엔진으로 PS4 개발을 하기 위한 고려사항과 PS4게임을 개발하면서 생기는 모바일 플랫폼과 PS4 플랫폼의 차이점 그리고 개발 팁을 청중에게 공유했다.



▲ 넥스트스테이지 강현우 대표


왜 플레이스테이션인가?

플레이스테이션4는 2017년 기준, 누적 판매량 7,360만대를 기록한 하드웨어다. 산술적으로 0.1%만 판매해도 7만 장을 팔 수 있는, 인디 가격 3만 원으로만 팔아도 27억 원의 매출을 올릴 수 있는 시장이다. 물론 판매하기는 쉽지 않지만, 그래도 팔 수 있는 시장이 있다는 것은 매력적이다.

또한, 플레이스테이션 사용자들은 구매력이 높다. 타이틀 가격이 상대적으로 비쌈에도 구매율이 높은 사용자들이 모여있는 시장이다. 이들은 대부분 유료 구매자이기 때문에 BM에 구속받지 않고 게임을 개발할 수 있는 특징을 가지고 있다. 아울러 모바일 디바이스 보다 플레이스테이션이 성능이 좋아 구현에 구속이 덜하다. 그래서 플레이스테이션 게임을 만들어 보고자 했다.




다만, 콘솔이라는 로망만 가지고 접근하기에는 쉽지 않은 시장이다. 우선 사용자들의 눈높이가 매우 높다. 이들은 AAA급 게임을 즐긴다. 단순히 그래픽 퀄리티가 좋다고 선호하는 건 아니고 완성도 측면을 자주 본다. 플레이스테이션 게임을 개발하고 팔기 위해서는 이런 사용자의 마음을 끌어야 한다.

플랫폼 진입 장벽도 존재한다. 공부할 게 매우 많다. 우리가 처음 개발을 시작하기 전에 기존 모바일게임을 콘솔로 이식할까 생각도 해봤다. 플레이스테이션 유저들 가운데 이런 취향을 좋아하는 사람이 얼마나 있을까 생각해본 결과 안 하기로 했다. 이처럼 플레이스테이션 사용자들의 취향도 고려해야 한다.

이런 대외적인 사항 말고도 팀 내부인 것도 고민할 필요가 있다. 우선 팀원들이 콘솔 게임을 좋아하느냐다. 소규모 팀이니까 게임을 만들면서 QA와 피드백 처리까지 같이 해야 하는데 O,X버튼 역할이라든가 안정적인 프레임이라든가 콘솔 사용자라면 당연하게 알고 있는 것들을 많이 알고 고민해야 하기 때문이다.

흔히 작은 팀에서는 콘솔게임을 만들지 못할 것이라 이야기하는 경우가 많다. 하지만 소규모 팀에서도 큰 스케일의 게임을 만드는 방법이 있다. 바로 협업이다. 각자의 장점을 살려서 더 크고 재미있는 게임을 만드는 것이 가능해지기 때문이다. 물론 서로 개발하고자 하는 게임의 방향성이 비슷해야 하고 지속적인 소통이 필요하다는 전제가 붙는다.



▲ 성능한계가 풀렸지만, 유저들 눈높이도 높아진다.


모바일과 PS4의 다른 환경

개발 일정을 잡는 것도 모바일과는 조금 다르다. 프로토 타입 제작과 개발 그리고 QA, 현지화까지 하나의 패키지로 보고 일정을 잡아야 한다. 완성도 있는 게임을 만들기 위해서 개발과 QA에 많은 시간을 투자할 필요가 있으며 현지화 역시 영어, 일어, 중어 등 다양한 번역을 적용하고 테스트하는데 많은 시간이 필요하다.

또 PS4 개발이 처음이라면 디버깅 툴 숙달 등 예상외의 상황이 많이 발생해서 생각보다 많은 시간이 걸린다. 기존 일정보다 1.2~2배 정도 넉넉히 일정을 잡는 게 필요하다.

플레이스테이션 개발을 위해선 개발 전 준비 과정이 필요하다. 우선 SIE에 개발자 등록을 하고 DevNet에 들어가서 계정을 발급받아야 한다. 그 이후에 언리얼 엔진 PS4 개발자 등록을 마치고 DevNet에서 Devkit 활성화한 후 PS4 SDK를 설치한다. 그 후 PS4용 언리얼 엔진 풀소스 빌드를 받으면 그제야 프로젝트를 시작할 준비가 된 것이다. SIE 개발자 등록을 하려면 법인 사업자 등록이 필요하다.

언리얼 엔진으로 PS4게임을 만들면 좋은 가이드라인을 받기 때문에 편리하다. 또한, C++ 풀소스 코드를 사용할 수 있어서 어떤 문제가 발생하는 경우, 해당 문제가 프로젝트의 문제인지 엔진 문제인지 판별할 때 도움이 된다. 그리고 샘플코드도 잘 제공되어서 코드 분석을 하면 좋다. 쉽게 사용 가능한 다양한 플러그인도 장점이다. 블루프린트를 이용한 빠른 프로토 타입을 작성할 수 있다.




모바일 게임을 제작하다가 PS4로 넘어갈 때 모바일 플랫폼에서는 고려하지 않았던 부분을 고려할 게 많다. 먼저 모바일플랫폼과 PS플랫폼은 화면크기부터 다르다. 모바일은 4~5인치 정도지만 PS4는 27인치 부터 55인치 넓게는 80인치 이상을 고려하고 개발해야 한다. 풀HD나 4K도 고려해야 한다. 즉 더 크게 보이고 더 많이 보여줘야 하니 더 많이 만들어야 한다. 모바일에서 보이지 않던 엣지와 픽셀이 적나라하게 보이게 되므로 하이폴리 모델링과 고해상도 텍스쳐가 필요하다. 모바일 텍스쳐 사이즈는 큰 화면에서 퀄리티를 내기 힘들다.

머터리얼도 다르다. 모바일 ES2의 속박에서 벗어나 다양한 쉐이더를 사용할 수 있다. 레이더 머터리얼을 사용해 다양한 효과도 줄 수 있다. 라이팅 역시 모바일보다 더욱 다양하고 많은 라이트를 사용할 수 있다. 다만, PS4의 성능이 무한정으로 좋은 건 아니므로 퍼포먼스를 고려해 작업해야 한다.

기존 모바일 라이팅에서 동적 그림자를 그리는 경우 성능을 위해서 많은 것들을 포기해야만 했다. 하지만 PS4에서는 높은 섀도 퀄리티 CSM, Ray Traced Distance Field Shadow 등 높아진 성능만큼 다양한 효과를 적용할 수 있다.




CSM(Cascaded Shadow Map)은 높은 퀄리티의 쉐도우를 그릴 수 있지만, 오브젝트 수가 많으면 비용이 급격하게 상승하므로 드로우 콜 등을 줄일 필요가 있다. Ray Traced Distance Field Shadows는 적은 비용으로 원경의 동적인 그림자를 그리는데 유리하다. 다만, 2배 이상의 비균등 스케일은 그림자가 엉뚱하게 표시되는 것에 주의해야 한다.

모바일에서 불가한 캡슐 섀도(Capsule Shadow)도 사용할 수 있다. 좀 더 예쁜 그림자를 그리기 위해 사용하는데, 경제적이면서 높은 효과를 가져온다. 또한, Tone mapping, LUT, DoF, Bloom 등 다양한 포스트 프로세스기능을 활용하여 씬의 분위기를 적절히 만들 수 있다.

물론 성능이 좋아졌다고 무조건 좋은 것은 아니다. 플레이스테이션 플랫폼 사용자들은 그래픽 품질을 논할 때 PS4의 성능한계점을 알아본다. 이러한 눈높이에 맞춰야 하는 책임이 따른다. 이는 포토리얼리즘 그래픽에 국한된 이야기는 아니다. 2D도트 게임이나, 카툰렌더링에도 같은 잣대를 들이댄다. 고품질의 그래픽을 위해서는 당연히 시간 비용이 상승하는데, 이를 염두에 둬야 한다.




UI, UX도 모바일과 달리 생각해야 한다. 모바일과 달리 터치 방식이 아니라 버튼과 아날로그 스틱을 활용하며 누르는 버튼이 액정에 있지 않기 때문에 고려해야 할 부분이 많다. 또한, 항상 버튼에 대한 아이콘 설명도 필요하다.

항상 PS4 관점으로 봐야 한다. 모바일은 로비에 많은 버튼을 주고 뎁스를 줄였다면, PS4는 각 버튼이 뎁스의 스위치를 담당하여 여러 메뉴를 변경할 수 있게 해야한다. L1, R1으로 깊은 뎁스에서 첫 뎁스로 가는 등의 생각이 필요하다.

또한, 모바일은 포커싱이 자신의 눈으로 이루어지기 때문에 예비선택이 필요 없지만, PS4는 예비선택이라는 관점에서 포커싱 개념이 필요하다. 이 개념이 PS4 UI 전반에 들어가 있어야 한다.


PS4 개발 팁

- PS4 언리얼 엔진 빌드를 받은 경우 동봉되어있는 파일인 PS4.PDF는 많은 도움이 된다. 그대로만 따라 하면 빌드, 인스톨, 실행까지 가능하다. 여기서 중요한점은 풀소스나 프로젝트 빌드시 Config, 플랫폼을 확인해야 한다는 것이다.

- PS4 SDK버전은 릴리즈 노트나 언리얼 PS포럼의 공지사항에서 확인할 수 있다. 4.17, 4.18 등 핫 픽스에서 SDK 버전이 변경되는 경우는 PS4PlatformSDK class의 ExpectedSDKVersion에서 확인할 수 있다.

- PS4 Pro로 세팅하는 경우는 Param.sfo의 NEO Mode를 켜야 한다. 켜지 않으면 프로 테스트킷에서도 노멀과 같은 성능이 나온다. DefaultDeviceProfiles의 PS4_Neo DeviceProfile에서 세부 세팅을 할 수 있다.

- HDR은 게임유저세팅에서 EnableHDRDisplayOutput으로 실시간 조정 가능하며 전체 밝기를 계속 올려도 TV에서 제한하므로 포인트를 주고 싶은 부분만 밝게 해야 어두워지지 않는다.

- PS4에서 패키징할 때 Create compressed cooked packages 옵션이 불필요하다. PS4 패키징시 자체적으로 압축을 진행하는데 Compressed해도 용량이 줄지 않으므로 옵션을 키지 않음으로서 시간을 절약할 수 있다.

- 프레임 Hitch 확인은 Develop 세팅에서 확인할 수 있다. Shipping에서는 stat fps로 프레임 확인이 불가함으로 UMG를 제작해야 한다. r.Vsync는 꺼둬야 60프레임 이상 확인할 수 있는데 이를 통해서 얼마나 성능 여유가 있는지 확인할 수 있다.

- bEnableNewMemorySystem=True를 이용해 메모리 관련으로 PS4에서만 일어나는 문제를 해결할 수 있다. LLM이라고 새로운 로우 레벨 메모리 트래커를 활용하면 카테고리 별로 할당된 메모리를 확인할 수 있다. PS4의 메모리는 8기가로 작은 게임에서는 여유로워 보이지만, 텍스처, 많은 액터, 거대한 레벨을 사용한다면 메모리를 관리하는 것을 추천한다.

- 스트리밍 풀 사이즈는 기본 1000MB다. PC에서는 아무 문제가 없지만, PS4로만 넘어오면 여러 문제가 복합적으로 발생하는 경우가 생긴다. 매쉬가 깨지거나 풀리지가 안 나오거나 심지어 게임이 크러시 되기도 한다. 풀을 오버해서 사용하지 않도록 해야한다.

- 보통의 플러그인들은 PS4를 지원하지 않는다고 하지만, 대부분 무리 없이 적용된다. 특정 플랫폼에서만 동작하는 플러그인은 커스텀 할 필요가 있다. 다만 버전업이나 소니 TRC에 걸릴 수 있으니 꼭 필요한 경우 충분한 테스트를 진행한 후 적용해야 한다.

- 버튼의 O,X 누르는 것도 국가별로 적절한 빌드가 필요하다. 일본과 아시아에서는 O가 확인이지만, 북미에서는 X가 확인이다. Platform.h의 PLATFORM_USES_FACE_BUTTON_RIGHT_FOR_ACCEPT 값을 변경하면 된다. 컨트롤러의 연결 끊김 현상은 슈팅 게임 예제 코드에서 찾아볼 수 있으며 윈도우에서도 UE4 플러그인을 이용하면 PS4 컨트롤러 테스트가 가능하다.

- Nativeze Blueprint Assets falling with fatal error:UTF-16은 한글로 타임라인을 만들어서 생기는 문제이므로 영어로 통일하여 해결할 수 있다.

- 비주얼로그는 블루프린트에서 호출 가능한 요소로 지금까지 DrawDebugSphere만 찍고 있었다면 신세계를 보여줄 정도로 정말 편한 기능을 제공한다.

- PS4 컨트롤러에 붙이는 키보드는 1만 원 혹은 2만 원의 적은 비용으로 큰 편의성을 얻을 수 있다.

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5