용코바코 게임즈 노트

개발 노트블록 워즈고친 날

블록 워즈 개발 노트 — 열 명이 모이지 않아도 10 대 10이 되게, 빈자리 AI 와 이어받기

청군 · 홍군 10명씩 싸우는 「블록 워즈」를 지으며 정한 규칙들을 적었습니다. 사람이 모자란 자리를 AI 병사가 채우고, 쓰러진 사람이 같은 편 AI 를 이어받게 한 까닭, AI 끼리 먼저 싸워 보며 고친 시작 자리와 증원, 난이도를 상대에게만 걸게 된 이야기입니다.

이 노트는 「블록 워즈」의 소개가 아니라 판의 규칙을 정하며 고민한 자리의 기록입니다. 역할 일곱과 점령지 셋, 조작은 게임 소개 페이지에 정리되어 있으니, 여기서는 그 규칙들이 왜 지금 모양이 되었는지를 적습니다. 블록 시리즈의 첫 게임인 블록 아레나와는 같은 뼈대(방마다 서버 하나, 방 코드로 모이기)를 쓰지만, 판의 크기가 전혀 다릅니다.

블록으로 지은 철원 들판에서 1인칭으로 본 전투 화면. 위에 점령지 A · B · C 와 남은 시간, 오른쪽 위에 작은 지도, 아래에 체력과 무기 칸이 있다
전투 화면 — 위에는 점령지 셋과 남은 시간, 오른쪽에는 작은 지도가 있습니다

스무 명은 잘 모이지 않는다

10 대 10이라는 숫자는 정하기는 쉬워도 채우기가 어렵습니다. 친구 스무 명이 같은 시각에 컴퓨터 앞에 앉는 일은 드뭅니다. 그래서 이 게임의 판은 사람이 아니라 병사 스무 명으로 섭니다. 병사 스무 명이 곧 자리 스무 개이고, 사람은 그 가운데 한 자리를 «맡을» 뿐입니다. 맡은 사람이 없는 자리는 AI 병사가 싸웁니다.

이렇게 하면 혼자 들어와도 한 판이 섭니다. 사람 대 AI 모드에서는 사람이 모두 청군이고 홍군은 AI 군대이며, 사람 대 사람 모드에서는 양쪽 빈자리를 모두 AI 가 채웁니다. 자리를 비우는 경우도 같은 규칙으로 풀립니다. 판 도중에 나가면 그 병사는 AI 가 이어 맡고, 새로고침하거나 잠깐 끊겼다 돌아오면 아무도 맡지 않은 한 같은 병사로 돌아옵니다. 편이 한 명 모자란 채로 남은 판을 치르는 일이 없습니다.

쓰러진 사람이 할 일

병사 스무 명으로 서는 판에서는 «내 병사가 쓰러진 뒤»도 같은 규칙을 따릅니다. 쓰러진 사람이 기지에서 다시 태어나 걸어 나오지 않습니다. AI 병사와 마찬가지로, 쓰러진 병사는 그 판에서 끝납니다.

대신 2.5초 뒤에 살아 있는 같은 편 AI 병사 가운데 하나를 골라 이어받는 창이 열립니다. 가까운 병사부터 보여 주고, 고르면 그 병사가 서 있던 자리에서 그 병사의 역할과 장비, 남은 탄 그대로 싸움을 이어 갑니다. 저격병 자리를 이어받으면 저격병이 되고, 의무병을 이어받으면 구급함을 들게 됩니다.

이 규칙 하나로 두 가지가 같이 풀립니다. 첫째, 사람이 몇 번 쓰러져도 사람 덕에 편의 병사 수가 늘어나는 일은 없습니다. 사람과 AI 가 같은 병사 스무 명을 나눠 쓰기 때문입니다. 둘째, 쓰러진 사람이 기지에서 전선까지 다시 걸어오는 동안 할 일 없이 기다리지 않아도 됩니다. 이어받을 병사가 하나도 없으면 증원이 기지에 도착할 때까지 하늘에서 전장을 내려다보며 기다리고, 판이 한창일 때 들어온 사람도 그 창에서 넘겨받을 병사를 고릅니다.

