2024/05 20

[Unreal5] Component 추가 및 속성 변경

구조헤더 UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly) TObjectPtr CapsuleComponent; UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly) TObjectPtr Mesh; UPROPERTY( VisibleAnywhere, BlueprintReadOnly) TObjectPtr SpringArm; UPROPERTY( VisibleAnywhere, BlueprintReadOnly) TObjectPtr Camera;CPPCreateDefaultSubobject는 클래스의 서브 오브젝트를 생성하는 데 사용되는 함수입니다. 이 함수는 주로 Actor나 ..

Unreal 2024.05.30

[Unreal5] 특정 조건에 맞는 액터를 찾기 및 이동

Pawn 찾기GetPawn()현재 컨트롤러가 소유하고 있는 Pawn에 대한 참조를 가져오는 역할을 합니다. APawn* ControlledPawn = GetPawn();조건에 맞는 액터 찾기UGameplayStatics::GetActorOfClassUGameplayStatics::GetActorOfClass는 월드 내에서 지정된 클래스의 첫 번째 인스턴스를 반환하는 함수입니다. 주로 특정 클래스의 액터가 하나만 존재하거나, 첫 번째로 발견된 액터만 필요할 때 사용됩니다.AMyActorClass* MyActor = Cast(UGameplayStatics::GetActorOfClass(GetWorld(), AMyActorClass::StaticClass()));if (MyActor){ // MyActo..

Unreal 2024.05.28

[Unreal5] 오브젝트 Load 방법 및 생성

TSubclassOf와 ObjectPtrTSubclassOf지정된 기본 클래스에서 파생된 클래스만 참조하는 걸 보장한다.ObjectPtrUnreal Engine 5에서 도입된 새로운 스마트 포인터 타입입니다. 이 포인터는 UObject 참조를 더 안전하고 효율적으로 관리하기 위해 설계되었습니다. TObjectPtr는 기존의 UObject* 대신 사용할 수 있다. UPROPERTY() TObjectPtr Actor; UPROPERTY() TSubclassOf ActorClass;//AR1Actor를 상속받은 모든걸 담을 수 있다. ConstructorHelpers::FClassFinder (초기화 시점 사용)ConstructorHelpers::FClassFinder는 주로 UClass 타입의 클래스를 로드..

Unreal 2024.05.28

[C#] is 와 as

C#에서 is와 as 키워드는 타입 검사를 수행하고 타입 변환을 안전하게 처리하는 데 사용됩니다. 이 키워드들은 특히 상속 관계에 있는 객체를 다룰 때 유용합니다.is 키워드is 키워드는 객체가 특정 타입인지 확인할 때 사용됩니다. 객체가 해당 타입이거나 해당 타입에서 파생된 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 또한, C# 7.0부터는 is 키워드를 사용하여 변환된 결과를 새로운 변수에 할당할 수도 있습니다.class Base { }class Derived : Base { }class Program{ static void Main() { Base b = new Derived(); if (b is Derived) { ..

VisualStudio/C# 2024.05.27

[C++서버] IOCP(Completion Port) 모델

Overlapped 콜백기반은 비동기 입출력 함수가 완료가 되면 스레드마다 있는 APC 큐에 일감이 쌓인다.Alertable Wait 상태로 들어가면 APC큐를 전체 비운다. (콜백 함수 호출)APC큐는 쓰레드마다있기 때문에 멀티 스레드 환경에서 적절하게 배분하는데 어려움이 있다.( Alertable Wait 상태로 들어가 APC큐를 비워야 하기 때문이다.)  또 한 Alertable Wait 계속 호출하는 부담이 있다. Overlapped  이벤트 방식으로는 소켓과 이벤트를 1대 1로 대응해야 하고 그리고 감시할 수 있는 수량도 64개 밖에 되지 않기 때문에 많은 수의 이벤트를 관찰하기 어렵다.  이런 문제를 보안하기 위해IOPC(Completion Port) 방식이 나오게 된다. IOPC모델은 Ove..

[C++] Overlapped모델 (비동기 + 논블로킹)

Overlapped 콜백기반은 비동기 입출력 함수가 완료가 되면 스레드마다 있는 APC 큐에 일감이 쌓인다.Alertable Wait 상태로 들어가면 APC큐를 전체 비운다. (콜백 함수 호출)APC큐는 쓰레드마다있기 때문에 멀티 스레드 환경에서 적절하게 배분하는데 어려움이 있다.( Alertable Wait 상태로 들어가 APC큐를 비워야 하기 때문이다.)  또 한 Alertable Wait 계속 호출하는 부담이 있다. Overlapped  이벤트 방식으로는 소켓과 이벤트를 1대 1로 대응해야 하고 그리고 감시할 수 있는 수량도 64개 밖에 되지 않기 때문에 많은 수의 이벤트를 관찰하기 어렵다.  이런 문제를 보안하기 위해 IOPC(Completion Port) 방식이 나오게된다.Overlapped모델..

[C++] Select 모델과 WASEventSelect모델

Select 모델 (동기방식)Select 모델은 여러 소켓에 대한 입출력 이벤트를 감지하고 처리할 수 있도록 도와줍니다.Select 모델은 여러 소켓의 상태를 감지하고, 해당 소켓들 중에서 입력이나 출력 준비가 된 소켓을 선택하여 처리할 수 있도록 해줍니다. 이는 비동기 소켓 프로그래밍의 복잡성을 줄이면서도 다중 클라이언트를 처리하는 데 효과적입니다. select() 함수를 사용하여 소켓의 상태를 검사하고, 필요한 작업을 수행합니다.Select 모델은 단일 스레드에서 여러 소켓을 처리하기 때문에 비교적 간단하게 구현할 수 있으며, 블로킹 소켓을 사용하더라도 다중 클라이언트를 동시에 처리할 수 있습니다. 그러나 매우 많은 수의 소켓을 다루는 경우에는 비효율적일 수 있습니다. 이런 경우에는 다른 모델이나 비..

[C++] setsockopt와 Socket 설정

1. SO_KEEPALIVE (Keep-Alive 설정)bool enable = true;::setsockopt(serverSocket, SOL_SOCKET, SO_KEEPALIVE, (char*)&enable, sizeof(enable));목적: 주기적으로 연결 상태를 확인합니다.설명: TCP 연결이 유효한지 주기적으로 확인합니다. 상대방이 갑작스럽게 연결을 끊어도 TCP 프로토콜을 통해 연결 상태를 확인할 수 있습니다.2. SO_LINGER (지연 닫기 설정)LINGER linger;linger.l_onoff = 1;linger.l_linger = 5;::setsockopt(serverSocket, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(linger));목적..

[C++] 블로킹방식 TCP/IP 소스

Client소켓 생성 (Socket Creation)클라이언트 소켓을 생성합니다.  AF_INET은 IPv4, SOCK_STREAM은 TCP를 의미합니다.SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0);서버에 연결 (Connect)서버의 IP 주소와 포트 번호로 연결 요청을 보냅니다. if (::connect(clientSocket, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR){}전체 코드#include "pch.h"#include #include "CorePch.h"#include #include #include #pragma comment(lib, "ws2_32.lib")int main..

[Unreal5]GameInstance와 GameModeBase

https://docs.unrealengine.com/4.26/ko/InteractiveExperiences/Framework/QuickReference/ 게임플레이 프레임워크 간단 레퍼런스게임의 프레임워크를 이루는 게임 규칙, 캐릭터, 컨트롤러, 유저 인터페이스 등에 대한 클래스 간단 개요입니다.docs.unrealengine.com GameInstanceGameInstance는 게임의 전반적인 상태를 관리합니다. 게임이 실행되는 동안 종료되지 않으며, 레벨 간의 전환에도 유지됩니다. 싱글톤 역활전역 데이터 관리: 게임 전반에 걸쳐 유지되어야 하는 데이터를 저장합니다. 예를 들어, 플레이어의 프로필, 설정, 또는 레벨 간에 공유되는 데이터를 관리합니다.게임 세션 관리: 멀티플레이어 세션이나 네트워크 연..

Unreal 2024.05.22