728x90

전체 글 715

UE5. 패킷 데이터 직렬화(버퍼 생성)

UE5패킷 데이터 직렬화(버퍼 생성)TArray PacketData;PacketData.SetNumUninitialized(Header.TotalSize);TArray 형식의 배열을 생성하여 패킷 전체 크기만큼 메모리를 할당한다.SetNumUninitialized() 는 초기화되지 않은 상태로 메모리를 할당하는 함수로, 패킷 데이터를 저장할 공간을 확보한다.SetNumUnititialized()배열의 크기르 설정하면서, 불필요한 초기화 비용을 피하고 성능을 최적화 시키기 위해 사용한다.장점성능 최적화배열의 요소를 초기화하지 않기 때문에 불필요한 초기화 과정에 소요되는 CPU 자원을 절약할 수 있다.원시 데이터 타입(uint8, int, float 등)에서 초기화는 종종 성능 저하의 원인이 될 수 있기 때..

UE5 2024.10.30

VV 4. 클라이언트 수신

VV서버에서 로그인 과정을 거쳤으니 그 결과를 다시 클라이언트에 보내줘야 한다. 나는 결과에 따라서 다른 프로토콜을 쓰는게 아니라 같은 프로토콜로 대신에 attribute에 다른 값으로 성공했는지 실패했는지 알아볼 수 있도록 구성했다.bool OnDataHandle(IDataBuffer* pDataBuffer, int32_t nConnID){ if (pDataBuffer == nullptr) { CLog::GetInstancePtr()->LogError("Received null data buffer in OnDataHandle."); return false; } PacketHeader* pHeader = (PacketHeader*)pDataBuffer->G..

Study/Project 2024.10.29

24.10.29 VV, UE5, DB

VV서버에서 로그인 과정을 거쳤으니 그 결과를 다시 클라이언트에 보내줘야 한다. 나는 결과에 따라서 다른 프로토콜을 쓰는게 아니라 같은 프로토콜로 대신에 attribute에 다른 값으로 성공했는지 실패했는지 알아볼 수 있도록 구성했다.bool OnDataHandle(IDataBuffer* pDataBuffer, int32_t nConnID){ if (pDataBuffer == nullptr) { CLog::GetInstancePtr()->LogError("Received null data buffer in OnDataHandle."); return false; } PacketHeader* pHeader = (PacketHeader*)pDataBuffer->G..

VV 3. 로그인 기능

VV서버와의 연결이 성공했으므로 서로 정보를 전달할 수 있어야 한다.로그인 UI가 있으므로 ID, PW TextBox에 입력한 Text를 로그인 버튼을 누르면 서버로 전송해야 한다.// LoginWidget.hUCLASS()class VERSUSVILLAGE_API ULoginWidget : public UUserWidget{ GENERATED_BODY() public: virtual void NativeConstruct() override; UFUNCTION() void OnLoginButtonClicked();protected: UPROPERTY(meta = (BindWidget)) class UEditableTextBox* IDTextBox; UPROPER..

Study/Project 2024.10.29

24.10.28 VV

VV서버와의 연결이 성공했으므로 서로 정보를 전달할 수 있어야 한다.로그인 UI가 있으므로 ID, PW TextBox에 입력한 Text를 로그인 버튼을 누르면 서버로 전송해야 한다.// LoginWidget.hUCLASS()class VERSUSVILLAGE_API ULoginWidget : public UUserWidget{ GENERATED_BODY() public: virtual void NativeConstruct() override; UFUNCTION() void OnLoginButtonClicked();protected: UPROPERTY(meta = (BindWidget)) class UEditableTextBox* IDTextBox; UPROPER..

VV 트러블 슈팅 1. MSB3073 에러, NewObject with empty name can't be used to create default subobjects 에러

MSB3073 에러MSB3073에러가 발생해서 빌드가 안되는 문제를 겪었다.VS를 다시 켜보거나 Binaries를 삭제하고 리빌드 하는 과정을 거쳤지만 문제가 해결되지 않았다.해결 방법Build.cs 파일 수정FSocket 및 네트워킹 관련 기능을 사용하기 위해서는 프로젝트의 .Build.cs 파일에 필요한 모듈을 추가해야 했다.프로젝트 폴더에서 .Build.cs 파일을 열어서 PublicDependencyModuleNames에 필요한 모듈을 추가해주었다.나는 Sockets 와 Networking 모듈이 필요했기에 추가해주었다.PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "S..

Study/Project 2024.10.24

VV 2. 서버와의 연결

서버와의 연결간단한 로그인 UI를 만들었고, 이번에는 C++서버와의 연결을 준비했다. C++ 서버의 경우 최흥배님의 깃헙을 참조해 사용했다.NetworkManagerNetworkManagerMyGameInstance에서 다 해결해주는 것이 아니라, 서버와의 연결을 담당해줄 클래스를 만들어 주었다.NetworkManager.h//NetworkManager.hUCLASS()class VERSUSVILLAGE_API UNetworkManager : public UObject{ GENERATED_BODY() public: bool ConnectToServer(FString ServerAddress, int32 Port); void SendData(FString DataToSend);private: class F..

Study/Project 2024.10.24

VV 1. 로그인 UI

VV로그인 UI언리얼 엔진의 프로젝트를 본격적으로 포스팅 해보려고 한다.이번 목표는 로그인 UI를 만드는 것이다.Unity에서 쉽게 panel을 이용했던 것과는 다르게 좀 언리얼은 복잡해서 다른 여러 블로그를 참조하면서 진행했다.Ctrl+Space 를 통해 Content Browser를 열고, 빈 곳에서 우클릭을 통해 User Interface → Widget Blueprint를 눌러줘서 생성해주었다.User Widget을 눌러서 생성해주었다.이런 창이 열리게 되는데 화살표 버튼을 드래그 해보면 화면 영역이 나타나게 된다.여기서 만드려고 하는 화면 비율을 따라서 선택해주면 된다.나는 1920x1080으로 선택했다.옆의 Palette를 통해서 원하는 UI를 드래그 드롭시켜주었다.간단하게 만든 텍스트 박스와..

Study/Project 2024.10.23

24.10.23 VV

24.10.23 VVVV서버와의 연결간단한 로그인 UI를 만들었고, 이번에는 C++서버와의 연결을 준비했다. C++ 서버의 경우 최흥배님의 깃헙을 참조해 사용했다.NetworkManagerNetworkManagerMyGameInstance에서 다 해결해주는 것이 아니라, 서버와의 연결을 담당해줄 클래스를 만들어 주었다.NetworkManager.h//NetworkManager.hUCLASS()class VERSUSVILLAGE_API UNetworkManager : public UObject{ GENERATED_BODY() public: bool ConnectToServer(FString ServerAddress, int32 Port); void SendData(FString DataToSend);pri..

24.10.22 VV, UE5

VV로그인 UI언리얼 엔진의 프로젝트를 본격적으로 포스팅 해보려고 한다.이번 목표는 로그인 UI를 만드는 것이다.Unity에서 쉽게 panel을 이용했던 것과는 다르게 좀 언리얼은 복잡해서 다른 여러 블로그를 참조하면서 진행했다.Ctrl+Space 를 통해 Content Browser를 열고, 빈 곳에서 우클릭을 통해 User Interface → Widget Blueprint를 눌러줘서 생성해주었다.User Widget을 눌러서 생성해주었다.이런 창이 열리게 되는데 화살표 버튼을 드래그 해보면 화면 영역이 나타나게 된다.여기서 만드려고 하는 화면 비율을 따라서 선택해주면 된다.나는 1920x1080으로 선택했다.옆의 Palette를 통해서 원하는 UI를 드래그 드롭시켜주었다.간단하게 만든 텍스트 박스와..

728x90