Skip to content

Instantly share code, notes, and snippets.

@longfin
Created July 13, 2022 13:50
Show Gist options
  • Save longfin/7d5e1a2e7c84642a45ea400bb891d88c to your computer and use it in GitHub Desktop.
Save longfin/7d5e1a2e7c84642a45ea400bb891d88c to your computer and use it in GitHub Desktop.

들어가며

이 글은 플라네타리움 공동체 분들께 22년 3분기 이후의 나인 크로니클, 그리고 Libplanet 개발 기조에 대해 제 생각을 전달드리는 것이 목표입니다. 다만 모두가 아시듯이 나인 크로니클과 Libplanet은 오픈 소스 프로젝트이기도 하므로, 제 GitHub Gist 에 초고를 작성하였습니다. 이런 삐딱함(?)은 일견 아무래도 좋은 치기이기도 하지만, 한편으로 저는 어쩌면 이게 제가 이제부터 이야기할 것들을 함축한 것일지 모른다고도 생각합니다.

공격과 수비

게임 개발에 블록체인을 사용하면 느리고 기획도 제한이 심할 것 같은데, 극복할 수 있는 방법이 있으신가요?

사실, 이 질문은 어제오늘만의 것은 아닙니다. 2018년 제가 팀에 합류한 이래로 VC의 심사역, 영입 대상 엔지니어들이 수없이 물었던 질문이며, 2021년 이후로 P2E나 NFT가 게임 업계를 강타한 뒤론 게임사들까지 이걸 궁금해합니다. 그리고 여기에 대해서 저희는 다음과 같은 답을 내고 있었다고 생각합니다.

지금은 이런저런 제약이 있지만, 저희는 그걸 극복해서 일반적인 게임과 수준의 게임성을 선보이는 것이 목표입니다.

이 답은 잘못된 것은 아니지만, 충분한 답이 아니라고 생각합니다. 가령 나인 크로니클이 팀의 엄청난 노력과 헌신1 덕에 블록체인의 여러 제약들을 거의 다 극복하여 일반 게임과 같은 게임성을 확보한, 그런 행복한 가정을 해보죠. 그런데 그러한 게임성이, 다른 일반적인 게임들을 제치고, 나인 크로니클을 돋보이게 해주는 요소일까요? 저는 이 부분에서 회의적입니다. 빠른 게임을 원하면 블록체인을 버리고 DB를 두면 되고, 개발하기 쉬운 게임을 만들려면 이력 같은 건 굳이 블록이니 트랜잭션이니 일일이 보관하지 말고 업데이트도 과감하게 하면 됩니다. 그리고 이것은 저희가 하지 않더라도 이미 많은 게임사들이 나름의 노하우로 열심히 잘 해오던 것들입니다.

어쩌면, "일반적인 게임성"2은 축구나 야구에서 "수비"와 같다고 할 수도 있을 것입니다. 당연히 잘 하기를 바래야 하는 것이지만, 그것만으로 시합에서 이길 순 없는 것이죠. 이기기 위해선 "공격"이 필요합니다. 다른 게임에선 하고 싶어도 못 하는, 그런 것이 필요하죠.

수영장의 물이 빠지면

그런데 비단 나인 크로니클이 아니어도, 블록체인을 사용한 많은 프로젝트들은 이 "공격"이라는 관점에 크게 고민할 필요가 없었습니다. 바로 "코인"3이라는 대단히 뛰어난 공격수가 있었기 때문이죠. 이로 인해 많은 프로젝트들이 실점을 최소화하는 전략을 취하게 되었습니다. 어차피 "공격"은 "코인"이 해줬으니까, 일반적인 사용성이나 게임성을 확보하자는 것이죠. 소위 말하는 "Play To Earn" 게임들은 게임성이 얄팍하다고 게이머 커뮤니티에서 비판받지만, 오히려 그 정도면 일반 게임으로 다가가려고 많이 노력한 것처럼 보이기도 합니다.

