페스티벌 서킷 설계에 대한 개발 일지. 네 개의 티어, 시즌 전체에 걸친 시드 배정, 한 플레이어의 출전권을 앗아간 시간대 버그, 그리고 그 뒤에 바꾼 것들.
우리가 처음 돌린 프리미어 결승은 끝내 결과가 나오지 않았습니다. 자정이 넘도록 그냥 멈춰 있었고, 챔피언이 있어야 할 자리에 구멍이 뚫린 대진표만 남았습니다.
새로운 것을 내놓는다는 건 솔직히 말하면 그런 일입니다. 그래서 개발 일지를 씁니다. 우리 페스티벌 서킷 설계가 어떻게 자리를 잡았는지, 첫 라이브 시즌에서 무엇이 잘 맞아떨어졌는지, 그리고 실제 밴드들이 손대기 시작한 지 몇 시간 만에 망가진 세 가지에 대해서요.
왜 그냥 더 큰 공연이 아니라 서킷인가
주간 공연은 이 게임의 심장 박동입니다. 그리고 의도적으로 반복 작업이기도 합니다. 예약하고, 연주하고, 어떤 공간이 셋리스트에 무슨 짓을 하는지 배우고, 숫자가 조금씩 올라갑니다.
없었던 건 정점이었습니다. 진짜 음악의 한 해에는 모양이 있습니다. 겨울 내내 진창을 걷다가, 7월이 되면 누군가 들판 한가운데 오후 4시 무대에 세워줍니다.
우리는 그 모양을 원했습니다. 시즌 안의 또 하나의 페스티벌 시즌 말입니다.
우리가 도달한 페스티벌 서킷 설계
로컬 무대부터 프리미어 텐트까지 네 개의 티어. 시즌 중반에 서킷이 열리면 참가는 자동으로 처리됩니다. 이건 의도한 선택이었습니다. 마침 그 순간 접속해 있던 사람이 페스티벌 자리를 가져가는 구조는 만들고 싶지 않았거든요.
나머지는 이렇게 작동합니다.
- •서킷 포인트는 라이브 활동과 발매 활동에서 시즌 내내 쌓입니다. 그래서 순위는 운 좋은 한 주가 아니라 몇 달의 작업을 반영합니다.
- •시드 배정은 그 포인트에서 나옵니다. 즉 어느 티어에 들어가는지는 고르는 게 아니라 벌어들이는 것입니다.
- •대진표는 시즌의 몇 주에 걸쳐 한 라운드씩 진행되고, 나머지 모든 것을 굴리는 것과 같은 주간 틱이 결과를 처리합니다.
- •보상은 화제성과 평판이지 돈이 아닙니다. 이것도 일부러 그렇게 했습니다. 서킷이 가장 빨리 부자가 되는 길이 아니라, 가장 빨리 이름을 알리는 길이기를 바랐으니까요.
마지막 항목은 우리 내부 메모에서 일주일쯤 말싸움을 일으켰습니다. 현금 보상은 가장 뻔한 지렛대입니다. 동시에 명예로운 이벤트를 파밍 루트로 바꾸는 가장 빠른 길이기도 하고요. 그렇게 되고 나면 누가 무엇을 우승했는지 아무도 기억하지 않습니다.
설계가 실제로 살아 있는 곳은 시드 배정
대진표에서 흥미로운 일은 전부 첫 경기 전에 벌어집니다. 시드 배정을 틀리면 가장 큰 밴드에게 트로피를 그냥 넘겨주거나, 제멋대로처럼 느껴지는 혼돈을 만들게 됩니다.
우리는 위쪽은 강하게 시드하고 아래쪽은 느슨하게 매칭하는 방식을 골랐습니다. 압도적인 밴드는 마지막 라운드에서 다른 압도적인 밴드를 만나야 합니다. 하지만 첫 서킷에 나온 밴드도 의식 같은 처형이 아니라 진짜 경기를 치를 수 있어야 합니다.
까다로운 부분은 홀수였습니다. 대진표는 2의 거듭제곱을 원하는데, 실제 참가자 수는 절대로 그렇게 되어주지 않습니다. 부전승이 그걸 해결해 주고, 바로 그 부전승에서 우리는 최악의 버그를 만들었습니다.
첫 실전 실행에서 망가진 세 가지
첫 번째는 조용하고 끔찍했습니다. 우리가 읽어오던 포인트 출처가 아무것도 돌려주지 않고 있었습니다. 모든 밴드가 0으로 시드되었고, 대진표는 사실상 무작위였습니다. 잘 돌아가는 것처럼 보였습니다. 돌아가지 않았습니다.
두 번째는 빈 결승이었습니다. 최상위 티어는 예정된 마지막 주에 열리는데, 라운드를 처리하는 코드는 그 뒤에 언제나 한 주가 더 있다고 가정하고 있었습니다. 없었습니다. 그래서 결승은 끝내 닫히지 않았고, 시즌이 넘어갈 때 페스티벌 데이터의 일부까지 함께 끌고 갔습니다.
세 번째는 부전승이었습니다. 1라운드의 부전승만 제대로 처리하고 그 뒤로는 한 번도 처리하지 못했습니다. 그래서 뒤쪽 라운드에서 상대 없이 올라간 밴드는 조용히 더 이상 올라가지 못했습니다.
누군가의 자리를 앗아간 시간대 버그
그리고 아직도 아픈 게 하나 있습니다. 참가 마감은 정해진 시각에 걸렸는데, 그 마감 판정은 서버의 현지 시간으로 계산되고 플레이어가 보는 카운트다운은 각자의 시간으로 표시되고 있었습니다. 세계 대부분에서는 그 차이가 문제되지 않았습니다. 한 플레이어에게는 그게 한 시간이었고, 그는 제대로 볼 방법이 없던 마감 시각의 한 시간 뒤에 참가를 확정했습니다.
그는 모든 걸 제대로 했습니다. 그런데도 서킷을 놓쳤습니다.
우리는 지루한 방식으로 고쳤습니다. 모든 마감은 UTC로 저장하고 비교하며, 화면에는 벽시계 시각 대신 실시간 카운트다운을 보여주고, 참가 창은 이제 조용히 닫히는 대신 눈에 보이는 경고와 함께 닫힙니다. 처리기도 멱등하게 만들어서, 절반만 실행된 라운드를 결과 중복 없이 다시 돌릴 수 있습니다.
전체 메커니즘은 게임 내 가이드의 페스티벌 항목에서 읽을 수 있고, 배선이 어떻게 되어 있는지 읽기보다 직접 해보고 싶다면 페스티벌에서 우승하는 법이라는 전술 편도 있습니다. 처음 공개 당시의 노트는 페스티벌이 열립니다에 있습니다.
우리가 여기서 얻은 것
시즌에 한 번만 돌아가는 시스템은 테스트하기 가장 어렵습니다. 공개적으로 틀릴 기회가 시즌당 한 번뿐이니까요. 해답은 더 영리한 코드가 아니었습니다. 다른 누구도 보기 전에 페스티벌 한 사이클 전체를 빨리 감을 수 있는 방법을 만드는 것이었습니다.
서킷은 지금 돌아가고 있고, 우리가 바라던 일을 해줍니다. 시즌 한가운데에 언덕이 생겼습니다. 밴드들은 그걸 염두에 두고 계획을 짭니다. 정확히 우리가 원했던 움직임입니다.
안에서 직접 보고 싶다면 무료로 밴드를 시작하고 다음 서킷을 목표로 플레이해 보세요. 브라우저에서 돌아가고, 비용은 들지 않으며, 첫 공연은 5분 정도면 예약할 수 있습니다.
