We’re very proud to announce Powderkeg, a synchronous, real-time, action-packed multiplayer browser game! Give it a try at powderkeg.artillery.com! (Google Chrome or Firefox is required.)
Powderkeg represents the first step in building the Artillery Platform, which will enable game developers to easily build high-quality games that run in the browser without plugins. When speaking with developers the feature which is most attractive is easy multiplayer integration.
Imagine building a game where player input all looked the same even if players were on separate continents, like a game console whose controllers had really long wires. Now imagine if you didn’t host servers yourself and you never needed to write a line of lobby or matchmaking code. This is what we want to offer as part of the platform.
We’ll present the details of our platform later on. In the meantime, go ahead and play a few rounds, and let us tell you about how it works.
Powderkeg works by running the game simulation in exactly the same way on each client. This is accomplished by initializing each client’s pseudo-random number generator with a server-provided seed and transmitting the same input to each client. Clients send their input to the server, the server quantizes all input into frames (or “ticks”), and over time each frame is sent to each client which replays the input in its own simulation, resulting in the game you see.
If the client waited for input before showing any kind of player movement, you’d notice a delay between pressing an arrow key and your player moving. That’s why the Powderkeg simulator supports “hinting” – when you press a key, the runtime asks the simulator if your player can actually move in that direction and moves him if it can. The result is very responsive game which mixes strategy with split-second skill.
Latency is problematic for all networked, multiplayer games. Everyone always wants to connect to a nearby gameserver with a low ping, and players with high pings incur hatred and pitchfork mobs. TCP, which WebSockets are built upon, compounds the problem due to its packet-ordering guarantee.
We thought it would be a good idea to provide information about each players’ connection, just as you’d find in any large multiplayer game, so that players can easily identify who is slowing down the game. On each player’s info square you’ll see a “signal meter” that represents that players’ connection quality. If you mouseover the meter you’ll see some more details:
The tooltip shows information collected during the last run of the network latency test. “Noise” is the percent of messages which took longer than the standard deviation, “ping” is the average ping time of non-noisy packets, and “max” is the longest sample collected.
Powderkeg performs a network latency test when you open the game to test the delay between you and our five game-serving regions around the globe. When you click “Find a Match,” your latency is used to match you with people closest to you geographically to ensure low lag and a glitch-free experience.
Most of the game art is laid out in 10 sprite sheets – explosions, powerups, environment, one for each color player, and a few more. The UI is mostly HTML and CSS, when integrates with our game’s runtime easily. Artwork and UI assets are loaded intelligently so that anyone opening powderkeg.artillery.com will see a menu as quickly as possible.
Powderkeg should display at a constant 60 frames per second on Chrome and Firefox. You shouldn’t see any jitter despite the hundreds of entities used to make the map and explosion tiles. Because of our focus on multiplayer support, we didn’t spend a lot of time on building our own graphics engine or WebGL, and it turned out that using the canvas element is fast enough.
All of the art in the game was produced by Adam deGrandis, a multi-talented artist and all around awesome person. If you’re looking for an artist for your next game, we recommend him with the highest of honors.
We found high-quality sound effects and music from Soundrangers and AudioJungle. Since we built the game targeting Chrome and Firefox, getting all of that audio into the game was pretty easy. The HTML5 audio tag works well in the latest versions of Firefox, but the Web Audio API in Chrome is even more straightforward.
We’re pretty excited about what we’ve accomplished with Powderkeg so far, and we’re even more exited about what’s next. We’
If any of this interests you, please sign up for our mailing list to receive beta invitations as our platform becomes available. If this is so interesting that you’d like to work with us, great news! We’re hiring.