더 지니어스 in CLS 진행 결과 및 회고
2024-08-25
-
실명 기재 및 얼굴 공개에 대해 플레이어의 허락을 구했음을 알려드립니다.
해당 글은 플레이어들과의 인터뷰를 바탕으로 작성한 것으로, 실제 플레이어의 생각이나 진행 과정과는 차이가 있을 수 있습니다.
오늘의 메인매치는 페페문방구입니다.
페페문방구는 경매를 통해 학용품을 얻어, 최대한 많은 수익을 획득하는 게임입니다.
페페문방구 규칙
룰 수정: 첫 번째 페이지 아래에서 두 번째 줄 "우선권자가 지목한 플레이어는"이 "우선권자는"으로 수정되었습니다.
페페문방구 룰 공개
플레이어 순번은 명찰에 적혀져 있어 게임룸 입장과 함께 확인하게 되지만, 그 순번의 중요도는 룰 공개 이후에 처음 알게 됩니다. 이 순번은 우선권 경매, 학용품 선택 등 게임의 거의 모든 과정에 관여하기 때문에 연합 과정에서 가장 중요한 고려 대상입니다. 플레이어들은 룰 이해 시간을 약 10분 정도 가진 뒤 파트너를 찾아 돌아다니기 시작했습니다. 곧 플레이어 번호를 기준으로 세 팀이 구성되게 됩니다.
1라운드는 탐색전입니다. 플레이어들은 여러 사람들을 만나러 돌아다니며 전략을 구상했습니다.
1R 우선권 경매에서는 [7 고병수] 플레이어가 코인 4개로 낙찰에 성공하였습니다. (코인 제출은 [8 연제혁] 플레이어와 나눠서 했습니다.) 학용품 선택 결과는 다음과 같습니다.
1R 학용품 선택 결과
1R 지우개 모임: 왼쪽부터 [1 백승진], [6 김도형], [7 고병수]
1R 결과를 바탕으로 팀 구성에 약간의 변화가 생깁니다. [7 고병수] 플레이어는 1R에서 우선권 경매에 코인을 사용하고도 돈을 획득하지 못했습니다. 1등을 못할 바에는 킹 메이커를 자처하기로 판단, 현재 선두로 달리고 있는 [3 송민준] 플레이어의 팀에 들어갑니다. 이렇게 [3 송민준] 플레이어를 중심으로 [3 송민준], [7 고병수], [8 연제혁] 연합이 구성됩니다.
2R 우선권 경매는 다소 치열했습니다. [7 고병수] 플레이어가 코인 13개로 우선권 입찰에 성공합니다. (코인 제출은 [8 연제혁] 플레이어와 함께했습니다.) 학용품 선택 결과는 다음과 같습니다.
2R 학용품 선택 결과
2R 가격 제시 진행중 (가격 제시를 마친 플레이어는 화면에서 빨간색으로 표시됨)
[3 송민준] 연합은 이제 유일한 적인 [9 황준석] 플레이어를 이기기 위한 작전을 짜는데 고군분투합니다. 이 연합은 지금까지는 비밀 연합이었으나, 3명이 계속 같이 있게 되면서 나머지 6명은 이 연합의 존재를 서서히 알아차립니다. 그리고 [3 송민준] 연합에 대항하여, 6명 중에 가장 수익이 많은 [9 황준석] 플레이어를 1등으로 만들기 위한 6인 연합이 탄생합니다.
따로 다니기 시작하는 3인 연합: [3 송민준](흰색 옷), [7 고병수](검은색 옷) [8 연제혁](하늘색 옷)
3R 우선권 경매는 [1 백승진] 플레이어가 코인 5개로 입찰에 성공합니다. (코인 제출은 [8 연제혁] 플레이어와 함께했습니다.) 학용품 선택 결과는 다음과 같습니다.
3R 학용품 선택 결과
갑작스럽게 [3 송민준] 플레이어와 [9 황준석] 플레이어가 공동 우승이 될 수도 있다는 이야기가 나옵니다. 현재 [3 송민준] 플레이어는 12000+12000+1000 = 25000원의 수익을, [9 황준석] 플레이어는 9000+8000+1000 = 18000원의 수익을 올려 7000원 차이입니다. 만약 4R에서 [3 송민준] 플레이어가 1000원의 수익만을 내고, [9 황준석] 플레이어가 8000원 이상의 수익을 올린다면 [9 황준석] 플레이어가 공동 우승, 심지어는 단독 우승을 노려볼 수도 있습니다.
[3 송민준] 연합과 6인 연합의 목표는 각각 다음과 같습니다.
[3 송민준] 연합
6인 연합
각 연합에서는 위 목표를 성공시키기 위한 전략 수립에 열을 올립니다. 누가 우선권을 가져가야 할지, 어떤 순서로 학용품을 가져가야 할지 전략을 계속 수정합니다.
현재 남은 코인의 개수는 [3 송민준] 연합이 13개, 6인 연합이 35개입니다. 코인 개수로만 보면 우선권을 무조건 가져갈 수 있을 것처럼 보이지만, <방어> 아이템의 존재 때문에 섣불리 판단할 수 없습니다.
전략 수립 중인 6인 연합: 왼쪽부터 [2 김민석], [1 백승진], [4 윤성원], [5 김수민]
4R 우선권 경매는 [6 김도형] 플레이어가 코인 5개로 입찰에 성공합니다. 이번에는 학용품 선택 결과를 자세하게 공개하겠습니다.
[8 연제혁]: 지우개 → [9 황준석]: 연필 → [1 백승진]: 연필 → [2 김민석]: 불량식품.
여기서 [3 송민준] 플레이어는 지우개를 선택함으로써 승리를 확정짓습니다. [6 김도형] 플레이어가 [3 송민준] 플레이어의 학용품을 뺏든, [8 연제혁] 플레이어의 학용품을 뺏든, 다음 차례인 [7 고병수] 플레이어는 항상 [3 송민준] 플레이어와 같은 학용품을 가질 수 있기 때문입니다.
[3 송민준]: 지우개 → [4 윤성원]: 지우개 → [5 김수민]: 불량식품 → [6 김도형]: (뺏지 않고) 불량식품 → [7 고병수]: [8 연제혁]의 지우개 뺏음.
학용품 선택 결과는 다음과 같습니다.
4R 학용품 선택 결과
결국 [3 송민준] 연합의 전략이 성공했습니다. 이제 [9 황준석] 플레이어가 얻을 수 있는 수익은 최대 8000원이고, [3 송민준] 플레이어가 얻을 수 있는 수익은 최소 1500원이므로 [3 송민준] 플레이어가 단독 우승을 할 수 있습니다.
최종 결과는 영상으로 보시겠습니다.
[6 김도형] 플레이어가 34500원으로 가장 많은 돈을 벌어 1등을 차지했습니다. 이게 어떻게 된 일일까요?
사실은 [3 송민준], [9 황준석] 플레이어 말고도 우승 후보가 있었습니다. 3라운드 종료 당시 금액 순위는 다음과 같습니다.
따라서 만약 [6 김도형] 플레이어가 4R 불량식품에서 혼자만 4000원을 제시해 16000원의 수익을 올린다면 [3 송민준] 플레이어를 이길 수 있었습니다. 따라서 학용품 선택 단계에서 [3 송민준] 플레이어가 지우개에 들어가는 것을 본 뒤 마지막 희망을 걸기 위해 불량식품을 선택한 것입니다.
이제 [6 김도형] 플레이어가 우승을 하기 위해서는 나머지 3명인 [2 김민석], [5 김수민], [8 연제혁] 플레이어가 모두 5000원을 제시해주어야 했습니다. [2 김민석], [5 김수민] 플레이어는 6인 연합에 속하기에 5000원을 내준다고 하더라도, 3인 연합 소속인 [8 연제혁] 플레이어는 그럴 이유가 없었습니다. 그러나 5000원을 내주면 생명의 징표를 주겠다는 [6 김도형] 플레이어의 약속과 더불어 그냥 재미있을 것 같다는 [8 연제혁] 플레이어의 개인적인 호기심이 합쳐져 이러한 결과가 나오게 되었습니다.
최종 결과
약속대로 [6 김도형] 플레이어는 [8 연제혁] 플레이어에게 생명의 징표를 주었습니다. 최하위자인 [7 고병수] 플레이어는 데스매치 상대로 [3 송민준] 플레이어를 지목하였습니다.
게임이 종료된 후에는 플레이어들이 각 라운드에서 어떤 선택을 했는지 모두 공개하였습니다. 다만 해당 글에서는 숨겨진 연합이나 비하인드들을 위에서 모두 공개했으므로 생략하겠습니다. 아래 사진에 게임의 모든 데이터가 담겨있습니다.
게임 종료 후 기록된 데이터
원래는 데스매치를 할 계획이 없었는데, 많은 플레이어분들의 요청에 따라 현장에서 급조하여 진행하게 되었습니다. 자세한 진행 상황은 사진으로 대체하겠습니다. 최종 탈락자는 (아무 패널티도 없지만...) [3 송민준] 플레이어입니다.
데스매치 진행중
데스매치 결과
준비 과정에서 가장 신경썼던 부분은 게임 밸런스 조정이었습니다. 해당 게임에서 등장하는 재화인 코인은 아이템 사용과 동시에 최종 결과에도 영향을 미치므로 그 가치를 설정하는 것이 매우 중요합니다. 게임 설계 초기에 설정했던 가치는
이었는데, 이 경우 코인의 가치가 너무 높아 아무도 경매에 참여하거나 아이템을 사용하려 하지 않으려고 할 것 같아 코인 1개의 가치를 500원으로 하향 조정하였습니다. 또한 비밀 아이템을 한 명당 2번씩 쓸 수 있으면 모든 라운드마다 비밀 아이템이 걸려 게임 내용 파악이 너무 어려워질 것 같아 비밀 아이템을 코인 6개로 늘렸습니다. 그래서 코인의 최종적인 가치는 아래와 같이 결정되었습니다.
그러나 예상과 달리 실제 게임에서는 아무도 아이템을 사용하지 않았습니다. 아이템으로 사용하기에는 코인의 액수가 여전히 높았던 것 같습니다. 비록 게임 종료시에 비밀 아이템을 통한 엄청난 반전이 연출되지는 못했지만, 모든 정보가 공개되어 치열한 머리싸움이 오고간 이번 게임도 나름대로 매력적이었습니다. 특히 4R 직전 두 우승 후보의 수익 차이가 7000원으로, 공교롭게도 공동 우승의 가능성이 있는 금액이어서 게임이 루즈해지지 않고 더욱 흥미진진해졌습니다.
다만 선택 공개 시에 비밀 아이템을 위한 UI를 모두 구현해 놓았는데, 사용할 일이 없었던 건 개인적으로 아쉽습니다.
엄청난 반전을 연출하기 위한 애니메이션..
구르밍 - [더 지니어스 in CLS] 호스트 후기
저와 함께 게임을 준비한 장운 군의 후기는 위 링크에서 보실 수 있습니다.
저는 프로그래밍에, 장운이는 게임 설계에 강점을 가지고 있어 서로 보완하며 게임을 준비하였습니다.
저희는 해당 게임을 기획할 때 기존의 더 지니어스 프로그램 포맷을 많이 참고하였습니다. 세트장 한 가운데에 있는 TV 화면에서 진행 상황 등을 보여주던 기존 프로그램처럼, 강의실 앞쪽 스크린에서 진행 상황 및 결과를 보여주고 싶었습니다. 또한 딜러룸을 만들어 플레이어의 선택이 외부로 유출되지 않도록 보장하고 싶기도 했습니다.
그러나 저희는 호스트의 수가 매우 적을 뿐만 아니라 딜러룸으로 사용할 수 있는 장소가 없다는 한계 때문에 기존 더 지니어스 프로그램처럼 진행하는 것이 어려웠습니다. 만약 플레이어의 말을 수기로 받아 적고 강의실 스크린에 연결된 컴퓨터에 하나하나 적는다면, 그 과정이 매우 복잡해지고 진행도 매끄럽지 않을 것입니다.
그렇게 고민을 하던 와중 웹 개발을 통해 UI를 구현한다면 모든 문제를 해결할 수 있지 않을까 하는 생각이 들었습니다. UI는 평소 웹페이지를 만들 때처럼 HTML, CSS를 사용하면 매우 간단하게 구현할 수 있으며 데이터베이스와 연결하여 플레이어의 정보도 주고 받을 수 있기 때문입니다. 그렇게 저는 Next.js + supabase + tailwindCSS 스택을 사용해 UI를 개발하였습니다. 이 웹사이트의 핵심 페이지는 아래의 두 개입니다.
해당 페이지는 게임 플레이 내내 강의실 스크린에 띄워져있는 페이지입니다. 기본적으로 부드러운 애니메이션을 적용하여 깔끔한 진행을 도왔으며, 결과 페이지에서는 키보드 좌, 우 화살표를 눌러 표시되는 화면을 조절할 수 있도록 구현하였습니다. 또한 supabase의 realtime 기능을 활용하여 플레이어가 입력한 데이터가 실시간으로 스크린 화면에 적용되도록 하였습니다.
결과적으로 플레이어가 입력한 정보는 실시간으로 반영되고, 결과 화면은 호스트가 원하는 속도로 조절할 수 있는 이상적인 디스플레이 화면을 구현하였습니다.
가격 제시가 진행중일 때의 UI
플레이어가 자신의 학용품 및 금액을 입력할 수 있는 페이지입니다. 해당 페이지는 호스트의 태블릿에서 접속해놓아, 금액 제출을 원하는 플레이어가 있을 시 간이 딜러룸으로 들어가 제출할 수 있도록 하였습니다. 플레이어가 선택한 데이터를 서버로 전송하는 매우 간단한 역할을 하는 페이지이지만, 그 안에는 편의성을 올려줄 수 있는 다양한 작업들을 하였습니다.
플레이어가 금액 제출시 보는 화면
그 외에도 많은 돌발 상황들을 미리 생각하고 대비하기 위해 노력했습니다. 예를 들어 학용품의 개수가 플레이어 수에 따라 정해져 있는 게임 특성상 일부 플레이어 불참시 진행이 불가능합니다. 따라서 1, 2명이 불참하더라도 바로 진행할 수 있도록 학용품 개수를 모두 설정해놓았습니다.
// 전원 참석시 사용 (실제 사용한 데이터)
export const StationeryNumberByRound = [
[3, 3, 3],
[2, 4, 3],
[1, 2, 6],
[2, 3, 4],
];
// 한 명 불참시 사용
export const StationeryNumberByRound_8 = [
[2, 3, 3],
[2, 4, 2],
[1, 2, 5],
[2, 3, 3],
];
// 두 명 불참시 사용
export const StationeryNumberByRound_7 = [
[2, 2, 3],
[1, 3, 3],
[1, 2, 4],
[2, 2, 3],
];
또한 사용자 인터페이스를 구현한 소스코드 안에서도 참가자 명수를 9
로 고정해놓지 않고, 데이터베이스 안의 플레이어 수에 따라 유연하게 조정될 수 있도록 구현했습니다.
<select
className="bg-transparent hover:cursor-pointer"
onChange={(e) => {
setPlayerId(Number(e.target.value));
shuffleLists();
resetStates();
}}
>
{Array.from(Array(players?.length).keys()).map((_playerId, index) => (
{Array.from(Array(9).keys()).map((_playerId, index) => (
<option key={index} value={_playerId} className="text-2xl">
{players?.[_playerId]?.name}
</option>
))}
</select>
플레이어 한줄평
이렇게 준비에 심혈을 기울인 덕분인지 많은 플레이어분들로부터 긍정적인 평가를 받아 정말 뿌듯했습니다. 다음 게임을 개최할 때는 게임 밸런스 조정에 더욱 주의를 기울이고, 데스매치 및 승자 매치를 추가할 예정입니다. 또한 단발성 게임이라 유인이나 부담이 없어서 아쉽다는 플레이어분들의 피드백을 적극 반영하여 우승 상품 등을 마련해 참여 동기를 높이는 방안을 고려하고 있습니다.
그럼, 다음 게임에서 뵙겠습니다.
© 2025 geniusLHS. All rights reserved.