Octjective is a simple freeware videogame written in HTML5, CSS3, NodeJS, C++ and Erlang (CouchDB). The basic idea was to create a game that's very easy to play and understand.

More than anything else, the game was made to explore the latest front end and server side web technologies, and see how they can be used to create high performance, network based games, that can make use of more than just keyboards and gamepads...


Playing the game is simple. First, download the game, start it, find any Windows or Mac compatible USB joypad, plug it in, and then use the game controller to hit the targets as they appear. The game can also be played with WASD and cursor key controls, whether a controller is plugged in, or not. Check out and click on the images in the next few panels. The captions will explain the game and it's rules in further details.
There are two modes of play. In the default mode, the action takes place across multiple stages of increasing difficulty (there are currently 3 stages). If you're online, your current score is compared against the online leaderboard scores as you play. When online, the game's ruleset (number of stages and general difficultly), may be updated remotely. When offline, the game will store your top 3 local scores.  
During play you will be presented with "wave" after wave of targets. Hitting a consecutive number of waves in a row will increase your "chain" value. If you manage to chain a certain number of waves (currently 4) you will receive an "octave" score bonus. If you fail to hit any target in a wave, or completely miss a target, you will lose a life.

The game client is written in JavaScript running on Webkit (Node Webkit). The joypad control module was written in C++ against Google's V8 engine running on top of Node JS. The joypad code implements the SDL2 media library. 

As for the game API and website server, most of the code was again written in JavaScript running on Node JS. Raw Connect is used in preference to full fat Express. Websockets are provided by the Einaros WS node module. And CMS and game score data is stored on a local Couch DB instance, with Erlang views applied to speed up data retrieval.
Renrick "Raskie" Charles (c)2015