Description


Equipped with her late mother’s medallion, a young girl sets out on a heartfelt quest to fulfill her mother’s dying wish: to find tranquility at the pinnacle of a >mysterious tower broken between the realms of dawn and dusk. With the power of her mother’s medallion, she is able to cross dimensions across time of the tower, >use this to navigate through the tower’s series of challenges.

Main Responsibilities

Lead Game Designer, Gameplay Programmer

Technologies Used

C++ (Custom Engine)

Personal Contributions

As a lead designer

  • Pitched core concepts as well as creating game prototypes of core mechanics to show stakeholders and team-members.
  • Worked with story/level designer to come out with art theme (which was later explored by the art lead) and as well as preliminary level design to demonstrate core mechanics in a vertical slice version of our product.

As a gameplay programmer

  • Implemented the world switching mechanic and camera effect. The world switching mechanic involves creating two distinct world locations, internally represented as two copies of the same level separated by a great distance however we operate gameplay scripting to work on their local coordinates systems. There are two copies of the player, one that holds the active camera (which is rendered in the current viewport) and another that is off-seted from the other world’s local coordinated based on the current player’s local coordinated in the current world. The portal effect is done by making a virtual camera on the other world and then masking the image upon the geometry of the portal mesh that is emplaced in the viewport. We also had to account for the z-sorted of the player view model as well, so the hand models would appear in-front of the emplaced image. I took inspiration from Sebastian Lague’s video about implementating portals in Unity. The primary challenge here was replicating its concepts into our custom C++ engine and rendering solution in OpenGL

  • Implemented the player controller and interaction mechanics
  • In-charge of level scripting, UI and subtitle systems.
  • Implemented UI system, which uses a canvas based system to propagate updates down to child elements (taking inspiration from Unity)

As an engine/tools programmer

  • Implemented C++ Reflection. All reflected class/struct/enums and their members are registered alongside the classes themselves. Methods could also be reflected. In runtime, the engine obtains types using strings read from the serialization data, which later makes instances from their types and then modify their fields. Reflection was used for automatic serialization as well as inspection in the editor. I explored bindings using C# Mono briefly though we opt to keep the existing scripting in C++ due to the current stage in our production timeline (making bindings to our engine API was tedious :/)

  • Implemented C++ serialization using a third party library, https://github.com/nlohmann/json. We used it to construct and parse json format files used by our game engine and editor. I like it as field members of an object can be constructed from json without having to know their types (minimizing boiler plate)… provided that you know the type of object that you are constructing (which is determined upon component creation in the editor/script).

  • Created a Unity extension tool to convert 3d geometry from Unity’s .scene files to importable .obj files which our early version of our game engine/editor can use. This helped the designers reuse level metrics over from old prototypes in Unity as well as to assist tweaking character controller values to match design specs in a usable level.

  • Created editor tools to assist the designers to white-box levels with a gameplay focus to improve productivity by 30% (15 days to white-box a level down to 9-10 days). This is especially important because internally the different versions of a level are spread apart by a great distance and sometimes the designers would want to create an identical copy of a geometry at the same local space in both worlds.

  • Implemented the audio system using FMOD, used it to preload sound effects from .ogg files and implement 3D environmental sounds effects and menu sounds. Implemented a gameplay feature where alternative arrangements of a background sound track fades in/out depending on which dimension the character is.

Playthrough

Screenshots from the game

Download

Digipen Game Gallery Steam