Langenium

Consuming much of my spare time from 2012 to 2017, Langenium was a concept MMORPG built for the web browser and around a content streaming model. At its height the website received 1000 visits a month and had a working arcade style arena where players could anonymously hop into a flying vehicle and shoot one another.

3D Render Framework:
Three.JS
Other frontend libs:
jQuery , Semantic UI
Frontend application:
PugJS , Stylus served by modular Node.js game server
Backend application:
Express and Mongoose
Server/Client Interface:
WebSockets using socket.io

Starting out as a humble test to draw a 3D sphere in the browser, the game engine grew in leaps and bounds over the course of this project. Express.JS and socket.io provided an ideal interface for extensive custom functionality, I used the same movement code on client and server so that a client instance of the game could move characters first and then the server could confirm their true position. This was a huge boon for a game that needed to run at 60FPS for multiple players.

In hindsight, the biggest mistake in the server was using MongoDB for persistence. I had approximately ten JSON configuration files which could easily have been stored in a local folder, with a base template for deploying to a new server. The need for MongoDB added an extra dependency on every server instance and meant I had to export and import data that would have been easier to maintain within the code base. Perhaps after a few users joined and proper environments were built that MongoDB database may have started paying dividends, but unfortunately for 5 years it was more of a blocker to the portability and ease of use of the code.

This video demonstrates one of the last builds of the game featuring a smooth frame rate, procedurally generated environment while also being rendered using the server to allow multiplayer functionality.

It took about 6 months to perfect the shader effects of the sky and water, both generated a normal map procedurally - allowing clouds in the sky and waves in the ocean to have dynamic lighting.

Using a separate Git repository to manage art assets and Readme files in Github, I had a really good system for managing my art assets that has informed my view on the value of version control to this day.

The biggest ongoing challenge in this project was producing art and content. One of the things that makes MMORPG worlds appealing is the amount of complexity, depth and variety in the gameplay. Established titles like Eve Online and World of Warcraft have stood the test of time by continually releasing expansions and extending game features in order to keep the experience fresh for players.

The creative role I'm most confident in is writing - and this showed in Langenium. About two years into the project, Langenium had several storylines, some of them inconsistent, and more ideas than I could possibly put into production. The biggest limitation was tooling - creating 3D models, new visual designs and producing music using the standard industry tools was incredibly time consuming. In a traditional game studio environment those responsibilities would be a full time role if not several peoples roles.

Design and illustration:
Adobe Illustrator
Concept art drawing tool:
Alchemy
3D Modelling:
Blender
Digital Audio Workstation:
Linux MultiMedia Studio

The Langenium server application is retired in the final refactor of the project. The main reason for this was cost - in 2015 I was unemployed for a few months and had to switch off my Amazon EC2 instance that powered the website and game server. I switched to free Github Pages hosting and developed a workflow that generated a static HTML site instead.

The work to refactor Langenium's server engine into a client only website and game culminated in my static website generator Kettlefish. The creative energy and spirit of Langenium has become a smaller and tigher project called Kamigen. The lessons learned producing art assets and the game engine that rendered them led me to create another piece of software - Manifold, which is a hybrid 2D/3D and raster/vector drawing tool for indie game developers and anyone else with a need to quickly create 3D assets.