AI 끼리 먼저 싸워 보게 했다

사람 대신 싸우는 AI 가 많은 게임이라, 규칙을 고칠 때마다 사람을 빼고 AI 끼리 판을 돌려 보았습니다. 그렇게 보니 사람이 한두 판 해서는 안 보이던 것들이 드러났습니다.

  • 증원이 없으면 판이 너무 짧았습니다. 처음에는 처음 나온 열 명이 전부였는데, AI 끼리 붙이니 2분 남짓 만에 한 편이 전멸했습니다. 그래서 쓰러진 자리마다 25초 뒤 기지에서 새 병사가 나오게 하고, 그 수를 편마다 0 · 10 · 20명 가운데 방장이 고르게 했습니다. 증원으로 나온 병사도 사람이 이어받을 수 있습니다.
  • 시작 자리가 한쪽에 유리했습니다. 점령지 셋이 모두 맵 가운데보다 북쪽에 있어서, 북쪽에서 출발하는 홍군이 늘 먼저 닿았습니다. 가운데의 B 노동당사는 홍군 쪽이 10칸이나 가까웠습니다. 청군의 출발 자리를 기지 안에서 5칸 앞으로 옮기자 세 곳까지 걷는 거리의 합이 1칸 차이로 고르게 되었고, 여섯 판을 다시 붙여 보니 청군 4승 · 홍군 2승이었습니다. 지금은 시험이 이 거리를 늘 재서, 합이나 한 곳이라도 8칸 넘게 벌어지면 실패합니다.
  • AI 드론이 제 편 곁에서 터졌습니다. 드론병 AI 가 드론을 띄우자마자 옆 벽에 부딪혀, 띄운 병사 바로 곁에서 자폭하는 일이 있었습니다. 막 띄운 드론은 제자리에서 먼저 올라가게 하고, 지붕 밑에서는 띄우지 않게 하고, 노리던 적이 띄운 병사 곁까지 와 있으면 내리꽂지 않고 기다리게 했습니다.

한 가지는 글을 올린 뒤에야 풀었습니다. AI 끼리 붙인 15분 판이 3~5분 만에 끝나는 일이 잦았습니다. 증원이 빨리 바닥나서라고만 여겼는데, 재 보니 점령 시계도 문제였습니다. 뺏긴 편이 증원을 받아 달려와 막대를 되돌리는 데 1분 남짓이 드는데 세 곳을 60초만 지키면 이겼으니, 세 곳을 뺏기는 순간 판이 끝난 셈이었습니다. 증원 처음 값을 20명으로, 점령 승리를 120초로 늘리자 5분 안에 끝나는 판이 200판 가운데 49%에서 11%로 줄었습니다. AI 의 명중률은 30% 낮춰도 판 길이가 거의 그대로여서 건드리지 않았습니다.

난이도는 상대에게만 걸기로

처음에는 난이도를 올리면 양쪽 AI 가 함께 강해졌습니다. 그런데 사람 대 AI 모드에서 사람 곁에서 싸우는 것도 AI 입니다. 적이 강해지는 만큼 아군도 강해지니, 어려움을 골라도 사람이 느끼는 어려움은 별로 달라지지 않았습니다.

그래서 난이도를 쉬움 · 보통 · 헬 셋으로 다시 나누고, 사람 대 AI 에서는 홍군 AI 에만 걸리게 했습니다. 아군 AI 는 언제나 보통으로 싸웁니다. 난이도마다 바뀌는 것은 맞히는 솜씨, 처음 본 적에게 쏘기까지 걸리는 시간, 적을 알아채는 거리이고, 헬에서는 홍군 증원도 1.5배가 됩니다. 사람끼리 싸우는 대결 모드에서는 양쪽 빈자리 AI 에 똑같이 걸고 증원 덤은 없앴습니다.

