- 프로젝트 제작기간: 2025/03/13 ~ 2025/03/19
- 개발 엔진 및 언어: Unity, C#
- 멤버: 김상민(팀장), 순현빈, 정성욱, 김영환, 강기수
- 장르: 3D 생존(Survival)
- 플랫폼: Unity
- 핵심 목표:
플레이어는 낮에는 자원과 동물을 수집하고, 밤에는 몬스터의 공격을 방어하면서 생존합니다.
수집한 자원으로 건물을 건설하고 아이템을 제작하여 살아남는 것이 게임의 핵심입니다.
일정 라운드를 버티고 구조 신호기(비콘)를 지켜내면 게임이 종료됩니다.
| 상호작용 | 상 (위) | 하 (아래) | 좌 (왼쪽) | 우 (오른쪽) | 인벤토리 | 건축 | 플레이어 공격 |
|---|---|---|---|---|---|---|---|
| 키 | W | S | A | D | I | F | 마우스 좌클릭 |
밤이 되면 적들이 비콘을 공격하러 몰려오고 플레이어는 적들에게서 비콘을 지켜야합니다.
클리어 조건: 일정 기간 동안 플레이어가 생존하면 해당 지역에서 탈출 가능한 비콘이 활성화 되고 비콘에 닿으면 클리어됩니다.
| 플레이어HP, 정신력, 비콘HP | 비콘 | 자원 |
|---|---|---|
![]() |
![]() |
![]() |
| 플레이어 체력과 정신력, 비콘 체력을 UI로 표시 | 클리어 조건에 필요한 오브젝트 | 공격하여 자원 획득 가능 |
| Enemy | 건물(제작소) 건축 | 방어 건물 건축 | 타이머 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 공격하여 자원 획득 가능 | 제작소에서 회복 아이템과 강화 아이템 제작 가능 | Enemy 이동 방해 및 공격 | 낮 밤 구분을 위한 타이머 기능 |
-
김상민 (팀장)
몬스터 관련 기능 전반, 프로젝트 총괄 -
김영환
플레이어 캐릭터 구현 및 관련 시스템 -
순현빈
건축 시스템, 제작 시스템 -
강기수
오브젝트 랜덤 생성 시스템, 낮/밤 사이클 구현 -
정성욱
인벤토리 시스템 및 아이템 관리 기능 구현
- 충돌 방지를 위한 씬 분리 설계
- 게임의 각 요소가 독립된 씬에서 동작하여 시스템 간의 간섭 최소화
UnityEngine.Pool네임스페이스의ObjectPool기능 사용PoolManager를 통해 오브젝트 재사용 구현- 생성 및 파괴 비용을 줄여 퍼포먼스 최적화
- 낮에는 자원과 동물이 맵에 생성됨
- 밤에는 몬스터가 등장하여 플레이어를 공격
- 시간 흐름에 따라 자원/적 스폰 관리
- 다양한 오브젝트가 조건에 따라 랜덤 위치에 생성됨
Raycast를 통해 지형을 감지하여 지면 위에 정확히 배치
NavMeshAgent를 활용한 경로 탐색State Pattern적용으로 유연한 상태 전이 (대기, 추적, 공격 등)
ScriptableObject기반ItemData를 활용하여 아이템 종류 및 속성 관리- 아이템은 드롭, 획득, 사용, 합치기, 나누기 등 다양한 조작 가능
- 획득한 아이템을 보관/이동/관리할 수 있는 시스템 구현
- 드래그 앤 드롭, 수량 나누기, 병합 등의 기능 포함
-
건축 슬롯과 상호작용 시 해당 위치에 건물 프리팹 생성
-
ScriptableObject기반 레시피로 건물 건설 비용 및 요건 정의 -
Strategy Pattern적용: 다양한 건설 전략 구현 가능
예) 지정 위치 건설, 시야 방향에 건설 등 -
건물 예시:
- 방어 건물 (예: 포탑)
- 제작 건물 (아이템 제작용)
- 시야 차단/가시 건물 등
- 제작 건물과의 상호작용을 통해 아이템 생성
- 제작된 아이템은 인벤토리에 자동 등록되며 사용 가능
- 레시피는 건물과 동일하게
ScriptableObject기반으로 관리
- 구조 신호기(비콘)를 일정 시간 방어하며 생존
- 목표 라운드를 넘기고 비콘에 도달하면 게임 종료
- 초기에 생성된 오브젝트가 지형 아래에서 생성되는 문제 발생
Raycast로 바닥 감지 후, 정확한 지면 위에 생성되도록 수정
- UI가 오브젝트의 상태 변화를 인지하지 못하는 문제 발생
EventChannel(ScriptableObject) 기반 시스템 도입GameEvent와EventListener구성으로 이벤트 기반 상태 연동 구현
ISavable인터페이스를 구현한 오브젝트는 개별적으로 상태 저장 및 복원 가능- 저장 대상 예: 몬스터 위치, 체력 등
- 오브젝트 전체를 직렬화하는 방식은 실패 → 객체별 상태 정보만 저장하도록 구조 변경
- 일정 부족으로 인해 더 많은 기능을 구현하지 못한 점이 아쉬움으로 남음
- 다양한 시스템을 구현하며 Unity의 고급 기능들과 디자인 패턴을 실습할 수 있었음
- 팀원 간의 협업을 통해 많은 것을 배우고 경험한 값진 프로젝트였음
- Unity 2022 이상 권장
- Windows 10 환경에서 개발 및 테스트










