728x90 반응형 전체 글165 MultiPlayerGame) 8. 자체 서브시스템 생성 게임세션을 처리 할때 게임 인스턴스 클래스를 이용한다. 게임 인스턴스 클래스를 만들면 게임 생성시 게임 인스턴스가 생성되게 되며 게임이 종료 될때 까지 없어지지 않는다. 또한 레벨간에 지속되므로 다른 레벨로 이동할때도 동일한 레벨을 갖게 된다. 게임인스턴스 및 서브시스템을 사용해야되는 이유등은 아래의 문서에서 확인 할 수 있다. 프로그래밍 서브시스템 언리얼 엔진 4 의 프로그래밍 서브시스템 개요입니다. docs.unrealengine.com 자체 서브시스템 생성 새로운 C++클래스생성->GameInstanceSubsystem->MultiplayerSession(폴더)지정->해당 프로젝트에서 Binary,intermediate,save파일을 삭제->Generate Visual Stdio->실행 생성을 마쳤.. UE5/UE5 MultiPlayerGame 2022. 6. 7. MultiPlayerGame) 7. 플러그인 생성 언리얼 엔진 플러그인 언리얼 엔진의 플러그인은 특정 목적을 위해 설계된 코드 및 데이터모음이다. 각 프로젝트마다 개발자가 쉽게 사용 여부를 설정할 수 있으며 런타임 게임플레이나 에디터에 기능을 추가할수 있다. 이러한 엔진 플러그인은 엔진내의 플러그인 에디터에서 비/활성화 할 수 있다. 그렇다면 플러그인은 무엇일까? 플러그인 플러그인은 하나 이상의 모듈로 구성되어 있다. 즉 플러그인은 모듈의 집합이다. 그렇다면 모듈은 무엇인가? 모듈 모듈은 엔진의 빌딩블록(기본적인 회로)이다.엔젠 자체는 모듈을 모아둔 큰 컬렉션으로 구현되며, 각 모듈은 별개의 C++코드로 구성되어 있으며 캡슐화하는 빌드파일을 포함한다. 모듈은 단지 코드이여서 메쉬나 텍스처와 같은 에셋을 포함하지 않는다. 이를 통해 개별 작업을 캡슐화하며.. UE5/UE5 MultiPlayerGame 2022. 6. 7. MultiPlayerGame) 6. 세션에 참여 1.로비 레벨 만들기 먼저 새로운 레벨을 만든다.(파일->새 래벨->이름:Lobby) 그 후 캐릭터와 연결시킨다. //Character.cpp void _Character::OnCreateSessionComplete(FName SessionName, bool bWasSuccessful) { if (bWasSuccessful) { UWorld* world = GetWorld(); if (world) { world->ServerTravel(FString("로비레벨의 경로?listen")); } } } 2.매치타입 특정하기 SessionSettings에서 추가 데이터를 지정할 수 있으므로 세션을 찾은 후 확인할 예정이다. SessionSettings에서 Set을 사용하면 세션을 찾은 후 확인할 수 있는 세션과.. UE5/UE5 MultiPlayerGame 2022. 6. 4. MultiPlayerGame) 5. 참가세션 만들기 1.JoinGameSession만들기 //Character.h protected: UFUNCTION(BlueprintCallable) void JoinGameSession(); void OnFindSessionComplete(bool bWasSuccessful); 2.델레게이트와 콜백설정 /Character.h protected: void OnFindSessionComplete(bool bWasSuccessful); private: FOnFindSessionsCompleteDelegate FindSessionCompleteDelegate; TSharedPtrSessionSearch; //Character.cpp _Character::_Character(): FindSessionCompleteDelegat.. UE5/UE5 MultiPlayerGame 2022. 6. 3. MultiPlayerGame) 4. 스팀연결 스팀연결 1.온라인 서브시스템 활성화 플러그인->온라인 서브시스템 스팀 활성화->UE재시작 2.코드수정 build.cs에 "OnlineSubsystem","OnlineSubsystemSteam"추가 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" }); //->서브시스템추가 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "OnlineSubsystemSteam", "OnlineS.. UE5/UE5 MultiPlayerGame 2022. 6. 2. MultiPlayerGame)3.온라인 서브시스템 이전 포스팅에서 테스트 해보왔던 멀티플레이는 동일한 로컬 네트워크에 연결된 컴퓨터의 게임 인스턴스에 연결한 것이였다. 하지만 멀티플레이라 함은 IP가 다르더라도 연결되어 플레이하는 것을 의미한다. 그렇기에 멀티플레이를 구현하기 위해서는 IP(Internet Protocol address)에 대해서 알아야한다. 그렇다면 게임에서 IP는 어떻게 이용되는것인가? IP Address 내부 IP주소라고도 하는 로컬 IP주소는 로컬 네트워크 라우터에 의해 할당된 주소이다. 이러한 주소는 로컬 네트워크 내의 해당 컴퓨터에서만 볼수 있으며 해당 컴퓨터 이외는 연결할수 없다. 컴퓨터가 이더넷이나 WI-FI등으로 라우터와 연결되면 라우터가 로컬IP를 할당하고, 할당 받은 IP를 사용하여 인터넷 서비스 공급자(ISP)와 연.. UE5/UE5 MultiPlayerGame 2022. 5. 31. MultiPlayerGame)2.LAN 연결 //Character.h UFUNCTION(BlueprintCallable) void OpenLobby(); UFUNCTION(BlueprintCallable) void CallOpenLevel(const FString& Address); UFUNCTION(BlueprintCallable) void CallClientTravel(const FString& Address); //Character.cpp void AmultiplayCharacter::OpenLobby() { UWorld* World = GetWorld(); if (World) { World->ServerTravel(TEXT("/Game/ThirdPersonCPP/Maps/Lobby?listen")); } } void AmultiplayCha.. UE5/UE5 MultiPlayerGame 2022. 5. 30. MultiPlayerGame)1.멀티플레이의 개념 멀티 플레이란? 멀티플레이란 적어도 두개의 게임 인스턴스가 별도의 머신에서 실행되고 두 플레이어간의 변경에 관한 정보가 서로에게 전송되어야하는 것을 의미한다. 그렇다면 이러한 정보는 어떻게 전송해야되는 것인가? 멀티플레이의 종류 게임 색션간에 정보를 공유하기 위한 시스템을 설계하는 방법은 여러가지가 있다. 1.Pear to Pear 정보를 전송하는 간단한 방법중 하나는 피어 투 피어 연결이다. 이 방법은 익히 알려져 있는 토렌트나 중국의 한 스트리밍 방송의 정보전송의 방법이다. 플레이어가 캐릭터를 움직일때 그 정보를 다른 플레이어에게 직접 전송하는 방식이다. 마찬가지로 자신이 움직이게 되면 다른 플레이어에게 직접 정보를 전송한다. 이러한 Pear to Pear 방식은 플레이어가 적을때 굉장히 효율적으로 .. UE5/UE5 MultiPlayerGame 2022. 5. 30. Simple FPS/Shooting) 무기/장비 변경 무기/장비 변경 게임속에서 무기 및 장비 교체는 매우 빈번하게 일어나는 상황이다. 게임속 뿐 만 아니라 개발과정에서도 모델러나 아티스트가 아님에도 캐릭터가 착용하고 있는 것을 교체해야 되는 상황은 빈번하게 일어난다. 이번 포스팅에서는 엔진에서 스켈레톤 매쉬를 이용하여 간단하게 장비를 교체하는 기본틀에 대해서 포스팅하고자 한다. 1.장비 등록 먼저 필요한 장비와 불필요한 장비를 선택해야된다. 다음으로 캐릭터에 새로 장비시킬 Gun의 Actor와 블루프린트를 생성하고 캐릭터에 상속시켜야한다. Actor는 생성하면 DefaultSceneRoot만을 가지고 있기 때문에 RootComponent와 StaticMeshComponent를 생성해주어야한다. //Gun_Actor.h private: UPROPERTY(V.. UE4 Simple FPS/Shooting 2022. 5. 12. Simple FPS/Animation) Animation적용 Animation적용 애니메이션은 다른 포스팅에서 자세히 다루었기 때문에 설명은 생략하고 적용만 포스팅하고자 한다. UE애니메이션 관련 포스트 더보기 Ureal)애니메이션 기초 Anim Instance의 클래스 게임에서 애니메이션은 빠질 수 없는 요소이다. 캐릭터의 애니메이션이 적은 소규모 플래쉬 게임이라면 코드상(Mesh)에서 애니메이션을 관리를 해도 상관없지만, 일반적으로 pjnull.tistory.com Ureal)애니메이션 스테이트 머신 스테이트 머신의 필요성 if else 만으로 애니메이션을 구현하다 보면 로직이 꼬이게 될수 있기 때문에 스테이트 머신이 필요하다. 스테이트 머신 생성 생성시 이런 창이 뜨게 된다. 상태를 추가해 pjnull.tistory.com Ureal)애니메이션 몽타주 애니메.. UE4 Simple FPS/Animation 2022. 5. 10. Simple FPS/P_Movement) 캐릭터 조작 캐릭터조작 게임에 있어서 캐릭터 조작은 매우 필수적인 요소이다. 만약 게임안에서 캐릭터를 조작할수 없다면, 그것은 게임이라고 할 수 없을 것이다. UE에서 캐릭터 조작은 크게 BindAction과 BindAxis로 나눌수있다. BindAxis BindAxis는 UInputComponent의 멤버함수로 플레이어가 키를입력하면 이벤트가 발생하고 그 즉시, 키값을 바인딩한다. 키 값이 처리되면 스택에서 즉시 처리가 된다. 인스턴스가 포인터역할로써 호출될 수 있는 구조이다. 1.키보드 매핑 먼저 엔진에서 매핑할 값을 지정해준다. PlayerInputComponent->BindAxis(TEXT("Move_Forward"), this,&AShooterCharacter::MoveFoward); 다음으로 플레이어가 키.. UE4 Simple FPS/P_Movement 2022. 5. 10. Simple FPS/P_Movement) Pawn vs Character Pawn vs Character 폰은 플레이어나 AI가 제어할 수 있는 모든 액터의 베이스이다. 게임을 하게되면 내가 조작할 수 있는 오브젝트들이 있다. 캐릭터는 이러한 폰을 상속받아서 폰의 기능을 모두 수행할수 있다. 이 캐릭터를 사용하는 이유는 보다 정교하고 복잡한 움직임을 수행하기 위해서이다. Ureal) 언리얼 게임엔진의 이해 게임 엔진을 사용하는 이유 게임 엔진의 장점은 Low-Level을 감싸고 있는 이미 완성된 기반 코드를 제공한다. 개발자는 DirectX등의 기타 게임 개발에 필요한 엔진 및 랜더링을 직접 개발할 필요 없 pjnull.tistory.com Pawn과 Character의 기본요소 Pawn과 Character는 블루프린트에서 보면 그 차이가 좀더 확실히 알 수 있다. Pawn .. UE4 Simple FPS/P_Movement 2022. 5. 9. 이전 1 ··· 7 8 9 10 11 12 13 14 다음 728x90 반응형