Solstice Submarine: Capture the Fork is a simultaneous-turn-based CTF (capture the flag) game. You will play as one of the characters from the Solstice Submarine universe in a thrilling competition of strategy and guile. Make your best attempt to steal the fork of the other team while defending your fork from being stolen by your opponent and his clone!
When I started putting together Solstice Sub: CTF, I had a few design goals in mind. I wanted to make a game that was:
- Playable in a web browser on any device, whether it be desktop, tablet or phone.
- Multiplayer across any permutation of devices.
- Architected to share as much code across singleplayer and multiplayer as possible.
- Part of the Solstice Submarine universe, which I contribute to with Donna Almendrala every holiday season.
I quickly settled on the idea of a turn-based game, as that seemed to lend itself to the simplest multiplayer architecture. After spending some time thinking about turn-based multiplayer games that I admire, I decided that the experience should be similar to the multiplayer of one of my favorite games, "Legend of Zelda: Phantom Hourglass." I figured that gameplay would be symmetrical for the first playable version. I had a mind to add random powerups, but felt that it would be best to stick to shooting for a basic game first.
Solstice Submarine: CTF is nearing completion of basic game play. Here are some technical achievements that I am proud of:
- Viewport scales responsively to accomodate for both pixel density and screen size.
- Renderer only redraws regions of the scene graph that have actually changed.
- Singleplayer is structured identically to multiplayer, thanks to a client class stubbed out with AI logic.
- Picking, pathing, fog of war, sprite animation, scene graph and other engine features all written from scratch.
- Game maps are generated from an interpreted JSON configuration.
The Solstice Submarine is a yearly comic / digital experience that Donna Almendrala and I work on together, but Donna is the true artist between the two of us. She draws and screen prints the entire comic herself, and is also responsible for the amazing artistic panels on the left, right and bottom sides of the game viewport. A digital copy of this year's Soltice Submarine mini-comic has been included in this repository courtesy of Donna.
All of the sprites used in the game are original artwork by both Donna and me:
Currently the only server dependency is Node.js. After you have installed Node.js, clone this repository and run the following command in the repository root:
npm installIf you are hacking on the code, you might also want to install grunt.js and run:
grunt watchWhich will automatically handle compiling JavaScript and templates. To start the server, run:
node ./lib/server.jsThis project wouldn't be possible without the following supporting code, assets, tools and frameworks:
- Three.js
- Backbone.js
- Underscore.js
- Lodash.js
- Require.js
- jQuery
- Modernizr
- Handlebars
- Q
- Tween.js
- Stats.js
- Bitmap font from Spicypixel.net
- Express
- Express Persona
- Grunt
- Socket.io
- AMDefine
- Normalize.css
- HTML5 Boilerplate
I would like to make a special call out to Three.js. I ended up not using Three.js for this game, but I spent a while trying to come up with a good approach to a 2D / 3D hybrid engine. Three.js is a really cool library, and even though I ended up not using it, I adapted the vector, rectangle and clock classes for use in my own code base.