내적/외적, FName/FText/FString, 아스키코드/UTF

김펭귄·2026년 4월 16일

Today What I Learned (TIL)

목록 보기
110/139

1. 내적 vs 외적

1.1. 내적

  • 두 벡터를 내적 시, 스칼라 값이 나옴

  • 시야 확인 (FOV): 캐릭터의 forward vector와 적을 향하는 벡터를 내적을 통해 각도를 얻어 캐릭터의 시야 안에 들어왔는지 확인

  • 조명 계산 (Lambertian Reflection): 빛의 방향과 표면의 방향이 일치할수록 표면을 밝게 표현

  • 앞/뒤 판별: 결과값이 양수이면 앞, 음수이면 뒤

1.2. 외적

  • 두 벡터를 외적 시, 벡터가 나옴

  • 좌우 판별 (Steering): 플레이어 정면벡터와 NPC를 향하는 벡터를 외적해서 Z값이 양수이면 우측, 음수이면 좌측에 있는 것

  • 법선 벡터(Normal) 생성: 삼각형면의 법선벡터를 외적으로 구해 빛 반사나 충돌 처리에 사용

  • 회전축 찾기: 캐릭터의 전방 벡터와 위쪽 벡터를 외적해 '오른쪽 벡터'를 구하고, 이를 기준으로 고개를 위아래로 숙이는 회전을 구현

2. 언리얼 문자열

2.1. FName (식별자용)

  • 데이터를 식별하기 위한 키워드(ID) 역할

  • 실제 문자열 전체를 들고 있는 게 아니라, 전역 해시 테이블에 저장된 인덱스 값을 참조

  • 대소문자를 구분하지 않으며, 한 번 생성되면 수정 불가능

  • 문자열 비교 연산이 매우 빠르고, 메모리 효율이 좋음

  • 용도: 에셋 경로, 본(Bone) 이름, 소켓 이름, 태그 등

2.2. FText (현지화용)

  • 사용자에게 직접 보여주는 텍스트

  • 언어 설정에 따라 텍스트를 변경해주는 Localization 기능 존재

  • 복사 비용이 FString보다 비싸지만, 참조 카운팅을 통해 관리

  • 용도: UI 텍스트, 아이템 설명, 대사, 로그 메시지 등

2.3. FString (조작용)

  • 일반적인 프로그래밍 언어에서 사용하는 표준 문자열과 가장 유사

  • 유일하게 데이터를 직접 조작(검색, 자르기, 결합 등)할 수 있는 타입

  • 용도: 파일 경로 동적 생성, 데이터 파싱, 디버깅 메시지 등

3. 아스키 vs UTF

3.1. 아스키코드

  • American Standard Code for Information Interchange의 약자

  • 크기는 7비트이지만(128개의 문자) 실제 저장 시에는 8비트를 사용하여 저장

  • 영어 대소문자, 숫자, 문장 부호, 제어 문자등을 정수(0~127)로 표현

  • 영어 외의 다른 언어나 이모지를 표현 못 함

3.2. UTF

  • 유니코드 : 모든 언어를 하나의 체계로 담기 위해 만든 표준체계

  • 유니코드를 컴퓨터가 이해하는 방식으로 변환(인코딩)한 것 중의 하나

UTF-8

  • 약 110만 개 이상의 문자를 표현 가능

  • 1byte~4byte의 가변 길이 방식

  • 앞부분 128개는 아스키와 완전히 동일하므로, 아스키와 완전히 호환됨

  • 영어는 1바이트, 한글은 3바이트 등으로 유연하게 할당하여 메모리 효율적

  • 보통 영문이 많은 문서에서 사용

  • 글자마다 바이트 길이가 다르기 때문에, 특정 번째 글자를 찾으려면 앞에서부터 순차적으로 읽어야 하는 단점이 존재

UTF-16

  • 거의 모든 현대 언어(한글 포함)를 2바이트로 처리하며, 그 외는 4바이트를 사용

  • 그래서 영어를 제외한 다른 언어의 경우 UTF-16이 용량에서 더 효율적이고 영문에선 비효율적

  • 고정된 단위(2바이트)로 끊어 읽기 좋아 메모리 내 연산에서 유리

  • 아스키와 호환되지 않음

profile
반갑습니다

0개의 댓글