밀리버스
실제 세계 지도 위에서 벌어지는 Web3 영토 전략
지구의 실제 좌표를 격자로 잘라 타일로 만든다. 타일을 사고, 무기와 병사를 배치하고, 다른 플레이어의 땅을 빼앗는다. 전투의 결과는 그 지역의 실제 날씨와 시각에 영향을 받는다.
왜 이렇게 만들었나
2022년에 메타버스 플랫폼을 만들었다가 접었다. 그때 배운 것이 하나 있다 — 엔드골이 없으면 사람이 남지 않는다. 아무리 잘 만든 공간이어도 '무엇을 이루러 가는 곳'이 아니면 두 번째 방문이 없었다.
그래서 다음 것은 목표가 분명한 것으로 만들었다. 땅을 갖는다. 빼앗긴다. 되찾는다. 지도 위에 내 색이 늘어나는 것이 눈에 보인다. 로블록스와 마인크래프트가 살아남은 이유가 그것이라고 본다.
그리고 가상의 지도를 새로 그리지 않았다. 서울, 도쿄, 워싱턴, 베이징 — 실제로 존재하는 도시의 실제 좌표를 쓴다. 내가 사는 동네가 게임판이 되면 애착이 달라진다.
전쟁은 어떻게 일어나는가
타일에는 세 가지 상태가 있다. 주인 없는 빈 땅은 그냥 사면 된다. 주인은 있지만 무장하지 않은 땅은 민병대가 막아선다. 무기와 병사가 배치된 땅은 그 전력만큼 되받아친다.
공격은 내 타일에서 출격한다. 병사가 없으면 전력이 0이고, 맨몸으로 나가면 반드시 진다. 그리고 지면 출격했던 타일을 빼앗긴다 — 공격에는 대가가 따른다.
혼자 커지는 것도 마냥 유리하지 않다. 상대보다 타일이 많을수록 공격에 불이익이 붙는다(2배 보유 시 -6%, 10배면 -25%). 1등이 판을 굳히지 못하게 하는 장치다.
그래서 뭉친다. 동맹끼리 연합 작전을 걸면 1등 플레이어의 여러 타일을 한 번의 공격으로 함께 친다. 빼앗은 땅은 각자의 전투 기여도에 따라 자동으로 나뉜다. 대신 작전이 완전히 실패하면 참가자 전원이 출격 타일을 잃는다 — 같이 이기고 같이 진다.
- 병사와 무기의 등급·수량 — 전력의 기본
- 민병대 보정 — 무방비 타일 공격은 공격자가 유리(민병 전력은 공격자의 65~95%)
- 강자 페널티 — 보유 타일 격차가 클수록 공격 불리
- 날씨·낮밤 — 아래 실시간 데이터 항목 참고. 공격·방어 양쪽에 대칭 적용
실시간 데이터 — 실제 날씨가 전투에 들어온다
전장 상태를 계산할 때 그 타일의 실제 좌표로 공개 기상 데이터를 불러온다. 게임 안의 날씨가 지금 그 도시의 날씨다.
가져오는 값은 기온·풍향·풍속·기압·습도·일출일몰 시각이고, 여기에 천문 계산으로 낮과 밤, 달의 위상을 더한다. 이 값들은 화면에 파형과 나침반, 태양 궤적으로 표시된다.
중요한 설계 하나 — 날씨와 낮밤 보정은 공격·방어 양쪽에 똑같이 적용한다. 한쪽만 유리하게 하면 시차가 곧 실력이 되어, 사는 지역에 따라 유불리가 갈린다. 그건 게임이 아니라 지리다.
- Open-Meteo — 기온·풍향·풍속·기압·습도·일출일몰. 무료 공개 기상 API
- 천문 계산 — 낮/밤 판정, 달의 위상
- OpenFreeMap — 지도 타일. OpenStreetMap 기반 공개 지도 데이터
- 실제 도시 좌표 — 서울·도쿄·워싱턴·베이징 등의 위경도를 격자로 분할
무기와 군사 배치
무기와 병사는 각각 타일에 배치한다. 어느 타일에 얼마를 두느냐가 곧 방어선이다. 전선은 넓히기 쉽지만 지키기는 어렵다 — 모든 타일을 무장할 자원은 없다.
원클릭 자동무장을 넣은 이유가 이것이다. 5단계 티어 중 하나를 고르면 빈 땅에 무기와 병사를 한꺼번에 배치한다. 새로 온 사람이 '무엇을 얼마나 놓아야 하는지' 몰라 이탈하는 것을 막기 위한 장치다.
자동전투는 적을 공격하는 데만 쓴다. 도시 1·2·3위 지휘관을 찍어 표적으로 고정하면 모든 공격이 그 한 명에게 쏟아진다 — 판을 쥔 왕부터 끌어내리는 집중포화다. 빈 땅 자동 확장은 뺐다 — 넣었더니 경제가 무너졌다.
하는 방법
- 도시를 고르고 지도에서 빈 타일을 드래그해 산다
- 산 타일에 무기와 병사를 배치한다 (원클릭 자동무장으로 한 번에 가능)
- 상대 타일을 골라 공격한다. 출격 타일에는 병사가 있어야 한다
- 자동전투를 켜고 도시 1·2·3위 지휘관을 표적으로 고정하면 그 영토를 집중해 노린다. 1위를 끌어내리면 5,000, 2위 3,000, 3위 2,000 골드의 현상금이 붙는다
- 공격받으면 즉시 알림이 온다. 알림을 누르면 공격당한 도시로 바로 이동하고 상대가 표적으로 자동 고정돼, 한 번에 반격한다
- 리더보드는 30초마다 갱신되며 순위가 오르면 ▲, 내리면 ▼, 새로 들면 🆕로 실시간 표시된다
AI와 공개 데이터 활용
이 항목은 확인된 것만 적는다.
개발 전 과정에 AI 코딩 도구를 쓴다. 1인 개발로 Next.js + Supabase 기반의 실시간 멀티플레이 게임을 운영 중인 것이 그 결과다. 전투 계산, 실시간 동기화, 다국어(4개 언어, 270개 이상 항목)를 모두 이 방식으로 만들었다.
게임 안의 이미지 자산은 생성형 AI로 만든다.
공개 데이터는 위 '실시간 데이터' 항목에 적은 그대로다 — Open-Meteo 기상 데이터와 OpenStreetMap 계열 지도 데이터를 실제 게임 로직에 넣는다. 장식이 아니라 전투 결과를 바꾸는 입력값이다.