Since the last version, I have implemented an objective system. This is based on my player interaction system for the most part: you have to use specific objects (like an information sign), or pick up a sufficient amount of loot. The amount of loot required will depend on the difficulty, and on expert difficulty there is an additional objective – don’t kill anyone! You’re supposed to be a professional – professionals have standards.

I probably didn’t explain how the interaction system works when I previously mentioned it, so here it is. It’s based on trigger areas, and relies on the camera casting a ray forwards from the camera towards the object of interest. When the camera (and by extension the player) is looking at the object, it glows to let the player know they can use the object. Every interaction inherits a specific class, optionally overwriting its methods.

Some goals, for instance, require the player to enter an area. You shouldn’t have to look at something to leave the level when you’ve finished, so that one is activated when all other objectives are complete, and is marked as complete the moment you enter it.

Here’s a screenshot of the objective screen. Opening this pauses the game, so you can peruse it at your leisure.

As usual, the download link is here. This is probably going to be the final build with the testbed level, and my next move will be to start copying this stuff over to the main level and other levels.