AdventureKit Roadmap

I’ve now admitted to the insanity of building my own engine and come up with a broad idea of how I’d like it to work. The next stage is to come up with a plan for how I might go about implementing it without getting myself stuck in rabbit holes of complicated esoteric features (as I am wont to do).

For Version 1 of AdventureKit, I will focus on three broad categories: UI, Scenes, and Development:

^ Indicates that this is a property in the scene JSON file that will need to be supported.

UI

  • Title screen
    • Background image^
    • New game
      • New game button image^
      • New game button selected image^
    • Load game
      • Load game button image^
      • Load game button selected image^
  • Saving
    • Automatic on scene exit
  • Inventory management
    • Inventory container sprite^
    • Inventory icon^
    • Adding objects
    • Using objects
  • Movement
    • Tap handling
      • Player movement
      • Interaction with NPCs (Non Player Characters)
      • Interaction with objects
        • Single tap to look
        • Double tap to use/pick up
    • Pan handling to find objects of interest
    • Player character scaling for movement on the y-axis
    • Basic pathfinding for routing around NPCs/objects
  • Player character
    • Animation support
      • Idle^
      • Moving^
      • Talking^
      • Named^ (a named animation is a specific animation to that character that might only be used once in a game)

Scenes

  • Scene parameters
    • Background image^
    • Foreground image^
    • Single walkable area^ (defined as an arbitrary polygon)
    • Exit areas^ (rectangles)
    • Scale factor^ (i.e. a number that defines the relationship between movement on the y-axis and how much the player character scales)
  • Objects
    • Location^
    • Sprite name^
    • Inventory icon^
    • Attributes^
      • Whether it can be picked up
      • Whether it can be used with an NPC
    • Dialogue^
      • On use
      • On look at
  • Static NPCs (Static indicates that these characters remain in the same location throughout—they can’t walk or otherwise change their position)
    • Dialogue file name^
    • Global variable support (i.e. they can respond to changes world state)
    • Object interaction (receive from inventory only)
    • Animation
      • Idle^
      • Talking^
      • Named^

Development

  • Exporting and importing
    • Scene data
    • Dialogue files
    • Image files
  • Automatic Placeholder Support
    • Scenes
    • NPCs
    • Objects
  • On screen reload button (to read newly imported scene or image data

Future Features

These are some of the more important features that I want to add but that will have to wait for a future version:

Scenes larger than 1 window wide that scroll

I definitely want to be able to do cool parallax effects in the future.

Moving NPCs

The player animation component will support movement animation and will be reusable which will make the actual animating of moving NPCs easy. However, having them move around causes other changes that the scene will have to respond to, affecting things like pathfinding and player interaction.

Dynamic environments

It would be cool to have the environment change in response to player actions (e.g. an explosion creates a pile of rubble that blocks a path).

Animated environments

Related to the above—hopefully the animation system will be robust enough that adding this won’t be too difficult.

Multiple walkable areas

There are scenes in the adventure games that I’ve been working through that feature some sort of obstacle in the middle of a scene (like a pit) that a player must overcome. Having the engine support multiple walkable areas would make scenes like this possible in AdventureKit.

Alternative interactions

Think of the mini-games in Sam and Max, or the highway fighting in Full Throttle, or even just the close up conversations in The Secret of Monkey Island.

Moving Forward

As it stands, the first version of AdventureKit will clearly be missing a lot of the advanced features of modern adventure games.

However, my plan is to use these limitations as constraints on the games I develop. If there’s an amazing idea that I have that uses a feature that the engine doesn’t support yet, then it has to wait (hopefully this will stop me spending weeks on something that is only used for five minutes in a single game).

I’d like to follow the Pixar model in my own humble way. Many of their films are designed to show off the latest advances of their 3D technology, for example the use of fur in Monsters Inc. or the water in Finding Nemo.

I would like to develop a game alongside each major version of AdventureKit which would be designed to highlight the major new features. It would be amazing if, at the end of all this, I could have a series of games that show not only the progress of the engine, but also my progress as a game designer.