FFT 바다 엔진에서 낚시 게임에 이어 레이싱도 갈라 냈습니다. 같은 바다 위에서 배를 몰지만 요구하는 것이 정반대입니다. 낚시는 배를 세워야 시작되고, 레이싱은 세우면 집니다.

코스는 메시가 아니라 씨앗입니다

게이트 여덟 개가 닫힌 고리를 이룹니다. 이 코스 코드는 렌더러를 모르고 메시도 들지 않습니다.

이유가 있습니다. 클라이언트와 권위 서버가 씨앗 하나로 똑같은 코스를 만들어야 합니다. 그래야 코스가 회선을 타고 흐를 필요가 없고, 나중에 리플레이도 성립합니다. 코스를 데이터로 보내기 시작하면 그 순간부터 "누구의 코스가 맞는가"를 관리해야 합니다.

근접 판정은 처음부터 불가능했습니다

게이트를 통과했는지 어떻게 압니까. 반경 안에 들어오면 통과로 치는 게 제일 쉽습니다.

안 됩니다. 반경을 크게 잡으면 게이트 옆에서 흔들리는 배에 오발합니다. 작게 잡으면 빠르게 지나가는 배가 통과 판정을 건너뜁니다. 9.6m/s로 달리면 한 틱에 0.16m를 움직이는데, 오발하지 않을 만큼 작은 반경은 이미 관통당할 만큼 작습니다. 중간값이 없습니다.

그래서 평면 교차로 봅니다. 이전 자세와 지금 자세를 잇는 선분이 게이트 평면을 가로질렀는지를 봅니다. 선분은 관통당하지 않습니다.

방향도 같이 봅니다. 뒤에서 앞으로 지나야 인정되므로, 후진으로 되돌아가며 점수를 쌓을 수 없습니다.

겹친 것을 고치는 편이 쌉니다

게이트 배치는 흔들린 원에서 시작해 섬 밖으로 밀어냅니다. 처음부터 안 겹치는 고리를 만드는 것보다 겹친 것을 고치는 쪽이 쌉니다. 실측으로 섬에서 최소 55.2m, 게이트 여덟 개 전부 확보됐습니다.

게이트가 어느 쪽을 보게 할지도 걸렸습니다. 처음엔 다음 게이트 쪽을 향하게 했는데, 그러면 앞 구간에만 직각이고 뒤 구간에는 비스듬합니다. 그 구간에서 오는 배가 게이트를 모서리로 만납니다. 앞뒤 이웃의 접선을 쓰도록 바꿨습니다.

AI에게는 두 개만 줬습니다

AI 상대가 만질 수 있는 것은 스로틀과 타뿐입니다. 사람이 쥐는 것과 정확히 같습니다.

조종석을 넘어 배를 직접 옮기는 순간, 그건 드라이버가 아니라 물리와 리플레이와 권위 서버가 서로 다르게 아는 치트가 됩니다. 전부 조타이지 순간이동이 아닙니다. 헤드리스로 돌고 씨앗에서 결정적입니다.

제약을 걸어 두니 설계가 따라 나왔습니다.

게이트 중심을 겨누면 안 됩니다. 매번 정면으로 도착해서 거기서 돌기 시작하는데, 느릴 뿐 아니라 셔틀버스처럼 보입니다. 다음 게이트가 있는 쪽으로 조준을 밀어 인코스를 타되, 접근하면서 서서히 밉니다. 한 번에 꺾으면 그것도 기계처럼 보입니다.

코너에서 스로틀을 뺍니다. 전개로 돌면 밖으로 밀려 게이트를 놓치고 되돌아와야 합니다. 느린 것도 문제지만, 레일 위를 달리는 것처럼 보이지 않게 하는 요소이기도 합니다.

회피는 옆으로 미는 정도이지 조향을 빼앗지 않습니다. 뭔가 가까워질 때마다 라인을 버리는 드라이버는 절대 추월하지 못합니다.

맞으면 물이 듭니다

직사포를 붙였습니다. 명중 판정은 선체끼리 부딪히는 것과 같은 캡슐 판정 하나를 씁니다. 배가 어디 있는지에 대한 두 번째 정의를 만들지 않았습니다.

여기서도 터널링이 나왔습니다. 200m/s면 한 틱에 3.3m를 가는데 선체 캡슐 폭이 2.35m입니다. 끝점만 보면 맞추기보다 놓치는 쪽이 잦습니다. 게이트에서 근접 판정을 버린 것과 같은 문제라, 캡슐 반경보다 작은 보폭으로 걸어가며 봅니다.

발사할 때 배의 속도를 더합니다. 9m/s로 달리는 배에서 나간 포탄은 이미 9m/s를 갖고 있습니다. 이걸 빼면 빠른 배에서 쏜 탄이 자기 조준보다 뒤처져서 총이 고장난 것처럼 보입니다.

손상은 체력 막대가 아니라 침수입니다. 맞으면 물이 들고, 배가 무거워지고, 느려집니다. 이미 부력 시뮬레이션이 있으니 손상을 표현할 새 장치가 필요 없었습니다.

소리는 녹음으로 답할 수 없었습니다

효과음이 전부 합성입니다. 자산이 없어서이기도 하지만 주된 이유는 따로 있습니다.

엔진은 시뮬레이션의 연속 함수입니다. 스로틀이 놓는 아무 회전수에서나, 파도마다 바뀌는 부하 아래에서 돌아야 합니다. 루프 샘플은 그중 한 순간의 녹음일 뿐입니다.

엔진 소리는 몇 센트 어긋난 톱니파 둘에 옥타브 위 사각파 하나입니다. 어긋나게 두는 것이 핵심입니다 — 두 발진기가 맥놀이를 일으키고, 그 맥놀이가 "시험음"이 아니라 "부품이 있는 기계"로 들리게 하는 대부분입니다.