만든 이야기 모래전선 Sandfront
개발 노트
어느 브라우저에서나 같은 판
리플레이와 관전은 지도 시드와 명령만 남기고 브라우저가 판을 처음부터 다시 돌리므로, 20분짜리 판도 수십 KB에 담깁니다. 그런데 자바스크립트는 sin·atan2·hypot 같은 함수의 결과를 엔진마다 다르게 낼 수 있게 둡니다. 입력 20만 개로 재어 보니 V8과 사파리 엔진은 sin의 4.5%, hypot의 33%에서 마지막 자리가 달랐고, 이 차이로 몇 분 뒤에는 다른 판이 됩니다. 그래서 시뮬레이션은 사칙연산과 제곱근만 쓰고, Node에서 기록한 판을 WebKit·Chromium에서 다시 돌려 같은지 확인합니다.
보이는 것만 보낸다
서버가 판을 초당 20번 계산하고 모든 명령을 판정합니다. 플레이어마다 초당 10번 따로 만드는 스냅숏에는 안개 속 적, 숨은 유닛, 보이지 않는 곳의 크리스탈 변화가 빠져 있어 맵핵이 읽어 낼 정보가 없습니다. 관전자는 명령 기록을 30초 늦게 받으므로, 대전 중인 사람이 다른 탭에서 제 판을 관전해 상대를 엿볼 수 없습니다.
이름뿐이던 난이도
컴퓨터끼리 붙여 보니 난이도가 이름뿐이었습니다. 쉬움이 보통에게 6:12로 졌고, 보통이 어려움을 9:8로 이겼습니다. 지금은 단계마다 수확기 상한, 대기열 길이, 공격 시점, 쉬는 시간이 다릅니다. 먼저 쳐들어간 쪽이 크게 지는 판이어서(공격을 앞당긴 어려움은 2:16) 어려움은 속임수 대신 수비 뒤 되받아치기와 유닛 컨트롤로 세게 만들었습니다. 컴퓨터끼리 보통과 어려움은 이제 36:36이고, 사람을 상대로 한 결과는 아직 재지 못했습니다.
고친 날: