본문 바로가기
게임개발/가마수트라

심층 분석: Fruitbus에서 맛깔스러운 음식 준비 경험 만들기

by 아수랑 2024. 7. 14.
728x90
반응형

'중요한 것은 시뮬레이션의 정확성이 아니라 요리하는 느낌입니다.'

관련 분야: 게임 기획, 프로그래밍
작성자: Dennis Foose

다채로운 푸드 트럭에 줄을 선 동물 캐릭터를 보여주는 Fruitbus의 키 아트. KRILLBITE STUDIO 이미지 제공.


게임 개발자 심층 분석은 비디오 게임의 특정 디자인, 아트 또는 기술적 특징을 조명하여 단순해 보이는 근본적인 디자인 결정이 실제로는 전혀 간단하지 않다는 것을 보여주기 위해 진행 중인 시리즈입니다.
이번 에피소드에서는 크릴바이트 스튜디오의 개발자 데니스 푸스(Dennis Foose)가 Fruitbus에서 요리 경험을 디자인한 방법과 완벽한 시뮬레이션보다 요리하는 느낌을 더 중요하게 생각한 이유를 설명합니다.

Fruitbus는 맛이 전부인 오픈 월드를 배경으로 한 귀여운 요리 어드벤처 게임입니다. 든든한 트럭을 업그레이드하고 새로운 목적지로 가득한 전 세계를 함께 방문하세요. 구스툼 군도의 각 섬에서 신선한 과일과 채소를 발견하고, 그곳의 풍습을 배우고, 누군가의 하루를 즐겁게 해줄 요리를 만들어 보세요.

하지만 실제로 요리가 무엇인지, 그리고 이 숲속에서 어떤 종류의 도전과 예상치 못한 복잡한 문제가 나타나는지 어떻게 매력적인 스냅샷을 찍을 수 있을까요? Fruitbus의 요리 시스템을 설계하는 여정을 함께 해보세요.

매우 간단해 보입니다: 사과를 따서 한 입 크기로 자르고, 그릇에 어떤 의도를 담아 구성하기만 하면 됩니다. 모험을 즐기고 싶다면 슬라이스한 바나나를 추가할 수도 있습니다. 그 위에 움직이는 트럭을 뿌려주면 잊지 못할 추억이 될 것입니다.

우선, 누가 과일로 샐러드를 만들까요? 햄버거와 샌드위치를 섞어 먹는 것만큼이나 음란한 일이죠.

둘째, 소개에서 예고를 하기엔 좀 이르지 않나요?

오늘 밤 메뉴에는 다음과 같은 와일드카드가 있습니다:

양자 얽힘! 작곡! 프로세스! ... 그리고 애플 크루통 수프?

과일_버스_소리아_모리아.png 크릴바이트 스튜디오 이미지 제공.

반응형


초기 프로토타입

일반적으로 저희의 철학은 메커니즘과 상호작용하는 견고한 레이어를 제공하기 위해 가능한 한 물리학에 의존하는 것이었습니다.


커팅

다이내믹 커팅, 수많은 조각들. 크릴바이트 스튜디오 이미지 제공.

Frying

사과 조각을 튀기고 있습니다. 크릴바이트 스튜디오 이미지 제공.


게임의 초기 단계에서는 런타임에 오브젝트를 동적으로 잘라낼 수 있는 다이내믹 메시 커터 플러그인을 사용했습니다. 여기에 기본적인 나이프 스킬과 약간의 손놀림을 더했습니다.

그런 다음 프라이팬에서 "익은 상태"가 특정 임계값 이상이 될 때까지 조각과 덩어리를 볶습니다. 운이 나쁘면 타 버릴 수도 있습니다.

"사과와 생강 스무디를 원하세요?" 레시피에서 요구하는 요구 사항을 충족할 수 있도록 사과와 생강을 충분히 잘게 썰어서 준비합니다.

