
| 항목 | 내용 |
|---|---|
| 프로젝트명 | Project MOL: 3D 시설 관리/크리쳐 제압 시뮬레이션 게임 |
| 개발 기간 | 2025.03 ~ 2025.06 |
| 개발 인원 | 4명 (개발 인원 1명) |
| 담당 역할 | Unity 클라이언트 개발 |
| 사용 기술 | Unity, C#, Cinemachine, ScriptableObject, Google Sheets TSV, URP Post-processing |
| 플랫폼 | PC |
| GitHub | ‣ |
| 시연 영상 | 추가 예정 |
| 블로그 링크 | https://pika-dev.tistory.com/7 |
Project MOL은 플레이어가 시설 관리자가 되어 직원을 배치하고, 크리쳐를 관리하며, 에너지를 수집하는 3D 관리 시뮬레이션 게임입니다.
주차/일차 진행, 직원 선택과 배치, 크리쳐 관리, 에너지 추출, 폭주 발생, 제압 미니게임으로 이어지는 플레이 루프를 구현했습니다. 특히 Google Sheets 기반 데이터 로딩, 직원/크리쳐 상태 관리, 방 배치 시스템, Cinemachine 카메라 조작, 조명/셔터/가스/스프링클러를 활용한 제압 상호작용 시스템을 담당했습니다.
| 기능 | 설명 |
|---|---|
| 게임 진행 관리 | StageManager, DataHandler를 통해 주차/일차, 상태 전환, 재시작, 게임오버/클리어 흐름 구현 |
| 데이터 관리 | Google Sheets TSV 데이터를 로딩해 크리쳐 기본 정보와 성격별 스탯을 ID 기반으로 관리 |
| 직원 시스템 | 랜덤 직원 생성, 이름/체력/정신력/성격 부여, 직원 배치, 이동, 선택, 사망, 에너지화 처리 |
| 방 배치 시스템 | IRoom 인터페이스 기반으로 로비, 휴게실, 도서관, 훈련실, 재료 재배실에 직원을 배치 |
| 크리쳐 관리 | 크리쳐 상태, 위험도, 폭주 여부, 미니맵 선택, 관리/제압 진입 흐름 구현 |
| 에너지 추출 | 직원 성격과 크리쳐 스탯을 조합해 작업 중 피해, 에너지 획득, 위험도 증가를 계산 |
| 제압 시스템 | 조명, 손전등, 셔터, 가스 퍼즐, 스프링클러, 엔트로피 기반 고장/디버프 시스템 구현 |
| 크리쳐 패턴 | ICreature, ICreatureAttack 기반으로 크리쳐 FSM과 공격 패턴 분리 |
| 카메라 시스템 | Cinemachine Virtual Camera 기반 줌, 드래그 이동, 맵 범위 제한, 자동 복귀 연출 구현 |
| UI/연출 | 로비/선택/관리/제압 UI, 직원 정보창, 툴팁, 로딩 팁, 게임오버/클리어 연출 구현 |
| 사운드 | SoundManager에서 BGM/SFX 로딩, AudioSource 풀 기반 효과음 재생 구조 구현 |
기능 1. Google Sheets TSV 기반 크리쳐 데이터 로딩
문제 상황: 크리쳐의 기본 정보와 성격별 스탯 데이터가 계속 추가될 수 있어, 코드에 직접 데이터를 작성하면 밸런싱과 유지보수가 어려웠습니다.
해결 방법: DataLoader에서 Google Sheets를 TSV 형식으로 받아오고, CreatureData에서 크리쳐 ID 기준으로 기본 정보와 스탯 정보를 분리해 저장하도록 구현했습니다.
구현 포인트: 크리쳐 ID 기준 Dictionary 관리, 성격 타입을 ePERSONALITY enum으로 처리, StatValues와 PersonalityModifier로 성격별 보정값 구조화, 신규 크리쳐 추가 시 시트 데이터와 프리팹 연결만으로 확장 가능하도록 설계.
성과: 기획 데이터와 클라이언트 코드를 분리해, 스탯 수치와 크리쳐 정보를 시트 수정만으로 조정할 수 있는 구조를 만들었습니다.
기능 2. 주차/일차 기반 게임 루프와 상태 관리
문제 상황: 선택, 배치, 일과, 관리, 제압 등 여러 화면과 상태가 연결되어 있어 진행 흐름을 한 곳에서 관리할 필요가 있었습니다.
해결 방법: eSTATE enum을 기준으로 현재 게임 상태를 관리하고, StageManager에서 날짜 진행, 주차 갱신, 실패/클리어, 재시작 흐름을 처리했습니다.