목록UE5 (37)
게임 개발 메모장
언리얼 엔진의 게임 플레이 플레임워크 언리얼 엔진의 게임을 이루는 구성 요소는 크게 4가지 클래스로 구분된다. 게임의 규칙을 정의하고 진행상황을 기록하는 게임 플레이 클래스 : GameMode, GameState, PlayerState... 플레이어, 아군, 적군같은 아바타(언리얼에서는 이를 Pawn이라고 한다.) 클래스 : Pawn, Character... Pawn클래스를 제어하는 컨트롤러 클래스 : Controller, PlayerController, AIController... 플레이어에게 게임에 관한 정보를 표시해주는 출력 관련 클래스 : HUD, Camera... 1. 게임플레이 클래스 - GameMode, GameState GameMode 모든 게임들에는 기본적인 토대들이 있으며, 이러한 규칙..
- 잘못된 메모리 참조 때문에 발생, 즉, 건드리지 말아야 할 곳을 건드렸기 때문에 발생하는 에러. - 어떤 프로그램이 자신이 운영체제로부터 배정 받지 못한 영역(메모리)에 대해 침범하는 것을 운영체제 수준에서 막아주는 것. - 허용되지 않은 방법으로 메모리에 접근할 때, 허용되지 않은 메모리 영역에 접근할 때 발생해서 사용자가 메모리를 오염시키는 걸 막아주고, 디버깅하기 힘든 메모리 버그를 알려주는 역할. ◈ segmentation fault의 원인 1. null 값을 가리키는 포인터에 접근할 경우 2. 할당 받은 메모리 공간을 넘은 곳을 건드린 경우 3. 더 이상 존재하지 않는 메모리 영역을 가리킬 경우 4. read-only 표시 메모리 영역에 쓰려고 할 경우
빌드(Build)란? 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말한다. 컴파일은 고급언어를 컴퓨터가 이해할 수 있는 저급언어로 바꿔주는 과정 중 하나일뿐 전체적인 과정을 뜻하는게 아니다. 즉, 빌드라는 변환 과정의 큰 틀안에서 동작하는 하나의 과정을 컴파일이라고 하고, 여러 과정이 합쳐진 것이 빌드이다. 또한, 빌드 과정을 도와주는 도구가 Build Tool이다. 실제 코딩을 하고 완성되면 run을 실행하여 결과를 화면에서 볼 수 있는데 이때 Build Tool에 의해 모든 빌드과정이 자동으로 실행되어 우리는 컴파일,빌드라는 개념을 크게 생각하지 않는다. 빌드(Build) : 소스코드 파일을 실행가능한 소프트웨어로 만드는 과정 +) 빌드툴(Build Tool..
코드를 짜다보면, 특정 객체의 클래스 정보를 알기 위해 GetClass 혹은 StaticClass 를 쓰는 것을 볼 수 있다. 그런데 이 둘의 차이는 무엇일까? 한 줄 요악 : StaticClass 는 컴파일 타임에서 UClass 타입의 정보를 얻어오는 것이며, GetClass 는 런타임에서 실제 객체의 클래스를 조회할때 사용된다. AMyActor* ActorPtr = NewObject(...); UObject* ObjPtr = Actor; UClass* MyActorClass = AMyActor::StaticClass(); // AMyActor UClass* ObjectClass = UObject::StaticClass(); // UObject UClass* ActorPtrClass = ActorPtr..
1. PendingKill Actor는 일반적으로 가비지 콜렉팅되지 않는데, 월드 오브젝트가 액터 레퍼런스 목록을 저장하기 때문이다. 액터는 Destroy() 를 호출하여 명시적으로 소멸시킬 수 있다. 그러면 레벨에서 제거되어 pending kill (킬 대기) 상태로 마킹, 잠시 후 다음 가비지 콜렉션 때 지워진다는 뜻이다. 언리얼의 엑터나 컴포넌트는 Destroy를 호출하여 제거를 하게 되면 씬 상에서는 제거된 것으로 보이지만 메모리에서는 Pending Kill 상태가 되어 존재하며 다음 GC(Garbage Collection) 실행시 메모리에서 해제된다. 이는 에디터의 프로젝트 기본 설정상으로 1분단위로 Pending Kill 상태인 오브젝트를 제거하며 사용자가 설정을 변경할 수 있다. C++ 코드..
실행시간에 실시간 게임플레이 데이터를 분석할 수 있도록 해주는 툴입니다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/GameplayDebugger/ 게임플레이 디버거 실행시간에 실시간 게임플레이 데이터를 분석할 수 있도록 해주는 툴입니다. docs.unrealengine.com
참고 : C++ Assert - https://yooyoungjae0627.tistory.com/6 assert 는 일반적으로 참조하고자 하는 변수가 null 인지 아닌지를 체크하는 용도로 자주 사용된다. 실제 개발을 할 때는 프로젝트명으로 된 헤더 파일에 assert 구문을 이용한 커스텀 로그를 만들어 놓는 게 간편하다. 언리얼에서의 assert 종류는 크게 check, verify, ensure 이 있다. // assert 는 DO_CHECK = 1 일때만 실행 // check 는 false 값이면 실행을 중지 check(Mesh != nullptr); checkf(MyPtr, TEXT("MyPtr is nullptr")); // false 이면 로그 출력 checkcodeMyPtr, TEXT("My..