Mars Attracts, 아울타이어 게임즈에서 개발하였으며 현재 이용 가능 스팀의 얼리 액세스에서, 타이쿤 장르에 교활한 반전을 제공하며, 플레이어에게 외계 동물원을 채우고 운영하는 임무를 부여합니다. 우리는 아울타이어 게임즈의 기술 이사인 폴 프로갯과 인터뷰를 진행하여, 그들의 최신 출시가 어떻게 이루어졌는지, 상징적인 IP와 작업하는 것부터 복잡한 테마파크 시뮬레이션을 구동하기 위한 올바른 기술적 결정을 내리는 것까지 배웠습니다.
우리 독자들에게 Mars Attracts의 기원에 대해 조금 이야기해 주실 수 있나요? 어떻게 이 IP와 함께 일하게 되었나요?
Mars Attracts는 게임 플레이 개념에서 시작되었습니다: 외계 동물원에서 전시물로 사용하기 위해 인간을 납치하는 교활한 타이쿤 게임에 대한 것입니다. 개념을 염두에 두고 매우 기본적인 프로토타입을 가지고, 우리는 게임의 세계에 개성을 더할 수 있는 IP를 찾기 시작했습니다.
가장 먼저 떠오른 프랜차이즈 중 하나는 화성 공격!이었습니다. 팀은 1996년 팀 버튼 영화의 열렬한 팬이었고, 권리를 조사한 후 우리는 영화가 기반으로 한 원래의 레트로 공상과학 자동차에 반하게 되었습니다. 우리는 Topps에 연락을 취했습니다 (그들은 화성 공격!의 소유자입니다). IP)이며, 그들이 우리의 기발한 게임 개념에 관심을 보였을 때 매우 기뻤습니다.
게임 플레이 개념과 IP가 마련되자, 팀은 확장되었고 우리는 게임을 구축하는 작업에 착수했습니다! 가장 기술적으로 어려운 작업은 악당 천재, 던전 지기, 테마 병원, 그리고 롤러코스터 타이쿤의 맥락에서 전체 규모의 타이쿤 게임을 만드는 복잡성이었습니다. 작은 (5-6명) 팀으로.
그 도전들에 대해 좀 더 구체적으로 이야기해 봅시다 – 화성 공격!의 세계를 테마파크 시뮬레이터로 가져오는 데 직면한 창의적이고 기술적인 장애물은 무엇이었나요? 그의 독특한 어두운 유머를 게임 플레이로 어떻게 번역했나요?
화성 공격 공원 시뮬레이터를 만드는 데 있어 가장 창의적으로 도전적인 요소 중 하나는 실제로 IP와 관련이 없었습니다 – 이 장르는 훌륭한 작품이 많아 이 유형의 게임에서 사람들이 기대하는 기본적인 기능, 삶의 질 기능 및 복잡성이 있습니다. 그 기본 기능을 게임이 다른 장르의 작품들과 어깨를 나란히 할 수 있는 수준으로 끌어올리는 데는 수년이 걸렸습니다. 그것이 마련되자, 화성 공격! 메커니즘으로 게임을 차별화하는 것은 훨씬 쉬워졌고 (그리고 매우 재미있었습니다)! 인간을 고문하는 가장 끔찍한 방법에 대한 회의는 결코 질리지 않습니다.
Mars Attracts는 테마파크의 모든 손님과 직원의 행동을 이끄는 "복잡한 필요 기반 캐릭터 AI"를 특징으로 합니다. 그것이 어떻게 작동하는지에 대한 일반적인 아이디어를 줄 수 있나요? 그렇게 많은 캐릭터의 결정과 움직임을 동시에 관리하는 도전에 어떻게 대처했나요?
각 캐릭터는 필요(배고픔, 갈증, 흥분 등)의 집합을 가지고 있으며, 현재 그 필요에 대해 얼마나 행복한지에 따라 순서를 매깁니다. 그들은 목록을 내려가며 필요에 대한 근처의 해결책을 찾으려고 합니다(예: 배고픔을 위한 음식 노점, 흥분을 위한 놀이기구 등). 할 일이 있으면, 그들은 그것을 하러 가는 임무를 부여받습니다. 그렇지 않으면, 목록에서 다음 필요로 내려갑니다.
시스템을 구축하면서 얻은 주요 학습 중 하나는 임무를 두 부분으로 나누는 것이었습니다 – 목적지와 의도. 원래 우리는 의도를 분리하지 않았습니다; 예를 들어, 배고픈 캐릭터는 "음식 노점으로 걸어간다"고 했지만, 우리는 이것이 더 복잡한 행동에 대한 제한이 된다는 것을 발견했습니다 – 손님은 음식을 사기 위해 음식 노점으로 걸어갈 수 있지만, 청소부는 그것을 수리하기 위해 음식 노점으로 걸어갈 수 있습니다. 다중 요소 작업 시스템이 생기자 우리는 캐릭터에 대해 훨씬 더 많은 변화를 구축할 수 있었습니다.
기술적인 수준에서, 경로 찾기는 Unity와 그리드 그래프를 위한 A* Pathfinding 플러그인을 사용합니다. 흥미롭게도, 우리는 서로 다른 작업을 위해 서로 다른 그래프를 가지고 있어서, 만약 인간이 탈출하고 싶다면 벽과 장애물을 통과할 수 있는 그래프를 사용합니다(장애물에 대한 이동 패널티를 사용하여 가능하면 그 주위를 걷게 합니다). 이는 인간이 원한다면, 당신의 완벽하게 손질된 공원을 통해 파괴의 길을 열 수 있다는 것을 의미합니다.
메시 기반 애니메이션 시스템을 선택한 결정의 배경은 무엇이었나요? 어떤 거래를 해야 했고, 그 선택이 당신의 예술 및 애니메이션 작업 흐름에 어떻게 영향을 미쳤나요?
게임은 한 번에 수백(혹은 결국 수천)의 손님이 화면에 있을 수 있는 잠재력을 가지고 있습니다. 우리는 성능을 희생하지 않고 대규모 군중을 원했고, 애니메이터 구성 요소가 성능 대역폭의 상당 부분을 차지하고 있다는 것을 발견했습니다.
이를 해결하기 위해, 공원의 손님을 위해 우리는 메시 기반 애니메이션으로 전환했으며, 이는 애니메이션을 미리 구워서 많은 수의 캐릭터에 대해 훨씬 더 성능이 좋은 애니메이션을 제공합니다.
단점은 각 변형이 맞춤형으로 제작되어야 하므로 손님에게 변화를 추가하는 것이 더 어렵다는 것이며, 우리는 상대적으로 짧은 애니메이션에서 가장 잘 작동하는 것을 발견했습니다.
이 게임은 IP에서 전반적인 모습과 느낌까지 향수를 불러일으키는 감각을 정말 잘 활용합니다. 특정 미학을 포착하고 원하는 "모습"을 달성하기 위해 어떤 특정 기술이나 시각적 요소를 사용했습니까?
향수와 새로움의 올바른 균형을 맞추는 것이 우리에게 큰 초점이었습니다. 시각적인 면에서 색상 팔레트와 건축 디자인은 레트로 미래주의에서 영감을 받았습니다. 게임에는 너무 매끄럽게 보이는 것이 없으며, 1960년대 사람들이 화성의 문명이 어떻게 보일지 생각했던 것처럼 보이도록 의도되었습니다.
Mars Attracts | Outlier Games
기술적 기초에 관해서, 귀하의 팀이 유니버설 렌더 파이프라인 (URP)를 선택하게 된 이유는 무엇입니까? 그 선택이 이 특정 시각 스타일과 캐릭터 밀도를 가진 프로젝트에 어떻게 도움이 되었습니까?
Mars Attracts의 비주얼은 장르의 고전과 레트로 공상과학을 연상시키도록 의도되었으며, 현대 게임에 대한 플레이어의 기대를 충족시키는 것이었습니다. 주요 고려 사항은 a) 단일 3D 아티스트로 모든 것을 만들 수 있는지, b) 저사양 기기에서도 게임이 잘 작동할 수 있는지였습니다. URP의 접근성과 안정성은 우리가 달성하고자 하는 환경을 구축하는 데 이상적이었습니다.
게임이 원활하게 실행되도록 보장하기 위해 다른 어떤 접근 방식을 사용했습니까? 이 규모의 시뮬레이션에서 성능을 최적화하기 위한 가장 효과적인 전략은 무엇이었습니까?
유니티 프로파일러는 병목 현상을 식별하는 데 매우 유용했습니다. 손님의 수로 인해 대부분의 성능 개선은 손님 AI의 비효율성에 관한 것이었습니다.
간단한 예로, 플레이어가 손님이 방문할 수 있는 1,000개의 다양한 건물이 있는 큰 공원을 상상해 보세요. 손님이 배고프면, 그들은 음식이 제공되는지 확인하기 위해 1,000개의 건물을 모두 돌아봐야 합니다. 만약 그렇다면, 건물의 상태를 확인하여 음식이 재고가 있는지, 손상되지 않았는지, 직원이 있는지 등을 확인합니다. 사용할 수 있는 건물이 없다면, 손님의 다음 필요(예: 갈증)에 대해 반복하고, 10-15개의 필요에 대해 반복합니다. 그런 다음 500명의 손님으로 곱합니다. 1,000개의 건물 x 10개의 필요 x 500명의 손님 = 5,000,000회의 확인입니다.
이를 해결하기 위해 우리는 공원 내에 검색 지역을 구현하여 손님이 현재 지역이나 인근 지역의 건물만 "볼" 수 있도록 했습니다. 이렇게 하면 확인해야 할 건물 수가 100개로 줄어들 수 있으므로, 100개의 건물 x 10개의 필요 x 500명의 손님 = 500,000회의 확인입니다. 플레이어에게는 실제로 큰 차이가 없는 엄청난 절약입니다.
Mars Attracts | Outlier Games
돌아보면, 프로젝트가 더 복잡해짐에 따라 정말로 효과를 본 초기 건축 결정은 무엇인가요?
UnityEvents. 우리는 이들을 항상 사용합니다. 이전 프로젝트 This Means Warp에서 얻은 주요 교훈은 모듈화되고 독립적인 코드의 중요성입니다. Unity Events를 사용하여 클래스 간에 통신하면 하드코딩된 연결을 대폭 줄이고 새로운 기능을 구축하는 것이 훨씬 쉬워집니다.
중요한 시각 정보를 플레이어에게 보여주기 위해 세분화된 오버레이 셰이더를 사용하는 것에 대해 언급하셨습니다. 그것에 대해 자세히 설명해 주시겠습니까?
네, 우리는 그리드에 저장된 값을 기반으로 재료를 업데이트하는 사용자 정의 셰이더가 있습니다. 이것은 유저가 타일이 얼마나 아름답거나 깨끗한지, 또는 특정 서식지의 건물과 얼마나 가까운지를 시각화할 수 있게 해줍니다. 저는 셰이더를 만들지 않았기 때문에 그것이 어떻게 작동하는지에 대해서는 그냥… 마법이라고 말하겠습니다.
Unity Editor의 Mars Attracts: 많은 관리자들이 게임의 시뮬레이션을 재현하기 위해 상호작용하며, 각자는 GameManager의 범위 내에서 하나의 작업을 담당합니다.
Unity Asset Store에서 특히 가치 있는 도구가 있었나요? 그렇다면 왜 그런가요?
BGDatabase – 모든 건물 통계 및 지역화 문자열은 Google 시트에서 가져옵니다. 이것은 대규모로 업데이트하는 것을 훨씬 쉽게 만들고, 지역화 파트너로부터 입력을 받는 등의 작업을 가능하게 합니다. BGDatabase는 이를 Unity에 원활하게 통합하는 데 도움을 주며, 우리는 모든 프로젝트에서 사용합니다.
타이쿤 스타일의 게임을 만들고자 하는 개발자에게 어떤 조언을 해주고 싶으신가요? 특히 많은 AI 에이전트가 포함된 시뮬레이션에 대해?
많은 캐릭터로 성능을 개선하기 위해 메쉬 기반 애니메이션을 고려해 보라고 강력히 추천합니다. 유사하게, 프로파일러와 작업하는 것은 절대적으로 중요합니다.
우리가 더 일찍 생각했으면 좋았던 한 가지는 저장/불러오기입니다. 우리는 EasySave3 플러그인을 사용하지만, 게임에 저장 및 불러오기 기능을 통합한 것은 초기 접근 출시 직전이었습니다. 저장 및 불러오기 지원은 모든 기능에 대해 작동하도록 하려면 약간의 오버헤드를 추가하므로, 모든 것을 한 번에 처리하는 데 시간을 절약했지만, 개발 중 테스트 속도를 높이는 데 미칠 수 있는 영향을 고려하지 않았습니다. 수백 명의 손님이 있는 환경을 생성할 수 있는 것은 현실적인 플레이 경험을 반영하는 데 매우 유용하며, 대규모 공원을 디버깅하고 최적화하는 데 도움이 됩니다.
출시 직전에 누군가가 준 관련 팁 – 플레이어의 저장 게임을 모든 인게임 피드백 보고서에 첨부하세요. 문제를 재현하는 데 매우 유용합니다!