Exposé
Time: 80h
Team Size: 11 people, of which 6 programmers
Engines: FaktalOktav (Custom Engine) and Unity
Libraries: DirectX 11, FMOD, NLohmann Json, ImGui
Language: C++/C#
Exposé is a short Point and Click Game. The game was created as a small project for developing our Game Engine. Exposé required the use of Unity as our Level Editor.
Raycasting
Testing Raycasting Functionality
Every Frame an infinitely long ray projected to detect AABB intersection. The ray has three different types of messages it can emit:
-
OnEnter
-
OnStay
-
OnExit
OnEnter and OnExit happens the first time the AABB intersection occurs or stops. OnStay checks if the intercept is maintained.
Something that utilizes all these features is our customised mouse that changes the sprite depending on the message.
Interactive Area Boxes
Calls to Execute Functions
The area box triggers a templated trigger call, executing actions linked to its event protocol. In the image to the left, the area box surrounding the key invokes the trigger to render objects invisible.
Serializing System
Serializing Unity Scene to JSON File
Because we choose Unity as our editor, we were required to create a method to transport all the object information to our project efficently.
This involves transporting location data, model types, materials, and relevant components attached to the object into an unformatted JSON file. The serialization is a tool exporting only the active scene.
Deserializing System
The deserialized process is segmented between different types of data. It goes through each block step by step and creates/attaches the corresponding data to the object.
The creation process is slow and takes time, but its thread-safe. In this enviroument multiple objects can be created and corresponding components attached. Multi-threading import will expedite the creation process during splash screens, optimising the overall preformance.
Side by Side of Unity and in Engine
Interactive Hierarchy and Inspector
Transposing Object through Inpesctor
ImGui Hierarchy and Inspector were created for the availabilty of verification and debugging each object. When active, the Hierarchy iterates through each object and relays the information to the inspector.
To visualize changes done by the Inspector, an ImGui Image was created. The Image takes the shader recourse from our games render pass to be displayed.