다만 이 "코인"이라는 공격수는, 제가 보기에는 굉장히 위험한 속성을 가지고 있습니다. 바로 단독으로 세우는 것이 대단히 곤란하다는 것입니다. "코인"을 통한 수익 창출이 단순 매수/매도 차익으로만 발생한다고 가정해 보죠. 아주 단순하게 이야기해서 누군가는 따고, 또 누군가는 잃습니다. 예치(Staking) 같은 방법으로 보상을 찍어서 발행한다면 당장의 코인 수량은 보존이 되겠지만, 단위 코인이 대변하는 네트워크 전체의 가치는 지속적으로 희석됩니다. 다들 잘 알고 계신, 인플레이션이죠. 토큰 경제학적으론 소각(Burn)이 필요하다고 볼 수 있을 것인데, 이는 바꾸어 말하면 누군가는 돈을 써야 한다는 의미입니다. "코인"이란 공격수의 강점과 정확히 반대되는 개념이죠.

얄궂게도 이런 독성은 호황기에는 거의 티가 나지 않습니다. 왜냐면 지속적인 투자 수요로 공급이 계속되거든요. 하지만 이런 호황은 (적어도 제가 아는 한) 영원할 수 없으며, 이런 구조에선 누군가 폭탄을 떠 앉습니다.4 폰지 구조로도 널리 알려진 이 구조는 비단 블록체인 프로젝트들이 아니라 사회 전반에서 이미 100여 년 전부터5 모습을 드러냈으며, 실물 경제에선 지속적으로 견제6를 받던 것들입니다.

정리하면 제 주장은 이렇습니다.

  • 블록체인을 사용한 탈중앙 게임이 시장에서 수용되려면 "공격"에 해당하는 강점이 필요한데
  • 코인을 통한 수익 창출은 다른 강점 없이는 단독으로 성립하지 않는다.

그들이 못 만드는 게임

앞서 언급한 "행복한 가정"은 어디까지나 사고 실험을 위한 가정일 뿐, 현실의 블록체인을 사용한 탈중앙 게임 개발은 어려움이 이만 저만이 아닙니다. 바꾸어 말하면, 만회해야 할 점수를 굉장히 많이 주고 있는 상황이라고 할 수 있겠죠. 이기기 위해선 강력한 한 방이 필요합니다.

저는 이 부분을 만회하기 위해서는, 기성 게임이 어지간하면 할 수 없는 부분에 집중하는 것이 타당하다고 생각하는데, 바로 "제작과 운영 경험 제공"입니다. 저는 저희를 만나러 온 파트너사들이 탈중앙 게임을 만들겠다면서 왜들 그렇게 코드를 공개하기 싫어하며7, 혹은 게임의 거버넌스를 다 열지 않는지8, 왜 일반적인 게임의 중앙화된 BM을 강하게 가정하는지 처음엔 잘 이해가 가지 않았습니다.

여기에 대해서 저는 "제작과 운영 경험을 제공" 할 수 있는 "탈중앙 게임"은 기성 게임 회사가 만들지 은 것이 아니라 만들지 하는 것이라는 것 아닐까란 생각을 하고 있습니다. 게임 제작이란 산업은 이미 수십 년에 걸쳐 기획/제작/운영에 이르기까지 틀이 확립되었고, 이 산업 안에 있는 플레이어들은 (대부분의 사람/조직이 그렇듯이) 자신들이 잘 하고 있는 부분을 레버리지 하고 싶어 하며, 이를 강화하는 방향으로 성장해왔습니다. 그리고 그 리스트엔 "제작과 운영 경험을 제공"은 없는 듯합니다. 9

제작과 운영

"제작"과 "운영 경험"을 제공한다는 것은 무엇일까요? 이미 세상에는 오픈 소스로 개발된 게임들이 있긴 합니다. 대부분의 오픈소스 게임들은 직접 게임을 빌드10하고 수정할 수 있게끔 소스 코드를 제공하고, 프로젝트의 방향을 의논하는 "제작"에 대해서 이야기합니다. 하지만 현대의 게임들은 그저 혼자 게임 프로그램을 얻는 것만으론 그 게임을 온전히 "소유"하고 있다고 이야기할 수 없는 경우가 많습니다. 게이밍 경험은 하나의 게임 클라이언트 안에서 온전히 완결되는 것이 아니라, 다른 플레이어들과의 연결을 포함하여 제공되기 시작했기 때문이죠. PUBG리그 오브 레전드, 디아블로 이모탈 같은 게임을 혼자서 즐기는 것이 제작자가 기대한 게이밍 경험이라고 생각하는 이는 아마 없을 것입니다.

때문에 이런 형태의 경험을 제공하기 위해선 다른 게이머들과의 연결을 보장하고 관리해 주어야 합니다. 여러 게이머가 연결될 수 있게끔 서로 간의 데이터를 관리하고, 모두가 같은 룰에서 경쟁할 수 있도록 밸런스를 조정하며, 때로는 새로운 콘텐츠를 만들어 이들에게 제공합니다. 이것이 게임에서 "운영"이라고 말할 수 있을 것이고, 우리가 오픈 소스란 무기만으로는 아직 정복하지 못한 미답의 영역입니다. 이런 "운영"마저도 게이머들이 직접 할 수11 있는 게임이 저희가 만들고 싶은 게임의 궁극적인 형태일 것입니다.

둘 다 하면 되잖아요?

제가 최근 가장 많이 들었던 피드백 중 하나는 이런 내용입니다.

swen은 항상 너무 극단적이다. 그냥 둘 다 중요한 거고 둘 다 하면 되는 거 아니냐?

맞습니다. 아무리 "공격"이 중요하더라도 실점을 터무니없이 하면(e.g., 게임 한 번 실행하는 데 1시간씩 걸린 초기의 9c) 받아들여지기 힘들겠죠.

다만 그럼에도 불구하고 저는, 여기에 2가지 이해 충돌이 있다고 생각합니다.

  1. 기성 게임의 게임성을 갖추는 일도, 제작 경험을 주기 위한 일도, 엔지니어링 자원을 소모합니다. 경합이 생기지 않는 범위나 자원이 충분히 풍부하다면 이는 큰 문제가 아니지만, 나인 크로니클과 같은 풀체인 게임에서는 그 경계가 몹시 모호합니다.
  2. (어찌 보면 이것이 더 중요하고 근본적인 문제인데) 게임성을 확보하기 위한 기성 게임의 개발 방법론을 실천하는 것이, "제작과 운영 경험"을 주는 것에 직접적으로 방해가 되는 경우도 있습니다.
    • e.g., 일반적인 탈중앙 블록체인 네트워크에서 하드 포크는 나인 크로니클의 업데이트에 비하면 굉장히 드문 일인데, 이는 노드를 운영하는 주체가 코드를 작성하는 사람/팀과 분리되어 있기 때문입니다. 때문에 탈중앙 프로젝트에서는 하위 호환성이라는 주제를 굉장히 중요하게 다룹니다.

약간 결이 다른 피드백은 이런 것도 있습니다.

아무리 제작 경험을 주고 싶어도, 우선은 게임이 할 만해야 하는 것 아니냐

이 역시 크게 2가지 관점에서 이야기가 가능할 것인데

  1. "제작 경험의 제공"이 건드리는 문제는, 게임이 할 만하냐 아니냐 보다는 한 단계 위의 문제(i.e., 게임을 할 만하게 만드는 것도 여러분의 몫입니다.) 일 것이며, 앞서 말씀드린 기성 게임과 비교했을 때 이쪽이 레버리지가 높은 일이라고 생각합니다.
  2. 제작자 관점에서의 "할 만함"이라는 것은 플레이어 관점의 "할 만함"과 다를 수 있으며, 그것이 수준이나 정도의 문제가 아니라 방향이 아예 다른 것이라는 생각도 합니다. (i.e., DeFi 앱을 만드는 개발자가 정말로 금융 혁신을 생각하고 있을까요?)

