Battle Drones—오디오 기반 멀티플레이가 가능한 분위기 있는 RTS 게임
2026년 10월 20일
제가 최근에 시도해 본 분위기 코딩(vibe coded) 게임 실험작은 Command & Conquer 스타일의 실시간 전략 (RTS, Real Time Strategy) 게임인 Battle Drones입니다 (여기서 플레이 가능). 이전 실험작들과 달리, 이 작품은 실제로 재미있게 플레이할 수 있습니다. 제가 "훨씬 더 재미있게 만들어 달라"고 Claude에게 요청하면서 여기까지 오게 되었다는 사실을 고백하는 것이 다소 민망합니다. 또한, 근처 장치 간의 게임 상태 동기화를 위해 오디오를 사용하는 멀티플레이도 지원합니다! 지금까지 구축한 내용과 그 과정에서 배운 몇 가지 것들을 소개합니다.
- Battle Drones
- 제작 과정
- v1: 초기 프로토타입
- v2: 전체 스프라이트 구현
- v3: 다양한 지형 추가
- v4: 재미있게 개선된 업데이트
- v5: Battle Drones 3D로 확장
- v8: 군도(Archipelago) 모드
- v10: 골리앗 및 에이전트 전투
- 에이전트 전투
- v11: 무작위 지도 생성
- v12: 사운드를 통한 멀티플레이
- 몇 가지 생각
Battle Drones
저의 초기 목표는 Command & Conquer 스타일로 휴대폰에서 플레이할 수 있는 RTS 게임을 만드는 것이었습니다. 저는 1995년 오리지널 버전(Red Alert도 좋아했습니다)에 대한 좋은 기억이 있었고, 그 마법 같은 느낌을 조금 되살리고 싶었습니다.
총 12번의 주요 반복 작업(그리고 주로 Claude Code를 사용한 코딩 에이전트들에 의한 321개의 커밋) 끝에, 저는 이제 모바일과 데스크톱에서 작동하며, 여러 플레이 모드와 몇 가지 지도(무작위 지도 생성기 포함), 심지어 서로 마이크 범위 내에 있는 두 장치 간의 멀티플레이까지 지원하는 브라우저 기반 게임을 갖게 되었습니다.
데스크톱 브라우저에서 실행되는 Battle Drones 비디오 데모입니다:
지금까지의 기능은 다음과 같습니다:
- 9개의 건물, 7개의 지상 차량, 6개의 공중 차량, 3개의 보병 유닛—모두 3D 모델이며, [여기]에서 둘러볼 수 있습니다.
- 전장(Fog of war)
- 공중 또는 지상 차량을 목표로 하려면 다른 무기가 필요합니다.
여섯 개의 지도, 다섯 가지 생물군계(온대, 사막, 북극, 화산, 열대)에 걸쳐—랜덤 맵 생성기
스커미시 모드(Skirmish mode)—회전 대칭 지도를 배경으로 레드 vs. 블루 팀이 대결합니다.
라스트 스탠드 모드(Last Stand mode)—한 플레이어가 가능한 한 많은 적의 웨이브에 맞서 버팁니다. 지역 효과 무기: 배리지(Barrage), EMP, 드롭 포드(Drop Pod), 스카이 해머(Sky Hammer)
**크레이트 드랍(Crate drops)**으로 보너스 자원을 얻습니다. 이벤트에 반응하는 게임 내 음악—전투가 벌어질수록 더욱 강렬해집니다.
- 다양한 게임 내 AI 페르소나(균형, 돌격, 공중 떼, 폭발, 스카이포스, 아이언클래드)를 가집니다.
AI 대 AI(AI vs. AI) 모드를 통해 이 페르소나들이 서로 싸우는 것을 지켜볼 수 있습니다. 골리앗(Goliath)—레이저 눈과 팔 포신을 가진 거대한 메크가 새로운 기지를 건설할 수 있는 능력을 가집니다.
**뮤테이터(Mutators)**가 추가 규칙이나 변칙을 더합니다.
공유된 스크립트가 여기 있습니다. 저는 Claude Code for Web에 OpenAI API 키를 환경 변수로 제공하고, 자산(assets)을 위해 OpenAI Image Generation API를 사용하도록 지시하여 기본적인 스프라이트를 얻었습니다.
여기서 v1을 시도해 볼 수 있습니다—이런 모습이었습니다:
Game screen. Down the right are text icons to build Fab, Airpad, Turret, Harv, Sting, Flak, Scout, Wasp, Raptor. There is a blocky fog of war on a 2D battlefield. There are some gems, an HQ building being attacked by badly rendered tanks, and some blue vehicles dotted around. It's not very visually impressive but it does look like a basic RTS.
RTS 게임으로 인식할 수 있으며, 건물 메커니즘과 유닛을 선택하고 지시하는 기능, 그리고 대전할 기본적인 AI가 갖춰져 있습니다.
이 첫 번째 버전은 겨우 개념 증명(proof of concept) 수준이었고, 플레이하기에는 재미가 없었습니다.
Claude는 이 초기 버전들에 Phaser 2D 게임 프레임워크를 사용했습니다. 저는 여러 번의 반복을 거쳐서야 이것을 알게 되었습니다!
v2: 전체 스프라이트
두 번째 버전(여기서 v2 시도)에서는 모든 차량에 대한 스프라이트를 추가하고 'AI 대 AI' 모드를 구현하여, 제가 직접 조작할 필요 없이 게임이 진행되는 것을 볼 수 있게 했습니다.
Claude는 OpenAI의 이미지 모델에 프롬프팅을 하여 스프라이트를 생성하는 데 상당히 능숙함을 보여주었습니다. v2 스프라이트는 public/assets/sprites 폴더에서 찾아볼 수 있습니다.
Four flying units, three turrets, a harvester and an airpad all have proper sprites now. The scrap field has a new design which doesn't look great but is at least using a graphic.
v3: 다양한 지형
여전히 재미있지는 않았고, 그래픽도 지루했습니다. 이제 10월이었고, 저는 Claude Opus 5.5로 업그레이드했습니다. 저는 다음과 같이 지시했습니다:
이 게임을 대폭 개선해 주세요. 그래픽과 게임 플레이를 더 좋게 만들어 주세요 (모바일 친화적으로 유지). 환경 변수에 있는 API 키를 사용하여 최신 OpenAI GPT 이미지 API(상세 내용 확인)로 새로운 그래픽을 렌더링해 주세요. 새로운 유닛 유형을 추가하고 게임플레이 균형을 더 잘 맞추세요. 또한 새 건물과 더 좋고, 더 다양한 지형도 추가해 주세요.
이 결과물로는 다양한 스타일의 생성된 배경 타일이 포함된 다섯 개의 새 맵이 나왔으며, 여기에서 확인할 수 있습니다. Opus는 스프라이트도 재생성하여 훨씬 시각적으로 매력적이게 만들었습니다. 여기서 v3을 시도해 볼 수 있습니다—이렇게 보입니다:
The map is now an ice map with snow and ice and broken ice - it looks really good. The vehicles and buildings have all had a cosmetic upgrade too. This is starting to look like a real game.
이제 진짜 게임처럼 느껴지기 시작했습니다! 하지만 여전히 플레이하기에는 재미가 없었고—저는 금방 지루함을 느끼는 것을 발견했습니다.
v4: 재미있는 업데이트
지금까지의 Battle Drones 실험을 통해, 코딩 에이전트가 게임처럼 보이는 것을 만들 수는 있지만 실제로 플레이하는 데 있어 진정으로 매력적인 무언가를 만드는 것은 불가능하다는 이전 믿음을 확인했습니다.
저는 이 이론을 저녁 식사 자리에서 누군가에게 공유했고, 스스로 모델들에게 제가 틀렸다는 것을 증명할 적절한 기회를 주어야겠다고 생각했습니다. 저는 휴대폰으로 Opus 5.5에 다음과 같이 프롬프트를 입력했습니다:
이 게임은 아직 충분히 재미있지 않아. 훨씬 더 재미있게 만들어줘.
이번에는 Claude Code(이 경우 Web용 Claude Code)가 설명서에서 '동적 워크플로우(dynamic workflows)'라고 묘사하는 방식으로 여러 서브 에이전트를 한 번에 오케스트레이션하는 자바스크립트 스크립트를 실행하는 Ultracode 모드로 작업했습니다.
이것은 수 시간의 작업을 촉발시켰습니다. 저는 저녁에 시작했고 다음 날 늦게까지 플레이 가능한 결과를 받지 못했습니다. 하지만 그 결과는 굉장했습니다.
v4를 여기서 시도해 볼 수 있습니다—이렇게 생겼습니다:
The lava map. Uplink satellites are being taken, crystals look better, Elite text is shown above a unit, there is an arrow marked Fight to jump to a fight, the AI vs AI mode has a speed controller - plenty of new features here.
Claude에게 자체 출시 노트를 작성하게 했는데, 주요 내용은 다음과 같습니다:
- 모든 교전과 일일 작전(Daily Op)은 선택으로 시작하며, 지고 있는 팀에게 되돌아갈 방법을 제공하고 아군들을 맵 중앙으로 끌어들입니다. 또한 두 가지 새로운 플레이 방식도 있습니다.
- 오프너(Openers): 시간이 시작되기 전에 블리츠(Blitz), 산업 시설(Industry) 또는 공중 전력(Air Wing)을 선택합니다.
- 콜다운 능력(Call-down powers): 배라지(Barrage), EMP, 드롭 포드(Drop Pod) 및 스카이 해머 궤도 폭격.
- 목표 및 잔해 수거: 업링크 중계기(Uplink relays), 보급품 낙하 및 고철 가치가 있는 난파선.
- 느낌(Feel): 전투의 역동성(combat juice), 적응형 음악, 유닛 음성 및 아나운서.
- 명령(Command): 전장 경고, 게임 속도, 저장된 분대 및 터치 위치 지정.
- 새로운 모드: 최후의 저항 생존 웨이브와 8개 임무 작전 캠페인(Ops campaign).
- 진행(Progression): 영웅, 상이 수여되는 작전 후 보고서, 경력, 7개의 뮤테이터 및 일일 작전.
전투가 더 길어지고 변화무쌍해졌습니다. 노멀 난이도에서 AI 대 AI 테스트 경기 1,200경기 중 25분 후에 여전히 결정되지 않은 게임의 비율은 14%에서 0.9%로 떨어졌습니다. 800개 이상의 고철을 뒤처지던 팀이 승리하는 비율은 24%에서 46%로 상승했습니다.
Claude가 시간이 오래 걸린 부분 중 하나는 1,000회 이상의 시뮬레이션 플레이 테스트를 진행하고 그 결과를 활용하여 기존 유닛의 밸런스를 재조정하고, 새로운 유닛을 추가하며, 새로운 기능을 도입했기 때문입니다.
v5: Battle Drones가 3D로 진화하다
'Make it a LOT more fun(훨씬 더 재미있게 만들기)'에서 Ultracode의 성공 이후, 저는 더 야심찬 계획을 세웠습니다:
모든 건물과 차량, 지형에 3D 모델을 적용하여 이 게임을 three.js로 포팅하기
이것 또한 하룻밤 사이에 끝난 작업이었습니다. v5 버전으로 깨어났을 때의 모습입니다:
Now it is in 3D - the battlefield is at a slight angle, the buildings and vehicles are all 3D models, the rocks and trees look a bit 3D as well.
새로운 3D 모델들은 모두 Claude가 TypeScript 코드로 완전히 구성했습니다.
v6 (v6 플레이)에서는 시각적인 완성도를 더 높였습니다. v7 (v7 플레이)에서는 로봇 보병(추어 부대, 로켓 분대, 저격수)과 'Condor' 수송 항공기를 추가했습니다.
v8: 군도(Archipelago)
저는 제가 게임에 실제 디자인 투입이 얼마나 적었는지 죄책감을 느끼기 시작했습니다. 지난 몇 번의 출시 동안 저는 그저 '더 재미있게 만들어라' 또는 '시각적 완성도를 높여라'라고 말하는 식이었으니까요.
AI가 v7에서 추가된 새로운 보병과 수송 항공기를 자주 사용하지 않는다는 것을 알아차렸습니다. 이들을 사용할 만한 훌륭한 전략적 이유가 없었습니다.
만약 플레이어가 Condor에 보병 로봇을 가득 싣고 지도로 보내도록 적극적으로 장려하는 새로운 게임 메커니즘과 함께 새 지도가 있다면 좋을 것 같았습니다.
이것은 제가 작성한 가장 긴 프롬프트로 이어졌습니다:
새로운 지도를 디자인해 주세요. 목표는 보병과 Condor, 그리고 공중 차량의 사용을 장려하는 다양한 전략적 동기를 만드는 것입니다.
이를 위해 이 지도는 제한된 수확기 자원을 갖지만, 여러 개의 업링크를 더 가질 것입니다. 하지만 업링크는 육상 차량이나 보병으로는 접근할 수 없는 섬에 위치합니다. 또한 공중 차량을 이용해 점령할 수도 없습니다. 이곳에 도달하는 유일한 방법은 Condor에 탑승하여 보병을 그곳까지 날리는 것뿐입니다.
군대는 항상 Condor와 한 분대로 시작합니다. 만약 군대에 Condor가 없다면, 새로운 Condor가 무료로 제공되어 본부(HQ)에서 가장 가까운 가장자리로 비행해 착륙할 것입니다. 이 무료 Condor에는 한 개의 무료 분대가 실려 올 것입니다.}```jsonencodigenerated_response:{
두 본부(HQ)는 물로 완전히 분리되어 있어야 하지만, 맵의 서로 다른 위치에 놓인 두 개의 다리를 통해 차량으로 접근할 수 있도록 해야 합니다.
저는 업링크를 두고 전투가 벌어지도록 장려하고 싶습니다.
맵은 다른 맵들보다 시간적으로 크기가 커야 하며, 여전히 정사각형이어야 합니다.
먼저 이 디자인에 대해 연구한 다음 비평해 주세요. 수정 사항에 합의한 후에만 건설합시다.
당신이 이것을 위해 새로운 생물군계(biome)를 설계할 수 있습니다.
그 결과, 플레이어가 콘도르(Condor)를 타고 보병을 투하하여 점령해야 하는 일곱 개의 섬 업링크가 있는 열대 군도(Archipelago) 맵이 탄생했습니다. 이 맵은 비교적 단순한 맵들에서 기본적인 게임 메커니즘에 익숙해진 후에는 확실히 가장 재미있는 맵입니다. v9 에디션에서는 그 맵을 좀 더 흥미롭게 만들었는데, 이제는 이렇게 생겼습니다:
Three islands, each with an uplink satellite. Blue holds one, red holds another, A blue condor is flying towards the red island, which is guarded by a red plane. There is a bridge nearby. The theme is tropical islands and looks very pleasant.
v10: 골라이앗(Goliath)과 요원 전투
저는 게임에 거대 로봇 메크를 추가하기로 결정했습니다. Pacific Rim의 제이거(Jaegers)나 Warhammer 40,000의 타이탄(Titans)을 생각하시면 됩니다.
Claude와 브레인스토밍하는 데 사용했던 프롬프트 중 일부는 다음과 같습니다:
W20K의 드레드노트나 타이탄 같은 거대 로봇을 이 게임에 추가하기 위한 아이디어를 브레인스토밍해 주세요. 플레이 경험을 향상시키고, 균형을 유지하며, 독특한 반전을 더할 수 있는 방법은 무엇일까요? 아직 너무 깊게 생각하지 마세요.
계속 브레인스토밍합시다. 저는 이것이 이동식 기지라는 아이디어가 마음에 듭니다. 이곳에서는 채집된 스크랩을 받아들이고(harvested scrap), 근처에 건물들을 지을 수 있으며(나중에 이동하더라도), 보병 유닛도 생산할 수 있습니다. 콘도르와의 상호작용이 멋질 것 같지만, 그게 무엇일지는 모르겠습니다.
아이디어: 피해를 입으면 일부 무기 발사 능력을 잃습니다. 기본적으로는 아이 레이저(lancers 같은)와 팔 캐논(titan 같은), 그리고 두 개의 어깨 장착 박격포, 게다가 부대 규모의 기관총을 갖추고 있습니다.}{