작은 조각들을 블렌더에 갈아 스무디를 만드세요. Krillbite Studio 이미지 제공.


덩어리를 블렌더에 넣으면 완성입니다. 컵의 3분의 1을 이상한 액체 조합으로 채웠습니다.

이러한 프로토타입은 개별적으로 보면 재미있는 인터랙션이나 메커니즘으로 지나칠 수 있습니다. 하지만 이 시제품들을 조합하면 바닥에 각종 과일 조각과 정체불명의 액체, 모호한 상태로 가득 찬 지저분한 주방이 됩니다.

바나나 한 조각의 맛을 코드로 어떻게 표현할 수 있을까요? 바나나를 튀겨서 삶은 다음 액체로 만든 다음 사과와 생강 스무디와 섞으면 어떨까요? 요리의 맛에 기여하려면 바나나 조각이 몇 개나 필요할까요? 튀기거나 태우면 맛이 얼마나 더해지나요? 너무 자의적으로 세분화되어 있어서 금방 지저분해지고 압도당합니다.

예전의 저라면 얇고 긴 파스타 모양을 만들기 위해 열심히 코스를 짜며 혼란스러워했을 것입니다. 새로운 저에게는 그저 바나나, 사과, 생강을 볶은 스무디일 뿐입니다.

과일버스에서 아이디어를 구상하고 프로토타입을 제작하는 단계에서 얻은 좋은 점 중 하나는 요리 시뮬레이션에 적합한 줌 수준이나 범위를 찾는 것이었습니다.

중요한 것은 시뮬레이션의 정확성이 아니라 요리하는 느낌입니다. 게임 디렉터인 토마스는 이 게임을 "할리우드 요리"라고 불렀습니다. 그 문구를 떠올릴 때마다 입가에 미소가 지어집니다.

칠리 마늘 볶음. Krillbite Studio 이미지 제공.


식품 가공

2022년 말에 접근 방식에 중추적인 변화가 생겼습니다.

어느 날 조나스와 제가 화이트보드에 머리를 맞댔더니 몇 가지 요소가 나타나기 시작했습니다. 일반적인 프로세스는 대부분 음식이 서빙되고 평가될 수 있는 요리가 되기까지 거쳐야 하는 여러 단계에 대해 이야기하는 것이었습니다.

저희는 가능한 한 많은 이전 시스템에 영향을 줄 수 있는, 일종의 최소한의 실행 가능한 요리를 생각해냈습니다.

하지만 그 전에 한 단계 더 내려가야 할 때입니다.

 

다양한 음식과 도구의 정확한 단계를 보여주는 차트. 크릴바이트 스튜디오 이미지 제공.


과정. 음식이 변화하는 과정을 나타내는 동사. 예를 들어 블렌딩 또는 액화.


어플라이언스는 블렌더와 같이 프로세스를 수행할 수 있는 객체입니다. 예를 들어 외부에서 버튼을 통해 활성화하려면 입력이 필요하지만 그 이후에는 자체 장치에 맡길 수 있습니다.


도구는 나이프와 같이 플레이어의 상호작용을 통해 트리거할 수 있는 프로세스입니다. 어떤 작업을 수행하려면 플레이어의 반복적인 입력이 필요합니다. 또한 기기와 같은 외부 시스템에 의존하지 않고 직접 입력을 가져옵니다.


음식 오브젝트는 먹을 수 있는 오브젝트를 표현한 것입니다. 음식 오브젝트는 일반적으로 원형 또는 템플릿으로 구성됩니다(예: 금색 표준 바나나, 분홍색 표준 사과).


상태는 음식 개체의 표현입니다(사과가 얇게 썰어져 튀겨져 있음).


비주얼은 현재 상태의 푸드 오브젝트를 시각적으로 표현한 것입니다.

 

양상추 과일 버스. Fruitbus에서 사과가 어떻게 생겼는지 궁금한 적이 있나요? 크릴바이트 스튜디오 이미지.


