Void Armada is a landscape rebuild of the Battleship game from Family Games, reimagined as a space marine fleet battle. Both 10×10 grids are on screen at the same time, asteroid fields block some of the cells, and every hit lands with pop-art HIT! and SUNK! stickers, giving it the bright, chunky feel of games like BattleTabs.
Instead of taking one shot per turn, you spend energy on five different weapon systems. You lock onto a target and then hit FIRE!. The server is in charge of the game. In the arcade, the game provider places the fleets, runs the AI and settles the bet, and the Unity client just draws whatever state it’s sent, which makes every battle cheat-proof.
Readable at a glance
Both boards are always visible, with big HUD bars and stickers that tell you exactly what just happened.
Choices every turn
The energy system turns "pick a cell" into "pick a weapon, then pick a cell".
Server is the referee
All the rules live on the backend, so single-player and online games play by exactly the same honest rules.
02Screenshots
These screenshots were captured straight from the game. Tap any of them to see it bigger.
Main menuHow to play - fleet, energy and arsenalChoose your enemy - Veteran or WarlordYour turn - both fleets among the asteroidsAiming an Orbital BarrageDirect hit - fire againEnemy turn - incoming fire
03Core Loop
1
Choose your enemy
Choose to play against Veteran or Warlord and set your stake. Both fleets are placed around the asteroid sectors for you.
2
Charge
Your energy builds up every turn, and with every hit or ship you sink.
3
Strike
Fire the Plasma Lance for free, or spend energy on a barrage, railgun, scan or shield, and then hit FIRE!.
4
Sink the fleet
When you score a hit, you get to fire again. The first commander to sink the other fleet wins the battle and the payout.
04Key Features
🔫
Five weapon systems
The Plasma Lance is free and lets you fire again on a hit. There’s also an Orbital Barrage that hits in a plus shape, a railgun that sweeps a row or column, a 3×3 scan and a shield that blocks one hit.
🤖
AI commanders
Veteran goes after damaged ships and finishes them off, and beating it pays 1.30×. Warlord uses heat-map targeting and special abilities, and beating it pays 1.80×.
🌐
Play a friend
Open a private room, send your friend the 4-character code, and the battle starts as soon as they join. It’s free to play, with a move timer and a rematch option.
☄️
Asteroid sectors
Blocked cells change where fleets can hide and how the weapons sweep across the board.
📱
Always landscape
If your phone is stuck in portrait, a "virtual landscape" mode rotates the UI and the camera for you, so you don’t have to unlock screen rotation.
💥
Pop-art feedback
HIT!, FIRE AGAIN! and ENEMY HIT! stickers, a turn timer and a live fleet tracker for both commanders.
05What I Built
I made this game on my own, so I handled the design, the code, the art pipeline, the audio and the release.
I designed the game, including the set of weapons, the energy system and the asteroid rules.
I built the server-side backend in TypeScript, and later moved the game over to the game provider’s staked battle API and SignalR rooms hub.
I built the Unity client in C#, including the UI, camera framing, the lock-target-then-FIRE input and the code that draws the server’s state.
I generated the ship models, commander portraits and logo with Blender Python.
I designed the weapon and impact sounds, and built an autopilot harness for visual testing.
06Under the Hood
Thin client, authoritative server
The client never holds the rules. It sends what the player wants to do, such as fire, scan or shield, and draws whatever state comes back. The first server was a TypeScript GameDefinition (validated with zod, using REST and WebSocket). The arcade version plays on the game provider, which places the fleets, runs the AI and settles the bet.
Virtual landscape
On native builds, the operating system locks the game to landscape. On the web, the page asks the host to rotate, then goes fullscreen and locks the orientation. If the screen is still held in portrait, the UI is rotated −90° and the camera is rolled 90° to make up for it.
One layout for every screen
The UI is laid out on a canvas of at least 1280×720 at a fixed pixel scale and stays clear of notches and rounded corners. It was tested at 19.5:9, 16:9 and 4:3, on unfolded foldables and in rotated portrait.
Rooms over SignalR
Play a Friend runs on the provider’s /hubs/rooms SignalR hub. It has private rooms you join with a 4-character code, a move timer, a forfeit if you leave, and a rematch once both commanders ask for one.
07Art & Audio Pipeline
Ships from code
generate_ships.py builds the five warship classes from a shared kit in Blender, and the same scripts render the portraits and the Void Armada logo.
Layered weapon sounds
tools/build_sfx.py layers free recordings from OpenGameArt with a generated deep bass thump to create each firing and impact sound.
Music & fonts
The music and fonts are free and credited, both on the in-game About screen and in CREDITS.md.
08Challenges & Solutions
ProblemMobile browsers won’t reliably rotate a page into landscape.
SolutionI used three layers of fallback. First the game asks the host app to rotate, then it locks the orientation after the first tap, and if that still doesn’t work it rotates the game itself.
ProblemFitting two full boards and a HUD on a short phone screen.
SolutionThe camera framing keeps the active board between the HUD bars at any screen shape.
ProblemChecking every stage of a battle by hand after each build.
SolutionAn autopilot mode (-autopilot ai -shots <dir>) plays a whole battle against the AI and takes a screenshot of every stage at any window size.
Designing the server protocol first meant single-player and multiplayer could share exactly the same code.
On the mobile web, screen orientation is something you have to negotiate, not something you can simply set.
An autopilot that takes screenshots is the cheapest QA team you’ll ever have.
Credits. The ship models, portraits and logo are all original and made in Blender. The third-party music, sound effects and fonts are free to use and credited in the game and in CREDITS.md.