Unity 6 기반 타워 디펜스 게임의 소스코드 공개 레포지토리입니다. 3일간 개발한 게임의 소스코드입니다. 이곳에 올린 소스코드는 순수하게 본인이 작성한 코드만을 업로드하였습니다.
7일간의 낮/밤 루프를 기반으로 하는 타워 디펜스 게임으로, 플레이어의 선택과 성장 방향에 따라 9개 이상의 엔딩으로 분기됩니다. 사과나무를 지키며 방어 타워를 배치하고, 몰려오는 적들을 막아내는 것이 목표입니다.
- Unity: 6000.0.57f1 (URP 17)
- 언어: C# 8.0 (.NET Standard 2.1)
- 주요 라이브러리:
- DOTween (애니메이션 및 트윈)
- TextMeshPro (UI 텍스트 렌더링)
- NavMesh Components (AI 경로 탐색)
- 7일 간의 낮/밤 주기 시스템
- 9개 이상의 멀티 엔딩 시스템
- URP Volume 기반 낮/밤 분위기 전환
- 실시간 체력/방어/위치 계산 및 AI 반응
- ScriptableObject 기반 데이터 관리 (타워, 적, 대화 시퀀스)
- 이벤트 시스템을 통한 느슨한 결합 구조
- 오브젝트 풀링으로 최적화된 데미지 텍스트 표시
- 런타임/에디터 코드 분리
- nullable 참조 타입 활성화로 안정성 향상
Assets/
├── Game/
│ ├── Scripts/
│ │ ├── Runtime/ # 게임 실행 코드
│ │ │ ├── Game/ # 게임 로직 및 행동
│ │ │ ├── Data/ # ScriptableObject 데이터
│ │ │ ├── Map/ # 맵 관련 시스템
│ │ │ ├── Scene/ # 씬 관리
│ │ │ └── Utility/ # 유틸리티 클래스
│ │ └── Editor/ # 커스텀 인스펙터 및 빌드 도구
│ ├── Prefabs/ # 게임 오브젝트 프리팹
│ ├── Scenes/ # 게임 씬
│ ├── Sprites/ # 2D 스프라이트
│ ├── Sounds/ # 오디오 자산
│ ├── Materials/ # 머티리얼
│ ├── Textures/ # 텍스처
│ └── Animations/ # 애니메이션
ProjectSettings/ # Unity 프로젝트 설정
Packages/ # 패키지 의존성
ObjectBehaviour 클래스를 중심으로 체력, 방어, 데미지 계산을 처리합니다. 피격 시 실제 데미지를 계산하고, 오브젝트 풀에서 데미지 텍스트를 가져와 표시합니다.
ObjectManager가 플레이어와 몬스터 오브젝트를 등록하고, 사망 이벤트를 통해 자동으로 등록 해제합니다. 이를 통해 주변 탐색과 타겟팅 로직을 일원화했습니다.
EndingCalculator가 플레이어의 방어/체력/공격 성장치를 분석하여 적절한 엔딩을 계산합니다. 성장 방향에 따라 다양한 결말이 제공됩니다.
체력 변화, 사망 등의 이벤트를 통해 UI, 텍스트 표시, AI 행동이 동시에 반응합니다. 이를 통해 결합도를 낮추고 유지보수성을 높였습니다.
- Unity 6000.0.57f1 이상
- Universal Render Pipeline (URP) 17
- Unity Hub에서 프로젝트 열기
- URP 설정 확인
- 필요한 패키지 자동 설치 확인 (DOTween, TextMeshPro 등)
Assets/Game/Scenes에서 시작 씬 실행
- 이벤트 기반 설계로 UI, AI, 전투 시스템 간 의존성 최소화
- ScriptableObject를 활용한 데이터 주도 개발로 밸런스 조정 용이성 확보
- 오브젝트 풀링과 최적화를 통한 성능 향상
- DOTween과 URP Volume을 활용한 비주얼 연출 시스템
- 코드 재사용성을 높이기 위한 구조적 설계
이 프로젝트는 포트폴리오 목적으로 공개되었습니다. 코드 참고 및 학습 목적으로 자유롭게 사용 가능합니다.
이 프로젝트는 이전에 출시된 콘솔 게임의 시스템을 Unity 최신 버전으로 재구현한 것입니다. 기존 게임 디자인을 유지하면서도 현대적인 Unity 기능들을 적극 활용했습니다.