- 게임 개요 및 개발 기간
- 시연 영상
- 기능 명세서
- 기획 설계
- 클래스 설명
- 개발 후기
- 사용 에셋
- 게임명 :
Safe Home
- 설명 : [내일 배움 캠프 8기 Unity] Chapter 3-2 게임개발 숙련 팀 프로젝트
- 장르 : 3D 생존 타워 디펜스 게임
- 개요 : 외딴 행성에서 몬스터로부터 집을 지키며 생존하자 !
- 조작법:
- 이동: [WASD]
- 인벤토리 : [TAB]
- 점프 : [SPACE]
- 곡괭이 : [1] / 망치: [2]
- 자원 채취 및 건물 제작 : [Left Click]
- 건물 제작 탭 열기 : [Right Click]
- 개발 환경 : Unity 2022.3.2f1
- 타겟 플랫폼 : PC
- 개발 기간
2023.09.23 ~ 2023.10.03
- 팀 프로젝트 자료실 : 팀 노션보기
진행도 | 기능명 | 기능 소개 | 담당자 |
---|---|---|---|
★★★ | 플레이어 | 게임 내를 돌아다니며 자원을 채취하고 포탑을 건설하는 주체 | 노동균 |
★★★★★★★★ | 매니저 클래스 | 게임 내의 정보와 플레이를 관리하고 조정해주는 모듈 | 노동균, 김민상, 강성호 |
★★★★★ | UI | 플레이어의 기본 컨디션 정보, 미니맵 등 Main HUD에 관련된 기능 | 노동균, 김민상, 강성호 |
★★★★ | 인벤토리 | 플레이어의 인벤토리로써 필요한 아이템과 관련된 기능 | 강성호 |
★★★★★★ | 건설 | 건설을 하기 위한 시스템 | 노동균 |
★★★★★★ | 포탑 | 타워 디펜스 기물인 포탑 개발 | 노동균 |
★★★★ | 적/AI | 적을 배치, 특정 위치로 이동하는 AI와 밸런싱 | 김민상 |
★★★★★★ | 자원/지형 | 자원, 맵 디자인에 관련된 기능 | 김민상, 강성호 |
★★ | 유틸리티 | 게임 개발에 추가적인 도움이 되는 기능 개발 | 노동균 |
★★★★★★ | 사운드 | 게임 내 필요한 사운드 작업 | 노동균 |
★★★★ | 씬 | 게임의 주요 씬 제작 | 김민상, 강성호 |
-
장비
아이템 기능 곡괭이 자원을 채취할 수 있는 도구 망치 포탑을 제작할 수 있는 도구 -
음식
아이템 기능 미네랄 오일락 물 우주결정 깨끗한 물 목마름+20 0 0 2 1 주스 배고픔+5, 목마름+15 5 0 2 3 만능 포션 목마름+100 16 8 3 5 술 멘탈+20 50 20 10 10 고기 배고픔+10 2 1 0 0 블루베리 파이 배고픔+20 4 1 0 2 치즈 정식 배고픔+35 6 2 0 3 포도 배고픔+25, 목마름+10 7 4 0 4 -
포탑
포탑 공격력 인식 범위 공격속도 미네랄 오일락 우주결정 기본 포탑 1 10 0.4 3 1 0 강화 포탑 4 20 2 4 1 2 미사일 15 30 4 7 3 10 3(Splash), 5, 10 캐터필터 10 15 12 10 5 20 1/1s, 5, 20 곡사포 200 50 15 50 10 200 200(splash), 20, 200 -
몬스터
컬러 체력 이동속도 드롭 우주결정 그린 5 5 1 그레이 10 5 2 카키 5 10 2 브라운 20 10 3 퍼플 30 10 5 레드 20 15 5 블랙 50 15 15 크리스탈 150 7 30 ??? 300 5 100 -
몬스터 웨이브
웨이브 등장 몬스터 총 마리수 1 그린 - 20, 그레이 - 5, 카키 - 5 30 2 그린 - 20, 그레이 - 10, 카키 - 10, 브라운 - 10 50 3 브라운 - 15, 퍼플 - 10, 레드 - 10, 블랙 - 5 50 4 브라운 - 20, 퍼플 - 20, 레드 - 20, 블랙 - 5, 크리스탈 - 5 70 5 브라운 - 20, 퍼플 - 30, 레드 - 30, 블랙 - 10, 크리스탈 - 10 100 -
채집 자원
자원 이름 획득 방법 미네랄 미네랄 광석 채취 오일락 오일락 광석 채취 물 호숫가에서 채취 우주 결정 몬스터 처치
-
플레이어
클래스 기능 PlayerMovement 플레이어의 움직임에 관련된 기능 InputController 외부 입력을 직접적으로 받아 연결된 event에 전달하는 모듈 Equip 장착되는 무기의 베이스가 추상 클래스 EquipTool 장착되는 무기에서 기본적으로 추가되는 클래스, 곡괭이에서 사용 BuildHammer 장착되는 무기 중 건설해머에 추가되는 클래스, 건설 UI를 띄워주는 역할 -
매니저 클래스
클래스 기능 PrefabManager 오브젝트 풀링 DayManager 낮과 밤 구현 ConditionManager 플레이어의 컨디션과 게임 종료 플래그 체크 MonsterSpawnManager 구성된 몬스터 웨이브 정보대로 몬스터 소환 ItemManager 아이템의 데이터 관리 InteractionManager 오브젝트의 상호작용 EquipManager 플레이어의 장비 장착 관리 및 공격 기능 -
UI
클래스 기능 ResourceDisplayUI 아이템 획득 UI 팝업 관리 ItemSlotUI 아이템 슬롯에 들어있는 아이템 정보를 관리 EscBtnUI Esc UI 활성화, 계속하기, 다시하기 버튼 -
아이템
클래스 기능 Inventory 인벤토리 On/Off, 인벤토리 아이템 추가, 아이템 사용, 버리기, 장착 기능 ItemData 아이템마다 정보를 부여해주는 기능 ItemObject 아이템 오브젝트의 상호작용 정보를 전달해주는 기능 -
포탑
클래스 기능 TurretAIBase 모든 터렛이 기본적으로 가져야할 내용을 담은 추상 클래스 TurretAI 기본 포탑(총을 쏘는 포탑)을 구현한 포탑 AI TurretThrowerAI 폭탄들을 발사하는 포탑들을 구현한 AI -
포탑 폭탄
-
클래스 기능 Bullets Thrower에 힘을 받아 날아가는 물리적 폭탄 DamageRange 폭탄이 터진 후 데미지를 입히는 영역을 만드는 컴포넌트 FireBomb Bullet과 같으나, 터졌을 때 DamageRange를 생성하는 폭탄 Follower 폭탄에 반유도 기능을 추가해주는 컴포넌트 -
제작/건설
-
클래스 기능 CraftManager Craft를 위한 레시피 데이터를 가져오고 공유해주는 모듈 GridPanelUI 모든 제작/건설 패널에서 사용되는 UI의 기능을 모은 컴포넌트 GridButtonUI 제작/건설패널에서 제작할 것들을 선택할 수 있는 버튼 GridScriptableObject 제작/건설 패널에서 기본적으로 사용하는 이미지, 리소스의 수 등을 보관하는 ScriptableObject -
건설
클래스 기능 BuildManager 건설 레시피를 가져오고, 건설모드시 PlayerInput을 받아 건설 동작을 할 수 있도록하는 매니져 BuildTargetButtonUI GridButtonUI를 상속받아 건설에 쓰이는 ScriptableObject를 보관,표시,동작하는 스크립트 BuildDataSO GridScriptableObject를 상속받고, 건설 시 완성될 오브젝트를 포함하는 Scriptable Object -
제작
클래스 기능 CraftManager Craft를 위한 레시피 데이터를 가져오고 공유해주는 모듈 CraftButtonUI GridButtonUI를 상속받고, 제작에 쓰이는 ScriptableObject를 보관,표시,동작하는 스크립트 CraftDataSO GridScriptableObject를 상속받고, 제작 시 완성될 Item을 포함하는 Scriptable Object -
적/AI
클래스 기능 MonsterDataSO 몬스터 데이터를 스크립터블오브젝트로 저장해 재사용 Monster 네이게이션 에이전트로 몬스터 AI 구성 및 관리 -
자원/지형
클래스 기능 ResourceRandomSpawner 정해진 자원을 무작위로 배치하는 기능 Resource 자원의 정보전달과 채취효과 기능 -
유틸리티
클래스 기능 TestScript 아이템 추가, 밤낮변경, 일자 변경 등 테스트를 위한 기능이 포함된 모듈 TextureMaker 별도의 씬 내에서 256x256크기에 맞춰 보이는 모습대로 카메라를 찍고, PNG 파일로 변환해주는 모듈 -
사운드
클래스 기능 SoundManager AudioClip을 전달받아 보유중인 AudioSource들로 효과음, 배경음을 재생해주는 모듈
팀원명 | 후기 |
---|---|
노동균 | 처음에 인원 수의 문제로 걱정이 들었습니다 그렇지만 끝으로 올 수록 든든하신 민상님, 성호님이 계서서 거의 완벽한 게임을 만든 것 같아 정말 좋았습니다. 저희 게임은 생각보다 할 일이 많고, 난이도도 어느정도 있어서 재미있습니다. 한번씩 해보셨으면 좋겠습니다. |
강성호 | 시간이 부족하여 애니메이션 동작이나 효과 같은 세심한 부분을 신경쓰지 못한 것이 아쉬웠습니다. 이번 프로젝트에서 아쉬웠던 점을 정리하여 다음 프로젝트에선 꼭 구현하고 싶습니다. 그리고 이 게임은 저희 팀의 많은 노력이 담겨있기 때문에 꼭 엔딩을 봐주셨으면 좋겠습니다! |
김민상 | 3명이서 팀 프로젝트를 시작하게 되었지만, 모두가 2인분이상 해주셔서 좋은 결과 나왔다고 생각합니다. 고생하신 팀원 분들께 감사드립니다. 저희 게임 재밌으니까 모두 한 번씩 해주세요. |