nogada RPG — 서버 권위형 생활기술 RPG
노가다RPG 팬메이드 프로젝트입니다. 게임 규칙을 서버가 판정하는 웹 RPG 모노레포와, 미니PC의 자가 호스팅 러너로 배포하는 CI/CD를 갖췄습니다
- 기간
- 2026.08
- 역할
- 1인 개발 · AI 코딩 에이전트 협업
- 저장소
- 비공개 저장소
- 스택
핵심 수치
2026-09-29 기준
- TypeScript 코드 / 테스트 규모약 36.5K줄 / 36.7K줄 (테스트 파일 124개)
- CI (실제 PostgreSQL 17 테스트 + 자가 호스팅 배포)27회 중 26회 성공
- 동시 갱신 유실 방지버전 비교 + 최대 3회 시도
문제
웹 게임에서 클라이언트가 난수를 굴리고 결과를 계산하면 결과를 조작할 수 있습니다. 또 같은 공식을 클라이언트와 서버에 따로 구현하면, 화면에 보이는 값과 실제 판정이 어긋나는 버그가 생깁니다.
접근
- 게임 공식을 공유 패키지 하나에 두고 서버와 클라이언트가 같은 코드를 쓰게 해서, 화면의 예상 수치와 서버의 판정이 어긋나지 않게 했습니다.
- 모든 판정과 난수는 서버가 맡습니다. 같은 캐릭터에 요청이 동시에 들어오면, 읽은 판본이 그대로일 때만 저장하고 어긋나면 처음부터 다시 읽어 최대 3번 시도해 갱신 유실을 막았습니다.
- CI에서 실제 PostgreSQL 17로 테스트를 돌리고, 통과한 커밋만 미니PC의 자가 호스팅 러너로 배포합니다.
- 클라이언트는 Phaser와 React로 만들고, Capacitor 안드로이드 빌드 파이프라인을 구성했습니다.
결과
- TypeScript 코드 약 36.5K줄에 테스트 약 36.7K줄(테스트 파일 124개)을 갖췄습니다.
- CI 27회 중 26회가 성공했습니다(미니PC 배포 포함).
주요 결정
- 저장소는 비공개입니다. 재배포가 금지된 서드파티 그래픽 에셋(일부는 유료)이 저장소에 들어 있어 공개할 수 없습니다. 코드는 면접에서 화면 공유로 보여 드릴 수 있습니다.
한계와 다음 단계
- 공개 서비스로 배포하지 않았습니다.
AI 협업 방식
방향과 판단은 직접 했고, 구현과 문서 작업은 AI 코딩 에이전트(Claude Code)와 함께 했습니다. 단일 브랜치(main)의 커밋 409개(머지 커밋 1개 포함) 중 399개에 Claude 공동 작성 표기가 있습니다.
링크
공개 링크가 없습니다. 비공개 저장소라 코드는 면접에서 화면 공유로 보여 드립니다.