게임을 만들기로 결심했을 때, 처음엔 코드부터 짜고 싶었다. 근데 그러면 안 된다는 걸 금방 알게 됐다. 뭘 만들지 모르면서 어떻게 만들지를 고민하는 건 순서가 틀린 거였다.

PoliceSimulator/
│
├── Assets/
│ │
│ ├── 📁 _Project/ ← 우리가 만드는 것들
│ │ │
│ │ ├── 📁 Scripts/
│ │ │ ├── 📁 Player/
│ │ │ │ ├── PlayerController.cs # 이동, 입력
│ │ │ │ ├── PlayerInteraction.cs # E키 상호작용
│ │ │ │ └── PlayerStats.cs # 체력, 상태
│ │ │ │
│ │ │ ├── 📁 Vehicle/
│ │ │ │ ├── VehicleController.cs # 차량 물리
│ │ │ │ ├── VehicleEnterExit.cs # 탑승/하차
│ │ │ │ └── SirenController.cs # 사이렌/라이트
│ │ │ │
│ │ │ ├── 📁 NPC/
│ │ │ │ ├── CitizenAI.cs # 시민 배회
│ │ │ │ ├── SuspectAI.cs # 용의자 도주
│ │ │ │ └── NPCSpawner.cs # NPC 생성 관리
│ │ │ │
│ │ │ ├── 📁 Investigation/
│ │ │ │ ├── CrimeScene.cs # 범죄현장 오브젝트
│ │ │ │ ├── Clue.cs # 단서 아이템
│ │ │ │ └── CaseManager.cs # 케이스/미션 관리
│ │ │ │
│ │ │ ├── 📁 Camera/
│ │ │ │ └── IsometricCamera.cs # 카메라 고정/추적
│ │ │ │
│ │ │ ├── 📁 UI/
│ │ │ │ ├── HUDController.cs # 체력바, 미니맵
│ │ │ │ ├── CaseUI.cs # 케이스 목록/단서
│ │ │ │ └── InteractionPrompt.cs # "E 눌러서 탑승" 등
│ │ │ │
│ │ │ └── 📁 Managers/
│ │ │ ├── GameManager.cs # 전체 게임 상태
│ │ │ ├── MissionManager.cs # 미션 트리거/완료
│ │ │ └── AudioManager.cs # 사운드 관리
│ │ │
│ │ ├── 📁 Scenes/
│ │ │ ├── MainMenu.unity
│ │ │ ├── City_Day.unity # 낮 도시 씬
│ │ │ └── City_Night.unity # 밤 도시 씬
│ │ │
│ │ ├── 📁 Prefabs/
│ │ │ ├── 📁 Characters/
│ │ │ │ ├── Player.prefab
│ │ │ │ ├── Citizen_A.prefab
│ │ │ │ ├── Citizen_B.prefab
│ │ │ │ └── Suspect.prefab
│ │ │ │
│ │ │ ├── 📁 Vehicles/
│ │ │ │ ├── PoliceCar.prefab
│ │ │ │ └── CivilianCar.prefab
│ │ │ │
│ │ │ ├── 📁 CrimeScene/
│ │ │ │ ├── CrimeScene_Robbery.prefab
│ │ │ │ ├── Clue_Footprint.prefab
│ │ │ │ └── Clue_Weapon.prefab
│ │ │ │
│ │ │ └── 📁 UI/
│ │ │ ├── HUD.prefab
│ │ │ └── CaseBoard.prefab
│ │ │
│ │ ├── 📁 Animations/
│ │ │ ├── 📁 Player/
│ │ │ │ ├── Player_Walk.anim
│ │ │ │ ├── Player_Run.anim
│ │ │ │ └── Player_Idle.anim
│ │ │ └── 📁 NPC/
│ │ │ ├── NPC_Walk.anim
│ │ │ └── NPC_Run.anim
│ │ │
│ │ ├── 📁 InputSystem/
│ │ │ └── PoliceInputActions.inputactions # 키 바인딩 설정
│ │ │
│ │ └── 📁 UI/
│ │ ├── HUD_Layout.uxml
│ │ └── CaseBoard_Layout.uxml
│ │
│ └── 📁 ThirdParty/ ← 에셋스토어에서 가져오는 것
│ ├── 📁 SyntyPolice/ # 캐릭터 모델
│ ├── 📁 LowPolyCity/ # 도시 맵
│ └── 📁 LowPolyVehicles/ # 차량 모델
│
├── Packages/
└── ProjectSettings/
그래서 다음 한 일은 GDD(Game Design Document), 즉 게임 설계서를 작성하는 것이었다.
사실 나는 GDD가 뭔지 몰랐다. 클로드가 내 아이디어를 듣고 만들어준 걸 받았을 뿐이다.

