소프트 크런치 게임즈가 모든 플랫폼을 위해 폭시 덤플링을 만든 방법
Adam Axler - Unity
Senior Content Marketing Manager
이 웹페이지는 이해를 돕기 위해 기계 번역으로 제공됩니다. 기계 번역으로 제공되는 콘텐츠에 대한 정확도나 신뢰도는 보장되지 않습니다. 번역된 콘텐츠의 정확도에 관해 의문이 있는 경우 웹페이지의 공식 영어 원문을 참고해 주시기 바랍니다.
동시에 Steam, GOG, Epic Games Store, Microsoft Store를 통한 PCWindows, macOS, Linux) 및 Xbox Play Anywhere를 통한 Xbox, Nintendo Switch™, Nintendo Switch, PlayStation, PlayStation 5, Xbox Series X|S, iOS, Android 동일한 게임을 준비하는 것은 어떤 스튜디오에게나 야심 찬 기술적 도전입니다. Soft Crunch Games의 4인 핵심 팀에게는 처음부터 크로스 플랫폼 개발을 게임 아키텍처의 일부로 만드는 것을 의미했습니다.
폭시 덤플링은 번아웃에서 회복하기 위해 가족의 만두 레시피와 푸드 트럭으로 다시 시작하는 전문 셰프 리사를 다룬 아늑한 요리 및 경영 게임입니다. 플레이어들은 실제 음식 문화를 모티브로 한 12개의 장소를 여행하고, 재료를 재배하며, 지역 레시피를 배우고, 트럭을 운행하며, 자신만의 요리를 발명합니다.
그제고시 와트로바는 모든 프로그래밍, 플랫폼 포팅, 빌드 파이프라인 및 인증 작업을 담당합니다. 한 명의 프로그래머가 그 많은 대상을 책임지기 때문에, 프로젝트는 하나의 규칙을 중심으로 구축되었습니다: 모든 플랫폼은 동일한 커밋에서 동일한 게임을 받습니다.

하나의 프로젝트, 하나의 브랜치, 하나의 게임
실제로는 타협이 없다는 것을 의미했습니다. 별도의 브랜치도 없고, 반년 뒤에 모바일 에디션도 나오지 않으며, 콘텐츠가 절반인 버전도 없습니다.
그것이 몇 가지 규칙이 되었습니다. 그것이 몇 가지 규칙이 되었습니다. 모든 조작 방식은 자체적으로 완벽해야 했기 때문에, 플레이어들은 컨트롤러만으로, 터치스크린만으로, 또는 마우스만으로 게임을 끝낼 수 있어야 했으며, 키보드 유무와 상관없이 가능해야 했습니다. 세이브 파일은 모든 곳에서 동일한 바이너리 형식을 사용하므로 장치 간 진행 상황을 옮길 때 변환이 필요하지 않습니다.
세이브 파일은 모든 곳에서 동일한 바이너리 형식을 사용하므로 장치 간 진행 상황을 옮길 때 변환이 필요하지 않습니다.
"저희는 또한 인증 요구사항을 처음부터 설계 제약 조건으로 다루었습니다."라고 와트로바가 말합니다. "Foxy Dumplings에는 텍스트 입력 필드가 없으므로, 여러 다른 시스템에서 화면 키보드를 다룰 필요가 없습니다." PC 스토어 SDK(예: Steamworks)는 콘솔 및 모바일 빌드에서 자동으로 제거됩니다.
그는 아무도 수동으로 프로젝트 설정을 건드리지 않고 모든 빌드가 하나의 메뉴에서 나오기를 원했다. 오늘 그 메뉴에는 플랫폼, 빌드 유형, 데모, 테스터 빌드 및 출력 구성에 걸쳐 70개 이상의 항목이 있습니다.
플랫폼 코드를 가장자리에 유지하기
Foxy Dumplings는 하나의 Unity 프로젝트이자 하나의 브랜치입니다. 게임플레이 플레이는 항상 공유됩니다. 플랫폼 코드는 게임이 시스템과 통신하는 경계, 즉 저장, 사용자 계정, 업적 및 트로피, 클라우드 동기화, DLC 확인, 시스템 대화 상자 및 사진 내보내기에서만 허용됩니다.
간은 "각 시스템은 인터페이스 뒤에 있다"고 말합니다. 우리는 게임플레이 하나의 진입점을 제공하기 위해 파사드 패턴을 사용하고, 시작 시 작은 팩토리가 올바른 플랫폼 제공자를 선택합니다. 게임플레이 '이 업적 잠금 해제'라고 말할 수 있지만, 그것이 스팀, 플레이스테이션® 네트워크, 아니면 아무 데에도 기록되는지는 알지 못한다."
런타임 구성은 플레이어가 데스크톱으로 종료할 수 있는지 또는 웹 링크를 열 수 있는지와 같은 대부분의 차이점을 처리합니다. 빌드 스크립트에 의해 전달되는 심볼을 스크립팅 것은 Steamworks를 비(非)Steam PC 빌드에서 제외하는 경우와 같은 상황을 처리합니다. Unity 플랫폼 정의는 코드가 다른 곳에서 컴파일되지 않을 때의 최후의 수단입니다.
텍스트 차이도 데이터입니다. Localization 키는 플랫폼 변형이 있으므로, 게임플레이 코드를 변경하지 않고도 "Achievement"가 PlayStation®에서 "Trophy"가 될 수 있습니다.

