Unity 6000.0.83f1 기반 수원 생존게임 첫 로컬 프로토타입
개발 기록 · 블로그 공개
원본 기록 상태 완료
Unity Windows 빌드와 서버 접속·이동·수색을 실제 실행했습니다. 서버 테스트 7개가 통과했으며 DB 연결과 브라우저 지원은 후속 단계입니다.

작업 결과
Unity C# 클라이언트와 Node.js TypeScript 서버로 첫 로컬 프로토타입을 만들고 실행했습니다. React는 사용하지 않습니다. 다른 프로젝트 4개의 ProjectVersion.txt와 설치된 에디터에서 Unity 6000.0.83f1 일치를 확인했습니다. 전체 게임 완성이 아니라 첫 로컬 프로토타입 단계의 완료입니다.
적용 내용
클라이언트는 입력·지도·UI 표시, 서버는 이동 시간·생존 상태·인벤토리·수색·NPC 거래·주변 채팅·세이프존 판정을 맡도록 분리했습니다. 월드별 캐릭터와 접속 토큰, 요청별 처리 결과를 저장합니다. 이동은 서버가 계산한 위치를 받아 표시합니다. 동일 수색 요청을 재전송해도 아이템이 중복 지급되지 않습니다.
실제 OSM 타일에 게임 전용 장소와 중립 캠프를 표시하고 출처·ODbL 표기를 넣었습니다. 보이는 타일만 요청하며 7일 로컬 캐시를 사용합니다. 경비병·상인·의무병·생존자 유형과 기본 상호작용을 구현했습니다. README와 아키텍처 문서에 실행법·규칙·단계별 완료 기준을 기록했습니다. DB용 PostGIS 스키마와 Compose도 작성했습니다.
규칙은 설정 객체로 분리했으며 이동속도·상호작용 거리·쿨다운·경제 수치는 임시 프로토타입 값입니다. 공식 로고를 확인하지 못해 logo는 null이며 미등록 상태입니다.
검증
Node.js v24.22.1에서 node --test server/test/*.test.ts 실행: 7개 통과. 생성 지점·월드 분리·서버 이동 판정·수색 거리와 쿨다운·중복 지급 방지·NPC 거래/치료·중립 구역 제한·소지품 음수 방지·비접속 생존 규칙을 확인했습니다. 실제 WebSocket 클라이언트 2개로 통신하고 서버를 재시작한 뒤 동일 캐릭터와 아이템 수량 복원을 확인했습니다.
Unity 6000.0.83f1 배치 빌드: LAST37N_BUILD_SUCCEEDED, 종료 코드 0. 생성한 Windows 실행 파일이 실제 서버에 접속해 목적지 이동·수색·물 1개 증가를 자동 확인했습니다. 실제 게임 창에서도 Search site 버튼을 눌러 물이 4개에서 5개로 증가하고 Found water가 표시되는 것을 직접 확인했습니다.
배치/숨김 실행에서 저장한 검은 캡처는 증거로 채택하지 않았습니다. Computer Use로 실제 게임 창을 캡처했습니다. 원본 PNG 229,100바이트(1442×932)에서 창 테두리를 제거한 WebP 155,188바이트(1440×900)로 압축했고 실제 지명·물 수량·상태 문구 판독을 확인했습니다. 스크린샷은 AI 생성 이미지가 아닙니다. 초기 sandbox의 EACCES는 로컬 통신 허용 실행으로 재검증했습니다. 공개 보고서에는 인증 토큰이나 개인 로그를 포함하지 않았습니다.
개발 화면
