미니미들이 작은 SF 자판기에서 살아남아 탈출하는 개척 시뮬레이션입니다. 림월드 계열의 작업 지시 기반 콜로니 시뮬레이션을 목표로 개발 중입니다.
2026.01 ~ 진행 중 · 4인 팀 (아트/UI 2, 기획 1, 프로그래밍 1) · 팀장 · 클라이언트 개발 전담
Unity C#
이 저장소에는 제가 작성한 C# 코드와 설계 문서만 있습니다. 아트·사운드 리소스는 팀 아트 담당자의 저작물이라 제외했고, 씬과 프리팹도 함께 빠졌습니다. 따라서 그대로 클론해도 빌드되지 않습니다. 실제 플레이는 위 웹 빌드 링크에서 하실 수 있습니다.
| 주제 | 경로 |
|---|---|
| 코어 시뮬레이션 (Unity 비의존) | Assets/Scripts/Game/ |
| 계층 의존성 규약 — 네 줄 판정표 | Docs/Convention.md |
| 행동 최소 단위 Step / 작업 조합 | Assets/Scripts/Game/Jobs/ |
| 틱 실행 기반 | Assets/Scripts/Game/Kernel/ |
| 상태 원장 (Registry) | Assets/Scripts/Game/Services/ |
| 게임 규칙·오케스트레이션 | Assets/Scripts/Game/Systems/ |
| Unity 입력 어댑터 · 부트스트랩 | Assets/Scripts/Bridge/ |
| 코어 상태를 읽어 그리는 뷰 | Assets/Scripts/View/ |
| 테스트 (약 180개) | Assets/Tests/ |
| 날짜별 작업 기록 | Docs/History/ |
게임 로직이 MonoBehaviour에 붙어 있어, 동작 하나를 확인하려면 에디터를 띄우고 플레이 모드에 들어가야 했습니다. UI 작업도 코어가 돌아가야 붙일 수 있었습니다.
코어 시뮬레이션을 Game 어셈블리로 분리하고, 뷰가 코어의 상태를 읽어 그리기만 하도록 방향을 고정했습니다. 두 달이 걸렸지만 얻은 것은 세 가지입니다.
- 플레이 모드 진입 없이 로직을 검증할 수 있습니다. 정적 변수 초기화 순서 버그처럼 플레이로는 재현이 어려운 문제를 여기서 잡았습니다.
- UI 담당이 코어 완성을 기다리지 않고 병렬로 작업할 수 있습니다.
- 규칙이 어셈블리 경계로 드러나 리뷰할 때 눈으로 확인됩니다.
이전 프로젝트(Luminous Witch)에서 새 스킬은 곧 새 클래스였고, 그래서 기획자에게 넘기지 못했습니다. 여기서는 행동을 이동·대기·실행·조건 판정 같은 최소 단위 Step으로 쪼갰습니다.
public static Step GoTo(Item item) {
if (item == null) return Fail();
return new MoveStep(item.Position)
.FailOn(p => !item.InWorld || item.IsEmpty);
}실패 조건을 각 Step이 들고 있어, 드라이버는 순서만 결정합니다. 새 작업 대부분이 기존 Step 조합만으로 만들어지고, 코드를 읽는 사람이 각 행동을 한 줄 단위로 파악할 수 있습니다.
yield return GoTo(job.TargetItem);
yield return Try(() => _item.TryPickUp(...));
yield return GoTo(job.TargetFurniture);
yield return Try(() => _flow.StoreOrDrop(...));4인 팀에 개발자는 한 명입니다. 처리량을 늘리려면 판단 기준이 머릿속이 아니라 문서에 있어야 한다고 봤습니다.
| 누가 | 무엇을 | 답 |
|---|---|---|
| View(Bridge) | 읽기 | runner.Services에서 읽는다 |
| View(Bridge) | 쓰기 | System에 창구(API)를 만든다 |
| System | 읽기/쓰기 | 생성자 주입으로 필요한 대상 사용 |
| 도메인 객체 | 쓰기 필요 | 설계를 다시 본다. 직접 하지 않는다 |
전체 규약은 Docs/Convention.md에 있습니다. AI가 변경분을 단위별로 분류해 커밋하면, 규칙 위반 여부는 이 판정표로 제가 확인합니다.
작업은 브랜치 단위로 묶어 머지합니다. 커밋 목록의 첫 줄만 보면 브랜치 이름밖에 안 보이므로, 본문을 함께 보셔야 합니다.
git log --format=full # 소분 커밋 목록과 변경 이유가 함께 보입니다
git log --format=full -1 e60175a변경한 내용보다 그렇게 결정한 이유를 남기는 것을 규칙으로 삼고 있습니다. 사람이 알아야 할 것만 추려 Docs/History/에 날짜별로 정리합니다.
김민석 · [email protected] · GitHub