Sunday, 30 April 2017

This Island Apparance

The Story So Far

Exactly one year ago Lionhead Studios closed its doors.  Whilst a sad occasion, this set many people on journeys of opportunity, branching out, putting ideas into action, and creating new things of their own.  For me this was the chance to fully apply myself to fleshing out Apparance.  I knew that I wouldn't have time to finish a game built around it nor would I reach the point of self-sustainability, but there were several key things I could achieve during that time.  First I needed to finish proving some of the core technical premises (predominantly around detail management and scale), I wanted to build a showcase technical demonstration, and also I wanted to collect together all sorts of information about the project into a web-site.  Ten-or-so months later and I have pretty-much achieved this and it's time to take stock of the situation, get it out there, get some feedback, and decide on the next step.


Hobby Mode

It's a lofty goal to build a complete, standalone game engine, especially when there are many off-the-shelf ones available.  There was always a justification for this though in the unique approaches needed to support the various goals; entirely procedural assets, runtime generation, wide detail ranges, visual editing, etc.  Unfortunately financial pressures aren't kind to this sort of academic adventuring and it's not something I can sustain any longer full-time.  I'm now back in paid employment (contracting) so we can pay the bills, which reverts me once more to spare-time development, or 'hobby mode'.
I originally spent a long time in this state, gradually digging away at the project, so I need to adopt a very deliberate and careful route forward as before.  I found being constrained by time focusses your development effort a lot.  Any work has to be the most useful work possible to move the project forward, any detours, diversions, or misjudgements are costly.

This Island Apparance

Given the all-encompassing goals and experimental nature of the project it isn't surprising this has led to an isolated system.  Whilst this has kept dependencies low and the necessary control over the architecture high, it is costly to develop.  I have built an island paradise of procedural generation, rich with potential and enticing to others in an idealistic way.  However, the practical consequence of this is that it is a lot to ask of people to set sail towards for its fertile shores.  To encourage a community to settle around Apparance (and stretch this metaphor further), I really need to build bridges to other more established lands.

Building Bridges

There are several obvious places I could reach out to, each with their own advocates to entice, and communities to tap into.  These are:
  • Commercial engines (Unity, Unreal, …)
  • Assorted 3rd party engines and projects (Irrlicht, OGRE…)
  • Independent developers with own engines
Targeting Unity or Unreal would connect with a lot of people as these are very popular platforms for building games.  Integration into other engines or code-bases would involve similar work and allow anyone to 'bolt on' procedural generation to their project.  The more fully formed and proven game engines are attractive because they can provide the missing parts of Apparance and make it a viable procedural generation platform sooner.
I've long doubted how well 'conventional' game engines would support the novel requirements of Apparance, but over the last month or so I've been thinking about the reality of this.  Rather than just seeing the major objections and sticking points as blockers, I've been trying to consider it as just another set of technical problems that need solving.  I'm sure there are compromises that need to be made, and changes to the way some of the Apparance systems work, but I think there is still a lot of value in attempting this.  Some important opportunities include:
  • Accessibility - proc-gen tools for people within a familiar engine and tool-set
  • Exposure - an opportunity to raise the profile of the project among developers
  • Commercial viability - potentially an opportunity to generate some revenue
  • Modularisation - a useful exercise in tidying up the code-base
  • Expansion - groundwork will make it far easier to then port to other engines
  • Acceleration - This could be a good way to get my first game built more quickly

Where To Start

My personal experience with third-party engines is by far strongest with Unreal, in fact quite a lot of the time I spent building foliage tools for Fable Legends I was working in exactly the areas of the engine I would need to work to incorporate Apparance into it.  Unreal also has a liberal developer model, making all the source code easily accessible.  It makes sense then for this to be my starting point and where I should focus my efforts next.

Requirements

To create a professional grade integration with Unreal it's important to consider the workflow and user experience of a developer wanting to use procedural techniques.  I would like to consider the following scenarios:
  • Taking a few pre-made procedural assets a dropping them into your game.
  • Building game worlds from lots of pre-made and custom procedural assets.
  • Using procedural assets to create large parts of game environment.
  • Using procedural techniques to place conventional assets.
  • Creating massive continuous expanses of procedural game world.
This means quite a thorough integration is needed to play to both systems strengths.  I will look into this more in a future post.