Castle Arena소식

개발 일지

2026년 10월 4일

여덟 명, 하나의 전투

TECH글 #11
River Valley, 황혼 무렵 붉은 성을 포위한 공성전
River Valley, 황혼 무렵 붉은 성을 포위한 공성전

어제의 영수증에는 미완의 목록에 "더 많은 사람과의 온라인"이라는 한 줄이 있었습니다. 온라인 팀 대전은 여러분과 친구, 그리고 각자의 AI 아군이었습니다. 이제 모든 자리에 사람이 앉을 수 있습니다. 2v2부터 4v4까지, 방 하나에 최대 여덟 명의 플레이어와 네 명의 관전자가 들어갑니다. 빈자리는 여전히 AI가 채우므로, 친구 네 명과 AI 두 명으로 3v3를 할 수도 있습니다.

방

방에서는 각 팀이 자리의 열이 됩니다. 들어온 사람은 인원이 적은 쪽의 빈자리에 앉으며, 여기 앉기로 자리를 옮길 수 있고, 준비 완료를 누를 때까지 그럴 수 있습니다. 빈자리에는 "AI 자리"라고 표시됩니다. 같은 팀에서는 아무도 진영을 겹치지 않으며(게임 모드가 허용하는 경우는 제외), 준비 완료는 이제 팀원과 진영이 겹칠 때 즉시 경고합니다. 방장이 시작을 시도할 때에야 알게 되는 일은 없어졌습니다. 공개 방 목록에는 형식과 이미 들어와 있는 인원이 표시됩니다.

드래프트 모드에서는 선택 순서가 모든 플레이어에 걸쳐 1-2-2-1로 돌아갑니다. 한쪽의 첫 플레이어, 다른 쪽의 두 명, 첫 쪽의 두 명, 그런 식입니다. AI 자리는 차례가 오면 스스로 고릅니다.

별 모양이지 거미줄이 아니다

두 명이면 두 컴퓨터가 명령을 직접 주고받습니다. 여덟 명이면 모두를 서로 연결하는 데 연결이 28개가 필요하고, 연결마다 자기만의 방식으로 실패할 수 있습니다. 그래서 온라인 팀 플레이는 별 모양입니다. 게스트는 방장하고만 이야기하고, 방장이 각 플레이어의 명령을 나머지에게 전달합니다. 오가는 것은 여전히 명령뿐이며 턴마다 몇 바이트이고, 모든 컴퓨터가 1v1에서와 마찬가지로 전투 전체를 돌립니다. 전투 "지문" 검사도 방장을 거칩니다.

누군가 끊기면

1v1에서 상대가 끊기면 대전은 멈추고 기다립니다. 4v4에서 그렇게 하면 나머지 여섯 명에게 불공평하므로, 여기서는 다르게 동작합니다. AI가 끊긴 플레이어의 자리를 즉시 넘겨받습니다. 모든 컴퓨터에서 같은 턴부터입니다. 이 전환은 일반 명령으로 기록되므로 리플레이와 관전자에게는 똑같이 보입니다.

끊긴 플레이어는 게임을 열고 대전 다시 참가를 고릅니다. 방장이 전투 전체의 스냅샷을 보내고, 플레이어의 컴퓨터가 장면을 만들고 따라잡는 동안 AI가 그 플레이어를 대신 계속 플레이합니다. 동기화가 맞으면 플레이어는 자리를 돌려받으라고 요청하고, 합의된 턴에 교대합니다. 그 턴은 모두가 그 전에 알 수 있을 만큼 충분히 앞선 턴입니다. 아무도 기다리며 멈추지 않습니다.

그리고 방장이 끊기면 어떻게 될까요? 그러면 중계할 사람이 없으므로 나머지 모두 재접속 카운트다운과 함께 멈춥니다. 방장이 돌아오면 게스트 각각에게 끊긴 뒤에 무엇을 봤는지 묻고, 가장 앞서 있는 쪽의 스냅샷을 가져온 뒤, 다른 사람만 받은 명령을 합칩니다. 방장이 제때 돌아오지 않으면 그 팀은 기권패로 집니다.

항복은 이제 투표입니다. 팀원의 절반을 넘게 찬성하면 팀이 항복합니다. 팀에 나 혼자뿐이라면 예전처럼 바로 항복합니다.

열린 창 여덟 개가 가르쳐 준 것

그래픽 없는 테스트는 2v2부터 4v4까지, 게스트와 방장이 끊겼다가 돌아오는 상황을 시뮬레이션하고, 모두가 같은 전투에 도달하는지 확인합니다. 하지만 실제 게임도 돌려 보았습니다. 2v2는 창 네 개로, 4v4는 창 여덟 개로, 모두 같은 컴퓨터에서 각 사람을 AI가 대신 플레이하게 했습니다. 대전 도중에 창 하나를 닫았다가 다시 열었습니다. 모든 창이 똑같은 전투로 끝났습니다. 그러는 동안 그래픽 없는 테스트가 잡지 못한 문제 네 가지가 드러났습니다.

  • 시작되지 않는 방. 모두가 기본 진영으로 들어왔는데, 팀은 진영을 겹칠 수 없습니다. 준비 완료의 경고가 바로 여기서 나왔습니다.
  • 참가를 포기한 게스트. 창 여덟 개가 동시에 로딩되자 방장의 응답이 느려졌고, 참가 요청은 한 번만 나갔습니다. 이제는 최대 20초 동안 계속 재시도합니다.
  • 한 명을 모두가 기다림. 첫 버전에서는 스냅샷을 보내자마자 자리를 돌아오는 플레이어에게 넘겼고, 나머지 일곱 명은 장면이 로드되는 약 30초 동안 기다렸습니다. 그래서 플레이어가 따라잡을 때까지 AI가 자리를 붙들고 있게 되었습니다.
  • 가장 느린 PC의 시작. 대전 준비에 8초 넘게 걸린 사람은 첫 턴 전에 AI에게 자리를 빼앗겼습니다. 이제 아직 로딩 중인 플레이어에게는 45초가 주어집니다.

코드를 읽다가 찾아낸 미묘한 문제도 하나 있었습니다. 게스트는 방장보다 몇 턴 앞서 달릴 수 있는데, 이미 AI로 지나간 턴에 자리가 돌아오면 대전이 깨졌습니다. 이 경우는 이제 전용 테스트를 갖고 있습니다.

아직 남은 것

방장이 끊기고 돌아오지 않으면 아무도 방을 넘겨받지 못하고, 그 팀은 집니다. 또한 명령은 항상 방장을 거치는데, 동맹끼리일 때도 그렇습니다. 두 가지 모두 목록에 올라 있습니다.

— Castle Arena 팀