두 벡터를 내적 시, 스칼라 값이 나옴
시야 확인 (FOV): 캐릭터의 forward vector와 적을 향하는 벡터를 내적을 통해 각도를 얻어 캐릭터의 시야 안에 들어왔는지 확인
조명 계산 (Lambertian Reflection): 빛의 방향과 표면의 방향이 일치할수록 표면을 밝게 표현
앞/뒤 판별: 결과값이 양수이면 앞, 음수이면 뒤
두 벡터를 외적 시, 벡터가 나옴
좌우 판별 (Steering): 플레이어 정면벡터와 NPC를 향하는 벡터를 외적해서 Z값이 양수이면 우측, 음수이면 좌측에 있는 것
법선 벡터(Normal) 생성: 삼각형면의 법선벡터를 외적으로 구해 빛 반사나 충돌 처리에 사용
회전축 찾기: 캐릭터의 전방 벡터와 위쪽 벡터를 외적해 '오른쪽 벡터'를 구하고, 이를 기준으로 고개를 위아래로 숙이는 회전을 구현
데이터를 식별하기 위한 키워드(ID) 역할
실제 문자열 전체를 들고 있는 게 아니라, 전역 해시 테이블에 저장된 인덱스 값을 참조
대소문자를 구분하지 않으며, 한 번 생성되면 수정 불가능
문자열 비교 연산이 매우 빠르고, 메모리 효율이 좋음
용도: 에셋 경로, 본(Bone) 이름, 소켓 이름, 태그 등
사용자에게 직접 보여주는 텍스트
언어 설정에 따라 텍스트를 변경해주는 Localization 기능 존재
복사 비용이 FString보다 비싸지만, 참조 카운팅을 통해 관리
용도: UI 텍스트, 아이템 설명, 대사, 로그 메시지 등
일반적인 프로그래밍 언어에서 사용하는 표준 문자열과 가장 유사
유일하게 데이터를 직접 조작(검색, 자르기, 결합 등)할 수 있는 타입
용도: 파일 경로 동적 생성, 데이터 파싱, 디버깅 메시지 등
American Standard Code for Information Interchange의 약자
크기는 7비트이지만(128개의 문자) 실제 저장 시에는 8비트를 사용하여 저장
영어 대소문자, 숫자, 문장 부호, 제어 문자등을 정수(0~127)로 표현
영어 외의 다른 언어나 이모지를 표현 못 함
유니코드 : 모든 언어를 하나의 체계로 담기 위해 만든 표준체계
유니코드를 컴퓨터가 이해하는 방식으로 변환(인코딩)한 것 중의 하나
약 110만 개 이상의 문자를 표현 가능
1byte~4byte의 가변 길이 방식
앞부분 128개는 아스키와 완전히 동일하므로, 아스키와 완전히 호환됨
영어는 1바이트, 한글은 3바이트 등으로 유연하게 할당하여 메모리 효율적
보통 영문이 많은 문서에서 사용
글자마다 바이트 길이가 다르기 때문에, 특정 번째 글자를 찾으려면 앞에서부터 순차적으로 읽어야 하는 단점이 존재
거의 모든 현대 언어(한글 포함)를 2바이트로 처리하며, 그 외는 4바이트를 사용
그래서 영어를 제외한 다른 언어의 경우 UTF-16이 용량에서 더 효율적이고 영문에선 비효율적
고정된 단위(2바이트)로 끊어 읽기 좋아 메모리 내 연산에서 유리
아스키와 호환되지 않음