3냥 집사이면서 게임 개발자입니다.
언리얼 C++ 의 이해 본문
언리얼 환경에서 알아두어야 할 기본 타입과 고려할 점에 대한 정리와 캐릭터 인코딩 시스템에 대한 이해,
언리얼 C++ 이 제공하는 다양한 문자열 처리 방법과 내부 구성의 이해에 대해서 정리하겠습니다.
왜 언리얼은 기본 타입을 따로 지정하는가?
- 1970년대에 개발되서 아직도 사용 중인 C++ 언어
- 시대에 따라서 발전한 하드웨어 사양
- 플랫폼 파편화(Platform Fragmentation)
- C++ 최신 규약에서 int 는 최소 32비트를 보장하도록 규정되어 있음
- 특정 플랫폼에서는 64bit로 해석될 수 있음
- 따라서 데이터를 저장할 때 int 타입의 크기를 확신할 수 없음
- 게임 제작의 특징
- 데이터 정보가 명확해야 한다.
- 단일 컴퓨터에서 최대 퍼포먼스를 뽑아내야 한다.
- 네트웍 상에서 데이터 통신이 효율적이고 안정적이어야 한다.
** 데이터 타입의 애매 모호함은 게임 개발시의 문제를 야기할 수 있다.
언리얼 엔진에서 지정한 기본 자료형 타입에 대해 인지 후 사용할 것을 권장한다.
bool 타입의 선언
- 데이터 전송을 고려한 참/거짓 데이터의 지정
- bool은 크기가 명확하지 않음
- 헤더에는 가급적 bool 대신 uint8 타입을 사용하되 Bit Field 오퍼레이트를 사용
- 일반 uint8과의 구분을 위해 b접두사를 사용
- Cpp 로직에서는 자유롭게 bool을 사용
------------------------------------------------------------------------------------------------------------
왜 언리얼은 문자열을 따로 지정하는가?
1990년대 후반에 이르러서야 표준화된 아시아 문자열 표준(한,중,일)
하지만 컴퓨터는 그전에도 사용했었다.
문자열 처리의 종류
- 싱글바이트(ANSI,ASCII) : 컴퓨터 초창기
- 멀티바이트(EUC-KR,CP949) : 컴퓨터 보급기 (1990년대 초중반)
- 유니코드(UTF-8, UTF-16) : 국제 표준 정착기 (1990년대 후반)
하지만 이 모든 문자열은 아직도 사용되고 있음
C++STL은 ASCII, UTF-8, UTF-16 만 지원함
Windows 10은 멀티바이트를 지원함. 하지만 다른 운영체제는 지원하지 않음
위와 같은 복잡한 상황을 언리얼 엔진에서 TCHAR이라는 데이터 타입을 이용해 문자열을 통일화했음
메모리를 더 사용한다는 단점이 있지만, 균일한 구조로 데이터를 저장하기에 메모리 접근성이 좋다는 이점이 있음
언리얼에서 사용되는 텍스트는 UTF-8과 호환성이 좋음
정리하자면, 언리얼은 String을 관리할 때 UTF-16을 사용하고, 개발자가 꼭 한글을 사용하겠다면 UTF-8 방식을 저장할 것
하지만 여러 문제가 발생할 수 있으니 사전에 감안하고 사용해야합니다.
참고 사이트
https://docs.unrealengine.com/5.1/ko/character-encoding-in-unreal-engine/
'Unreal Engine 5 > 언리얼 C++' 카테고리의 다른 글
언리얼 오브젝트 리플렉션 시스템 1 (0) | 2023.07.25 |
---|---|
언리얼 오브젝트 (0) | 2023.07.20 |
문자열 사용하기 (0) | 2023.07.20 |
언리얼 c++ 코딩 규칙 (0) | 2023.07.19 |
언리얼 C++ 특징 (0) | 2023.07.17 |