캐주얼 경영 시뮬레이션의 매력: 포션 조합 게임 개발기
마법 포션 가게를 1인 개발로 만든 이야기. 아이디어 구상부터 배포까지의 과정과 배운 점을 공유합니다.
작은 게임 하나를 만들어보고 싶다는 생각은 오래됐습니다. 복잡한 RPG나 퍼즐 게임이 아닌, 5분씩 잠깐 즐길 수 있는 캐주얼 게임. 그렇게 탄생한 것이 마법 포션 가게입니다. 오늘은 이 게임을 만든 과정을 공유합니다.
아이디어의 시작
“포션 가게를 운영하는 게임이 있으면 재미있겠다”는 생각은 판타지 소설을 읽다가 떠올랐습니다. 마법사가 재료를 조합해서 포션을 만들고, 그걸 모험가들에게 파는 이야기. 실제로 이런 게임이 거의 없다는 걸 알고 만들어보기로 했습니다.
핵심 게임플레이 아이디어:
- 재료를 구입하거나 수집
- 레시피에 따라 재료 조합 → 포션 제조
- 손님에게 포션 판매
- 수익으로 더 좋은 재료와 장비 구입
이 사이클이 반복되면서 점점 더 강력한 포션을 만들 수 있게 되는 구조입니다.
기술 선택
1인 개발이라 기술 스택을 단순하게 유지하는 것이 중요했습니다.
- React: 컴포넌트 기반으로 UI를 쉽게 관리
- Vite: 빠른 개발 환경
- Canvas API: 게임 렌더링
- LocalStorage: 게임 세이브 데이터 저장 (서버 없이)
- Cloudflare Pages: 무료 정적 호스팅
서버가 필요 없는 순수 클라이언트 사이드 게임으로 설계했습니다. 서버 비용 걱정 없이, 무한히 확장 가능합니다.
개발 과정
1단계: 핵심 루프 구현 (2주)
가장 먼저 게임의 핵심 루프가 재미있는지 확인했습니다. 재료 조합 → 포션 생성 → 판매의 기본 흐름만 구현하고, UI는 텍스트로만 표현했습니다.
이 단계에서 발견한 중요한 것: “클릭 한 번으로 포션을 만드는 것보다, 재료를 드래그해서 조합하는 것이 훨씬 재미있다.” 실제로 해보기 전까지는 몰랐던 발견입니다.
2단계: 게임 콘텐츠 설계 (1주)
포션 종류와 레시피를 설계했습니다.
| 포션 이름 | 재료 조합 | 효과 |
|---|---|---|
| 치유 포션 | 붉은 허브 + 정화수 | HP 회복 |
| 근력 포션 | 용의 비늘 + 강철 가루 | 공격력 증가 |
| 마법 포션 | 별가루 + 달빛 에센스 | 마력 증가 |
| 속도 포션 | 바람 결정 + 민첩 허브 | 이동속도 증가 |
| 불사 포션 | 불사조 깃털 + 희귀 뿌리 | 일시적 무적 |
재료는 이름만 봐도 어떤 포션에 쓸지 연상이 되도록 설계했습니다.
3단계: 비주얼 작업 (3주)
솔직히 말하면 이 단계가 가장 힘들었습니다. 프로그래머로서 디자인은 약점입니다.
처음에는 CSS로 모든 것을 만들었습니다. 포션 병, 재료 아이콘, 가게 배경 등을 SVG와 CSS 애니메이션으로 구현했습니다. 한계가 있었지만, 코드로만 만든 것치고는 나쁘지 않았습니다.
픽셀 아트 스타일을 선택한 이유:
- 개발자 혼자 만들 수 있는 현실적인 범위
- 복잡한 일러스트보다 게임 분위기와 잘 맞음
- CSS로 구현 가능
4단계: 게임 경제 균형 (2주)
경영 시뮬레이션에서 가장 중요한 것은 경제 균형입니다. 포션을 팔아서 버는 돈과, 재료를 사는 데 드는 돈의 비율이 맞아야 합니다.
- 너무 쉽게 돈을 벌면: 목표 의식 없이 지루해짐
- 너무 어렵게 돈을 벌면: 좌절하고 그만두게 됨
여러 번의 플레이테스트를 통해 초반 30분은 성장이 빠르게 느껴지고, 이후에는 점점 어려워지는 곡선을 잡았습니다.
5단계: 이벤트 시스템 추가 (1주)
단순 반복이 지루해질 수 있다는 피드백을 받았습니다. 그래서 랜덤 이벤트 시스템을 추가했습니다:
- 손님 이벤트: 특별한 포션을 급하게 구해야 하는 모험가 등장
- 재료 가격 변동: 시장 상황에 따라 재료 가격이 변함
- 특별 레시피 발견: 가끔 새로운 레시피를 발견
이 이벤트들이 매 플레이를 약간씩 다르게 만들어줍니다.
배포와 첫 사용자 반응
Cloudflare Pages로 배포하는 것은 간단했습니다. GitHub에 push하면 자동으로 빌드되고 배포됩니다. 도메인은 이미 설정된 magic-potion.gamja.top을 연결했습니다.
처음 공개했을 때 가장 많이 받은 피드백:
- “세이브가 되나요?” → 처음에는 없었는데 LocalStorage 세이브를 추가
- “모바일에서도 되나요?” → 반응형 개선
- “포션 종류가 더 많았으면 좋겠다” → 지속적으로 추가 중
1인 게임 개발에서 배운 것
완벽주의를 버려야 한다
처음에는 배포 전에 모든 것을 완성하려 했습니다. 버그도 하나 없이, 디자인도 완벽하게. 이러면 영원히 배포 못 합니다.
“일단 기본 기능만 있어도 배포하고, 피드백으로 개선한다.” 이것이 올바른 접근입니다. 실제 사용자의 피드백이 상상보다 훨씬 가치 있습니다.
게임의 핵심을 먼저
수많은 기능보다 핵심 재미 하나를 먼저 완성하는 것이 중요합니다. 마법 포션 가게의 경우 “재료를 드래그해서 조합하는 즐거움”이 핵심이었습니다. 이것만 재미있으면 나머지는 꾸밀 수 있습니다.
기술 과제보다 사용자 경험
개발자로서 기술적으로 도전적인 기능을 만들고 싶은 유혹이 있었습니다. 하지만 사용자에게 중요한 건 멋진 기술이 아니라 재미있는 경험입니다. 복잡한 알고리즘보다 직관적인 UI가 더 중요합니다.
앞으로의 계획
현재 마법 포션 가게는 계속 업데이트 중입니다.
- 포션 종류 확장 (현재 10종 → 30종 목표)
- 가게 업그레이드 시스템
- 계절별 특별 이벤트
- 업적(achievement) 시스템
완벽한 게임은 아니지만, 잠깐 쉬고 싶을 때 들어와서 포션 몇 개 만들고 나갈 수 있는 작은 공간이 됐으면 합니다.
마치며
마법 포션 가게를 만들면서 가장 즐거웠던 것은 아이디어가 실제 게임이 되는 과정이었습니다. 머릿속에 있던 상상이 코드가 되고, 브라우저에서 돌아가는 경험은 언제나 신기합니다.
만약 게임 개발에 관심 있는 분이라면, 작은 프로토타입부터 시작해보세요. 완성도보다 시작하는 것이 중요합니다.
지금 바로 마법 포션 가게에서 포션을 만들어보세요!