~/우성현

← 모든 프로젝트

nogada RPG — 서버 권위형 생활기술 RPG

노가다RPG 팬메이드 프로젝트입니다. 게임 규칙을 서버가 판정하는 웹 RPG 모노레포와, 미니PC의 자가 호스팅 러너로 배포하는 CI/CD를 갖췄습니다

기간
2026.08
역할
1인 개발 · AI 코딩 에이전트 협업
저장소
비공개 저장소
스택
  • TypeScript
  • Phaser
  • React
  • Fastify
  • PostgreSQL 17
  • Capacitor
  • GitHub Actions

핵심 수치

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 공동 작성 표기가 있습니다.