UnrealEngine5 6

[UE5] Dedicated server 전용 서버 독학하기 1) 공식 문서 튜토리얼

1. 어떤 부분을 리플리케이트 할지 구분하기어떤 자원을 공유&동기화 할 것인지 구분해야 한다. 필요한 자원을 구분하여, 서버 비용을 최적화하는 것이 개발 측과 게임 플레이 모두 영향을 미치기 때문에 매우 중요한 부분이라고 생각한다.  2. Listen server / Dedicated server 가장 큰 차이는, 플레이어가 서버가 되는가?이다. Listen server는 플레이어가 서버가 되어 서버를 호스팅 하여 다른 플레이어들(client) 간의 자원을 관리한다. 실제 플레이중에 서버를 통하여 동기화되기 때문에 서버가 된 플레이어가 유리하다.  Dedicated server는 전용 서버가 따로 존재하여 참여하는 플레이어들은 모두 client이다. 그렇기 때문에 Listen server와는 다르게 공정..

[UE5] !!반환을 하는 이유

Unreal source code 중, 다음 코드를 발견했다. 왜 Object가 아닌 !!Object를 반환할까 궁금했다. 결국 같은 결과가 아닌가?싶었다.  bool Succeeded() const { return !!Object; } 결론적으로, !!를 사용하는 이유는 Object의 포인터가 아닌 안전하게 bool값을 명시적으로 반환하기 위해서라고 한다. 그냥 Object를 반환하여도 같은 결과를 나타낼 수 있지만,bool을 반환한다는 의도를 명확히 하고, 타입 안정성을 보장하려는 목적이라고 한다.

[UE5] UStruct와 UMap, Algo::Transform

UStruct구조체와 클래스는 구조적으로 큰 차이가 없지만, 현재 추세로 볼 때구조체는 데이터 저장/전송 특화 객체, 클래스는 객체로 사용함 접두사 F를 붙임Reflection을 사용하려면 USTRUCT 매크로를 선언해야 함.내부에 GENERATED_BODY 매크로를 선언하면 UScriptStuct 클래스로 구현되고, 제한적으로 Reflection을 지워하여 UPROPERTY 매크로는 선언 가능하지만 UFUNCTION의 기능의 선언 X. 대부분 힙 메모리 할당 없이 스택 내 데이터로만 사용.    https://dev.epicgames.com/documentation/ko-kr/unreal-engine/structs-in-unreal-engine TMapSTL map과 UCL mapSTL mapUCL T..

[UE5] Unreal Container_TArray와 TSet

C++ STL과 UCL(Unreal Container Library)의 차이 STLSTL은 UCL에 비하여 범용적으로 설계됨STL은 '표준'이기 때문에 호환성이 높음그만큼 많은 기능이 엮여있기 때문에 컴파일 시간이 김 UCLUCL은 언리얼 엔진에 특화되어 있음UCL은 언리얼 오브젝트 구조를 안정적으로 지원함그렇기 때문에 라이브러리가 가볍고, 게임 제작에 최적화되어 있음  UCLTArray는 STL의 vector와 유사.TSet은 STL의 set과 방식이 많이 다름.STL setUCL TSet이진 트리 형태해시 테이블 형태요소 삭제 시, 균형을 위해 재구축요소 삭제 시, 재구축X자료 순회에 적합X빠른 자료 순회 가능 재구축하지 않아 비어있는 데이터 존재 가능메모리 구성이 효율적이지 않음동적 배열의 형태  ..

[UE5] C++과 Unreal의 Delegate

개인적으로 Unity를 사용하던 시절에도 Observer패턴을 구현하거나, EventDispatcher를 활용하여 최대한 디커플링 된 환경을 만드려고 했다. 보기에도 깔끔하고, 커플링 된 부분들을 수정하는 것에 몇 번 데이고 난 후부터 그런 방향으로 작성했던 것 같다. 하지만, 점점 배우면서 OOP가 구조적인 부분 말고 성능면에서 과연 괜찮은 것인가? 이런 Delegate 형태는 어떤가?를 생각하게 된다. 특히 컴퓨터구조를 배우면서 좀 더 성능 측면에서 고려하게 된 것 같다.   Delegate이벤트의 구독-발행함수를 객체처럼 사용발행자-이벤트-구독자 형태이다.  C++에서의 Delegate는 안정성을 검증하기 때문에 런타임에서 RTTI 비교가 성능이 좋지 않음.따라서 잘 쓰이지 않음. (std::bin..

[UE5 / C++] 언리얼 C++ 시작하기

언리얼 표준원 문법/형식자를 알더라도 언리얼이 제공하는 표준을 사용하는 이유?그것이 '표준'이기 때문에. 표준에 맞게 사용하는 것은 매우 중요하다. 결국 모든 것은 '협업'그리고 '유지보수'가 중심이 되기 때문이다. 언리얼을 사용할 때는 언리얼 표준에 맞게 작성해야 원활한 유지보수가 가능하다.  핫리로딩_헤더파일 수정을 라이브코딩으로cpp 파일이 수정되면, Ctrl+Alt+F11로 라이브코딩이 가능하지만, header 파일이 수정되면, dll을 변경한 것이기 때문에 엔진을 다시 시작해야 한다.  Reflection 시스템https://dev.epicgames.com/documentation/ko-kr/unreal-engine/reflection-system-in-unreal-engine  class를 매..