목록전체 글 (45)
3냥 집사이면서 게임 개발자입니다.
언리얼 엔진의 메모리 관리 시스템에 대한 이해와 안정적으로 언리얼 오브젝트 포인터를 관리하는 방법에 대해 정리하고자 합니다. C++ 언어 메모리 관리의 문제점 - C++은 저수준으로 메모리 주소에 직접 접근하는 포인터를 사용해 오브젝트를 관리합니다. - 그러다보니 프로그래머가 직접 할당(new)과 해지(delete) 짝 맞추기를 해야 합니다. - 이를 잘 지키지 못하는 경우 다양한 문제가 발생할 수 있습니다. - 잘못된 사용 예시 - 메모리 누수 (Leak) : new 를 했는데 delete 짝을 맞추지 못함. 힙에 메모리가 그대로 남아있음. - 허상 (Dangling) 포인터 : (다른 곳에서) 이미 해제해 무효화된 오브젝트의 주소를 가리키는 포인터 - 와일드 (Wild) 포인터 : 값이 초기화되지 않..
언리얼 구조체의 선언과 특징 이해, 언리얼 대표 컨테이너 라이브러리인 TMap의 내부 구조 이해, 세 컨테이너 라이브러리의 장단점을 파악하고, 알맞게 활용하는 방법을 정리하고자 합니다. 언리얼 구조체 UStruct - 데이터 저장/전송에 특화된 가벼운 객체입니다. - 대부분 GENERATED_BODY 매크로를 선언해줍니다. - 리플렉션, 직렬화와 같은 유용한 기능을 지원합니다. - GENERATED_BODY를 선언한 구조체는 UScriptStruct 클래스로 구현됩니다. - 이 경우 제한적으로 리플렉션을 지원합니다. - 구조체 멤버변수에 UPROPERTY만 선언할 수 있고 함수 UFUNCTION은 선언할 수 없습니다. 구조체에서 함수를 선언할 수 없다는 점이 언리얼 오브젝트와의 가장 큰 차이점입니다. -..
언리얼에서 제공하는 대표 컨테이너 라이브러러 TArray, TSet의 내부 구조에 대한 내용과 각 컨테이너 라이브러리의 장단점을 파악하고, 알맞게 활용하는 법에 대해 정리하겠습니다. 언리얼 컨테이너 라이브러리 - 언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리입니다. - 줄여서 UCL(Unreal Container Library) 라고도 합니다. - 언리얼 오브젝트를 안정적으로 지원하며 다수 오브젝트 처리에 유용하게 사용됩니다. - 언리얼 C++은 다양한 자료구조 라이브러리를 직접 만들어 제공하고 있습니다. - 실제 게임 제작에 유용하게 사용되는 라이브러리는 TArray, TMap, TSet 입니다. (T = Template) C++ STL 과 언리얼 컨테이너 라이브러리의 차이점 - C++ STL..
언리얼 엔진 5의 델리게이트 시스템은 클래스간 의존성을 최소화하기 위해 사용합니다. 클래스간 의존성을 최소화하기 위해 언리얼 엔진이 제공하는 델리게이트 시스템을 정리하고자 합니다. 느슨한 결합의 장점과 이를 편리하게 구현하도록 도와주는 델리게이트의 이해와 발행 구독 디자인 패턴의 이해, 언리얼 델리게이트를 활용한 느슨한 결합의 설계와 구현을 정리해보겠습니다. 강한 결합과 느슨한 결합 - 강한 결합(Tight Coupling) - 클래스들이 서로 의존성을 가지는 경우를 의미합니다. - 이전 포스팅을 예시로 들면 Card가 없는 경우 Person이 만들어질 수 없습니다. - 이 때 Person은 Card에 대한 의존성을 가진다고 합니다. - 핸드폰에서도 인증할 수 있는 새로운 카드가 도입된다면? - 느슨한 ..