반응형
타워디펜스류 게임(Tower defence)를 개발을 간소화해주는 Unity Asset Store의 TDTK4의 메뉴얼 번역 / 간략화를 공유한다.
TDTK4_Documentation
- TDTK는 유니티 3D를 위한 코딩 프레임워크로 보통의 타워디펜스류 게임을 제작 할 수 있게 디자인되었다.
- 기본적인 Unity 게임 개발 실력을 요구하며, TDTK에 익숙하지 않다면 아래 영상을 참고하는 것을 추천한다.
- TDTK 4.0은 이전 버전과 달리 scratch로 쓰여졌기 때문에 이전 버전과 호환되지 않는다.
개요
- 어떻게 작동하는가
- 예시 TDTK Scene은 기본 게임 로직과 사용자와 상호작용을 할 수 있는 키 컴포넌트들을 가지고 있다.
- 이 컴포넌트들로 게임 내 세팅을 바꿀 수 있다(wave, path 등)
- 타워와 몬스터들의 Prefab들과 컨트롤 컴포넌트, Prefab에 할당된 DB들이 포함되어있다.
- 기본 컴포넌트와 클래스
- GameControl : 게임 상태 및 게임 로직을 컨트롤
- RscManager : 자원 관련 로직 포함
- SpawnManager : 몬스터 스폰 로직을 컨트롤하고 스폰 정보를 포함.
- TowerManager : 타워 세우는 로직을 컨트롤하고 지을 수 있는 타워 정보를 포함.
- SelectControl : 타워를 선택하거나 타워를 지을 수 있는 위치를 보여주는 로직을 컨트롤
- Path : 몬스터들이 지나다니는 경로를 설정
- BuildPlatform : collider를 포함한 게임 오브젝트. 그리드 형태를 띈다. 몬스터 경로가 지정되면, 이 빌드플랫폼은 몬스터들이 pathfinding을 통해 걸어다닐 수 있는 그리드 역할을 수행한다.
- 프리팹 컴포넌트와 클래스
- UnitTower : 각 타워의 행동을 컨트롤하는 컴포넌트
- UnitCreep : 각 몬스터의 행동을 컨트롤하는 컴포넌트
- ShootObjecgt : 몬스터나 타워에 의해 발사된 발사체 컴포넌트.
- 부가 컴포넌트와 클래스 (이것들은 런타임 시 자동으로 생성된다)
- AbilityManager : 어빌리티 시스템의 로직을 컨트롤하고 사용가능한 어빌리티에 대한 정보를 포함한다.
- PerkManager : 퍽 시스템의 로직을 컨트롤하고 사용가능한 퍽에 대한 정보를 포함한다.
- Aster : 패스파인딩에 대한 로직을 컨트롤한다.
- ObjectPoolManager : Object Pooling에 관련된 로직을 컨트롤한다.
- CameraControl : 카메라에 관련된 로직을 컨트롤한다.
- Audiomanager : 모든 사운드이펙트를 포함하고 재생한다.
- PathIndicator : 몬스터의 이동경로를 보여주는데 사용된다.
- 레이어
- Scene의 다양한 오브젝트를 표현하기 위해 Unity Layer System을 사용한다.
- 사용시 혼란을 막기 위해 수동으로 레이어 이름 변경을 하는 것이 좋다.
- Layer 25 : 'Terrian'
- Layer 25 : 'Obstacle'
- Layer 27 : 'Creep'
- Layer 28 : 'Tower'
- Layer 29 : 'Platform'
- Layer 30 : 'Path'
- Layer 31 : 'Terrian'
- UI
- UI는 포함되어있지 않다.
- 기본 적용된 UI를 지우고 Custom UI를 사용하라.
TDTK 사용법 (생략)
프리팹
- 타워 prefab
- 타워 prefab은 빈 게임 오브젝트에 UnitTower.cs 스크립트가 추가된 것 처럼 간단하다. 이는 보이지 않지만 타워가 건설될 수 있게 하고 다른 일반적인 타워가 하는 기능을 가능하게 한다. Mesh나 model은 타워에게 선택적인 사항이다.
- 타워가 타겟팅 되게하려면 collider가 필요하다. Collider가 다른 컴포넌트와 겹쳐지지 않았는지 확인하고, 타워 게임 오브젝트의 레이어가 Tower로 설정되어 있어야한다(layer 28). Collider의 사이즈는 타워의 mesh/model의 를 다 덮도록 설정되어야 한다.
- 마지막으로 기본 타워 prefab을 사용하여 계층 구조를 따르도록 권장된다. 특히 aim이 포함된 터렛 형식의 타워가 올 때 지켜져야한다. 모든 정적인 mesh들은 transform정보가 StaticMesh로 되어있어야 하고 조준을 위한 피봇을 사용한다면 모든 조준 부분은 TurretPivot transform 아래에 있어야 한다.
- 타워 prefab이나 몬스터 prefab 등을 설정할 때는 타워 에디터에서 드롭다운 메뉴들을 사용하여 접근하여 설정하는 것을 권장한다. 이유는 scene에서 unit을 Inspector를 통해 수정하는 것은 prefab의 instance만 수정하는 것이기 때문이다. 타워 에디터를 통해 수정하면 prefab과 instance를 모두 수정하기 때문에 클론들도 모두 바뀌어 유닛들의일관성을 유지하는데 도움이 된다.
- Creep Prefab
- 타워와 비슷하게 간단하다.
- Layer를 Creep(layer 27)로 설정한다.
- 필요한 상황이 아니라면 prefab에 Rigidbody를 부여하지 않는 것이 좋다. 움직이는 코드와 충돌이 날 가능성이 높다.
- 계층적 구조를 따르는 것을 권장한다.
- ShootingObject Prefab
- 발사체는 타워나 몬스터가 타겟을 맞추기 위해 발사한 공격 시점부터 맞을 때까지 보이는 물체다.
- 타워와 비슷하게 간단하다.
- 세 가지 타입의 발사체가 있고 각자 다른 시각적 목적을 가진다.
- Projectile : 발사부터 피격 전까지 움직이는 전형적인 물체. Projectile 발사체는 곡선으로 구현되도록 설정할 수 있다.
- Beam : 대상에게 직선의 빔 효과를 주기 위해 사용된다. 발사체가 발사되고 대상에게 적중될 때까지의 시간을 타이머가 측정한다.
- Effect : 발사체가 필요하지 않은 공격이다. 발사체가 발사되고 나서 대상에게 적중될 때까지의 시간을 타이머가 측정한다.
어떻게 작동하는가
- 아이템 Database
- TDTK는 prefab들과 인게임의 모든 아이템을 저장하기위해 중앙화된 데이터베이스를 사용한다.
- 인게임 아이템은 에디터에서 간단한 클릭으로 생성할 수 있다. 그러나 prefab은 데이터베이스에 추가되기 전에 수작업으로 생성해줘야한다. 한 번 추가되면 에디터를 통해 접근할 수 있다. 추가되지 않은 prefab은 게임에 보이지 않을 것이다.
- 타워 prefab은 타워 매니저를 통해 개별적으로 활성화/비활성화가 가능하다. 비활성화 된 타워는 Scene에서 사용이 불가능하다. 그러나 비활성화된 타워는 PerkSystem을 통해 Scene에 추가될 수 있다. 타워 Prefab은 BuildPlatform에서 개별적으로 비활성화가 가능하다. 타워가 플랫폼에서 비활성화 되었을 때 플레이어는 플랫폼에 그 타워 prefab을 건설할 수 없다.
- Perk는 PerkManager 창에서 개별적으로 활성화/비활성화가 가능하다. 비활성화된 perk는 Scene에 이용이 불가능하다.
- 데미지 테이블
- 데미지 테이블은 유닛들 간의 가위바위보 형식으로 만들어진 표다. 데미지 테이블 에디터를 통해 데미지들과 아머 타입을 설정할 수 있다. 유닛들마다 대미지타입과 아머 타입을 지정할 수 있고 대미지 타입에 따라 공격 효과를 지정할 수 도 있다.
- 타워를 위한 업그레이드 시스템
- 타워 업그레이드에는 두 가지 방식이 있다. 첫 번째는 타워는 그대로 있고 스텟이 변화되는 방식이며 두 번째는 기존의 타워를 지우고 새로운 타워를 생성하는 완전한 업그레이드 방식이다.
- 타워 에디터 창에서 타워의 레벨을 여러개 추가할 수 있다. 첫 번째 창이 타워가 세워졌을 때 기본 스텟이 된다. 이후 업그레이드를 통해 레벨이 순차적으로 올라간다.
- Next upgrade에 다른 타워 prefab을 지정하여 타워 업그레이드를 할 수 있다. 업그레이드 중에, 업그레이드 되는 기존 타워는 파괴되고 NextUpgrade에 명시된 타워가 생성된다.
- 타워 업그레이드 방법은 서로 배타적이어서 두 가지 모두를 가질 수 있다. 그러나 스텟 업그레이드가 항상 우선된다. 이는 타워는 에디터에 지정된 모든 스텟 레벨업을 한 후에야 다음 타워로 넘어갈 수 있다는 것을 의미한다.
- NextUpgrade에 여러 타워를 추가하여 여러가지 업그레이드 루트를 제시할 수 있다. TDTK의 기본 UI가 어떤 타워로 업그레이드 할지 버튼을 자동으로 생성해준다.
- 타겟을 향해 조준하고 발사하는 유닛
- 터렛 타입의 유닛은 타겟을 향해 직선으로 발사체를 발사하여 공격한다. 대부분의 경우 당신은 유닛이 타겟을 향해 조준하고 발사체를 정확한 위치로 발사하길 원할 것이다.
- 조준을 위해 코드가 turret-pivot과 barrel-pivot을 활성화된 타겟을 향해 회전하도록 할 것이다. 이 변형은 타워에디터 창에서 설정이 가능하다. turret-pivot이 x축과 y축 모두 회전 가능한 메인 피봇으로 사용된다. 반면 Barrel-pivot은 선택사항이고 turret-pivot의 하위객체로 고정된다. Barrel-pivot은 x축으로만 회전한다.
- 터렛이 정확한 방향으로 조준하도록 하기 위해 당신은 turret-pivot과 babbel-pivot의 rotatin 속성을 (0,0,0)으로 설정해야 한다.
- 터렛 에임 잡는 절차 있음. 추후 안될 때 메뉴얼 참고하기.
User Interface에 대해
- 기본 UI의 설정
- 기본UI는 Scene을 새로 만들 때마다 추가된다.
- UI 게임 오브젝트에 있는 UIControl 컴포넌트를 통해 주요 세팅들을 바꿀 수 있다.
- 기본 UI의 대체
- 기본 UI는 모듈 디자인과 기능성을 염두에 두고 제작되었다. 이는 기본적인 게임플레이와 프레임워크 내의 사용 가능한 기계류와의 상호작용을 제공한다. 이는 달리 말하면 당신의 UI로 대체할 수 있다는 것이다. UI 게임 오브젝트를 TDTK Scene에서 지워 기본 UI를 제거할 수 있다.
- 'TDTK/Scripts/UI'의 스크립트들을 참고하여 당신의 UI를 만들 수 있다.
- UI에는 유닛의 HP, 타워 건설 상태도 포함되어 있음을 알아두기 바란다. 기본 UI를 지우면 이 또한 지워진다.
- Ability System
- 생략
- Perk Menu
- 생략
URP에 관해서
- URP는 머테리얼과 카메라 두 가지 이유때문에 지원되지 않는다. 하지만 몇몇 다른 작업들은 TDTK에 내장된 URP를 사용해 가능하다.
어빌리티와 Perk 시스템은 사용하지 않을 것이라 번역을 생략했다.
사용법도 해석을 해놓고 보기보다는 사진 자료가 많아 보고 따라하면 될 거라 판단하여 번역하지 않았다.
혹여나 타워디펜스 게임을 만들고자 하는데, TDTK에 대한 정보가 없어 도입을 꺼렸던 분들께 조금의 도움이 되었길 바란다.
반응형
'개발' 카테고리의 다른 글
[타워디펜스 모바일 게임 추천]오랜만에 정말 재밌게 플레이한 게임 / 공략불가 운빨 디펜스 :) (0) | 2021.03.16 |
---|---|
안드로이드 스튜디오에서 가상디바이스(AVD) 실행하기 (0) | 2021.03.12 |
모바일 타워디펜스 게임 추천? 이 글 하나만 보세요! [앱스토어 디펜스게임 간단 정리] (0) | 2021.03.11 |
[방치형 모바일게임 추천] 중년기사 김봉식은 왜 인기가 있을까? (0) | 2021.03.09 |
게임 개발 기획 일지 1. 비디오 게임의 정의 (0) | 2021.03.02 |
최근댓글