Skip to content

YeonJunKim/ProjectRTD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectRTD

2019년 전공 4학년 1학기 캡스톤디자인 과목에서 진행한 프로젝트 입니다

목표는 모바일게임으로 출시할 만한 게임을 만드는 것이었습니다

<게임설명>

전형적인 랜덤타워디펜스 게임입니다

플레이어는 돈으로 타워를 뽑을 수 있고 나오는 타워는 랜덤입니다
랜덤하게 뽑힌 타워를 원하는 위치에 배치합니다

일정 시간마다 몬스터 웨이브가 오며, 몬스터를 처치하면 돈을 얻습니다
몬스터를 처치하지 못할 시 Life가 감소하게 됩니다

돈으로는 타워를 뽑거나 타워를 강화할 수 있습니다
동일한 종류와 등급의 타워가 3개 있을 경우 타워들을 조합하여 강화를 할 수 있습니다
강화를 하게 될 경우 같은 종류의 등급이 한 단계 높은 타워로 강화됩니다

게임의 목표는 마지막 스테이지까지 몬스터를 막는 것입니다


<구현내용>

구현한 내용은 크게 클래스 계층구조, 오브젝트풀 시스템, 전투 시스템, 길찾기 시스템으로 나뉩니다

<클래스 계층구조>
클래스를 설계할 때 객체지향의 상속과 다형성을 적극 활용하였습니다

BaseGameEntity->Tower->종류별 Tower
BaseGameEntity->Enemy
BaseGameEntity->Projectile->종류별 Projectile

이런식으로 타워, 몬스터(Enemy), 발사체는 모두 BaseGameEntity 클래스로부터 출발하며
최종적으로는 각각의 다양한 종류를 구성하는 클래스가 됩니다

종류별 타워 클래스는 5종류가 있으며, 등급은 3단계까지 있습니다
5종류 x 3단계를 하여 총 15개의 타워가 있는 것이지만,
15개 각각의 클래스가 있는 것은 아니며 타워의 종류만 클래스로 구분하고
등급은 등급에 따라 속성값, 3D모델 종류, 크기 등이 다르며
가상함수를 이용하여 각 등급이 발사하는 발사체 종류, 갯수 등이 달라집니다

몬스터(Enemy)는 속성값, 3D모델 종류, 크기 등만 변하기 때문에
따로 종류별로 클래스를 만들지는 않았습니다

발사체는 종류에 따라 발사되는 모습, 피해를 입히는 방식 등
작동하는 방식이 너무 다르기 때문에 각각의 종류별로 클래스를 따로 만들었습니다

<오브젝트풀 시스템>
게임이 로딩될 때 각각의 타워, 몬스터, 발사체 종류별로
오브젝트풀을 만들어 오브젝트의 생성과 삭제는 가져오기와 반환으로 이루어집니다

<전투 시스템>
몬스터는 체력, 방어력, 이동속도 등의 속성을 가집니다
타워는 공격력, 공격속도, 사거리 등의 속성을 가집니다
발사체는 이동속도, 디버프속성 등을 가지고 있습니다
디버프 속성이란 해당 발사체에 맞은 몬스터에게 특정시간동안
이동속도, 방어력 등의 값에 영향을 주는 속성 값입니다

타워는 자동적으로 사거리 내의 몬스터를 인식하여 공격합니다
타워가 발사하는 발사체의 종류에 따라 단일대상, 방사형, 폭발형 피해를 가합니다
피해를 입은 몬스터는 체력이 감소하며, 당연하지만 체력이 0에 도달하면 죽습니다

<길찾기 시스템>
몬스터가 길을 찾아가는 시스템에는 직접 구현한 A* 알고리즘이 사용되었습니다
다익스트라, A* 두 버전을 구현하였으며 최종적으로 A* 버전을 사용하고 있습니다

시작점에서 끝지점까지의 Path를 게임이 시작될 때 딱 한번만 탐색을 하고
그 이후로는 탐색을 하지 않고 처음 탐색한 Path를 모든 몬스터가 이용합니다



게임에 사용된 3D모델, 이펙트 등은 Unity Asset Store에서 구매한 것입니다
유료 Asset이기 때문에 이 Git에는 포함되어 있지 않습니다

이 프로젝트는 기획 1명, 프로그래머 2명이서 개발하였으며
개발기간은 약 5주정도 소요되었습니다

플레이영상은 여기서 보실 수 있습니다
https://youtu.be/2u4Y_e4_puk

길찾기 알고리즘 데모영상은 여기서 보실 수 있습니다
https://youtu.be/NUEsWmJvvC0

About

Unity: Random Tower Defence Game

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages