전체 글
-
게임 클라이언트 레벨 디자인 최적화 기법 살펴보기302호 컴퓨터실/언리얼 엔진 5 기초 2024. 12. 18. 11:37
게임 개발에서 레벨 디자인은 단순히 "재미있는 공간"을 만드는 것을 넘어, 성능 최적화를 통해 쾌적한 플레이 환경을 제공하는 과정까지 포함합니다. 이 글에서는 드로우 콜, LOD와 HLOD, View Frustum Culling, Occlusion Culling, Portal Culling, PVS 등 레벨 디자인에서 필수적으로 고려해야 하는 최적화 기법들을 초보자도 이해하기 쉽게 설명합니다.드로우 콜(Draw Call)드로우 콜은 GPU가 한 번에 그릴 수 있는 단위 작업을 의미합니다. 게임 화면에 보이는 모든 오브젝트는 드로우 콜을 발생시키며, 이 숫자가 많아질수록 성능이 저하됩니다. 배치(Mesh Batching): 여러 오브젝트를 하나로 합쳐 드로우 콜 수를 줄입니다.인스턴싱(Instancing)..
-
[UE5] FString은 왜 '*'을 붙여서 읽어야할까?302호 컴퓨터실/언리얼 엔진 5 기초 2024. 11. 27. 17:21
1. FString의 구조FString은 언리얼 엔진의 문자열 클래스입니다. 이 클래스는 내부적으로 힙(Heap)에 동적 문자열 데이터를 관리합니다.FString의 핵심은 문자열 데이터를 TArray를 통해 관리하며, 메모리 관리와 최적화를 위해 다양한 유틸리티 메서드가 포함되어 있습니다.하지만, FString 자체는 문자열 데이터를 바로 반환하지 않고, 문자열 값을 가리키는 내부 메서드를 제공합니다.2. C++에서 *의 역할'*'는 C++에서 포인터의 값을 참조하거나 언리얼에서 오버로딩된 특정 연산자를 호출하는 역할을 합니다.FString에서는 * 연산자를 오버로딩하여 내부의 C-Style 문자열 포인터(TCHAR)를 반환하도록 설계되어 있습니다.오버로딩된 operator*()의 역할const TCHA..
-
[C++] 포인터의 크기는 타입과 관계없이 모두 같다.302호 컴퓨터실/C++ 2024. 11. 27. 11:50
포인터 크기의 원리포인터가 저장하는 것은 메모리 주소포인터는 메모리 주소를 저장하는 변수입니다.메모리 주소의 크기는 운영체제의 주소 공간 크기에 따라 달라집니다.예를 들어, 64비트 운영체제에서는 메모리 주소가 64비트(8바이트) 크기입니다.포인터의 크기는 데이터 타입과 무관포인터는 가리키는 데이터의 타입(예: int, double, char)에 관계없이 메모리 주소를 저장하므로, 모든 포인터의 크기가 동일합니다.64비트 운영체제에서 포인터 크기64비트 운영체제는 64비트 주소 공간을 가지므로, 포인터 크기는 8바이트입니다.32비트 운영체제에서는 포인터 크기가 4바이트였습니다.int* p_int;double* p_double;char* p_char;// 모두 같은 크기를 가짐std::cout 포인터가 가..
-
Engine/Source/Programs/AutomationTool/Mutable/RunMutableCommandlet/obj/302호 컴퓨터실/UE 트러블슈팅 2024. 11. 24. 16:12
https://forums.unrealengine.com/t/possible-5-5-bug-in-runmutablecommandlet-directory/2125220/9 Possible 5.5 Bug in RunMutableCommandlet directoryFixed and worked for me after next steps: Open folder: UE_5.5_ROOT_FOLDER\Engine\Source\Programs\AutomationTool\Mutable\RunMutableCommandlet Open terminal window Execute command: dotnet add package System.Data.DataSetExtensions --version 4.5.0forums.unr..
-
[Unreal 5] 블루프린트 4 - Vector, Force, Impulse302호 컴퓨터실/언리얼 엔진 5 기초 2024. 11. 6. 00:01
물리학에서의 힘과 임펄스 개념 차이힘 (Force):힘은 특정 시점에 작용하는 물리적 원인입니다. 예를 들어, 우리가 공을 던질 때 손이 공에 힘을 가하게 되죠. 이때 힘이 짧은 시간 동안 가해지거나, 혹은 일정 시간 동안 지속될 수도 있어요.즉, 힘의 작용 자체는 순간적이지만, 이 힘이 작용하는 시간이 길어질수록 힘의 누적 효과, 즉 임펄스가 커지게 됩니다.임펄스 (Impulse):힘이 일정 시간 동안 누적되어 작용한 결과가 임펄스입니다. 예를 들어, 짧은 순간 동안 강한 힘을 가해 운동량을 크게 변화시키는 것이 임펄스의 대표적인 특징이죠.물리적으로 임펄스는 임펄스 = F×Δt (질량 x 속도의 변화) 로, 힘과 시간이 곱해진 값입니다.언리얼 엔진에서의 표현 방식언리얼 엔진에서는 임펄스를 한 번의 이벤..
-
[Unreal 5] 블루프린트 3 - 객체와 참조302호 컴퓨터실/언리얼 엔진 5 기초 2024. 11. 4. 00:11
객체 (Object) - 데이터와 기능의 집합액터 (Actors) - 객체를 레벨에서 사용 가능하게 해주는 것컴포넌트 (Component) - 객체를 액터로써 사용 가능하게 해주는 것참조 (Reference) - 객체가 있는 장소 (메모리 주소)데이터 핀 (Data Pin) - 블루프린트 노드의 인풋 or 아웃풋 데이터 뷰포트에서 큐브를 선택하고 블루프린트의 이벤트그래프에 큐브 노드를 추가하는 것은 큐브의 참조를 이용하는 것이다.이미지의 파란색 핀이 데이터 핀이다. 큐브 = 스태틱 메시 액터 오브젝트 레퍼런스맨 처음 언급한 내용이 모두 조합된 타입이다.아무튼 큐브가 가지고 있느 기능중 메시 컴포넌트를 사용한다. 간단하게 큐브의 메시 이름을 가져와 프린트하게 세팅해보자. 끝.