폭시 덤플링 | 소프트 크런치 게임즈
두 번 일어나는 모든 것을 자동화하는 것
와트로바가 업무량을 관리하는 방식은 부분적으로 경험 덕분이고 부분적으로는 같은 일을 두 번 반복하지 않으려는 태도 덕분입니다. 플랫폼 전반에 걸쳐 반복되는 모든 것은 결국 스크립트나 메뉴 항목 되었습니다.
특정 빌드를 만드는 것은 올바른 정의, 출력 폴더 및 설정만 있으면 클릭 수 한 번으로 가능합니다. 또한 약 40개의 플랫폼 및 스토어 구성을 걸쳐 컴파일 검사를 실행하여 QA가 발견하기 전에 고전적인 "Windows 컴파일되지만 PlayStation 작동하지 않는" 문제를 잡아냅니다.
범위도 중요합니다. 플랫폼 작업량을 늘리는 기능들, 즉 텍스트 입력, 호스팅하거나 관리해야 하는 온라인 기능, 인게임 구매는 거절했습니다. 그는 또한 PlayStation 4와 PlayStation 5 모두에서 실행되는 PlayStation 빌드 하나를 배송한다고 말합니다.
계약업체는 플랫폼에 대해 생각할 필요가 없습니다. UI는 4K 캔버스에서 한 번 디자인되고 플랫폼별로 크기가 조정됩니다. 사운드 팀은 하나의 FMOD 프로젝트에서 작업합니다. 게임 디자이너는 모든 곳에서 동일한 데이터 에셋으로 콘텐츠를 구축합니다. 그는 "플랫폼 차이는 내 일이지, 그들의 일이 아니다"라고 말합니다.

폭시 덤플링 | 소프트 크런치 게임즈
코드를 작성하기 전에 입력 및 UI 설계하기
Wątroba의 첫 번째 단계는 Foxy Dumplings 팀의 UX 디자이너와 함께 종이에 디자인하는 것이었습니다.
"입력과 UX가 처음부터 고려되지 않아서 프로젝트들이 고통받는 것을 봤다"고 와트로바는 말합니다. 우리의 접근 방식은 본질적으로 다음과 같았습니다: 이것이 저희 게임이니, 모든 플랫폼에서 작동하도록 만들어 주세요.
코드를 한 줄 작성하기 전에 종이에 문제들을 해결한 것이 팀이 나중에 많은 어려움을 피하는 데 도움이 되었습니다.
UX가 완료된 후, 그들은 Input System 주변에 하나의 액션 세트와 세 가지 제어 방식(게임패드, 키보드 및 마우스, 터치)을 갖춘 컨트롤을 구축했습니다. 게임은 플레이어가 마지막으로 사용한 것에 따라 실시간으로 방식을 전환하며, UI도 자동으로 따라갑니다.
팀은 거의 200개 지점에서 단일 버튼 프롬프트 프리팹을 사용했습니다. 각 플랫폼의 입력을 이해합니다. "컨트롤러를 집어 들면 프롬프트가 바뀌고, 마우스를 움직이면 다시 바뀐다"고 그가 말한다.
요리 미니게임이 가장 어려웠는데, 왜냐하면 각각의 게임이 모든 입력 방식과 작동해야 했기 때문입니다. 스팀 덱은 그들에게 중요한 규칙을 가르쳐 주었다: 장치가 존재하는지 묻지 말고, 필요한 입력을 실제로 생성할 수 있는지 물어보세요.
Wątroba는 "그 터치스크린은 마우스와 왼쪽 버튼처럼 보일 수 있는데, 두 마우스 버튼을 모두 필요로 하는 미니게임을 완료할 수 없게 만들었다"고 설명했다. 기기보다는 기능 중심으로 설계하는 것도 구형 Android 하드웨어에 도움이 되었습니다.