GDD가 뭔가
게임 설계서는 쉽게 말하면 게임의 청사진이다. 건물을 짓기 전에 설계도를 먼저 그리는 것처럼, 게임도 만들기 전에 “이 게임이 뭔지”를 문서로 정리해두는 거다.
회사 팀 프로젝트라면 팀원 간 공유용으로 쓰이지만, 솔로 개발에서도 필요하다. 오히려 더 필요하다. 혼자 만들다 보면 방향을 잃기 쉬운데, GDD가 그때마다 나침반이 돼준다.
물론 나는 바이브코더답게 Claude를 이용하여 GDD를 만들었다.


내가 구상한 내용을 몇 번에 걸쳐서 입력했더니 Claude는 내가 만족할 만한 결과물을 제시했다.
최종 GDD를 공유했다. 물론 개발하면서 변경사항은 계속 생길 것이다.
하지만 GDD라는 나침반이 생겼으니 방향에 확신을 가지고 나아갈 수 있을 것이라고 생각한다.
https://champ0l.github.io/doksu-police-gdd
내 GDD에는 이런 내용이 들어있다.
- 게임 컨셉과 장르
- 핵심 게임플레이 루프
- 주인공과 등장인물
- 스토리 구조와 엔딩
- 시스템 목록 (신고, 능력치, 평판, 대화)
- 맵 설계
- 개발 로드맵
왜 경찰 게임인가
나는 개발자가 아니고 게임을 제작해본 경험도 없다.
유일한 차별점이 있다면 경험이었다.
나는 실제 경찰로 근무했다. 파출소에서 일하면서 느꼈던 것들이 있다. 지역 주민들과의 관계, 동료와의 갈등, 현장에서 순간적으로 내려야 하는 판단들. 이걸 게임으로 표현하고 싶었다. 사람들이 대한민국 경찰관이 되어 볼 수 있는 경험을 제공해주고 싶었다.
시중에 경찰 게임은 꽤 있다. 그런데 대부분 미국 경찰이거나, 총격전이 중심이거나, 한국 지역경찰의 일상과는 거리가 멀다. 만취 행인, 층간소음, 보이스피싱 피해 어르신. 이게 실제 파출소의 하루다.
그 하루를 게임으로 만들고 싶었다.
참고한 게임들
GDD를 쓰기 전에 레퍼런스 게임을 정했다.
This Is the Police 1, 2 — 경찰서장의 하루를 그린 전략 시뮬레이션. 인물들의 도덕적 딜레마와 조직 내 갈등이 잘 표현돼 있다. 실시간 액션 없이도 긴장감을 만들어낼 수 있다는 걸 이 게임에서 배웠다.
Rebel Cops — 턴제 전술 게임인데, 스탯 기반 판단이 핵심이다. 숫자 하나가 결과를 바꾸는 구조가 독수파출소 능력치 시스템에 영향을 줬다. 타일 내의 제한적인 움직임 기회로 전략의 중요성을 극대화한 부분이 인상적이었다.
Stardew Valley — 하루하루 루틴을 반복하면서 마을과 관계를 쌓아가는 구조. 독수파출소의 근무일지형 진행 방식이 여기서 왔다. 경찰게임과는 거리가 있는 2D게임이지만 내가 제일 좋아하는 아기자기한 감성의 게임이었던 만큼 영향을 받지 않았다면 거짓말이다.
가장 먼저 포기한 것
GDD를 쓰면서 제일 힘든 결정이 있었다. GTA 같은 오픈월드를 포기하는 것이었다. 학창시절 제일 재밌게 했던 게임이 GTA 리버티시티, 산안드레스, 갱스터 리오일 정도로 높은 자유도와 훌륭한 스토리, 박진감 있는 액션을 좋아했다.
따라서 처음엔 넓은 도시를 직접 돌아다니면서 순찰하는 걸 상상했다. 근데 현실을 직시했다. GTA 5는 수백 명이 수년간 만든 게임이다. 나는 혼자고 처음이다.
결국 작은 맵에 밀도 있는 서사와 대화 시스템으로 방향을 틀었다. 그게 솔로 개발자가 이길 수 있는 싸움이라고 판단했다. 넓이 대신 깊이.

게임의 핵심 루프
독수파출소의 하루는 이렇게 돌아간다.
출근 → 조회(브리핑) → 순찰 → 112 신고 출동 → 현장 처리 → 귀서 → 다음 날
매일 이 루프가 반복된다. 그 안에서 신고 유형, 만나는 사람, 내리는 판단이 달라지면서 이야기가 쌓인다. Stardew Valley처럼.
GDD를 쓰고 나서
설계서를 다 쓰고 나니까 비로소 “뭘 만들어야 하는지”가 보였다. 코드를 짜기 전에 이걸 먼저 한 게 맞는 선택이었다.
물론 개발하면서 GDD는 계속 바뀐다. 지금도 몇 가지는 미결로 남아 있다. 하지만 큰 뼈대가 잡혀 있으니 흔들리지 않는다.
다음 글에서는 112 신고 시스템이 어떻게 설계됐는지 이야기할 예정이다.