Fork me on GitHub

WPilot A space journey in your browser

Welcome to WPilot. WPilot is a browser-based, multiplayer, space shooter inspired by old classic such as XPilot, Thrust and Gravity Force.

The game is a "proof-of-concept" project, where we are trying too push what's possible in browser without using any third-party plugins. The game is built using HTML5 technologies. Read more

Game options

Sound is currently disabled in Google Chrome.
Your browser does not support Javascript, or you have manually disabled it. Guide to enable Javascript
Server List
Server name Ping Region Map Players  
Hi, refresh server list to play
Loading server list...
No servers available? Start a server of your own or watch a video in the Media section.
The Server list is disabled. Your browser is currently not supported.


The gameplay is pretty simple, avoid getting shoot while shooting your opponents. The first player that reaches the score limit wins the round.

Controlling your Vessel

Your ship is easy to maneuver, but hard to master. The up-arrow will thrust your ship in current direction. Use your left- and right-arrow to rotate your ship left and right. Your only defense against walls, and opponent bullets is your shield, access it by down-arrow. While activated, you are indestructible. The shield isn't free of charge though, it will quickly drain our energy.

Keyboard bindings

There are two ways to defeat your opponent and get points. You can either bump into them with your shield activated or you can shoot them with your canon. Each bullet cost a bit of energy, so try to save some incase you'll need the shield.

The Warmup round

Each game starts in warm-up mode. It let's you try things out and battle a bit until enough players are ready.

When you are ready for some real action, press the r-key. When enough players is ready, the game starts.


What would a space-shooter be without compelling enhancements? WPilot contains three kinds of destructive powerups, each one improving your vessel's arsenal. Powerups are possible to combine and can help even the worst pilots to get a few kills.

  • Rapid fire significantly increases your reload rate and lowers the energy cost of each bullet.
  • Ricochet gives the bullets wall bouncing abilities, opponents will quickly lose track of some projectiles and succumb to your superiority.
  • Spread fire, the most feared enhancement known to WPilots, compliments your cannon with two additional side cannons to satisfy the spray and prey concept.

Winning a round

You score a point when blowing up an opponent and you will loose a point when crashing into a wall due to bad maneuvering skills. The first player that reach the round limit wins.

Talking to other players

You can taunt, chat or salute your opponents by pressing the enter-key. The prompt can also be used to issue commands. For example, you can change your name in-game by typing "/name your_name" (without the quotes).


WPilot contains a total of five official maps. You can create your own map with the built-in map-format.

Battle Royale (6-8 players)

This is the built-in standard map. Search and destroy your opponent in the outer rim or try to get some powerups in the center area.

Four corners (6-8 players)

Four areas with several small passages between them, camp a single area or outmaneuver your foes in the passages?

DIY DIE (8 players) by Wade Penistone

A small minimal map, designed for maximum conflict.

The Passage (6-8 players)

The map contains two main areas. Each area is separated by the wall of death. The only way to go between the areas it to thrust through the small passages which is hard, so be careful.

Gems (6-8 players)

The map contains two small rooms containing powerful powerups. Risk getting ambushed for the ultimate power.


We have recorded a couple of videos of WPilot in action. The videos can be found in our channels over at Youtube and Vimeo.

We appreciate new material, please let us know if have something you wish to contribute.

Browser compatibility

WPilot is unfortunately not playable in all browsers. This compatibility list helps you find a browser that is supported by WPilot. The browser rank gives you an indication of how well the game perform.

The Recommended indicates that the browser is fully supported. There can be some quirks but nothing major.

The Not recommended indicates that the game should run, but that there's one or more major quirks that causes the game to run badly. Read the description for more information.

The Not supported indicates that the game won't run at all. There may be support for the browser in a future release, but no guarantee.

Project goal

Yesterday's browser wasn't built to handle fast graphics applications and low-latency game network protocols.

This is about to change dramatically, the browser standard factory is currently cooking up some very interesting new features for our browsers. New HTML5 technologies such as Canvas, WebSocket and WebGL will change the way we think of games and applications in the browser.

The goal of this projects was/is to test how far we can get using only the browser. No third-party plugins such as Flash, Silverlight and Unity3D. (Not entirely true though, Flash is used to emulate the WebSocket interface in browsers that lacks the feature)

As you can see the results so far is pretty impressing. The game engine runs at 60 ticks per second. Each game tick handles collision data, movement and game rules. The server is constantly sending position updates to each client which requires a low-latency connection between the two parties.

The native implementation of WebSocket (In Safari and Google Chrome) handle this very well. The fallback plugin is kind of unstable on the mac but seems to do a good job on Windows machines.

WPilot and similar applications will be more stable and faster as browser vendors continues to implement new and exciting features listed in the HTML5 draft.

Running your own server

So you are interesting in setting up a server of your own, that's great! The entire server is built in something called node.js. Node.js is a framework built on top of Googles lighting fast Javascript engine V8

First, download and install node.js (see instructions on project homepage). Then, download the latest version of WPilot. Extract the zip to directory of choice. All server configuration is done via a set of command-line switches. You can get list of all available switches by typing:

$ ./wpilots.js -H

You probably want to change the server name, region and port no. Use the --name switch to change name, the --region switch to change region and the --ws_port to change the TCP port to listen on.

The WPilot server has a built-in HTTP-server that delivers all client releated data. The server is by default started and is serving the data at port 8000. Set the --http_port switch to 0 to disable HTTP server.

The current version of the server is a so called BETA version. Things can break. You can put server in "debug-mode" by adding the --debug switch, which will print additional debug information in the console. This may help you to track down bugs.

Public server list

We have limited server capacity, so please concider to list your server in The Public server list (the list at the top of this page).

Send your "ws://" host address to email to dahlberg.johan AT gmail com. We will list it as soon as possible.

You can also fork the git repo and add the address directly

Map cycling

WPilot comes with a set of maps. All maps is located in the the "$INSTALLDIR/maps" directory. You can choose to circle between multiple maps at startup. Use the --map for each map you want to play. It's also possible to change map in-game.

In-game administration

As an administrator you can change maps and kick players in-game. You need to start the server with the switch "--admin_password password" (where password is your password), this enable the in-game admin mode. To authorize you in-game, type:

/sv_password password

After authorization you can issue admin commands. For example, the command:

/sv_map maps/battle_royale.json

will change map to Battle Royale. You can also kick unwanted players with:

/sv_kick player_name reason

Note: The reason argument MUST be entered in order to kick someone.


This is an Open Source project, anyone can download and play around with the code.

Reporting bugs

The easiest way is to post an issue ticket over at GitHub. You can also mail me at dahlberg.johan AT gmail com.

Contributing with code

Bug fixes and optimizations is appreciated. If you are an expert on Opera or maybe find a way of getting this to work on IE, we'd really appreciate your contribution to the main project.

First fork the WPilot GIT-repository with the following command:

$ git clone git://

When you are done with your bug-fix or performance increaser, press the "pull request" -button in your forked repository.


Lead developer - Johan Dahlberg
Collision coding - Linus Larsson
Original sounds - Emanuel Dahlberg


This software is released under a MIT-style license. You can do pretty much what you want with it.