목록전체 글 (45)
3냥 집사이면서 게임 개발자입니다.
언리얼 오브젝트의 특징과 리플렉션 시스템에 대한 정리와 언리얼 오브젝트의 처리 방식에 대해 이해한 것을 정리하겠습니다. 언리얼 오브젝트의 구성 - 언리얼 오브젝트에는 특별한 프로퍼티와 함수를 지정할 수 있습니다. - 관리되는 클래스 멤버 변수 - 관리되는 클래스 멤버 함수 - 에디터와 연동되는 메타데이터를 심을 수 있습니다. - 모든 얼리얼 오브젝트는 클래스 정보와 함께 합니다. - 클래스를 사용해 자신이 가진 프로퍼티와 함수 정보를 컴파일 타임과 런타임에서 조회할 수 있습니다. - 이렇게 다양한 기능을 제공하는 언리얼 오브젝트는 NewObject API를 사용해 생성해야 합니다.(엔진에서 제공하는 동적할당, 자동 메모리 관리) 언리얼 오브젝트의 클래스 기본 오브젝트 - 언리얼 클래스 정보에는 클래스 기..
삽입 정렬이란 자료 배열의 모든 요소를 앞에서부터 비교하고자 하는 타겟값(tmp)과 정렬된 값을 비교해 자신의 위치를 찾아 삽입하면서 정렬해나가는 알고리즘입니다. 매번 비교할 때마다 앞 부분에 해당하는 범위 모두 타겟값과 비교해 해당 원소를 삽입할 수 있는 위치를 찾아 배열 위치에 넣습니다. 정렬 프로세스 1. 2번째 원소부터 시작한다. 2. 이전 위치에 있는 원소들과 타겟이 되는 원소들을 비교한다. (타겟 원소는 임시 변수에 넣는다.) 3. 타겟 원소가 이전 위치에 있던 원소보다 작다면 위치를 바꾼다. 4. 이전 데이터도 차례대로 비교하며 정렬해나간다. 5. 이 매커니즘으로 반복해 정렬한다. 삽입 정렬의 특징 구현이 간단하다. 배열이 길어질수록 효율이 떨어진다. 선택 정렬이나 버블 정렬과 같은 O(n^..
언리얼 엔진의 근간을 이루는 언리얼 오브젝트 체계와 이를 생성하는 방법에 대해서 이야기하고자 합니다. 게임 프로그래밍이 가지는 특수성과 언리얼 오브젝트의 필요성에 대해 이해하고자 했으며, 언리얼 오브젝트의 선언과 엔진 내부 컴파일 과정에 대해 이해한 내용을 다룹니다. 게임 프로그래밍의 특수성 - 사용자 : 쾌적한 경험을 위해 단일 컴퓨터에서 최대 성능을 뽑아 내야 한다. - 개발자 : 게임의 규모가 커질수록 방대하고 복잡한 기능을 안정적으로 관리해야 한다. Native 접근 C++ 언어 (안정성보다 성능 중시) - 메모리 직접 제어 - Cache의 활용 극대화 - 저수준 API의 직접 호출 - 복사 작업의 최소화 하이레벨 OOP 언어 (성능보다 안정성 중시) - 유지보수성 향상 - 크래시로부터 보호 - ..
언리얼 환경에서 TCHAR, FString을 사용해 로그를 띄워봤습니다. HELLO UNREAL! 이라는 문자열은 기본적으로 TCHAR 형이라는 배열입니다. 배열로 변수를 생성한 뒤 문자열을 출력할 수 있습니다. TCHAR 배열이 아닌 언리얼에서 제공하는 FString 자료형도 같이 사용해 문자열을 출력했습니다. UE_LOG 매크로 세 번째 구문에는 항상 배열만 들어가기 때문에 FString을 사용할 수 없고, %s 에 대응될 때 TCHAR의 Pointer Array를 반환해줘야 하기 때문에 TCHAR* 을 반환하기 위해 FString 변수에 포인터 연산자를 전방에 붙임으로써 문자열 데이터를 가져올 수 있습니다. 복잡한 문자열 처리를 하나로. - 유니코드를 사용해 문자열 처리를 통일합니다. - 이 중에서..