AIKU is a first-person atmospheric puzzle game I worked on with a team of 45 programmers, artists, and designers.
You play as Ma'at, a "caretaker AI" who has been tasked with managing the power onboard the R.V. Minerva following a catastrophic failure of the ship's fusion generator.
The gameplay centers around transferring power between ship systems to solve puzzles, with the ultimate goal being to collect enough power to save the crew members in cryostasis.
The brackets are a visual indicator of what the player can currently interact with. I wanted to have an unobtrusive but decidedly "terminator vision" look.
The brackets outline the target using a second camera that draws to a render texture. This camera can only see the currently targeted item, and by sampling that texture in a whole bunch of places we can get a good idea of the bounds of the object, even if it is irregularly shaped.
Side-by-side comparison of the fully-rendered scene and the view of the bracket's scanning camera.
If I had unlimited time to revisit this, I would have all of the bracket sampling take place in a shader.
According to the profiler, the brackets code itself is pretty efficient, except for one call where it essentially copies the entire screen into a new texture. That one bottleneck accounts for an uncomfortable amount of the time we take rendering each frame, so this is where there is the potential for a lot of performance boost with one fix.
The navigation line helps the player get around the ship during the scripted sequence at the beginning of the game. At this time, the ship's layout is totally new to the player and they need a little more help getting around.
The route is determined using Dijkstra's algorithm. The cost to travel to each node from the destination is calculated once when the player first needs to navigate to a new location, and then those costs are saved and reused until a new destination is chosen.
The line is guiding the player across the catwalk to complete the current objective.
I wrote a custom editor for the graph and nodes to make setting up the map easier. You can push a button in the inspector to enable a mode where a new node is created wherever you click and automatically connected to other nodes in the graph.
The title screen was a last-minute feature added in preparation for showing AIKU at Manifest. I created an attractive idle animation to entice people to come try out the game.
The camera pans slightly as the player moves the mouse around the screen. It's a pretty common effect but I thought it was a nice touch and fits with the soft feeling of the DoF, low light, and slow, smooth camera movement.
Jump cuts are masked using the same glitch effect as some scene transitions during the game.
The scene used in the title screen is almost identical to the one in the actual game, and most of the camera post-processing effects are the same as well. The only visual change I made was the addition of depth of field. Even the glitchy transition effect on each cut is the same as the one used at the beginning of the game.
The brackets on the title screen mirror the ones used in the game as well.
I created a system where designers could set up a series of tasks for the player to complete in a certain order - like interacting with objects, going to objectives, and so on - without having to write new scripts for each objective.
Each task is composed of the objective text, the location in the level the task takes place, and some sort of completion condition, like using a computer console or waiting a certain number of seconds.
When a task becomes active, the player is shown the objective text and the navigation line guides them to the next location. It also raises an event that other game systems can subscribe to to 'tie in' to the task system. In the case of the computer consoles or pipe valves, these become enabled when the event fires so that the player can only use them when the current task calls for it.
The whole system lives in the scene hierarchy, so the number and order of tasks can be easily changed without leaving the editor.
The list of tasks in the hierarchy.