Introduction
SpellShips is a TCP multiplayer MOBA, designed for LAN play between friends. It’s a mix between World of Warships and the custom map “Battleships” from Warcraft III. It uses BGE 2.79.
The name is literal; it’s warships, but with MOBA “spells”. Currently there is one ship with a “spell”, but more will come.
Note that it was developed on PC. I didn’t put anything platform specific in there, but it probably needs more path expansion in the code to run it on OSX. Keen to hear anyone’s experiences trying to get that to work.
(^ This picture shows three clients on the same computer playing in the same game)
Features
- Multiplayer (TCP)
- Basic AI that paths and shoots
- Working shop for changing ships and weapons
- Two teams
- Minimap
- Pretty water (Thanks Martish!)
Current state
You can currently ‘play’ with multiple people. You can see them in game, shoot at them to cause damage, kill them (and they’ll respawn). Kills and deaths are tracked. The game ends when the enemy base has taken 10k damage. AI’s will spawn and meet each other in the middle of the lanes like standard MOBAs.
Download links
Windows Distributable (Ready to play with all libraries/binaries included - launch start.bat)
Just the blend and python libraries
Instructions for playing
- Extract the distributable ZIP
- Run “start.bat” ( you may need to unblock Blenderplayer)
- Enter a name
- Click “host” if you want to host a game, otherwise enter an IP address and click “join”
Permissions
With the exception of the water (Martish made it, ask him about his permissions), do whatever you want with the code and assets in the Blend (and python scripts), as long as you do not do anything to hinder my own development e.g. don’t try licensing any of this stuff so that I can no longer use/sell/distribute/etc. You can use it commercially without attribution, although attribution would be nice.
Notes
I mainly uploaded this as a way to demonstrate TCP that doesn’t make the main BGE thread lag. Currently I’m still using the sendAll command to send data from the client to the server. Under heavy load, this can still cause micro-pauses in the client if the buffer can’t fit all of the message. It’s not that difficult to fix (see how the server does sending, for example), I just haven’t got around to improving it yet because it hasn’t been causing me any grief during testing.
Default port is 5775






It works in 2.79 and the UPBGE branch with the old phsyics (was it called “bullet”? I don’t remember). Haven’t tried it in any new UPBGE builds.