Mythic-forge v2

Rise of the JavaScript Game engine

Game engine as a Service - powered by RestHub.js

If you’ve never heard about Mythic-Forge, have a look at the first version.

After a first implentation with a Java-based server and two Flex web applications, it was obvious that Flex was not the right solution.

At work, we were using the RestHub framwork since several months, from which I was an active contributor.

It was the perfect opportunity to combine pleasure and work, and Mythic-forge saw its authoring and game UI replaced with JavaScript applications (respectively Promotheus and Japet).

Technologies adjustments

No more Flex Web applications means a new communication channel between UIs and server. As the game is multiplayer and online, this channel has to be always wired: web sockets seems a good candidate (early 2011: not widely supported). But web sockets are just… sockets. I made a quick implementation of the STOMP protocol in Java for my server (none available at this time).

It allows to share state between players and server, but also between game developers.

Thanks to RestHub JavaScript stack, and the ACE JavaScript editor I was able to entierly rewrite my game authoring UI… in 4 weeks, which was the quarter of the time spent on the Flex equivalent.

The UI was far more easy and beautiful, with notable additions (shortcuts, syntax highlighting, code validations, icons). And automatically testable with Selenium

Map authoring with Prometheus UI

Map authoring with Prometheus UI

Push to deploy your game

But the biggest addition was the Game UI authoring. Instead of the generic UI customizable with a JSON file, the game developer is able to code its custom game UI in JavaScript.

Promotheus include a very simple IDE proposing a file tree and a tabbed editor with JSHint validation and syntax highlight. Files (notably binary ones) can be uploaded. Any JavaScript library can be used, the single constraint is to use RequireJS

Every file save was linked to a commit in a git repository on server side. Finally, a deploy button make a git tag, concat and optimze all JS and CSS files (thanks to Require’s optimizer), and copy it to a public folder accessible to players.

It allows game designer to develop within a staging area (using the real game objects and maps), and roll out they work when ready, without game outage !

The game authoring perspective with JavaScript validation

The game authoring perspective with JavaScript validation

Tales of Eethia 2

In July 2011, I started to rewrite my first game, using the online IDE provided, always using the RestHub JavaScript stack. In January 2012, this new version was ready, far more successful than the first one.

Game lobby

Game lobby

Outside the base

Outside the base

Inside buildings

Inside buildings

But I didn’t put efforts on communication, and very few people had played. Discouraged, I gave up.

Mythic-forge quick features tour