폭시 덤플링 | 소프트 크런치 게임즈
가장 약한 하드웨어부터 프로파일링하기
Foxy Dumplings는 Spine 캐릭터와 비조명 재질을 사용하는 2D 게임이므로, GPU에 부하가 걸리는 경우는 보통 전체 화면 레이어가 너무 많거나 픽셀이 너무 많기 때문입니다.
한 가지 예는 부엌이었습니다. 일부 효과는 4K 렌더 텍스처로 렌더링되어 UI 위에 합성되었는데, 이는 1080p 또는 720p 디스플레이에서는 불필요합니다. Watroba가 렌더 텍스처를 실제 화면 해상도에 맞게 변경하고 게임에서 사용하지 않던 HDR 및 뎁스 텍스처를 비활성화했습니다. 시각적으로는 아무것도 변하지 않았지만, Steam Deck에서 해당 레이어가 프레임당 약 8배 적은 픽셀을 채우고 있으며, 렌더 텍스처 크기가 약 32MB에서 약 4MB로 줄었습니다.
와트로바의 프로파일링 과정은 그가 몇 년 전에 배운 것과 동일하다: 그는 실제 장치에서 개발 빌드를 만들고, Unity 프로파일러를 연결하여 비싼 부분을 찾고, 측정하고, 수정하고, 다시 측정합니다. 그는 "그 장치가 왕이다"라고 말합니다.
기억에도 주의가 필요합니다. 이 팀은 중국어, 일본어, 한국어, 태국어를 포함하여 14개 언어를 지원하며, 각 언어는 자체 폰트 아틀라스를 가집니다. 팀이 언어 변경 중 메모리 급증을 확인했을 때, 할당 경로를 프로파일링한 결과 정적 아틀라스에 누락된 문자들이 런타임에 과도하게 큰 4096x4096 대체 아틀라스로 래스터화되었고, 새 문자마다 전체 16MB 아틀라스가 재업로드되는 것을 발견했습니다.
수정 사항은 폴백 폰트를 2048×2048 페이지로 재생성하고 전환 전에 글리프를 일괄적으로 추가한 것인데, 이로 인해 일본어용 새 아틀라스 메모리가 약 48MB에서 폰트당 4~8MB로 줄었습니다.
팀은 Addressables를 프로젝트에서 사용했는데, 이는 Unity Localization이 그것을 기반으로 구축되었기 때문입니다. 모든 14개 언어의 문자열 및 에셋 테이블은 Addressable 그룹에 있으며 언어별로 로드됩니다. "모든 것이 여전히 로컬로 전송되지만, Addressables 해당 데이터와 메모리를 관리하는 깔끔한 방법을 제공합니다."