이제 양상추를 통해 사과의 해부학적 구조를 살펴봅시다.

이것은 Fruitbus에서 식품을 나타내는 데이터 구조로, 해당 과일의 전형적인 버전을 정의합니다.

사과를 예로 들어보겠습니다. 사과가 욕망할 수 있다는 것은 아주 분명합니다.

또한 사과에는 뚜렷한 맛이 있어 다양한 과정을 거쳐 흡수 가능한 것으로 간주하여 지속됩니다.

그리고 사과는 절단할 수도 있습니다. 즉, 사과를 칼에 넣으면 슬라이스 사과 또는 튀긴 사과로 변신할 수 있습니다.


Cuttable

Cuttable. 크릴바이트 스튜디오 이미지 제공.

 

public class Cuttable : AbleBase
{ 
    [InfoBox("If this object is not tagged with Whole by default, the new default tag should be set here. " +
             "For example, Bread Slice is Sliced by default, so Sliced tag should be put here")]
    public FoodObjectTag wholeTagOverride;
    public List<CuttingData> cuttingData;

    [Serializable]
    public class CuttingData
    {
        public FoodObjectTag tag;
        public GameObject prefab;
    }
}

컷테이블 객체가 어떤 단계를 거칠 수 있는지 정의하는 코드입니다.

 

과일 버스 사과. 왼쪽은 얇게 썬 사과입니다. 오른쪽은 잘게 썬 사과. 크릴바이트 스튜디오 이미지 제공.


이제 최소한의 요리로 돌아가 보겠습니다. 따라야 할 레시피는 다음과 같습니다.

사과 크루통 수프. 사과를 깍둑 썰기하고 액화시킵니다. 빵을 굽습니다. 한 조각을 자릅니다. 그 조각을 주사위를 굴립니다. 크루통을 굽습니다. 사과를 삶아 크루통을 넣습니다.

애플 크루통 수프 읽기. 모든 가정의 필수품인 애플 크루통 수프?! 크릴바이트 스튜디오 이미지 제공.

 

푸드 프로세싱TM의 최소 실행 가능한 제품: 애플 크루통 수프. 크릴바이트 스튜디오 이미지 제공.


위의 예는 제가 흥미롭게 생각하는 것을 다루고 있습니다! 몇 가지 프로세스만 갖추면 이제 다양한 요리를 만들 수 있습니다. 그리고 가장 중요한 것은 너무 많은 전문 용어에 얽매이지 않고도 새로운 요리에 대해 이야기할 수 있다는 점입니다. 심지어 스필콘벤트 2023에서 노르웨이 개발자들 앞에서 요리에 대해 이야기할 기회도 있었는데, 프로세스에 대한 저희의 지나친 장황함에도 잘 따라주는 것 같았습니다.

이제 우리 앞에 놓인 일은 우리가 선택한 요리를 다듬고, 맛을 내고, 가능성의 공간을 점차 늘려나가는 것입니다. 새로운 프로세스를 추가하고 기존 프로세스와 요리의 모양과 느낌을 좋게 만드는 일입니다.

 

애플 스무디. Krillbite Studio 이미지 제공.


랩입니다! 아니면 그냥 토르티야일 수도 있죠. 하지만 현실은 아직 끝나지 않았습니다.


상호 작용 및 복잡성

후르츠버스에서 요리는 게임의 거의 모든 게임플레이 메커니즘에 영향을 미치며, 재미있게도 트럭을 운전하는 것조차 요리에 영향을 미칩니다.

물리성은 Fruitbus의 또 다른 핵심 요소입니다. 움직이는 차량과 동적인 물체를 결합하면 재미있는 버그가 발생할 수밖에 없다는 것은 누구나 알고 있습니다. 저희는 무균 환경에서 트럭 내부를 시뮬레이션할 방법이 필요하다는 것을 일찍이 깨달았습니다.

