We are a pair of part time indie game developers, an artist and a programmer. Our main project Is taking a little bit of time and because of that it is stuck on 2017 lts version. For some time now, we wanted to try and test Unity new 2d tools but had no time or impulse. This challenge helped to boost our motivation and gave us a reason to finally take a breather from our main game. I must say it is quiet amazing how new unity tools help to boost productivity, we managed to build a fully playable mvp version of our challenge game in a little less than 30 days of afterwork time. We hope that you will take a liking to our little game.
Adiafora is a classic point and click adventure game about a robot that wakes up in unfamiliar to him world and can’t remember anything. Even what he is. Something however seems not right, wrong even. He was more… human? What is human?
Adiafora follows classic adventure game model. Control scheme is simple with only mouse used. Cursor will change depending on the type of object it is over.
Each type of object has one player action associated with it that will be performed by main character on right mouse button click.
Picked up items can be used by player on other entities to interact with them (not yet finished completly). Items can be accesed by clicking on the bacpack icon in the right bottom corner.
The goal of the game is to find out who the main character is by exploring its unique world, interacting with npc, solving riddles and puzzles.
This game was made using Unity 2018.2.16f1. We made use of many new unity features but perhaps the most important was the 2D bone animation. This type of game is not really dynamic so it relies heavily on the animation of the objects to breathe the live in to the world. In Adiafora we do have many animated objects and almost all of the non-player character have some kind of idle animation (in the finished version we want to have them all animated). Some NPCs also need interaction animations. For example they need to react to player giving or using an item on them. Doing this the traditional way with sprite sheets would take forever but by using bone animation we can shorten this process significantly. There is also additional benefit that animations can be tweaked easly without a need for redrawing. Just our main character has front walk, back walk, side walk and bunch of other idle animations. And considering what type of game this is the number will keep growing.
The other important tool we used was the cinemachine 2D Camera. Aside from standard use, there were two special behaviours of camera that cinemachine helped us to solve easly. First was that we have multiple maps that are loaded additively and they differ in size so each map needs to use its own bounding shape for camera. We solved it easly with almost no code at all by using virtual camera confiner extension. Upon loading new map scene, with the help of zenject library confiner component is injected into the custom script that just asigns it a new bounding shape.
The code we use to apply camera bounds from the newly loaded map:
The second issue cinemachine helped us overcome were cutscenes. On a map scene we create one disabled virtual camera for each cutscene with Priority set higher then the gameplay one. Cutscenes are managed by timeline components that at the start enable appropriate virtual camera, play the cutscene and disable the virtual camera at the end with seamlessly transitions to the gameplay.
To create some illusion of depth in the 2d space players character is scaled down depending on his Y position and maps scale factor(different for each map).
Here is a video demonstrating our map creation process:
Tools developed for the game
Beacause in this type of game the area the character can move on shares image file with part of the background the standard pathing solutions are not really appropriate so we developed our own pathfinding solution using a Points-of-Visibility Pathfinding algorithm. We have created a custom editor extension to better display the bounding polygon.
Our team consist of two people:
@Pawel Kokot - Artist behind the games art and animation, a really bright person that somethimes has the strangest ideas for the games to make.
@Sebastian Gierłowski - Programmer that develops games in his spare time to take a break from developing boring business applications at work, more down to earh person that shoots down some of the crazier ideas Paweł has.