An open-source retro multiplayer space-shooter playable in the web browser.
An open-source retro multiplayer space-shooter playable in the web browser. Read more
About this project
Xpilot.IO is a retro, 2-D space-shooter, playable in the web browser. It's inspired by the original Xpilot for Unix, and Subspace: Continuum.
The Xpilot.IO demo is currently just a single-player against bots. But, with your help, it will become a multiplayer game with these features:
- Multiplayer - fight with real people instead of AI
- Game Modes - capture the flag, king of the hill, zombie mode, etc.
- Upgrades - bigger, prettier maps, new weapons and armor
- Improved Client - smooth on all browsers, touch controls, lag-compensation
- AI Interface - make your own bots and fly them against humans
Open Source - an Elm client and Haskell server will be released on GitHub
To implement multiplayer, most of the game engine will be moved onto the server. Then we'll use websockets to communicate the game state with all the web browser clients. The server will be written in Haskell, an amazing functional programming language, and one that can easily scale in parallel so we can handle many players.
The first supported game mode will be free for all, where players wander around and shoot one another for no apparent reason. As funding permits, I will be adding more:
- Capture the Flag - grab the other team's flag and bring it back to your base to win.
- Team Infection - kill your enemy, they join your team. Game ends when everybody is on the same team.
- Zombie Mode - zombie ships can't shoot; they can only crash. Anyone they crash into turns into a zombie. Zombies respawn out of the super-tough Alpha Zombie ship, who the human ships must kill to end the plague.
- King of the Base - fight for control of a central base.
- Strongholds - action and team strategy--gather resources, build turrets and walls, upgrade weaponry, build helper drones, and choke out the other team until you have the strength to invade their base.
In the demo, there's only one map and it's just a bunch of rectangles and it's very small. In the future, the maps will have more angles and variety in shape and color. In some game modes we may even have destructible walls. We'll also be able to functionally generate maps.
The client and server will have advanced lag compensation built-in, so that your ship's control will be responsive, even when the network is slow. We'll use interpolation techniques to keep other ships moving smoothly, and we'll use synchronized random number generators to minimize network traffic for generated particles.
We'll add touch controls for tablet users, and possibly make "apps" for Android and iOS that will launch the game in full screen.
We'll also experiment with WebGL for faster rendering, and with using fixed-sized mutable arrays to keep the garbage collection constant.
The original Xpilot has been used as a test-bed for artificial intelligence, as published in several academic conference and journal articles. Gary Parker, professor of Computer Science at Connecticut College, uses Xpilot-AI as a fun way to teach his advanced AI class. Students learn to use neural networks, genetic algorithms, and fuzzy logic to control ships.
The original game demo, written entirely in Elm, will be released as open-source on Github. The game demo showcases a nicely abstracted game engine that can be re-used to make other web games.
We will release open-source version of the client and server that will be useful for local area networks and perfect for teaching environments. The version used on Xpilot.IO will have lag-compensation and anti-cheating code that we'll need to keep secret to make it difficult for people to cheat.
Here are the approximate amounts of money I need to develop Xpilot.IO. The first $15,000 is the most important because it will get the game up and running so we can start fighting each other.
- Multiplayer client and server
- Lag compensation
- Touch controls
- Only one mode: Free for all, with bigger maps.
- Optional Logins, to keep track of nicknames and stats
- AI Interface with documentation
- Open-sourced demo and low-latency client/server for local usage.
Stretch Goal: $30,000
- Fancy maps, better collision detection and physics
- Multiple Xpilot.IO game servers in different regions of the world
- Capture the Flag game mode
- Team Infection game mode
- Zombie game mode
- King-of-the-Base game mode
Really Stretched Goal: $45,000
- Ability for people to run their own servers that anyone can join through Xpilot.IO
- Strongholds real-time strategy game mode
Risks and challenges
Programming in languages like Haskell or Elm is very nice because they have strong type systems and discourage or forbid you from doing very sloppy or incorrect things, or taking shortcuts that will tangle up and ruin your program later. While it might be more challenging to use Haskell at first, I'll end up with very clean code that easy to build on to add new features or modify old ones.
You can see what I've already accomplished with the game demo I've written in Elm. Making the server-side game engine in Haskell will be nice because I will be able to use type classes like Monads. I love programming in Haskell and I'm excited to get started on this project. Also, I'm already addicted to the Xpilot.IO game demo, and I'm eager to play against real people instead of just Mako and Sid.Learn about accountability on Kickstarter
Support this project
- (21 days)