그래서 시뮬레이션과 비주얼을 분리하는 퀀텀 엔탱글리전*을 도입했습니다. 트럭에 들어가는 모든 물체는 얽혀 있는데, 이는 실제로 트럭이 거꾸로 뒤집히거나 악의적인 의도로 화산 옆으로 돌진할 걱정 없이 모든 물리학을 수행할 수 있는 평평한 평면 어딘가에 물체의 물리적 복제본이 있다는 것을 의미합니다.

*실제 양자 물리학과는 아무런 관련이 없으며, 개념을 대충 차용한 것뿐이지만 멋지게 들립니다.

 

찹찹, 잘게 자른 다음 작곡하세요. 크릴바이트 스튜디오 이미지 제공.


퀀텀 얽힘과 마찬가지로 다른 곳에서 컴포지션 시뮬레이션을 실행한 다음 안정적이면 오브젝트에 적용합니다. 이 접근 방식은 상황이 안정적이고 유효할 때 시뮬레이션의 특정 스냅샷을 캡처하기 때문에 실제로 정말 멋집니다.

실제로 사과는 피직스 상호작용을 망칠 수 있는 외부 요인이 없는 먼 곳에 있는 그릇에 깔끔하게 구성한 다음 그 결과를 트럭의 그릇에 투영하여 적용합니다.

이번 라운드에서는 시간이 없어 언급하지 못했습니다:
물체를 손에 쥐는 것과 같은 캐릭터와의 상호작용입니다.
양자 얽힘 공간 중첩.
블렌더의 실제 화폐.
컴포지션 시스템 자세히 알아보기

 

크릴바이트 스튜디오 이미지 제공.
크릴바이트 스튜디오 이미지 제공.

728x90


결론

이 글을 쓰면서 다시 한 번 깨달은 것은 애초에 흠집이 난 프로토타입을 만들지 않았다면 현재의 식품 가공 버전은 존재하지 않았을 것이라는 점입니다. 그리고 그렇게 해서 정말 감사하게 생각합니다.

푸드 프로세싱이 성공할 수 있었던 주요 이유 중 하나는 사전 제작과 재작업 계획에 최소기능제품에 들인 시간과 거의 같은 시간을 투자했기 때문입니다.

또 한 가지 우리에게 유리하게 작용한 것은 리드 팀으로부터 얻은 신뢰였습니다. 저희는 아이디어를 계획하고 실현할 수 있는 시간을 가졌습니다. 또한 아이디어에 대한 도전을 받았기 때문에 더 많은 미지의 문제를 미리 해결해야 했고, 결국 더 나은 결과를 만들어낼 수 있었습니다.

코더를 위해: 특정 메커니즘이나 시스템이 의도한 대로 작동하지 않는다고 마음속으로 느낀다면 자신감을 갖고 현 상태에 도전하여 계획을 세우고 의사 결정권자에게 프레젠테이션하세요.

리드를 위해: 다음에 두 명의 코더가 게임의 핵심 메커니즘 중 하나를 개선하기 위한 아이디어를 내놓을 때, 어느 정도 일관성이 있다면 그 아이디어를 증명할 시간을 주는 것이 좋습니다. 느슨해 보이는 개념에 몇 가지 구멍을 뚫고 도전하다 보면 게임에 더 잘 맞는 메카닉 버전이 나올 수도 있습니다.


* 원문:

 

Cooking up a palatable food prep experience in Fruitbus

It is the feeling of cooking that is important, not the preciseness of the simulation.

www.gamedeveloper.com

 

* 게임 사이트: https://store.steampowered.com/app/2484130/Fruitbus/

 

Fruitbus on Steam

A journey of flavors and friendships awaits you in your cozy, customisable food truck! Forage for fresh ingredients to create your own menu, then feed tummies and souls with home-cooked meals. Change the world, one apple at a time.

store.steampowered.com

 

댓글