본문으로 건너뛰기
만작 MANJAC

개발 작업 기록 · PHP/RDB 백엔드

작업 목록으로

브라우저 기반 스테이지 저작 도구

PMF Editor

Unity 없이 맵·경로·스폰·밸런스를 편집하고 검증하는 도구

기획자가 Unity 프로젝트를 설치하지 않고도 스테이지를 수정하고 검토할 수 있도록 만든 브라우저 에디터입니다. 편집과 사전 검증을 한 화면에서 연결하고, TOON 파일로 게임에 전달합니다.

  • TypeScript
  • Canvas 2D
  • Vite
  • Vitest
  • TOON
데모 열기 (새 탭)

Interface

작업 화면

Engineering decisions

만든 방식

판단이 갈렸던 지점들

  1. 화면과 편집 규칙을 분리했습니다

    문서 모델·커맨드·검증·시뮬레이션을 DOM에 의존하지 않는 코어에 두었습니다. 화면을 띄우지 않고도 저장과 실행 취소, 검증 결과를 테스트할 수 있고, Unity의 C# 구현과 같은 입력을 대조하기 쉽습니다.

  2. 작업 저장과 게임 적용의 기준을 나눴습니다

    작업 중인 문서는 검증 오류가 있어도 저장할 수 있어야 합니다. 에디터는 초안을 보관하고, Unity 임포터는 구조·의미·참조를 검증한 뒤 오류가 있는 입력을 에셋에 쓰기 전에 거부합니다.

  3. 두 언어가 같은 파일을 해석하게 했습니다

    TypeScript와 C# 사이의 숫자 표현 차이는 게임의 binary32 정밀도를 기준으로 정규화했습니다. 공용 계약 픽스처와 골든 파일로 저장·불러오기 결과를 대조하고, 같은 데이터가 같은 바이트로 출력되도록 계약을 관리합니다.

  4. 드래그 한 번을 실행 취소 한 번으로 묶었습니다

    문서 변경은 커맨드의 적용과 되돌리기로 관리하며, 연속된 그리기는 스트로크 단위로 병합합니다. 선택·줌·레이어 같은 화면 상태는 스테이지 데이터와 분리해 편집 기록에 섞이지 않게 했습니다.

  5. 시뮬레이션이 설명할 수 있는 범위를 정했습니다

    이동 시간, 스폰 수, 자원 수입 상한을 계산해 밸런스를 사전 검토합니다. 전투나 승패는 예측하지 않으며, 처치 보상을 포함한 수입은 모든 적을 처치한다는 가정의 상한입니다. 실제 난이도는 Unity 플레이테스트로 확인합니다.

Project notes

프로젝트 정보

형식
브라우저 에디터 · 정적 호스팅
런타임
TypeScript strict · 외부 런타임 의존성 없음
산출물
CSS와 JavaScript를 포함한 단일 HTML
게임 연동
TOON 파일 · Unity C# 임포터와 익스포터
공개 데모
pmf.stage/1 · 맵·경로·스폰·밸런스 편집
후속 개발
다칸 마을을 지원하는 pmf.stage/2 · 로컬 구현, 공개 데모 미반영