Pilots: Start your Engine

Introduction​

Quote from the 3rd Semester’s Syllabus:

From September 24th 2018 to February 28th 2019.
The topic of the task is to build a very basic 2D point and click adventure engine, based
on C/C++, SFML and an xml framework of your choice. Dynamic data as dialog
text, asset references etc. should be located in external XML files. The focus of this
task is the engine itself and not the game content. You can take crappy graphic assets
from the internet as long as you are not planning to publish it.

The internet is full of free resources, but locating all the good assets, especially if they should fit together, consumes a lot of time. As I target to make the final result available, publicly, I will have to draw some “crappy” graphics myself. 

Results of my research of the Adventure Genre

Today, I started thinking about what the essential parts will be and what I can achieve in the given time scope. Therefore, I played or watch most of the well known Point and Click Adventure Games and took some notes (click to enlarge):

Feature and Priority List

Derived from my research I created a list of things that must be present and others I would like to include, depending on how fast I will progress:

Must Have's:
  • Written in C/C++
  • Graphical Framework: SFML
  • Basic Movement: The walkable area should be declareable by a single polygon
  • Mouse Interaction: Left and Right Button will perform different default actions on an object (like in Deponia)
  • Trigger Zones to call other functionalities when stept into
  • Animations: Sprite animations to visualise actions, e.g. moving
  • Audio
  • Dynamic Data (Assets, Dialogs, Parameter) have to be stored in external XML files
  • Linear Story: The order of task the player fulfills can vary, but the outcome stays the same. He just unlocks additional interactive objects or entrances in other scenes.
  • Text based Inventory (like in Monkey Island 1)
  • Dialog Box: Some kind of Box that can display text and prompts the user to interact
  • Highlighting of interactable objects: The engine’s purpose is not to hide sprites
Could Have's:
  • Multiple layer of graphics for the background: That should enable the player to move behind things placed in the scene.
  • Advanced Movement: The walkable area should be describeable by multiple polygons, to f.e. exclude certain areas again. Also, there is a need of some path finding algoriothm (A*?!)
  • Depth of a scene: To create the illusion of moving into an image, I will need some algorithm that scales a sprite accordingly to the distance it travelled.
  • Multilinear story / conversations: Prepare a tree structure that can handle multiple outcomes
  • Graphic based Inventory, including drag and drop mechanics
  • Advanced Dialog Box: It could be extended to include complex mechanics like minigames to lockpick for example
  • Save the Game’s State: Include an option to save the player’s progress to continue at another time
Nice to Have's:
  • Voice Over: Extend the Dynamic Data System to include Voice Overs for each of the dialogs. Also, include at least one example of that engine feature into the game.
  • Cutscenes: Player commands should be able to line up in a chain to create some sort of cutscenes, while reusing most of the code (Command Pattern?!)