1. 프로젝트 개요

MOL.jpg

항목 내용
프로젝트명 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

2. 게임 소개

Project MOL은 플레이어가 시설 관리자가 되어 직원을 배치하고, 크리쳐를 관리하며, 에너지를 수집하는 3D 관리 시뮬레이션 게임입니다.

주차/일차 진행, 직원 선택과 배치, 크리쳐 관리, 에너지 추출, 폭주 발생, 제압 미니게임으로 이어지는 플레이 루프를 구현했습니다. 특히 Google Sheets 기반 데이터 로딩, 직원/크리쳐 상태 관리, 방 배치 시스템, Cinemachine 카메라 조작, 조명/셔터/가스/스프링클러를 활용한 제압 상호작용 시스템을 담당했습니다.


3. 담당 기능 요약

기능 설명
게임 진행 관리 StageManager, DataHandler를 통해 주차/일차, 상태 전환, 재시작, 게임오버/클리어 흐름 구현
데이터 관리 Google Sheets TSV 데이터를 로딩해 크리쳐 기본 정보와 성격별 스탯을 ID 기반으로 관리
직원 시스템 랜덤 직원 생성, 이름/체력/정신력/성격 부여, 직원 배치, 이동, 선택, 사망, 에너지화 처리
방 배치 시스템 IRoom 인터페이스 기반으로 로비, 휴게실, 도서관, 훈련실, 재료 재배실에 직원을 배치
크리쳐 관리 크리쳐 상태, 위험도, 폭주 여부, 미니맵 선택, 관리/제압 진입 흐름 구현
에너지 추출 직원 성격과 크리쳐 스탯을 조합해 작업 중 피해, 에너지 획득, 위험도 증가를 계산
제압 시스템 조명, 손전등, 셔터, 가스 퍼즐, 스프링클러, 엔트로피 기반 고장/디버프 시스템 구현
크리쳐 패턴 ICreature, ICreatureAttack 기반으로 크리쳐 FSM과 공격 패턴 분리
카메라 시스템 Cinemachine Virtual Camera 기반 줌, 드래그 이동, 맵 범위 제한, 자동 복귀 연출 구현
UI/연출 로비/선택/관리/제압 UI, 직원 정보창, 툴팁, 로딩 팁, 게임오버/클리어 연출 구현
사운드 SoundManager에서 BGM/SFX 로딩, AudioSource 풀 기반 효과음 재생 구조 구현

4. 주요 구현 상세

기능 1. Google Sheets TSV 기반 크리쳐 데이터 로딩

문제 상황: 크리쳐의 기본 정보와 성격별 스탯 데이터가 계속 추가될 수 있어, 코드에 직접 데이터를 작성하면 밸런싱과 유지보수가 어려웠습니다.

해결 방법: DataLoader에서 Google Sheets를 TSV 형식으로 받아오고, CreatureData에서 크리쳐 ID 기준으로 기본 정보와 스탯 정보를 분리해 저장하도록 구현했습니다.

구현 포인트: 크리쳐 ID 기준 Dictionary 관리, 성격 타입을 ePERSONALITY enum으로 처리, StatValuesPersonalityModifier로 성격별 보정값 구조화, 신규 크리쳐 추가 시 시트 데이터와 프리팹 연결만으로 확장 가능하도록 설계.

성과: 기획 데이터와 클라이언트 코드를 분리해, 스탯 수치와 크리쳐 정보를 시트 수정만으로 조정할 수 있는 구조를 만들었습니다.

기능 2. 주차/일차 기반 게임 루프와 상태 관리

문제 상황: 선택, 배치, 일과, 관리, 제압 등 여러 화면과 상태가 연결되어 있어 진행 흐름을 한 곳에서 관리할 필요가 있었습니다.

해결 방법: eSTATE enum을 기준으로 현재 게임 상태를 관리하고, StageManager에서 날짜 진행, 주차 갱신, 실패/클리어, 재시작 흐름을 처리했습니다.