• Boss FSM 구상

Chase 상태
보스는 일반 몹과 다르게 방이 따로 존재하며 Player를 반드시 공격해야한다.

<방법>
방법 1. Player가 보스방에 진입 후, 움직이면 Chase 상태로 전환시킨다.(Chase 조건 추가)
방법 2. 보스의 시야범위를 방 크기로 지정한다.(Chase 조건 그대로)

<선택 및 이유>
방법 1
보스의 시야범위를 방 크기로 지정했을 때, Player가 방에 진입하자마자 보스가 공격하게 되기 때문에 정비할 시간이 없게 된다. 때문에 Chase 상태로 전환시키는 조건을 추가하는 방법을 선택했다.


페이즈 전환 및 부활
보스에게는 공격 패턴의 전환점인 페이즈가 존재한다. 또한 보스에 따라 Dead 상태에서 Idle 상태가 되는 특수한 경우(부활 등)가 존재한다.

<방법>
공통되는 부분을 BaseBoss를 상속받아 Boss별로 스크립트를 나눈다.

상속 관계

Creature -> Enemy -> BaseBoss -> Boss별 스크립트


<선택 및 이유>
직관적이며 새로운 보스 추가에 유동적이다.

 

 

<할 일 계획>

State 작동 방식 공부하기

Enemy가 Idle 상태와 Chase 상태, 그리고 Attack 상태를 왔다갔다 할 때 간단한 동작을 수행하도록 테스트하기

Attacker(Attack 함수를 통한 Creature의 실질적인 공격이 이루어지는 곳) 메커니즘 공부

 

Enemy에서 이벤트 함수를 만들고, 그것을 State에 구독시킨다.

'부트캠프 > Project' 카테고리의 다른 글

Enemy - FSM(4) 트러블 슈팅  (0) 2024.02.13
Enemy - FSM(3)  (0) 2024.02.13
Enemy - FSM(1)  (0) 2024.02.07
Skill 구상  (0) 2024.01.23
Projectile 구현  (0) 2024.01.19
  • FSM 기본 구상

 

  • Enemy별 구상

 

Enemy별 FSM 세부구상 후 구현 계획!

'부트캠프 > Project' 카테고리의 다른 글

Enemy - FSM(3)  (0) 2024.02.13
Enemy - FSM(2)  (0) 2024.02.08
Skill 구상  (0) 2024.01.23
Projectile 구현  (0) 2024.01.19
Stat / Status 구현  (0) 2024.01.18

var나 T(제네릭)을 사용하는 이유를 명확하게 몰랐는데 boxing과 unboxing 등 메모리의 구조에 대해 공부하며 조금이나마 깨달았다.

초기의 var는 값형만 받을 수 있기 때문에 class를 받을 수 없었고 참조타입을 받을 수 있도록 object가 등장하며 모든 타입을 받을 수 있게 되었다. var는 값을 초기화 한 후 값이 지정되며 제네릭은 값을 지정하기 때문에 boxing과 unboxing이 일어나지 않는다. object는 참조 타입으로  boxing과 unboxing이 일어나기 때문에 가비지 컬렉션의 대상이 될 수 있다.

 

먼저 boxing과 unboxing은 값 형식과 참조 형식을 서로 변환해 주는 것이다.

boxing과 unboxing이란

박싱된 객체는 힙 영역에 할당되어 가비지 컬렉션의 대상이 될 수 있어 메모리 효율로 인해 성능 저하가 올 수 있다. boxing과 unboxing는 System.Collections.ArrayList, param object[], Debug.Log 등에 사용되는데 이때 아무 자료형이나 올 수 있는 var 키워드나 Generic 사용으로 boxing이 일어나지 않게 할 수 있다.

 

그러나  코딩을 할 때 가독성 등의 이유로 자료형을 명확히 표기해야 하기 때문에 var와 제네릭을 무조건 사용하는 것은 지양해야 한다. var와 제네릭, boxing과 unboxing 모두 필요에 따라 적절하게 사용해야 한다.

'부트캠프 > Study' 카테고리의 다른 글

Asset  (0) 2024.01.22
<Unity> Item 관리  (0) 2024.01.12
<Unity> 유니티 내장 오브젝트 풀(Object Pool)  (1) 2024.01.11
enable과 SetActive의 차이점  (0) 2023.12.28
<프로젝트> Unity 게임 개발 심화 개인과제  (1) 2023.12.27

캐릭터에 무기를 달기 어렵다는 점 때문에 외관상 바뀌지 않아도 되는 스킬 포인트 시스템을 차용하기로 했다.

 

초기 구상

원거리/근거리가 주 공격/ 보조 공격으로 주어지며 업그레이드로 다양한 스킬 트리를 구사할 수 있도록 한다.

즉, 기본 공격인 주 공격과 보조 공격은 스킬 선택에 따라 달라진다.

 

Skill의 역할

기본 공격(주 공격 / 보조 공격)은 스킬 포인트를 통해 업그레이드 할 수 있고 마우스 좌/우클릭을 통해 조작 가능하다.

패시브 스킬은 시간제한이 있으며, 특정 조건에 발동한다.

 

  • 업그레이드는 총 3레벨까지 올릴 수 있다.
  • 3레벨 달성 시, 해당하는 스킬 트리의 패시브 스킬이 자동으로 활성화 된다.
  • 스킬 포인트는 게임 플레이를 하며 얻을 수 있다.(스토리 단서를 모았을 시로 구상 중)

'부트캠프 > Project' 카테고리의 다른 글

Enemy - FSM(2)  (0) 2024.02.08
Enemy - FSM(1)  (0) 2024.02.07
Projectile 구현  (0) 2024.01.19
Stat / Status 구현  (0) 2024.01.18
StatModifier 구현 계획  (0) 2024.01.17

+ Recent posts