게임 플로우 다듬기
Unreal 이론2024. 11. 21. 14:55
[이득우의 언리얼 프로그래밍 Part2 수업의 정리]
게임 구성 요소의 분류
- 세개의 레이어를 기준으로 게임을 구성하는 다양한 기능의 구현
게임플로우를 위해 보강할 내용
- 죽었을 때의 NPC와 플레이어의 처리
- 이동속도의 적용
- 포션/스크롤 아이템의 추가 구현과 캐릭터의 적용
- 스탯 기능 및 UI의 기능의 보강
죽었을 때 NPC의 인공지능 로직이 더이상 작동하지 않도록 처리
- NonPlayer 클래스의 SetDead 함수에 StopAI 실행되도록 추가
죽었을 때 플레이어가 더이상 입력을 할 수 없도록 처리
- SetDead 구현을 하지 않았기 때문에, 플레이어 클래스에 SetDead 구현
- SetDead 함수에서 PlayerController를 가져오고, DisableInput으로 입력 끄기
- 이렇게 구현했다면 BeginPlay 함수에서 Enable 함수 추가
void AABCharacterPlayer::BeginPlay()
{
Super::BeginPlay();
APlayerController* PlayerController = Cast<APlayerController>(GetController());
if (PlayerController) {
EnableInput(PlayerController);
}
SetCharacterControl(CurrentCharacterControlType);
}
void AABCharacterPlayer::SetDead()
{
Super::SetDead();
// Stop Input
APlayerController* PlayerController = Cast<APlayerController>(GetController());
if (PlayerController) {
DisableInput(PlayerController);
}
}
스탯이 변경됐을 때 이동속도의 변화 적용
- MovementSpeed 참고해서 적용
- CharacterBase 클래스에 스탯 변경시 반영 함수 추가해 델리게이트에 연결
- 초기화 단계에서 수행되는 PostInitializeComponents 함수에서 등록
아이템 추가로 HP회복 및 스탯 변경 구현
- ABItemData를 상속받은 Potion 및 Scroll 클래스 Item 폴더에 생성
- ItemData의 생성자 코드와 GetPrimaryAsset코드를 의무적으로 모든 아이템들이 구현하도록 설정
UCLASS()
class ARENABATTLE_API UABPotionItemData : public UABItemData
{
GENERATED_BODY()
public:
UABPotionItemData();
FPrimaryAssetId GetPrimaryAssetId() const override {
// 생성될 에셋의 아이디 직접 지정
return FPrimaryAssetId("ABItemData", GetFName());
}
public:
UPROPERTY(EditAnywhere, Category = Hp)
float HealAmount;
};
- 빌드 후 에디터에서 포션의 회복량에 따른 DataAsset 추가
- 위와 비슷하게 스크롤, 무기도 여러 종류를 스탯을 달리해 추가
- ABCharacterStatComponent 클래스에 아이템 습득에 따른 스탯과 HP의 변화를 반영할 수 있도록 인라인 함수 추가, 값이 변경됬으니 BroadCast로 델리게이트 연결
- CharacterBase 클래스에 포션과 스크롤 습득 기능 구현
HpBar 기능 확장
- Hp바가 직관적이지 않으니 Hp바 위의 레이어에 숫자 표기 추가
- Vertical Box에 overlay 블록 추가, hierarchy 수정
- 텍스트 블록을 가져와서 Hp값에 따른 변화 적용
기본적인 게임 플로우를 다듬다 보면 기본 데이터들의 지속적인 수정이 불가피
- 아이템은 Data Asset 우클릭->Bulk Edit Via Property Maxtrix
- Grid 기능을 사용해 엑셀 셀 단위로 전체 아이템 값들을 바꿀수 있도록 인터페이스 제공
- GameData의 엑셀 데이터
- 엑셀에서 수정 후 Reimport하면 변경된 값 바로 적용가능
'Unreal 이론' 카테고리의 다른 글
Multiplayer Games Network model (0) | 2024.11.24 |
---|---|
게임의 완성 (0) | 2024.11.23 |
헤드업디스플레이의 구현 (0) | 2024.11.14 |
인공지능 - 행동트리 모델의 구현 (0) | 2024.11.11 |
인공지능 - 행동트리 모델의 이해 (2) | 2024.11.10 |
댓글()