I had a new idea for a pet-project for which I wanted to change a few things regarding administration. Instead of working on a project for months and then realize no-one is using it, I got a demonstration out after two weeks of coding.
The Context
The idea came while I was writing the post-mortem for my last project, upro. This project took me over a year to finish (due to various reasons). Although the project was a success by my initial set of goals, it is a bit sad that it didn't find a user base. With agile and all of that being the next good thing, I'm now trying a different approach:
Keep all the cool ideas in mind, but implement the most simple feature-set first. Get it out into the open as soon as possible and see if (and how) anyone cares.
The Idea
At EVE Online Fanfest 2013, CCP showed their newest library for public use: ccpwgl, a render engine capable of showing all sorts of EVE's assets. In the browser. While most would think to use it as a nice backdrop for their homepage or do some offline ship-spinning, I combined it with a another itch that I have: Too many videos set in the EVE universe are simple screen-recordings of random ships shooting other random ships (usually together with random music as per taste of the recorder). Those few movies that stand out at the movie-mornings at fanfest are usually those with carefully crafted choreography & narrative. Good examples are: Future Proof and of course the Clear Skies Trilogy *).
But doing this takes time. Either because it's cumbersome to do in the actual client (and find enough pilots to help you out) or even more tedious when trying to get the art assets imported into a 3D animation program. The idea: Create an application for exactly this problem. And eve-kino was born.
I envisioned the workflow for creating a scene to mirror that of a standard film production. Instead of carefully adjusting the position and rotation of each prop frame-by-frame using some 3D-modelling interface, I thought about giving the user the control of the object in real-time - and then record it.
This way it feels more similar to a game than a production tool but still gives you the features of a video editing application.
*) Note that for the third Clear Skies movie, CCP gave a copy of their in-house movie creator ("Jessica") to the director.
The Technology
I started this pet-project not just because of the idea alone; I combined it with my general urge to practice in the specific technologies and extend my experience with browser applications and their creation.
While upro served well for getting me into the world of browser clients and JavaScript, this time I wanted to make use of much of the state-of-the-art stuff.
- Automated Build: I chose Grunt to be the task runner, which seems to become the standard tool for JavaScript & Browser clients. The rich set of plugins made it easy to integrate the various steps, although it was a bit tricky to get all work together.
- Use of require.js: Simply because it's required.
- A universal test framework: Capable of testing both the server and client side, including AMD code, both synchronous and asynchronous. And Buster.JS fitted the bill perfectly.
- Code coverage and analysis: For good measure.
For the ship control (and for props in general) I was looking for a way to feel as natural as possible. I've had the idea to use a smartphone and its accelerometer to simulate a joystick-like input, but then I found out: There is already a Gamepad-API being defined for browsers! A few lines of code later, and I had the camera of one of CCPs demos rotating. That API is even more bleeding-edge than WebGL was considered to be. It locks the application for Webkit & Firefox browsers, but that was the case for WebGL anyway. (Although, IE 11 will have WebGL support. We shall see.)
The Proof Of Concept
About two weeks ago I started with coding with the goal to have the most simplest workflow possible: Create a scene, fill it with some props and have some ships and the camera fly around. Yesterday I recorded the first video:
With that I have announced the project's existence on the EVE Online forums to see whether there is any demand for such an application. It might be difficult to determine whether the demo was too early, but at least any responses will be an indicator to how much I might continue working on it. (Rather than spending months on features no-one asked for.)
The Source
The project is available as open-source on GitHub.