1. 4방향 마스킹의 한계와 8방향의 등장
4방향 비트마스킹은 얇은 길이나 나무 울타리를 만들 때는 훌륭한 해결책입니다. 하지만 끝없이 땅을 파고 내려가는 채굴 게임의 흙 타일이나, 거대한 맵 청크로 이루어진 동굴처럼 넓은 면적을 가진 덩어리 지형을 묘사할 때는 치명적인 단점이 있습니다.
바로 '안쪽 모서리(Inner Corner)'를 부드럽게 깎아낼 수 없다는 것입니다.
대각선의 상태를 알지 못하면 지형의 안쪽이 파여 있는 형태를 자연스럽게 표현하지 못하고 억지스러운 직각 모서리를 출력하게 됩니다. 이 문제를 해결하기 위해 대각선 4방향(북서, 북동, 남서, 남동)까지 모두 검사하는 8방향 비트마스킹이 등장했습니다.
2. 256가지의 경우의 수
계산 원리 자체는 4방향과 완전히 동일합니다. 검사해야 할 방향이 8개로 늘어났으니, 2의 거듭제곱을 0부터 7까지(1, 2, 4, 8, 16, 32, 64, 128) 사용합니다.
주변 8칸의 타일 유무에 따라 이 숫자들을 모두 더하게 되면, 0부터 255까지 총 256개의 고유한 상태 값이 나오게 됩니다.
3. 개발자의 꼼수: '대각선 무시 규칙'
"그렇다면 256가지 상황에 맞는 대각선 타일 이미지를 그래픽 디자이너가 전부 다 그려야 할까요?"
아닙니다. 256개를 모두 그리는 것은 극심한 리소스 낭비입니다. 그래서 똑똑한 개발자들은 '대각선 무시 규칙'이라는 논리적 필터링을 만들어 256가지의 경우의 수를 47가지로 확 줄여버렸습니다.
규칙의 핵심은 다음과 같습니다.
"특정 대각선 방향에 타일이 있더라도, 그 대각선을 양옆에서 감싸는 두 개의 십자 방향(상/하/좌/우) 타일이 모두 채워져 있지 않다면 해당 대각선 타일은 시각적으로 의미가 없으므로 무시(0 처리)한다."
예를 들어, 내 타일의 '위쪽'과 '오른쪽'이 비어있다면, 어차피 내 타일은 바깥으로 둥글게 깎인 우상단 테두리 모양이 되어야 합니다. 이 상황에서는 '오른쪽 위(대각선)'에 타일이 있든 없든 내 타일의 모양에는 전혀 영향을 주지 않습니다.


4. 47타일 시스템의 완성
이렇게 시각적으로 영향을 주지 않는 대각선의 경우의 수와, 구조적으로 절대 나올 수 없는 상태 값들을 제외하고 나면 최종적으로 47개의 필수 타일(47-Tile Rule)만 남게 됩니다.
유니티(Unity)의 Rule Tile 시스템이나 고도(Godot) 엔진의 Terrain 오토 타일링 기능도 바로 이 47타일 룰을 기본 로직으로 내장하고 있습니다.