잠입 게임에서 제일 나쁜 순간은 갑자기 죽는 것이 아닙니다. 왜 들켰는지 모르는 것입니다. 그러면 다음 판에 뭘 다르게 해야 할지 알 수가 없고, 조심하는 게 아니라 운을 비는 게임이 됩니다.
적이 자기 상태를 말한다
머리 위 기호부터 나눴습니다. 빨간 느낌표는 지금 나를 보고 있다는 뜻이고, 주황 물음표는 알고는 있는데 놓쳐서 찾는 중, 노란 물음표는 뭔가 이상하다는 정도의 의심입니다. 예전에는 시야를 잃은 적도 느낌표를 달고 있어서 "발각됐는데 왜 안 쏘지"로 읽혔습니다.
거기에 말풍선을 얹었습니다. "적이다!" "이쪽이다!" "시체다!" "놓쳤다". 상태가 바뀌는 순간을 글자로 알려줍니다. 이건 저해상도 도트 위에 그리면 안 읽혀서, 확대한 뒤 화면 해상도로 따로 그립니다.
그리고 발각 게이지가 있습니다. 적 머리 위 막대가 차오르고, 다 차야 교전입니다. 차는 중이면 아직 물러설 수 있습니다. 내 발밑에도 링이 뜹니다. 시야 밖이면 아무 표시가 없고, 시야에는 들었는데 구조물이 막고 있으면 파란 점선, 그대로 노출됐으면 노랑에서 빨강으로 차오릅니다.
이 표시가 판정과 어긋나면 안 되니까 판정은 함수 하나에서만 나옵니다. 화면에 보이는 것과 실제로 굴러가는 것이 다르면, 게임이 플레이어에게 거짓말을 하는 겁니다.
추격 포기를 시계로 자르지 않는다
적이 나를 놓쳤을 때 몇 초 뒤에 포기하게 만드는 건 쉽습니다. 그런데 그러면 이상한 장면이 나옵니다. 한창 쫓아오다가 갑자기 흥미를 잃고 돌아섭니다.
그래서 시간이 아니라 행동으로 잘랐습니다. 마지막으로 나를 본 지점까지 가서 9초를 훑어본 뒤에야 포기합니다. 예전에는 11초 벽시계 하나로 잘랐는데, 그러면 달려오던 도중에 멈춥니다.
가까이 있으면 시야각 밖이라도 알아챕니다. 서 있으면 2.6타일, 앉으면 1.8타일, 엎드리면 1.1타일. 바로 옆에 서 있는데 등을 졌다고 끝까지 모르는 건 말이 안 되니까요.
병종을 여섯으로 나눈 이유
적이 전부 같으면 잠입은 "안 보이는 길 찾기" 하나로 끝납니다. 그래서 여섯으로 갈랐고, 각각 먼저 처리해야 할 이유가 다릅니다.
소총병은 순찰하는 기본 병력입니다. 저격병은 자리를 지키면서 붉은 조준선으로 예고한 뒤 한 발을 세게 쏩니다. 장교는 총은 약한데 눈이 밝고 시야가 넓고, 무엇보다 주변 아군의 반응 속도를 끌어올립니다. 먼저 잡을 이유가 생깁니다. 기관총 사수는 체력이 제일 두껍고 한 번에 여섯 발을 퍼붓지만 선회가 아주 느려서 측면이 약점입니다. 돌격병은 산탄을 뿌리며 파고들지만 사거리가 짧아서 멀면 무해합니다. 군견은 냄새로 쫓기 때문에 시야각이 아예 없습니다. 360도입니다. 약하고 총도 없지만 제일 빠르고, 짖어서 내 위치를 팝니다.
수치는 표 하나에 모아 두고 AI가 그 표만 봅니다. 코드에 흩어 놓으면 병종을 하나 더 넣을 때마다 같은 실수를 반복하게 됩니다.
자리를 지키는 병종도 시야를 잃고 2.5초가 지나면 자리를 뜹니다. 안 그러면 느낌표만 띄운 채 굳어 있습니다.
조작면은 자세와 호흡이다
침투의 실제 조작은 걷는 방향이 아니라 자세입니다. 뛰면 빠르지만 발소리가 6.5타일까지 가고 발각이 1.45배가 됩니다. 서면 기본, 앉으면 발각이 0.45배로 떨어지고 발소리가 거의 없습니다. 엎드리면 0.22배까지 내려가고 철조망 밑을 지날 수 있습니다. 대신 초당 0.95타일로 기어갑니다.
호흡은 조준 쪽입니다. 우클릭으로 숨을 참으면 조준 흔들림이 7%로 줄어듭니다. 대신 3.5초가 지나면 강제로 내쉬면서 2.5초 동안 평소의 2.6배로 흔들립니다.
여기서 한 번 틀렸습니다. 처음에는 "남은 숨이 있어야 참을 수 있다"고 조건을 걸었는데, 그러면 숨이 0에 닿기 직전에 저절로 풀려서 내쉬는 페널티가 영영 발동하지 않았습니다. 참는 이득만 있고 대가가 없는 상태였습니다.
그리고 흔들림은 산포가 아니라 조준선 자체를 밀어내는 값으로 만들었습니다. 산포로 만들면 숨을 참아도 없앨 수 있는 것처럼 안 보입니다. 조준선 간격이 곧 현재 정확도라, 숨을 참으면 눈에 띄게 좁아집니다.
난이도는 네 축을 따로 만진다
신병, 정규, 특수전 셋입니다. 하나의 숫자를 곱하는 게 아니라 적 시야, 적 반응 속도, 적 화력, 포로 처형 유예 넷을 각각 조정합니다. 신병은 시야가 좁고 반응이 느리고 화력이 약하고 처형까지 시간이 넉넉합니다. 특수전은 반대입니다.
포로는 양쪽 총알에 다 맞습니다. 포로가 죽으면 그 자리에서 임무 실패입니다. 난사를 억제하는 유일한 장치라 그대로 뒀습니다.
확인한 것과 못 한 것
자체 검증은 80개 항목이고 지금 전부 통과합니다. 철조망이 서 있는 병사를 막는지, 엎드리면 그 밑으로 지나가는지, 뛰면 발소리가 더 큰지, 숨을 참으면 조준이 실제로 안정되는지, 숨이 떨어지면 강제로 내쉬는지, 단검이 눈치 못 챈 적을 한 방에 눕히고 경계 중인 적은 상처만 입히는지를 전부 코드가 확인합니다.
웹에 올라간 판도 같은 검증을 돌릴 수 있습니다. 주소 뒤에 ?selftest를 붙이면 브라우저에서 그대로 돌아갑니다. 배포된 게 방금 만든 것과 같은 물건인지 확인해 봤고, 바이트 단위로 같았습니다.
아직 없는 것도 적어 둡니다. 캠페인이 없습니다. 단일 임무를 반복하는 구조이고, 지형과 기지 배치만 매 판 새로 생성됩니다. 모바일 터치 조작도 없어서 웹에서도 키보드와 마우스가 필요합니다. 시체 은닉과 적 순찰 경로 편집도 아직입니다. 브라우저에서 바로 해보실 수 있습니다.