물론 이렇게 얘기를 해도, 맨 처음 피드백(i.e., swen은 너무 극단적이다)는 여전히 유효한 것 같다는 생각을, 심지어 저조차도 합니다. 아마 실제의 개발은 어느 한 쪽을 완전히 내팽개치는 것은 가능하지도 않겠죠. 그럼에도 불구하고 이런 생각을 글로 적는 것은, 어차피 양쪽을 모두 챙긴다면 이해 충돌은 발생할 터인데, 그때 플라네타리움 공동체 차원에서의 전반적인 합의나마 있었으면 하는 작은 소망의 발로일 것입니다.

여전히 서로를 도울 수 있습니다.

퍽 비관적인 이야기를 적어내려갔지만, 플레이할 만한 게임을 만드는 노력과 제작과 운영을 할 만한 게임을 만드는 노력은 반드시 충돌하는 것만은 아닙니다. 왜냐면, 플레이할 만한 게임을 만들기 위한 것조차도 제작이자 운영이기 때문입니다. 남들이 "제작과 운영"을 하기 어렵다는 건, 저희의 생산성도 굉장히 떨어진다고 볼 수 있고, 실제로 나인 크로니클 프리뷰 넷 등의 사례를 보면 꽤 그러하다고 생각합니다.

어쩌면 이는 (후술할 나인 크로니클에서 이러한 시도를 얼마나 할 수 있느냐와도 이어지는 이야기일 것인데) 공격과 수비의 균형, 그리고 주도권에 대한 이야기이기도 합니다. 기존의 게임 개발 방법론을 이어나가는 것이 개발 효율을 올릴 수는 있지만 이렇게 얻은 효율이 중앙화되어있다면 항상 긍정적인 것만은 아니며, 당장은 탈중앙적인 개발이 돌아가는 것처럼 보이더라도 이것이 전체 개발을 반드시 해치지만은 않는다고 볼 수도 있을 것입니다.

나인 크로니클이어야 하는 이유

여기까지 이런저런 피곤한 얘기를 읽으신 여러분들은 이런 생각을 하실 수도 있습니다.

탈중앙 게임이 그래야 하는 건 알겠는데, 그걸 꼭 나인 크로니클에서 해야 합니까?

여기에 대해서 제 관점을 아주 짧고 거칠게 요약하면 이럴 것입니다.

나인 크로니클이 그러자고 만들어서 판 게임입니다.

나인 크로니클을 소개하는 여러 가지 표현들이 있는데, 저희가 공식적으로 언급하는 것은 이것입니다.

Nine Chronicles is a fully decentralized RPG powered by the players. Play, mine, govern together: this world is yours to keep.

물론 이것은 단순히 마케팅을 위한 표현이거나 다른 해석의 여지가 있는 표현을 제가 오독한 것일 수도 있습니다. 하지만 나인 크로니클의 개발 초기부터 현재에 이르기까지 적어도 제가 알고 있는 범위 안에선 저걸 다른 방법으로 해석할 만한 단서를 찾지 못했습니다.

C# 이어야 하는 이유

또한 나인 크로니클은 2022년 6월 시점에서 Libplanet이 C# 구현을 유지해야 하는 거의 유일한 이유일 것입니다. 어쩌면 흔히 많은 개발자들을 괴롭히는 레거시 시스템이나 기술 부채처럼 여겨질 수도 있죠.

실제로 여기에 대해서 저를 포함해서 많은 엔지니어들이 고민이 많았습니다. 그리고 올 상반기를 거쳐서 제가 내린 결론은 다음과 같습니다.

  • 나인 크로니클은 (개발팀이 판매한 NCG를 전액 환불하지 않는다면12) 탈중앙 게임으로서 로드맵을 완수해야 하며
  • C# 구현을 포기하며 얻는 편익은 나인 크로니클의 마이그레이션 비용13을 차감하여 계산해야 하는데, 게임 전체를 어울러서 볼 때 그런 비용을 지불할 만한 대안은 아직 없다.

