플라네타리움 엔지니어링 스낵

Libplanet 게임잼

(English)

안녕하세요, 플라네타리움의 게임 클라이언트 프로그래머인 송승걸입니다. 이번 시간에는 플라네타리움에서 열렸던 사내 게임잼에 대해 제가 느꼈던 점을 나눠보고자 합니다.

플라네타리움에선 저희가 자체 제작한 블록체인 게임 라이브러리인 Libplanet을 사용해 게임을 만들고 있습니다. Libplanet은 현재 주로 Unity에서 사용하는 것을 상정하고 개발 중이기 때문에, 엔진 내에서의 사용성을 위해 Unity용 SDK를 제작하기로 했습니다. 이를 위해 Unity에서 Libplanet을 사용하는 조그마한 예시 프로젝트를 만들어 작업에 도움을 받기 위해 플라네타리움 사내 게임잼을 개최했습니다.

2~3명이 한 조를 이뤄 게임 개발을 할 것을 상정하고 개최일까지 2일의 시간을 두고 게임 기획안을 생각해봤고, 그동안 블록체인 기술을 적용해볼 멋진 게임 기획안이 5개나 제시되었습니다. 저는 고찬혁 님과 한 조가 되어 오목 게임을 만들기로 했습니다. 2명의 플레이어가 대국하게 하려고 세션 개념, 즉 여러분들이 익히 알고 계신 게임의 개념을 Libplanet의 액션(Action)과 상태(state) 개념을 사용해 구현했습니다.

저희가 만든 오목 게임의 멋진 모습입니다!

저희가 만든 오목 게임의 멋진 모습입니다!

우선 대표적인 상태들과 이를 변경시키는 액션들을 소개해 드리겠습니다.

자세한 내부 구현이나, 코드를 보고 싶으시다면 Github 저장소를 둘러보세요!

결국, Libplanet을 사용한 블록체인 게임 개발의 관건은 결국 이러한 상태와 액션을 어떻게 다루는지에 달려 있다고 생각합니다. 액션은 상태를 변화시키고, 게임 로직에서 상태를 사용해 게임이 동작하는 것이죠. 게임잼 전엔 플라네타리움과 함께 한 지 얼마 되지 않아 액션을 직접 만들어 보지 못했지만, 이번 기회에 일반화된 세션 개념을 고찬혁 님과 함께 구현해보니 액션과 상태의 의미와 일반적인 사용법에 익숙해져 여러모로 좋은 시간이었습니다.

마치며

게임잼이니만큼 간단한 예제로써 사용하기 적합한 게임으로 클리커 게임인 Planet Clicker의 GitHub 저장소를 둘러보시면서 간단한 액션과 상태 구조를 둘러보시는 건 어떠신가요? 더 자세한 용법이나 질문이 있으시다면 언제든 플라네타리움 팀원이 상주한 디스코드 서버로 놀러 와주세요!

플라네타리움은 게임에 특화된 오픈 소스 P2P 라이브러리 Libplanet과, 그 위에서 중앙 서버 없는 온라인 게임 〈나인 크로니클〉을 만들고 있습니다. 저희와 흥미로운 기술적 도전을 함께 하실 분들을 모시고 있습니다. 지금 인재 영입 페이지를 확인해주세요!