이번에도 AI 끼리 붙여 확인했습니다. 보통의 청군 AI 를 세 난이도의 홍군과 싸우게 하니, 쉬움은 청군이 여섯 판 중 다섯 판을 이기고, 보통은 스무 판에 7승 13패로 판마다 크게 갈렸고, 헬은 홍군이 여섯 판을 모두 이겼습니다. 헬은 사람이 판을 뒤집어야 이기는 난이도라는 뜻입니다.

한 방에 쓰러지지 않게

체력은 100이고, 한 번에 깎이는 체력은 90을 넘지 않습니다. 저격소총으로 머리를 맞아도, 포탄이 바로 옆에 떨어져도 체력이 가득했다면 한 방에 쓰러지지 않습니다. 두 번째로 맞으면 쓰러질 수 있습니다.

이 상한은 싸움의 흐름을 바꿉니다. 맞은 뒤에 엄폐물 뒤로 몸을 빼거나, 구급함으로 붕대를 감거나, 의무병이 다가와 응급 처치할 틈이 생깁니다. 폭발도 떨어진 곳에서 멀수록 덜 아프게 하고, 블록 뒤에 숨어 있으면 피해가 크게 줄게 했습니다. 블록으로 지은 전장이니 블록이 실제로 몸을 지켜 줘야 했습니다.

포탄이 떨어져 블록 땅이 패이고 연기와 흙 파편이 솟는 장면
포격 — 떨어진 자리의 블록이 패여 구덩이가 생깁니다

전장은 파일이 아니다

철원을 옮긴 전장은 240 × 240칸, 높이 48칸으로 블록 아레나 맵의 가로세로 세 배입니다. 이 전장은 파일로 내려받지 않습니다. 서버와 브라우저가 같은 코드로 매번 똑같이 만들고(0.06초쯤 걸립니다), 맵에 대해 오가는 것은 판 중에 «부서진 칸»뿐입니다. 덕분에 저장할 것도 보낼 것도 적습니다.

대신 두 쪽이 칸 하나까지 같아야 합니다. 브라우저마다 끝자리가 조금씩 다를 수 있는 삼각함수 같은 계산은 맵을 만드는 코드에 쓰지 않았습니다. 한 칸만 어긋나도 한쪽에서는 벽 뒤에 숨었는데 다른 쪽에서는 맞는 일이 생기기 때문입니다. 맵 만드는 규칙이 바뀌면 맵 번호를 올려서, 옛 화면으로 들어온 사람에게는 새로고침을 권합니다.

포격 때 화면이 멈칫하던 까닭

마지막은 작은 이야기입니다. 포격이 쏟아질 때마다 화면이 잠깐씩 멈칫했습니다. 폭발이 많아서 느린 줄 알았는데, 따라가 보니 폭발 섬광의 빛이 범인이었습니다. 폭발마다 빛을 하나씩 켰다 끄면 장면의 빛 개수가 바뀌고, 그때마다 그래픽 엔진이 빛을 받는 재질을 통째로 다시 준비합니다. 지금은 섬광 빛 세 개를 늘 켜 두고 돌려 씁니다. 빛의 수가 바뀌지 않으니 포격 중에도 화면이 멈추지 않습니다.

지금은

전장은 이 글을 올릴 때 철원 하나였고 그 뒤로 서울 · 부산 · 제주 · 펀치볼이 더해졌으며, 방장이 대기실에서 고릅니다. 조작도 처음에는 키보드 · 마우스뿐이었는데, 지금은 태블릿과 휴대폰에서 손가락으로도 합니다. 역할 일곱의 장비, 모드와 난이도, 전장과 다이아의 자세한 내용은 블록 워즈 게임 소개에 있습니다.

다음에 손볼 것은 판의 길이와, 더 많은 전장입니다.

다른 노트

← 노트 목록