폭시 덤플링 | 소프트 크런치 게임즈
공유 게임플레이를 한 번 테스트하고, 플랫폼 동작을 여러 번 테스트합니다
팀은 대규모 자동화 테스트 스위트를 가지고 있지는 않지만, 인게임 Economy 붕괴될 수 있는지 확인하는 시뮬레이션을 포함하여 일부 시스템을 자동화하고 있습니다.
그들에게 QA를 관리하기 쉽게 만드는 것은 플랫폼들이 거의 모든 코드를 공유한다는 점입니다. 게임플레이 반복 속도가 가장 빠른 PC 깊이 있게 테스트됩니다. 콘솔 및 모바일에서는 플랫폼 계층에 초점을 맞춰 테스트를 진행합니다. 여기에는 인증 요구 사항, 저장 및 로드, 일시 중지 및 재개, 사용자 전환, 컨트롤러 연결 해제, 트로피 및 도전 과제, 저장 공간 부족 등이 포함됩니다.
"저희 외부 QA 파트너는 릴리스, 디버그, 그리고 디버그 도구가 포함된 '완전 해제' 릴리스를 받습니다."라고 와트로바가 말했습니다. 테스터들은 어떤 챕터나 미션으로든 이동하여 돈, 에너지 또는 시간을 조작할 수 있으므로, 버그 하나를 확인하기 위해 5시간을 다시 플레이할 필요가 없습니다.
대중 시연회도 주요 테스트원이었습니다. 18,000명 이상의 사람들이 플레이했으며, 팀은 접근성 기능, 버그 수정, 튜닝 및 품질 개선으로 이어진 1,000건 이상의 설문 응답을 받았습니다.
크로스 플랫폼 저장을 먼저 이식 가능하게 만들기
크로스 플랫폼 진행은 저장 자체를 이식 가능하게 만드는 것에서 시작되었습니다. 진보는 모든 플랫폼에서 바이트 단위로 동일한 형식의 하나의 암호화된 바이너리 파일입니다. 모바일에서 저장한 파일은 PC 읽을 수 있습니다.
동기화에는 두 가지 계층이 있습니다. 첫 번째는 각 플랫폼의 네이티브 Cloud Save 기능입니다. 두 번째는 생태계 간에 진행 상황을 전달하는 Unity Cloud Save입니다. 둘 다 동일한 인터페이스 뒤에 있으며, 그 위에는 병합 로직이 있습니다.
각 저장 슬롯은 마지막 업데이트 타임스탬프를 기준으로 비교됩니다. 삭제된 슬롯은 클라우드에서 돌아오지 않도록 마커를 남깁니다. 병합은 메인 메뉴에서만 발생하며, 게임 도중에 발생하지 않습니다. 왜냐하면 Foxy Dumplings는 플레이어가 잠자리에 들 때 저장하기 때문입니다. 네트워크가 없을 때는 업로드를 조용히 재시도하고 게임이 일시 중지될 때 플러시합니다.
팀은 Unity Authentication 코드 링크를 사용하여 콘솔과 PC를 연결하므로 플레이어는 다른 계정이 필요하지 않습니다. 크로스 프로그레션은 옵트인 사항이며, 게임은 오프라인에서도 완전히 플레이 가능합니다.
와타르바는 "가장 큰 교훈은 저장하는 것은 쉬운 부분이고, 정체성이 어려운 부분이라는 것이었다"고 말합니다. 모든 생태계에는 플레이어가 누구인지에 대한 고유한 생각이 있으므로 Authentication Steam 티켓, PlayStation 토큰, Xbox 토큰을 개별적으로 신뢰해야 합니다."

폭시 덤플링 | 소프트 크런치 게임즈
다른 플랫폼 문제를 만들지 않고 포크스타그램 구축하기
포크스타그램은 리사의 인게임 휴대폰에 있는 앱으로, 플레이어들이 접시, 식기류, 재료, 만두, 필터, 프레임 및 스티커를 사용하여 요리 사진을 구성한 다음, 레스토랑 인기를 높이기 위해 게시합니다.
주요 아키텍처 결정은 에디터를 플랫폼별 코드가 없는 일반 Unity UI 유지하는 것이었습니다. Wątroba는 "그것의 50개 필터는 오버레이가 아니라 사진 재질의 하나의 셰이더 프리셋입니다"라고 설명합니다. 사진을 찍을 때, 전용 카메라는 출력 해상도로 사진 영역을 정사각형 렌더 텍스처로 렌더링합니다. AsyncGPUReadback으로 다시 읽고 결과를 JPG로 인코딩합니다. 그 프레임은 카메라 플래시처럼 보여요.
출력 해상도와 JPG 품질은 플랫폼별 설정에서 가져옵니다. 편집기는 마우스, 컨트롤러, 터치를 지원합니다: 데스크톱에서는 드래그 및 마우스 휠, 컨트롤러에서는 스틱 및 트리거, 터치에서는 핀치 및 트위스트를 지원합니다.
게임 외부 공유는 각 플랫폼의 자체 도구를 통해 이루어집니다. PC 사진 폴더나 Steam 미디어 라이브러리를 사용할 수 있고, 콘솔은 시스템 앨범을 사용하며, 모바일은 시스템 공유 시트를 사용합니다. 소규모 팀의 경우, 플랫폼의 기존 공유 기능을 사용하면 많은 인증 및 Moderation 작업을 줄일 수 있습니다.

