마리오가 파레토를 만나다: 마리오 카트 빌드의 다목적 최적화
(mayerowitz.io)- Mario Kart 8 빌드는 드라이버, 바디, 타이어, 글라이더 조합에 따라 성능이 달라져, 많은 선택지 속에서 최적 빌드를 고르기 어려움
- 속도만 보면 Bowser나 Wario가 좋아 보이지만, 실제 레이스 선택은 속도와 가속을 함께 보는 다목적 최적화에 가까움
- Koopa처럼 같은 가속에서 더 느리거나 같은 속도에서 가속이 낮은 선택지는 지배된 선택지로 걸러낼 수 있음
- 남은 선택지들은 Pareto front를 이루지만, 그 안에서 무엇이 최선인지는 플레이 스타일과 통계 가중치에 따라 달라짐
- 선호가 불확실할 때 Pareto front는 단 하나의 정답을 주기보다, 명백히 열등한 조합을 제거해 실험 범위를 줄여줌
Mario Kart 8 빌드를 Pareto front로 줄이기
- Mario Kart 8의 빌드는 드라이버, 바디, 타이어, 글라이더 네 요소로 구성되며, 각 요소는 속도와 가속 같은 성능 통계를 가짐
- 요소마다 수십 개 선택지가 있고, 일부는 통계가 같은 스타일 차이일 뿐이지만 중복을 제외해도 수천 개 조합이 남음
- 단일 통계만 보면 선택은 단순해짐
- 예를 들어 속도만 기준으로 드라이버를 정렬하면 Bowser나 Wario가 자연스러운 선택처럼 보임
- 속도와 가속을 함께 보면 각 선택지는 장단점이 갈리며, 단순 순위만으로 최적을 정하기 어려워짐
- 어떤 선택지가 다른 선택지보다 모든 고려 통계에서 같거나 더 나쁘면 지배된 선택지가 됨
- Koopa는 예시에서 Cat Peach보다 같은 가속에서 속도가 낮고, Toadette보다 같은 속도에서 가속이 낮음
- 이런 선택지는 승리를 목표로 할 때 후보에서 제외 가능함
- 지배되지 않는 효율적 선택지들이 Pareto front 또는 Pareto frontier를 형성함
- Pareto 효율성은 객관적으로 열등한 선택지를 걸러내는 기준이지만, frontier 위의 모든 선택지가 똑같이 좋은 것은 아님
- 균형 잡힌 속도와 가속을 원하면 frontier의 극단에 있는 드라이버를 피할 수 있음
- 최종 선택은 플레이 스타일, 실력, 어떤 통계에 더 무게를 두는지에 따라 달라짐
Mario Kart 밖에서도 반복되는 트레이드오프
- 같은 구조의 트레이드오프는 게임 밖에서도 자주 나타남
- 저렴하면서 맛있는 식사
- 보수가 높고 쉽고 만족스러운 직업
- 낮은 위험과 높은 수익의 포트폴리오
- 유연하고 강하면서 생산하기 쉬운 소재
- 효율성을 유지하는 공정한 과세
- 빠르고 비용 효율적인 고품질 LLM
- 각 차원에 부여할 정확한 가중치, 즉 효용 함수를 알고 있다면 여러 차원을 하나의 값으로 합쳐 단일 목적 최적화로 바꿀 수 있음
- 효용 함수가 알려져 있지 않거나 불확실할 때는 Pareto front가 명백히 비효율적인 선택지를 제거하는 데 유용함
- Pareto front는 처음부터 단 하나의 최선 선택지를 알려주지 않으며, 남은 효율적 선택지들을 직접 실험해 자신에게 맞는 것을 골라야 함
단순화된 가정과 데이터 출처
- 실제 게임 내부 계산과는 다른 단순화 가정이 들어감
- 통계는 게임 내 파생 통계로 변환되며, 기본 통계와 항상 선형 관계가 아님
- 장비에는 드라이버를 제외하고 4개의 속도 통계와 4개의 핸들링 통계가 있지만, 글에서는 이를 단순 평균함
- 효용 함수의 구체적 형태는 숨겨져 있으며, 실제 선택에서는 큰 역할을 할 수 있음
- 데이터는 Mario Kart 8 Deluxe in-game statistics와 Mario Kart and the Pareto Frontier를 참고함
댓글과 토론
Hacker News 의견들
-
이 시각화/글은 요즘 게임 디자인에서 개인적으로 싫어하는 선택지를 위한 선택지 문제를 잘 보여줌
디자이너들이 “70만 가지가 넘는 빌드!” 같은 문구에 과도한 가치를 두는 함정에 빠지는 것 같음. 이런 조합 폭발의 부담을 플레이어에게 떠넘기는데, 그 선택들이 핵심 게임 경험을 크게 강화하지 않는다면 시간을 낭비시키는 셈임. 특히 숙련된 플레이어가 선택 공간 대부분을 안전하게 제거할 수 있다면 더 그렇고, 어차피 인터넷이 있으니 누군가는 계산을 해낼 것임. 왜 경쟁 요소를 볼록 최적화 문제 뒤에 숨기는지 모르겠고, 재미를 위해서라고 보긴 어려움
FPS의 장비 구성도 이런 흐름의 예임. 총 하나에도 조준기, 총열, 하부 부착물, 탄창, 탄약 등의 절충이 붙고, 그 전에 이미 병과/무기를 골라야 함. FPS의 핵심이 전술적 위치 선정과 조준이라면 이런 옵션은 플레이 시간을 조금 더 빨아내려는 싸구려 장치처럼 느껴짐. Halo와 Battlefield 같은 프랜차이즈도 이 함정에 빠져 평판을 망쳤음
Counter-Strike의 라운드 경제처럼 핵심 플레이에 더해지는 선택은 여전히 가능함. 플레이어에게 주는 선택이 전부 메뉴 안에서만 일어난다면 위험 신호로 봐야 함. 게임 디자인 업계는 통계/조합론보다 플레이와 서사에 더 비중을 둬야 함- 플레이 이유에 따라 다름. 조합 폭발의 부담은 최소-최대 최적화를 하려는 경우에만 문제이고, 재미로 한다면 “어떤 캐릭터가 마음에 드나”나 “어떤 날개가 예쁜가”에 가까움
가장 중요한 건 남에게 플레이 방식을 강요하지 않는 것임. 명시적으로 묻지 않는 한 “X가 제일 좋으니 골라야 한다”고 하지 말고, 각자 자기 방식으로 하게 둬야 함 - 플레이와 서사는 “해금 가능한 모든 것”만큼 수집욕과 도박 성향을 잘 건드리진 못함
대체로 이런 방식이 싸구려 장치이고 너무 흔하다는 데 동의함. 그래도 콘텐츠 해금처럼 플레이어에게 “할 일”을 주는 데는 의미가 있음. “내가 아직 이 게임을 하는 이유”라는 감각을 경험에 더해주긴 함 - 더 나쁜 건 일부 플레이어를 호구로 만든다는 점임. 진지한 플레이어는 경험과 기술뿐 아니라, 이제 초보자를 한 손 묶고도 이길 수 있는 캐릭터로 시작할 수 있음
같이 게임하면 모두의 재미를 빨아먹는 그런 사람이 있다는 걸 다들 알고 있음. 게임 판매자 입장에서는 이건 나쁠 뿐 아니라 멍청한 설계임 - ARPG/Diablo 장르에서는 Path of Exile이 최악에 가까운 사례임. 각 캐릭터는 1,300개가 넘는 패시브 스킬 노드가 지역적으로 연결된 2D 그래프를 따라 성장하고, 그중 약 100개만 고를 수 있는데 되돌리기는 비싸거나 불가능함
다만 압도적인 선택지 덕분에 일반 플레이어가 의지할 수 있는 전문가와 빌드 제작자 계층이 생김. 게임 자체가 이를 탐색할 도구, 예를 들면 게임 내 빌드 가이드 시스템을 더 제공했으면 좋겠음 - Mario Kart 같은 게임에는 두 모드가 있어야 함. 모두가 같은 조건에서 노는 파티 모드와, 거시 전략이 더 큰 역할을 하는 전문가 모드임
파티 중에도 서로 다른 캐릭터의 속성은 게임을 더 역동적으로 만들고, 결국 더 재미있게 해줌. 문제는 누군가가 전 주 내내 모든 수치를 Excel에 넣어보고 모두를 최적으로 이기는 법을 알고 오는 경우임. 하지만 선을 어디에 그어야 할까? 한 트랙을 일주일 내내 연습한 것보다 더 불공정한가?
게임이 항상 공정할 수는 없다는 점을 받아들여야 함. 스포츠도 마찬가지임. 대회 경험이 있는 사람과 테니스를 치면, 캐주얼 플레이어는 프로에게 훨씬 나쁜 라켓을 줘도 공 하나 제대로 맞히기 어려움
캐주얼과 프로가 같은 조건에서 경쟁할 수 있게 균형을 맞추는 건 매우 어렵고, 자칫 게임을 주사위 굴림에만 좌우되는 극도로 단순한 것으로 만들 수 있음. 적어도 이게 Excel 게임인지 반사신경 게임인지는 명확히 보여줘야 조금 더 공정해짐
- 플레이 이유에 따라 다름. 조합 폭발의 부담은 최소-최대 최적화를 하려는 경우에만 문제이고, 재미로 한다면 “어떤 캐릭터가 마음에 드나”나 “어떤 날개가 예쁜가”에 가까움
-
빨간 작은 타이어가 최고라는 건 항상 알고 있었음. 아쉽게도 이 분석은 나에게 가장 중요한 스타일과 Zelda에 대한 애정을 놓치고 있음. 그래서 개인적으로는 전부 무시해야겠음
- 다른 결과를 최적화하고 있을 뿐임. 같은 사고방식을 적용하되, Zelda 인접성을 주요 지표로 두면 됨
- 원작 MK8에서는 Triforce 타이어와 Hylean 글라이더가 꽤 좋았지만, MK8 Deluxe에서는 그 능력치가 그만큼 좋지 않음
- 나는 항상 Koopa를 고르는데, 알고 보니 최악인 듯함. 그래도 친구들 사이에서는 내가 압도적으로 가장 많이 이김
공평함을 유지하려고 계속 Koopa로 가겠음 :)
-
정말 인상적인 프레젠테이션이었음. 파레토 효율/파레토 전선은 이미 알고 있었지만 이제 절대 잊지 못할 것 같고, 매번 Mario Kart와 불쌍하게 지배당하는 Koopa가 떠오를 듯함
- Koopa로 플레이하는 건 MK의 어려움 모드이고, 이기면 더 뿌듯해질 수 있음. 훈련할 때 무게추를 찬 Piccolo나 Rock Lee 같은 느낌임 ;)
- 파레토 효율적이었다면 Koopa도 더 잘했을 것임
- Koopa가 다른 커스터마이징에서는 더 나을지 궁금함
- 이런 글이야말로 많은 뉴스 사이트와 디지털 출판물이 벤처 투자자에게 피칭할 때 꿈꾸는 새로운 매체 형태임. 하지만 가장 설득력 있는 디지털 프레젠테이션은 대개 자연발생적이라고 봄
이를 목표로 삼아 설계하는 건 불가능하고, 종종 작위적이고 짜증나게 느껴짐. 그런데 이번처럼 “그래, 내 스크롤을 가져가도 좋아”라고 할 만큼 놀라운 경우가 있음
-
디자인에 대해서는 반대임. 내게 이 프레젠테이션은 정보를 찾으려고 영상을 보는 것처럼 속도가 너무 느리고 내내 답답했음. 그런 면에서는 원래 노트북 형식이 훨씬 나았음
각 섹션 내부의 레이아웃은 아름답지만, 애니메이션과 스크롤 반응형 레이아웃은 정적인 도표 묶음보다 읽기 불편했음
내용은 훌륭했고 캐릭터와 카트의 차이가 어떻게 드러나는지 보는 건 흥미로웠음- 애니메이션과 스크롤 반응형 레이아웃이 읽기 불편하다는 데 완전히 동의함. HN이 이런 종류의 사이트에 왜 그렇게 매료되는지 이해가 안 됨
실제로 이해를 더 쉽거나 좋게 만드는 게 아니라, 그냥 디자인을 위한 과잉 디자인처럼 느껴짐
- 애니메이션과 스크롤 반응형 레이아웃이 읽기 불편하다는 데 완전히 동의함. HN이 이런 종류의 사이트에 왜 그렇게 매료되는지 이해가 안 됨
-
좋은 글임. 결과로 나온 파레토 전선은 게임 디자인이 얼마나 어려운지 잘 보여줌. 가능한 조합은 수백만 개여도, 실제 경쟁 환경에서 쓰일 조합은 극히 일부뿐임
- 다른 조합이 가치 없다는 뜻은 아님. 외형 꾸미기의 가치도 있을 테고, 여러 차원에서 빌드를 만들고 최적화하는 퍼즐성도 있음
분명 각 조합의 경쟁 유용성과 게임에 더하는 재미 사이의 균형에도 메타 파레토 전선이 있을 것임 - 파레토 전선은 2차원 선이 아니라, 어떤 고차원 벡터 공간 안의 표면이라는 점을 염두에 둬야 함. 모든 게임에는 최소-최대 최적화할 수 있는 측면이 아주 많음. 다른 사람들이 말했듯 Mario Kart도 속도와 가속만으로 환원되지 않음
충분히 복잡한 게임에서는 모든 빌드가 어떤 특정 비용 함수를 최적화하므로 파레토 전선 위에 있다고 볼 수 있음 - 동의함. 하지만 게임의 목표에도 달려 있음. 최소-최대 최적화가 유일한 플레이 방식은 아니고, 모두가 엄청 경쟁적인 것도 아님
- 다른 조합이 가치 없다는 뜻은 아님. 외형 꾸미기의 가치도 있을 테고, 여러 차원에서 빌드를 만들고 최적화하는 퍼즐성도 있음
-
“낮은 위험과 높은 수익의 포트폴리오? [...] 물론 정확한 가중치를 이미 알고 있다면”이라고 했지만, 이 경우에는 문제 구조 덕분에 1차원 최적화로 줄어듦
포트폴리오 선택에서 최적화하는 건 단일 투자의 수익이 아니라 평생에 걸친 투자 수익임. 복리 덕분에 이는 위험과 수익의 함수가 됨. 그래서 어떤 절충 없이도 최적 배분을 찾을 수 있음: https://two-wrongs.com/the-misunderstood-kelly-criterion.htm...- 꼭 그렇진 않음. 큰 입력값 중 하나는 투자금과 연간 저축액의 비율임. 인생 후반의 큰 낙폭은 나쁘지만, 초반에는 그렇게 큰 문제가 아님
Kelly 기준은 파산 위험이 상당한 매우 수익성 높은 베팅을 금지함. 재산이 0이 되면 미래 복리 기회를 잃기 때문임. 하지만 젊고 포트폴리오가 소득에 비해 작다면 이건 지나치게 보수적임
글에서도 미래 급여의 할인합이 현재 부의 일부라고 하며 이를 암시함. 정확한 말이고, 젊다면 여러 자릿수 차이로 가장 중요한 변수이기도 함. 흥미롭게도 저자는 이를 이해하면서도 신경 쓰지 않는 듯함
- 꼭 그렇진 않음. 큰 입력값 중 하나는 투자금과 연간 저축액의 비율임. 인생 후반의 큰 낙폭은 나쁘지만, 초반에는 그렇게 큰 문제가 아님
-
이걸 디자인 도구로 쓰는 걸 생각하니 기대됨. 재미있고 실행 가능한 빌드의 파레토 전선이 더 넓은 게임을 설계할 때 유용해 보임
-
제목이 암시한 것보다 훨씬 더 흥미로운 글이었음. 잘 만들었음
- 원래 제출 제목은 훨씬 더 설명적이었지만, 규칙에 따라 글의 제목과 맞추도록 바뀐 것임
-
정말 멋진 분석과 시각화임. 다만 Mario Kart 8 + 200cc에는 흥미로운 변수가 있음. 대부분의 플레이어는 일정 수준 이상의 속도를 원하지 않는데, 너무 빨라서 조작하기 어렵기 때문임
그래서 절대 속도 능력치를 최대화하기보다, 자기에게 맞는 최적 속도 능력치와의 차이를 최소화하고 싶을 수 있음- 실제 레이싱카를 만드는 것과 크게 다르지 않아 보임. 코너에서 추월당할 만큼 일찍 브레이크를 밟아야 한다면 큰 엔진은 의미가 없음. 게다가 그렇게 브레이크를 많이 쓰면 브레이크가 과열됨
최고속은 낮아도 감속할 필요가 없는 편이 더 나을 때가 많음 - 맞음. 200cc에서는 핸들링과 가속이 가장 중요한 요소임
가속이 중요한 이유는 맞거나 충돌했을 때, 그리고 그건 “만약”이 아니라 “언제”의 문제인데, 빨리 따라잡아야 하기 때문임
- 실제 레이싱카를 만드는 것과 크게 다르지 않아 보임. 코너에서 추월당할 만큼 일찍 브레이크를 밟아야 한다면 큰 엔진은 의미가 없음. 게다가 그렇게 브레이크를 많이 쓰면 브레이크가 과열됨
-
지금까지 본 시각화 중 진심으로 가장 인상적임. 저자는 어떤 도구로 만든 걸까?
- https://ciechanow.ski/sound/를 이길 건 없음
- Svelte + three.js처럼 보임
Svelte에는 꽤 괜찮은 내장 스크롤 애니메이션 지원이 있음: https://svelte.dev/repl/051cd352ce284d15b55c91c8b30fa32f?ver... - Svelte(https://svelte.dev/)처럼 보임