Closed fkdl0048 closed 4 months ago
기본적으로 게임을 만들기 위해서는 게임이라는 시스템이 어떻게 구성되어 있는지를 이해해야 한다. 이를 쉽게 게임 프레임웍이라고 부르는데, 언리얼은 이것을 기본적으로 제공한다.
이를 게임플레이 프레임웍(Gameplay Framework)이라고 부르는데, 이는 게임의 기본적인 구조를 제공한다. 이를 통해 게임의 기본적인 구조를 파악하고, 이를 커스터마이징하여 게임을 만들 수 있다. (각 구성요소를 파악하고 이를 확장하면서 제작)
유니티는 이러한 프레임웍이 없기 때문에 모든 베이스를 다시 만들거나 계속해서 생기는 라이브러리에 대해서 학습해야 함.
유니티로 따지면 GameObject로 보면 될 것 같다.
유니티로 보면 콜라이더 컴포넌트 정도로 생각된다.
처음부터 멀티플레이의 가능성을 열어놔서 설계 자체가 로그인, 0번 플레이어와 같은 형태가 생긴 것 같다.
주어진 ArenaBattle은 3단계까지 진행되어 있다.
제작과정은 가급적 블루프린트를 사용하지않고, C++로만 제작한다.
C++
End
PublicIncludePaths.AddRange(new string[] { "ArenaBattle" });
CharacterBase
AABGameMode
ABPlayerController
PlayerControllerClass = AABPlayerController::StaticClass();
ConstructorHelpers
#include "Game/ABGameMode.h" AABGameMode::AABGameMode() { static ConstructorHelpers::FClassFinder<APawn> ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C")); if (ThirdPersonClassRef.Class) { DefaultPawnClass = ThirdPersonClassRef.Class; } static ConstructorHelpers::FClassFinder<APlayerController> PlayerControllerClassRef(TEXT("/Script/ArenaBattle.ABPlayerController")); if (PlayerControllerClassRef.Class) { PlayerControllerClass = PlayerControllerClassRef.Class; } }
ABGameMode
1강: 언리얼 엔진 게임 제작 기초
언리얼 게임 프레임웍
기본적으로 게임을 만들기 위해서는 게임이라는 시스템이 어떻게 구성되어 있는지를 이해해야 한다. 이를 쉽게 게임 프레임웍이라고 부르는데, 언리얼은 이것을 기본적으로 제공한다.
이를 게임플레이 프레임웍(Gameplay Framework)이라고 부르는데, 이는 게임의 기본적인 구조를 제공한다. 이를 통해 게임의 기본적인 구조를 파악하고, 이를 커스터마이징하여 게임을 만들 수 있다. (각 구성요소를 파악하고 이를 확장하면서 제작)
유니티는 이러한 프레임웍이 없기 때문에 모든 베이스를 다시 만들거나 계속해서 생기는 라이브러리에 대해서 학습해야 함.
월드(World)
게임 모드(GameMode)
유니티로 따지면 GameObject로 보면 될 것 같다.
기믹(Gimmick)
유니티로 보면 콜라이더 컴포넌트 정도로 생각된다.
플레이어(Player)
처음부터 멀티플레이의 가능성을 열어놔서 설계 자체가 로그인, 0번 플레이어와 같은 형태가 생긴 것 같다.
폰(Pawn)
게임의 제작 과정
주어진 ArenaBattle은 3단계까지 진행되어 있다.
제작과정은 가급적 블루프린트를 사용하지않고,
C++
로만 제작한다.ArenaBattle
End
를 누르면 현재 가장 아래 있는 메쉬에 딱 맞게 떨어진다.PublicIncludePaths.AddRange(new string[] { "ArenaBattle" });
CharacterBase
로 기본 캐릭터를 생성(Pawn으로 부터 상속 받은, 뒤로 Player와 NPC로 상속할 예정)AABGameMode
의 생성자에서 해당 게임모드에 사용될 클래스들을 지정해야 함ABPlayerController
)PlayerControllerClass = AABPlayerController::StaticClass();
ConstructorHelpers
클래스를 통해 에셋을 로드하여 사용할 수 있다.ABPlayerController
로 클래스 레퍼런스 주소로 접근하여 사용할 수 있다.ABGameMode
에서 초기화에 따른 의존성을 줄이기 위해ABPlayerController
를 생성자에서 지정해준다. 전 방법인 헤더파일의 include를 통해 사용할 수 있지만, 이는 의존성을 높이는 것이기 때문에 지양해야 한다.정리