하지만 이는 나인 크로니클의 일정 이상 부채감을 가지고 있는 저에겐 유효한 지점일 수 있지만, 모든 엔지니어들에게 적절하진 않겠죠. 바꿀 수 없는 전제라면 최대한 활용14하는 것이 맞겠습니다만, 후술할 대안 기술 실험 등으로 다른 가능성도 탐색해야 한다고 생각하긴 합니다.

나인 크로니클에선 못 하는 것들

이렇게나 나인 크로니클에서 탈중앙 게임으로서의 강점을 보여주는 것이 중요하지만, 이것이 나인 크로니클 이외의 게임이나 실험을 하면 안 된다는 것은 아닙니다. 오히려 나인 크로니클에선 해볼 수 없는 과감한 시도들이 있을 것인데 이런 것들을 예상할 수 있습니다.

  • 실험적 토큰 경제 설계: 나인 크로니클은 이미 토큰 모델을 약정하여 판매까지 마친 뒤라 현실적으로 (분배를 포함한) 큰 개정이 불가능하나, 새로운 프로젝트에선 보다 실험적인 시도를 해볼 수 있습니다.
  • 대안 기술 사용: 위에서 C#을 사용해야 하는 유일한 이유가 나인 크로니클이라는 것은, 바꾸어 이야기하면 다른 기술을 사용하지 못할 이유도 없단 뜻입니다.

나인 크로니클 안에서 기성 게임의 게임성과 제작/운영 경험 제공 간의 이해 충돌이 생겼던 것처럼, 나인 크로니클을 개발하는 동안 이런 실험을 하는 것 역시 유한한 자원을 두고 경합한다는 점에서 크게 다르진 않습니다. 때문에 이런 실험들은 나인 크로니클의 탈중앙화와 그 우선순위를 견주어 고려될 필요도 있을 것입니다.

(다시) C# 이어야 하는 이유

Libplanet의 존속 여부는 21년 말부터 저와 몇몇 분들을 괴롭히는 주제였으며, 아쉽게도 아직까지 모두가 만족할 만한 정답을 내지 못 한 부분이기도 합니다. 어떤 분은 Cosmos SDKPolygon Edge와 같은 메인넷 빌더 기술이 충분히 있는데 왜 우리가 그걸 직접 바닥부터, 그것도 C#/.NET 생태계15에서 만들어야 하는지 의문을 표합니다. 그런가 하면 어떤 분은 C#/.NET이 게임 개발 시장에서 가지고 있는 위치에 주목하시고, 나인 크로니클로 이미 증명받은 사업성을 이어나가는 것이 중요하다고 생각합니다.

고통스럽게도 저는 이 문제에 대해서 작금에 이르러서도 결론을 내리지 못한 상태입니다. 문맥을 제외하고 생각하고 순수하게 공학적인 관점에서 지금의 나인 크로니클의 구조와 같은 게임을 C#/.NET 기반의 블록체인을 바닥부터 만들어서 쌓아 올리는 건 좋은 선택이 아니란 걸 압니다. 하지만 위에서 밝힌 것처럼, 나인 크로니클은 이미 회사 하나(i.e., 나인 코퍼레이션)가 붙어서 만들만한 덩치가 되었으며 이는 더 이상 순수한 기술 선택의 문제로 보기 어려운 규모이기도 합니다. 때문에, 올 상반기에 클라이언트 측 C# 인터페이스를 유지하면서 노드 구현만을 바꾸는 등의 출구 전략 등을 모색해보았으나 제 관리 미숙과 인력 구성상의 난점으로 매끄럽게 진행되진 못했습니다.

현재 제 잠정적인 결론은, 플라네타리움 공동체가 지금의 투자 수준을 이어간다면, 적어도 나인 크로니클 개발에서 C#/.NET을 포기하는 데에는 리스크가 너무 많이 따르기 때문에, C#/.NET 구현을 계속해서 이어나가는 게 낫다는 것입니다. 하지만 이는 사업이나 전략적인 관점이라기보다, 전적으로 리스크 관리 차원의 이야기이므로, 위에서 밝힌 실험적인 게임을 만들면서라도 나인 크로니클 이외의 가능성에 대해서 탐색하고 싶다는 상반된 욕심도 여전히 가지고 있습니다.

