프로그래밍/UnrealEngine4 11

네트워크 동기화 기본 프로세스

NetDriver 네트워크 처리의 핵심 NetConnections 의 목록을 유지 관리 각 연결은 플레이어를 나타내며 클라이언트의 NetDriver는 서버에 대한 단일 연결을 관리 네트워크로부터 패킷을 수신, 패킷을 적절한 NetConnection으로 전달하는 일을 담당 패킷 패킷 메타데이터, Bunches로 구성 Bunche 채널간 전송되는 데이터 패킷이 수신되면, 개별 묶음으로 분할 된 다음, 개별 채널로 전달됨 패킷에는 번치가 포함되거나, 단일 번치가 포함되거나, 여러개의채널로 전달됨. 패킷에는 번치가 포함되지 않거나, 단일 번치가 포함되거나, 여러번 포함 될 수 있음 번치가 너무 크면, 전송에 여러개의 작은 번치로 분할되고 PartialInitial, Partial, PartialFinal로 표시..

Unreal Engine 4 Network Features

Unreal Engine 4 Network Features언리얼 엔진에서 네트워크 기능 예제를 제공하고 있습니다.Contents Example 프로젝트를 받아서 Map 하위 폴더에 NetworkFeature를 열면 살펴 볼 수 있습니다.오늘은 언리얼 엔진 네트워크 기능에 대해 간단하게 핵심만 정리하려합니다. 액터란?우선, UE4에서 액터란 게임 씬에 배치할수 있는 모든 오브젝트를 말합니다.(유니티를 아시는 분들이라면 게임오브젝트와 비슷한 개념으로 보시면 좋겠습니다.)액터에 게임 매니져 컴포넌트를 붙여서 게임의 시작/종료 조건을 체크하는 매니저로 만들수도 있고,액터에 이동/조작 관련 컴포넌트를 붙여서 플레이어로 만들수도 있습니다.UE4에서는 액터를 상속받아서 특정한 속성을 가진 개념들을 구현하고 있는데요,..

TPointerIsConvertableFromTo

컴파일 타임에 Dynamic Cast 가능 여부 체크Unreal engine 4 source code를 보다가 재미있는 방법이 있어서 소개드립니다.컴파일 타임에 A객체와 B객체가 부모, 자식 관계로 캐스팅이 가능/불가능한지 컴파일 타임시에 체크하는 방법입니다. template struct TPointerIsConvertableFromTo { prviate: static uint8 Test(...); static uint16 Test(To*); public: enum { Value = sizeof(Test((From*)nullptr)) - 1); } 위 코드를 분석해보면만약 From과 To가 부모/자식 관계라면enum { Value = sizeof(Test((From*)nullptr)) - 1);이 코드에..

UE4 객체 생성

Unity에서 Inspector에 prefab등록해서 Instantiate 하던 것처럼 Unreal Engine 4에서도 Detail 패널에 Blueprint를 등록해서 Spawn 하는 방법에 대해서 학습하였습니다. 파티클 시스템을 커스텀하게 만들어 보고 싶었기 때문에 예제를 파티클로 작성하겠습니다. #include "GameFramework/Actor.h"#include "ParticleSeed.generated.h" UCLASS()class UE4Project_API AParticleSeed : public AActor{GENERATED_BODY()public:// Sets default values for this actor's propertiesAParticleSeed(); // Called wh..

Unreal Engine 4 매크로 자동 들여쓰기 해결법

언리얼 엔진4 를 학습하고 있는 과정에서UPROPERTY, GENERATED_BODY 등 여러 Macro를 사용할때 자동 들여쓰기되는게 약간 거슬려서관련 자료를 찾아보았습니다. Indent 이나 Formatting 키워드를 넣어서 찾아보니 다음과 같은 해답이 있습니다. 1. 기본 옵션 조정 도구->옵션->텍스트 편집기->C/C++->탭 들여쓰기 블록 이렇게 간단하게 세팅해 줄 경우 UPROPERTY 같은 매크로에 자동 들여쓰기가 안되는것을 확인 할 수 있습니다. 그러나 다음과 같은 단점이 있습니다. - public: 같은 keyword에도 자동 들여쓰기가 되지 않습니다. (다음 줄 변수 선언 시, public: keyword 타이핑 시)- if() 와 같이 중괄호 {} 없이 사용되는 구문에서 들여쓰기가 ..