Unreal Engine/기타

AGameModeBase는 아래의 설정을 담당한다. Defautl class들을 설정 Player의 Pawn을 spawn restart player restart the game AGameMode는 AGameModeBase의 파생 클래스로 다음의 설정을 담당한다. Match State Handling Match States Custom Match Sates MatchStates 게임 모드에는 MatchState namespace가 있다. /** Possible state of the current match, where a match is all the gameplay that happens on a single map */ namespace MatchState { extern ENGINE_API con..
게임에서 같은 서버에 있다고 해서, 서로 같은 시간를 가지는 것은 아니다. 서버 머신에서 게임을 만들고, 클라이언트에서 서버에 접속한다면 서버 머신의 시간이 A, 클라이언트 머신의 시간이 B라면 A > B가 될 것이다. 라운드로 진행되는 게임의 경우, 서버와 동기화를 맞추지 않는다면 각 머신에서 남은 시간은 서로 다를 것이다. 그러므로 서버를 기준으로 클라이언트의 시간 동기화가 필요하다. 이는 RPC로 구현할 수 있다. // Requests the current server time, passing in the client's time when the request was sent UFUNCTION(Server, Reliable) void ServerRequestServerTime(float TimeOf..
게임플레이 프레임워크 게임의 틀을 이루는 게임 규칙, 플레이어 입력과 컨트롤, 카메라, 유저 인터페이스 등의 코어 시스템입니다. docs.unrealengine.com 기본적인 게임플레이 프레임워크 Class 어디 존재? GameMode 서버 GameState 서버, 클라이언트 PlayerState 서버, 클라이언트 PlayerController 서버, 자신 소유의 클라이언트 Pawn 서버, 클라이언트 HUD, UserWidget 클라이언트 GameMode는 서버에만 존재하며 클라이언트에서 접근하면 nullptr이 반환된다. GameMode는 기본 클래스들을 정의하는데 Pawn, PlayerController, HUD 등을 레벨에 따라 다르게 정의할 수 있다. 또한 플레이어의 죽음이나 부활과 같은 게임의..
유저 인터페이스와 HUD 메뉴와 HUD 같은 유저 인터페이스를 만드는 아티스트와 프로그래머를 위한 정보와 안내서입니다. docs.unrealengine.com HUD(Heads-up Display)는 플레이어에게 게임에 대한 정보를 표시해 주기도 하고, 가끔 플레이어와의 상호작용도 한다. HUD는 게임의 계기판의 역할을 하며 정보를 보여주는데, 플레이어에게 점수, 생명력, 남은 시간 등 게임의 현재 상태를 알리는 역할을 한다. 유저 인터페이스와 달리 보통은 상호작용을 위한 요소는 아니다. 즉, 플레이어는 HUD를 클릭할 수 없다는 뜻으로, 정보를 알려주는 게임 인터페이스는 HUD로 설정해야 한다고 볼 수 있다. HUD는 GameMode에서 설정할 수 있다. 유저 인터페이스처럼, 플레이어 컨트롤러나 다른 ..
RPC 네트워크를 통한 함수 리플리케이션 지정하기 입니다. docs.unrealengine.com RPC (Remote Procedure Call)은 로컬에서 호출되지만 (호출하는 머신과는) 다른 머신에서 원격 실행되는 함수를 말한다. RPC 함수는 매우 유용하게 사용될 수 있으며, 네트워크 연결을 통해 클라이언트와 서버 사이에 메시지를 전송할 수 있다. 자세한 사항은 위의 공식 문서에서 살표보자. 현재 상황은 땅에 떨어진 AWeapon을 주워서 장착해야 하는 상황이다. 이러한 실행은 멀티 플레이 게임의 특성 상 서버에서 실행되어야 올바르다. 즉, 클라이언트에서 장착 함수를 호출하면 서버에서 해당 함수가 실행되어야 하기에 RPC가 필요하다. // RPC 함수, UFUNCTION(Server)로 했기에, ..
멀티플레이어 게임에서 특수한 판정은 모두 서버에서 계산된 다음, 클라이언트에게 Replicate되어야 한다. 이 Replicate는 코드상에서 어떻게 구현되어야 하는지 알아보자. 현재 땅에 떨어진 무기를 픽업을 위해서 무기의 SphereComponent에 Overlap되었을 때, 위젯 컴포넌트를 표시해야 한다. 여기서 Overlap 판정은 서버에서 실행되어야 한다. 현재 ENetRole을 검사해서 ROLE_Authority인 경우에만, Overlap 델리게이트를 바인드한다. AWeapon::AWeapon() { bReplicates = true;// replcate가 필요하므로(AreaSphere 판정) true로 설정한다. } void AWeapon::BeginPlay() { Super::BeginPl..
Network Role 내가 클라이언트라면 나의 클라이언트 머신 상에 내가 컨트롤하고 있는 폰이 존재한다. 그와 동시에 서버에도 이 폰이 있다. 여기서 다른 클라이언트도 서버에 연결되어 있다면, 그 클라이언트의 머신에도 이 폰이 존재한다. 즉, 현재 세 명이 게임에 들어와 있다면, 내 폰은 세 개가 각각의 머신에 존재한다. 이제 어떤 버전의 폰을 코드로 다룰 것인지가 중요해진다. 이런 점을 해결하기 위해, 언리얼 엔진은 ENetRole이라는 enum으로 Role이라는 개념이 있다. 캐릭터나 폰에 부여된 이 enum으로 Role을 식별할 수 있다. ENetRole::ROLE_Authority 서버 머신에 존재하는 폰의 Role이다. 언리얼 엔진은 authoritative 서버 모델을 사용하기에, 서버에 존..
UWorld::ServerTravel UWorld::ServerTravel Jumps the server to new level. docs.unrealengine.com 서버에서만 실행되며, 서버가 다른 레벨로 이동하며 모든 클라이언트 들을 해당 레벨로 이동시킨다. 서버는APlyerController::ClientTravel을 호출한다. APlayerController::ClientTravel APlayerController::ClientTravel Travel to a different map or IP address. docs.unrealengine.com 클라이언트에서 ClientTravel을 호출하면 다른 서버로 이동한다. 서버에서 ClientTravel을 호출하면 플레이어를 다른 레벨로 이동시킨다.
ThisClass Typedef for [UObject](API\Runtime\CoreUObject\UObject\UObject). docs.unrealengine.com 델리게이트를 Bind시, 콜백 함수를 설정한다. 이때, 클래스 이름 대신에 ThisClass를 사용하면 편리하다. GENERATED_BODY() 메크로에서 생성된다. // 위 아래 같은 의미 PlayerInputComponent->BindAxis(TEXT("MoveX"), this, &CurrentClassName::MoveX); PlayerInputComponent->BindAxis(TEXT("MoveY"), this, &ThisClass::MoveY);
https://www.unrealengine.com/marketplace/ko/product/action-rpg?sessionInvalidated=true 액션 RPG, 카테고리 에픽 콘텐츠 - UE 마켓플레이스 Android 및 iOS에 배포 가능한 언리얼 엔진 4(UE4) 기반 고사양 모바일 게임을 개발하는 방법에 대해 자세히 알아보기 원하시나요? 액션 RPG 샘플에서 그 방법을 비롯한 다양한 기능들에 대해 배워보 www.unrealengine.com 일단 플레이어의 어빌리티 중 하나인 Melee Attack이 어떻게 수행되는지 보자. GA_PlayerAxeMelee을 보면 위처럼 되어있다. GA_PlayerAxeMelee은 GA_MeleeBase의 자식 클래스이다. Montage to Play는 G..
KANTAM
'Unreal Engine/기타' 카테고리의 글 목록