마치며

이 글의 내용을 요약하면 다음과 같을 것입니다.

  • 블록체인을 사용한 탈중앙 게임은 "제작"과 "운영" 경험을 제공할 수 있는 것이 강점이고
  • 나인 크로니클을 위의 강점을 잘 살릴 수 있는 게임으로 만드는 것은 중요한 일이며
  • 나인 크로니클을 넘어선 파격적 실험들 역시 필요하다.

이러한 맥락에서 22년 3분기에 제안될 엔진팀/게임팀의 엔지니어 편제 변경은 플라네타리움 공동체가 Libplanet과 나인 크로니클을 더 잘 만들기 위한 방법의 하나입니다. 세상에서 많은 일이 그러하듯이 이 역시 유일한 방법은 아닐 것이고 가장 좋은 방법일 확률 역시 굉장히 낮을 것입니다. 그럼에도 불구하고 이렇게 길고 장황한 글로 제 생각을 적는 것은 크게 2가지 이유일 것인데,

  1. 어쩌면 다 나은 방법이 제안될지 모른다는 기대와
  2. 편제만으로는 다 담지 못할 여러가지 돌발 상황에서 톤을 맞췄으면 하는 욕심

이 있기 때문이 아닐까 합니다.

길고 어설픈 글 읽어주셔서 감사합니다.

Footnotes

  1. 물론, 지금도 나인 크로니클을 위해 팀이 많은 노력과 헌신을 하고 있다고 생각합니다.

  2. 재미라는 표현을 쓸 수 있겠지만, 전 이 문맥에서 게임성을 재미로 정의하는 것에 대해서 동의하지 않기 때문에 길게 풀어썼습니다.

  3. 정확히는, 코인을 통한 수익 창출

  4. 마치 2018년의 저처럼요

  5. 찰스 폰지가 역사에 길이 남을 사기를 친 게 1920년입니다.

  6. 예를 들면 한국 정부는 유사수신행위를 규제하고 있습니다.

  7. 단순히 꺼린다 수준을 넘어, 계약에 포함하는 것으로 비용을 지불할 정도입니다.

  8. 이건 파고 들어가면 "선의 vs 무신뢰성"이라는 복잡한 주제로 이야기할 수도 있는데, 나중에 따로 글을 적겠습니다.

  9. 이런 누락이 결코 기존 업계의 능력 부족이나 태만을 뜻하는 것은 아닙니다. 바라보는 시장이 다를 뿐이며, 뜻하는 바가 다른 것뿐이라고 생각합니다.

  10. 소프트웨어 개발에서 소스코드로부터 목적물(i.e., 프로그램)을 얻는 행위를 일컫습니다.

  11. "과연 게이머들이 운영을 제대로 할 수 있을 것이냐"라는 의문이 있을 수 있습니다. 다만 일관성을 위해 이에 대해서 길게 많이 다룰 수 없어 이 글에선 "할 수 있다."로 가정하고 넘어갑니다.

  12. 우스갯소리 같지만, 2021년 8월 27일 마이닝 중앙화이후 에도 문제가 해결되지 않자 멘탈이 터져서 제안한 적이 있습니다. (물론 법률 검토는 전혀 받지 않았었습니다.)

  13. 이 나인 크로니클의 데이터 마이그레이션만을 의미하는 것이 아니라, 개발 환경 전반을 의미합니다.

  14. C#/.NET 생태계에 암호학 라이브러리가 없는 것이 이를 사용하여 블록체인이나 앱을 만들려는 사람들에겐 큰 난관이지만, Web3 생태계가 커질 것을 믿는다면 선점할 수 있는 기회로도 볼 수 있을 것입니다.

  15. C#/.NET 생태계는 현대 블록체인 노드 구현 주류와는 동떨어진 감이 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment