Third person adventure puzzler, 15 weeks part-time development
Built using our own engine and ECS with DirectX11
Some of my contributions include
– New and improved UI system with editor
– Puzzles and editors for gameplay elements
– Toggling of AI’s to give Level Designers more control
– Tools and support for mesh specific materials
Whilst builing the UI editor I talk about under Tools I wanted to make some changes to our existing UI systems and funcitons. Our previous function calls to create UI elements had become very cluttered since they were meant to create static UI that should not be updated. But since all UI would be loaded from file as regular Entities with components I decided to clean up our MenuSystem to create functions that spawn default buttons, texts, sprites, toggles, etc. The idea was that these would instead be designed in our editors. The interface became a lot cleaner. Now all create-functions pass two arguments, our ECS world, for entity creation, and a typedef of string with the name that the UI element should be added to. The choice of string is because our engine could then use the name of our UI files to make menu parent names easier to understand in our entity hierarchy. All create-functions return the parent entity of what has been spawned, which gives programmers the option to still create UI with code if needed. This has yet to happen though, the editor interface is much faster to use.
I also worked on a bookshelf puzzle for our last level in the game. It is a classic combination puzzle where the player has to pull the books in the right order. The combination lock is revealed at an earlier point in the level, so my job was just to build the bookshelf. I wrote a simple bookshelf manager script which can be set as a component. Four children are created in the bookshelf prefab that can each be connected to the bookshelf component. The bookshelf manager can then keep track of which books are pulled and if the order is correct.
There were a few problems actually getting the bookshelf to open correctly. Our socketing does not fully work as intended so every time the animation for the bookshelf would be updated it would not connect correctly. The fastest way to fix this however was to remove all joints and set the model again, which was a bit tricky since the books were children of some joint in the bookshelf. The bookshelf puzzle was also the feature that made me find that our quaternion rotations were not working correctly for children of an entity.