Mythic-forge v1

Game engine as a Service

An online service for game developers

Playing games is fun, but creating games is funniest. Playing with others make fun even greater. And playing from everywhere at anytime is a must have.

So the idea behind Mythic-forge was to create online multi-player games. But games that can evolve and grow, allowing players to invest time and effort on story telling.

Because developing such games is a long-running process, Mythic-forge comes as an online service itself.

It’s splitted in two:

And powered by a REST API server (Chronos)

A major concern was to have something really agile: while the game developer enriches its game (maps, objects, characters, actions…), the game client has to reflect those changes. And a full rebuild and redeployment was not acceptable, so dynamic technologies was choosen to give Mythic-forge enough flexibility and dynamism.

Serious gaming

At this time (April, 2009), I was starting my career as lead developer at Atos Worldline, and I needed to improve my knowledge on Java Web Services.

This side-project was not only for having fun, it was a pretext to learn the just-born Java Spring ecosystem.

All this work was really valuable as it helped me to be more confident in my daily work, and to innovate a lot.

Functionnalities

This first version proposed from Game developer perspective:

From player perspective:

Living addition of player inventory to game UI

Living addition of player inventory to game UI

Technologies inside

To reflect this various goals, the server side was realized in Java with Jetty web server, hosting a Spring 3 application (with Spring Security). The whole project is built and packaged as a Maven multi-modules project.

Data was stored in a MySQL database, accessed through Hibernate Object Relationnal Mapper, with full text search thanks to Hibernate Search (Lucene under the wood).

All the dynamic part (the rule engine) was powered by Groovy scripts.

And both web applications was AS3 Flex 4 applications, using GraniteDS to share whole objects graphs between server and applications. GraniteDS worked with Flash prorietary protocola AMF, at a time when WebSockets was not availables. Flex web applications were automatically tested with Selenium Flex.

All assets (maps, characters, UIs…) where crafted during the development in SVG with Inkscape.

Art works and SVG drawings

Art works and SVG drawings

Tales of Eethia beta game

In November 2010, after one year and half development, a first playable game was available: Tales of Eethia.

It was a survival game, where the player was lost on a distant hostile planet (something like Frank Herbert’s Dune), and has to work for a mining company (Eemincorp) to survive.

We played during two months on an instance hosted at OVH, making the game evolved during the beta (adding exchange system and fights for example), while two dozens of players where participating.

Screenshots of Tales of Eethia Game UI

Screenshots of Tales of Eethia Game UI

After this beta test, it appears that:

  1. The generic game web application was not flexible. Using a JSON customizable UI was far enought of an immersive UI for gamers.
  2. A slow rule engine. Any player click ends up to rules evaluation, with multiple (transactionnal) database access. Not enought reactive !
  3. Handwork game: numerous bugs on the game logic embedded in rules, due to the lack of automated testing.

An open road for the second version of Mythic-Forge !

Bitbucket repository

Mercurial sources can be found on Bitbucket.