폭시 덤플링 | 소프트 크런치 게임즈
Unity 6.3 LTS로 이동
"Wątroba는 Unity 6.3 LTS가 가져온 가장 가치 있는 것은 우리가 의존하는 모든 것이 일치하고 지원 기간이 출시 요구 사항을 충족하는 LTS 릴리스라고 말합니다."
팀은 ScriptableObject 편집과 같은 영역에서 6.3 더 안정적임을 발견했으며, 구형 Android 기기들은 Vulkan 수정의 혜택을 받았습니다.
빌드 시간도 개선되었습니다. IL2CPP를 사용하면 플랫폼과 반복 유형에 따라 빌드가 대략 10~15% 더 빨라질 것으로 예상합니다. "런타임 성능도 몇 퍼센트 향상되었으며, 특히 사양이 낮은 하드웨어에서 두드러집니다."
업그레이드는 대부분 순조로웠습니다. 모든 VFX Graph 효과는 마이그레이션 중에 셰이더 참조가 손실되어 처음에 보이지 않았는데, 그래프를 다시 가져오니 금방 해결되었습니다.
항구가 있기 전에 항구를 계획하는 것
팀에 가장 큰 영향을 미친 결정은 한 브랜치를 유지하고 처음부터 플랫폼 차이에 대해 엄격하게 지킨 것입니다. 게임플레이 코드는 어떤 플랫폼에서 실행되는지 묻지 않습니다. "다르다면 그것은 데이터이거나, 품질 설정이거나, 인터페이스 뒤에 있는 제공자입니다."라고 와트로바가 말합니다.
팀은 게임 디자인 문서, 아트 바이블, 내러티브 바이블과 함께 기술 아키텍처 문서를 작성했으며, 이를 권장합니다. 간행물 'Wątroba'에 따르면, "프로덕션 전에 게임의 기술적 계층을 그리는 것이 책임 소재를 분리하는 데 도움이 되었고 플랫폼 추가를 훨씬 쉽게 만들었습니다."
다음번에는 팀이 모든 개발 키트에서 빌드를 훨씬 더 일찍 실행할 수 있을 것입니다. "아키텍처는 올바랐지만, 실제 콘솔 작업의 많은 부분이 제출 몇 달 전에 이루어졌고, 하드웨어는 항상 에디터가 발견하지 못하는 것들을 찾아냅니다."

폭시 덤플링 | 소프트 크런치 게임즈
전 세계 어디든 게임 배송
Foxy Dumplings는 간단한 기술적 약속을 기반으로 구축되었습니다. 즉, 동일한 게임을 동일한 코드베이스로 PC, 콘솔 및 모바일에서 즐길 수 있다는 것입니다. 소규모 팀의 경우, 크로스 플랫폼 개발을 마지막에 처리하는 포팅 작업이 아닌 아키텍처 제약 조건으로 다루어야만 작동합니다.
"게임플레이를 공유하고, 플랫폼 통합을 격리하며, 반복적인 빌드 작업을 자동화하고, 가장 취약한 대상을 일찍 테스트함으로써, 우리는 동시 출시를 Foxy Dumplings의 많은 버전을 유지하는 것보다 모든 곳에 하나의 게임을 출시하는 것에 더 가깝게 만들고자 한다"고 와트로바가 말합니다.
Foxy Dumplings는 2027년에 Steam, GOG, Epic Games Store, Microsoft Store를 통해 PC(Windows, macOS, Linux)에서, 그리고 Nintendo Switch 2, Nintendo Switch, PlayStation 4, PlayStation 5, Xbox Series X|S, iOS, Android에서 이용 가능할 예정입니다. Unity 개발자들의 더 많은 이야기를 Unity Blog와 Resource Hub에서 확인하세요.
*Nintendo Switch는 닌텐도의 상표입니다.