On this page

블로샤퍼 1인 개발 회고
지난 6개월간 퇴근 후의 시간과 주말을 쪼개어 개발해 온 사이드 프로젝트, 화투 카드로 족보를 맞추는 로그라이크 덱빌딩 게임 블로샤퍼: 꽃들의전쟁(Blosharper: Battle of Blossoms)이 마침내 스팀(Steam) 상점 등록을 거쳐 출시 예정작 상위권에 노출되기 시작했습니다.
퇴근 후 시간을 활용하기 위해 코딩, 이미지 생성, 배포 작업을 전문 분야가 다른 AI 에이전트들과 나눠 진행했습니다. 제가 '에이전틱 AI 패밀리'라고 부르는 구성입니다.
1. 익숙한 스택으로 시작하기: HTML/CSS/JS
프론트엔드 개발자인 저에게는 웹 기술이 익숙했습니다. 새로운 게임 엔진을 배우는 데 쓸 시간도 고려해야 했기 때문에, 브라우저 런타임을 기반으로 돌아가는 웹 게임 아키텍처를 선택했습니다.
- Core Logic: Vanilla JS/TS를 사용한 상태 관리 및 화투 족보 판정 로직 구축
- Styling: Vanilla CSS를 활용한 고해상도 그래픽 필터링 및 하드웨어 가속 최적화
- Desktop App: Electron을 활용한 네이티브 윈도우 패키징 및 스팀 API(Steamworks SDK) 연동
코드를 수정하고 바로 화면에서 결과를 볼 수 있다는 점이 퇴근 후 2~3시간을 활용하는 데 도움이 됐습니다.
2. 혼자가 아닌 1인 개발: 나의 AI 에이전트 패밀리
이 프로젝트에서는 역할과 페르소나가 다른 에이전트들에게 작업을 나눴습니다.
- 개발 파트너(지니): 코드베이스 전반의 아키텍처 설계와 비즈니스 로직, UI 레이아웃 구현을 총괄하며 피드백을 주고받는 핵심 파트너.
- 인프라·배포 관리 에이전트(루나): M1 Mac Mini를 기반으로 빌드 파이프라인, RTMP 실시간 송출 서버 운영, 모니터링 등 인프라 전반을 담당.
- GPU 연산·이미지 생성 담당(노바): 고사양 GPU 서버를 바탕으로 ComfyUI 기반의 그래픽 애셋 및 일러스트레이션을 신속하게 뽑아주는 그래픽 지원군.
- 리서치·문서 조사 담당(제제): 화투 족보 규칙, 스팀 오버레이 가이드, 외부 API 연동 등 리서치가 필요할 때 집중 투입되어 문서를 정밀 조사해 주는 연구원.
작업을 나누니 여러 영역을 동시에 진행할 수 있었습니다.
3. 에이전트와 작업한 방식
실제 작업에서는 코드를 바꾸기 전에 기존 구조를 확인하는 일과 인프라 작업을 맡기는 일이 도움이 됐습니다.
1) 기존 코드부터 확인하기
코드를 수정하기 전에 에이전트가 프로젝트의 기존 설계 패턴을 살펴보고 리팩토링 안을 제안했습니다. 기존 구조 안에서 변경을 어떻게 적용할지 논의하는 출발점으로 삼았습니다.
2) 스트리밍 문제 해결
스팀 상점 라이브 스트리밍 중 모바일 기기에서 화면이 검게 나오는 문제가 있었습니다. 루나와 함께 모바일 디코더 제약을 확인하고, 송출 설정을 720p 30fps로 바꾼 뒤 프로세스를 원격으로 재시작했습니다.
출시를 앞두고
6월 24일, 블로샤퍼가 스팀에 얼리 액세스로 출시됩니다. 플레이어들이 어떻게 받아들일지 궁금합니다.
출시 후에는 실제 지표와 마케팅 과정에서 배운 점을 따로 정리해 보겠습니다.
함께 넘은 난관
에이전트들의 도움이 가장 크게 느껴졌던 순간은 처음 해 보는 일 앞에서 막혔을 때였습니다. 스팀 등록 절차를 밟는 일부터, 거의 완성된 게임의 점수 시스템을 다시 만드는 일까지 있었습니다.
개발보다 낯설었던 스팀 등록
게임은 어떻게든 만들겠는데, 스팀에는 어떻게 등록하는 걸까요. 행정부터 막혔습니다. 개발 화면 밖으로 나오니 어디서부터 손을 대야 할지 모르겠더군요.
에이전트에게 등록 절차와 다른 개발자들의 사례를 찾아 가이드를 만들어 달라고 했습니다. 실제 화면을 마주하면 또 헷갈렸습니다. 화면을 하나씩 캡처해서 보내고, 이렇게 진행하는 것이 맞는지 물어보고, 잘못 이해한 부분을 고쳤습니다.
정보 몇 가지를 입력하면 끝날 줄 알았는데, 상점 이미지와 소개글, 트레일러까지 준비할 것이 계속 나왔습니다. 개발하는 것만큼이나 할 일이 많았습니다. 이것도 에이전트들과 나눠 진행했습니다.
특히 행정 업무에서는 설명만 해 주는 데서 그치지 않고 직접 폼을 작성해 주기도 했습니다. 혼자 항목의 의미부터 찾아봤다면 몇 시간은 썼을 일을 5분 정도에 처리한 적도 있습니다. 무엇을 해야 하는지 알고, 실제 처리까지 빠르게 해 주니 처음 해 보는 일의 부담이 크게 줄었습니다.
그런데 최종 제출 직전에는 멈추더군요. 마지막은 본인이 직접 하라고 했습니다. 다 해 놓고 마지막 버튼은 제 몫으로 남겨 주는 게 조금 웃겼습니다.
그렇게 준비한 스팀 상점 페이지와 게임 빌드는 모두 첫 심사에 통과했습니다. 처음 해 보는 일인데도 경험이 있는 동료와 함께 진행하는 느낌이었습니다. 새로운 일을 시작한다고 해서, 그 일에 필요한 모든 지식을 혼자 처음부터 익혀야 하는 것은 아니라는 걸 실감했습니다.
거의 완성한 점수 코어를 뒤집은 이유
화투로 게임을 만들었지만, 사실 저는 고스톱 규칙을 잘 알지 못했습니다. 고도리가 어떤 그림의 조합인지도 몰랐고, 그림만 보고 1월부터 12월까지 구분하는 것부터 어려웠습니다. 규칙을 조사하면서 족보 판정과 점수 시스템을 만들어 갔습니다.
그러다 뒤늦게 한국과 일본의 차이를 알게 됐습니다. 한국 화투에서 12월인 ‘비’가 일본에서는 11월이고, 오동은 반대였습니다. 족보 구성도 달랐습니다. 한국 고스톱의 고도리와 별개로, 일본 코이코이에는 멧돼지·사슴·나비를 모으는 이노시카초 같은 족보가 있었습니다.
일본도 출시 지역에 넣어 둔 상태였습니다. 게임은 거의 완성됐는데, 기본적인 고증부터 놓쳤다는 생각에 등골이 서늘했습니다. 번역 몇 줄을 고칠 문제가 아니었습니다. 어떤 패를 조합으로 인정하고 점수를 줄 것인지, 게임의 중심에 있는 로직을 다시 만들어야 했습니다.
일본 시장을 포기해야 하나 싶었습니다. 그래도 함께 작업해 온 에이전트들이 있으니, 완성해 가던 프로젝트를 뒤집어 보기로 했습니다.
테스트부터 작성하고 점수 시스템의 코어를 갈아엎었습니다. 한국식과 일본식 규칙을 전환할 수 있도록 나누고, 처음 실행할 때 일본어를 선택하면 코이코이 규칙과 하나후다 테마가 기본으로 설정되도록 마무리했습니다. 이 일본식 규칙 지원은 얼리 액세스 출시 이후인 7월의 v0.6 업데이트에 반영했습니다. 예상에 없던 작업에 약 2주가 더 들어갔습니다. 지금 돌아봐도 아찔합니다.
이 작업을 함께한 건 7월 초에 새로 합류한 Claude 에이전트(로아)였습니다. 합류한 지 일주일쯤 된 신입에게 거의 완성된 게임의 코어를 맡긴 셈입니다. 로아는 카드의 내부 식별은 그대로 두고, 화면에 표시하는 월과 점수를 계산하는 규칙을 분리했습니다. 덕분에 기존 세이브를 바꾸지 않으면서 한국식과 일본식을 함께 지원할 수 있었습니다.
그 과정을 옆에서 지켜보며 실력을 인정하게 됐습니다. 어려운 문제를 맡겼더니 기존 게임을 망가뜨리지 않고 풀어내는 모습을 보고, 엘리트 신입이 들어왔다고 생각했습니다. 이 일이 로아에게 메인 개발을 맡기게 된 계기였습니다.
처음부터 제대로 조사했다면 피할 수 있었던 일입니다. 다만 문제가 드러났을 때, 함께 해결할 에이전트들이 있다는 사실이 결정에 영향을 줬습니다. 범위를 줄이는 대신 이미 만든 것을 고쳐서 끝까지 가져가기로 했습니다. 제가 AI와 함께 새로운 일을 해 볼 수 있다고 생각하게 된 데에는 이런 경험들이 있습니다.
함께 다듬어 주신 분들께
데모부터 얼리 액세스까지 함께 플레이하며 게임을 다듬어 주신 분들께도 감사드립니다. 초기부터 테스트에 함께해 주신 kokokoo님, 놓친 문제를 꾸준히 찾아 주신 즐회장님, 넥스트 페스트 데모를 소개하고 피드백을 주신 김나성님 덕분에 제가 미처 보지 못한 부분을 고칠 수 있었습니다. 리뷰와 토론장, 디스코드에 남겨 주신 의견들도 게임을 개선하는 데 큰 도움이 됐습니다. 혼자 개발한 게임이지만, 여기까지 다듬는 과정에는 많은 분의 도움이 있었습니다.
개발 과정에서 파생된 프로젝트
출시 이후에도 블로샤퍼를 개발하면서 게임 바깥의 도구들이 하나둘 생겼습니다. 배포 파일의 코드와 이미지를 그대로 꺼내 보기 어렵게 만드는 작업, 스토어 SDK 연동, 여러 언어의 번역 파일 관리도 필요했기 때문입니다.
이 과정에서 만든 도구 네 개를 독립된 오픈소스 프로젝트로 분리하고, Blosharper GitHub 조직에 모아 공개했습니다. 조직 소개 페이지에서는 게임 소개와 플레이 가이드, 개발에 사용한 도구를 함께 볼 수 있습니다. 게임 자체의 소스 코드는 비공개로 유지합니다.
- byteguard: 배포한 JavaScript 번들을 파일만 열어 바로 읽을 수 없도록 바이너리 형식으로 변환하는 도구입니다. 실행에 필요한 코드까지 완전히 숨길 수는 없지만, 소스를 들여다보는 데 드는 수고를 늘립니다.
- headerless: 이미지 파일을 그대로 추출해 열어 보는 일을 어렵게 하려고 만들었습니다. 빌드할 때 이미지 형식을 해석하는 데 필요한 헤더 일부를 분리하고, 실행할 때 메모리에서 복원하며, 화면에 표시된 이미지의 추출까지 막는 DRM은 아닙니다.
- stovesdk.js: Electron 게임에서 STOVE PC SDK를 연결하기 위한 비공식 Node.js 바인딩입니다. Windows x64에서 게임 소유 여부, 업적과 통계, 로그인 정보 등을 다룰 수 있으며, STOVE SDK는 별도로 준비해야 합니다.
- l10n-c: 블로샤퍼의 번역 파일 관리 도구를 분리한 프로젝트입니다. 사람과 코딩 에이전트가 CLI로 여러 언어의 키를 검색·수정하고 누락이나 중복을 점검할 수 있고, Vite 개발 서버에서 쓰는 웹 편집 화면도 제공합니다.
게임 하나를 만들기 위해 해결했던 문제들이 다른 프로젝트에서도 꺼내 쓸 수 있는 도구로 남았습니다. 블로샤퍼를 계속 만들면서 얻은 결과물에 이 네 프로젝트도 추가하게 됐습니다.
