게임 플로우 다듬기

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

댓글()