Highlighting of different kinds of objects.
Depending on what the target the companion moves to, it would either attack or interact.
Highlighting
To this, I made a system of highlighting objects when looking at them. Depending on what parent class the intractable object used, the actions of the companion would change.
Companion AI
Early in the project, the goal of the companion was supposed to be an intelligent AI that you gave commands to and it determines the best course of action.
Sadly, this was deemed too big for the project and was restructured to be more of a guide AI instead.
Details
Year of production: 2020 May to June.
Rules: Make a narrative game.
Time: Eight weeks.
Team size: ten.
Contribution
Unity
Shading
Lighting
Gameplay Programming
AI Programming
About
Experience a surreal world inside the mind of our character, while he travels and collects fragments of his memory, In this third person puzzle platformer.
Command
The companion would move to the object when commanded. When it got close enough, it would check what type of object it is going to interact with.
If it is an enemy (red highlight, sphere) it would attack. If it is an interactable object (blue highlight, button) it would interact with it.
Script
The system uses a highlightable object manager, which is a scriptable object. Each object that is highlightable would add itself to the manager, so it is completely separated from any other class.
The full detail of the classes and code is shown when pressing the button.
Demonstration of the dialogues with voice overs.
Script
The full detail of the classes and code is shown when pressing the button.
UI
Dialogue triggers can be added to objects or volumes in different ways, using a DialogueTrigger base class.
Dialogue System
We needed a good way to display the narrative in the game, so I got to do a dialogue reader. This was iterated several times and gone through different designs throughout the project.
Conversation
Scriptable
I setup the conversations between the characters as a scriptable object, which gets attached to a dialogue trigger.
Since voice over got added pretty late in the production, I had to find a good quick solution for the designers to tweak the timing of fade and time on screen. This is to be able to time it with the voice lines.
Lighting
In this project the artists had too much to do with set dressing, animations, etc. so I stepped in and did lighting for the game.
The Light concepts that the 2D artists were pretty detailed, this made so I could do all of them fairly quickly, in about two days.
Concept
Result
Level 02
I wanted the direct light to rotate, to give an eerie feeling and make it unique beside the colors.
Level 03
The red light changed to come from the crystals. The roof is also open to give a moon light feel.
Shader Graph
We used the HD render pipeline which allowed us to work in Unity's shader graph. And from there I exposed parameters that was used in a DissolveDoor class to control when to open and close.
In Editor Demonstration.
Dissolve Shader
This shader is used for opening doors in the game. This was attached to a door object which opened up when the player hit the red button with the laser.
This was also supposed to be used for enemies, which sadly had to be removed to be done in time.
Shader Graph
We had a lot of trouble with getting the hair textures to render in a correct way.
We tried some different surface types and settings for the shader, but ultimately we settled for a glow look to which gave a nice friendly look to the companion and also hid some of the artifacts we got from the hair cards.
Hair Shader
Since the 3D artist, Sandy, that made the model didn't have any prior knowledge of Unity's shading network, we sat down together and determined the settings for the hair shader used.
I did all the technical work, while she directed me on what art style to go for and what she needed of the shader.