(still) creating my first adventure game!
So way back on the 25th of June 2020 I took part in the media tonic Side Quest Jam and I wanted to create a small adventure game set in one room. I thought in one room would be simple enough to plan and well within scope. Had I not just been cramming to get everything in order for my final major project at uni then this could be a very different story!
Suffice to say I had been working every day up to 8- 10 hours on my final major project. Which worked out great but by the end I was VERY burnt out. So it's no surprise I didn't submit in time. BUT I still very much liked the idea. The premise boiled down is Reality has been shattered, everything is weird, you have to fix it After taking some well earned rest I came back to the project as my next big venture!
After a few attempts at creating my own dialogue system I realised that the system in itself would be a huge undertaking and there are PLENTY of brilliant dialogue systems available. I started looking into Fungus on the unity asset store a friend of mine had used it before, Inkle which was free and used in a fun game called "Night in the woods" by Infinate Fall, but I landed on Pixel Crushers which is a dialogue system used in one of my all time favourite adventure games Disco Elysium By Studio Zaum! As soon as I found out they used Pixel Crushers I just had to use it.
As you can see this first iteration is messy. I had no idea how to use the dialogue system aside from a few small tutorials which allowed me to create conversations. But they were as you can see very static bland and straight from the default settings. I knew that to turn this game into what I had imagined I would have to really do a deep dive into this system and plan out how this game was going to work. This has been an iterative process, there have been times where I've decided that some things should work differently. Some functions should be more binary in the way they used, these realisations could only be come to by reaching certain points in the games development.
After deciding on the level structure and moving between the levels I had to come up with the characters that will populate these levels. I already had one in mind the wizard in the above video. But I want this to be an adventure game that has a bunch of interesting characters with funny quests. Below is a chart of the NPCS in the game whether they have dialogue options, if they give quests or have items tied to their quests.
After taking some time looking at the original design of level 1 I decided a more minimalist approach would look better blending both a bedroom and just a small island floating in the middle of a void. It would also allow me to be a bit more free with what can be on the island.
Once the redesign was complete I added a plank leading onto an air balloon the air balloon will be the vehicle that the player can board at the end of the game when all the objectives have been completed. I removed the walls of the bedroom so the player can see the entire island. The island is also bigger as the previous play space took no time at all to traverse. And on examination of this video you can spot the skeleton NPC laying in the grass.
During this time I've been looking into the Pixel Crushers support page reading up on FAQs for things I'd like to accomplish and I'm beginning to see how to pull this all together. Pixel Crushers has been built to be customised so I've been looking into UI and as this is my first adventure game it feels only natural to try and capture the flavour of the first adventure game I loved. The secret of monkey island.
Another plus to this I managed to manipulate the camera during conversations. The camera is normally at an isometric angle mainly because that was a choice inspired by another favourite previously mentioned Disco Elysium. It made sense for this game because the angle of the camera showing the edges of the island helps showcase that his is a strange fractured slice of reality. It also gives me a chance to show off some of the low poly 3d modelling I do.
I spent quite a long time hashing out the objectives of the game which will be seen below along with some screen shots of the dialogue trees I've made which I can confidently say I've gotten used to quite quickly!
Here are the current objectives for the game with descriptors showing what needs to be done.
Each of these quests and items have their own variables tied to their quest state making it really easy to set the quest state from unassigned, active, to completed. Through a few simple lines of code inside and outside a conversation I can set a quest state any way I like.
Dialogue Tree examples:
I've very much enjoyed being able to stretch my creative muscles when it's come to dialogue I've ran a bunch of it by friends who are involved in writing and creative writing. I'm definitely going for a funny game. Things that will initially appear nonsensical will later make sense. But given the premise of the game is reality has been broken there's room to be nonsensical.
The dialogue is written here along with any sequences that can happen. I can use it to change player animations, change the camera positions and fade in and out. All of which I only managed to accomplish thanks to researching the user manual for Pixel Crushers. I also managed to make my own customised version of the dialogue UI which you can see in the below video showcasing level 1 in it's near completed state.
Below you will find screen shots of level two with the bar I modelled and the small adjacent island next to it with a rope bridge. I have modelled all of the levels at this point and I'm certain there will be iteration on each one like level 1. That said I'm very happy with how the levels have turned out
The next big change in the project was the players UI. Because the player is capable of doing more than talk they can observe and interact with objects it's important that players are able to choose and distinguish between these interactions because they all have very different uses. Below you will see the progression from creating the players UI to it's eventual implementation.
Here we have the original icons for each UI element
Ribbon: we have the ribbon which will display what the active UI element is
Eye: The eye when active (The far right) will be what activates barks above objects that bark their description
Hand: The hand Icon when active (clenched) will activate an objects use component when used. This will access the objects properties and if it has an interactive function it will call it and if it doesn't the player will bark advising they can't do anything with it.
Talk: The Talk Icon when active (talking) will activate an objects conversation component inside the object when used. This will access the objects properties and if it has an actor component it will call it and if it doesn't the player will bark advising they can't talk with it.
This was how it was all looked together when in the game when the player right clicks, this UI appears above them with the name of the last or current function in the ribbon. As you will see from the video below this picture that is not what I eventually would settle on.
The final result ended in the below video the functions work as described above but instead of the ribbon the names appear above the icon in the same style as the dialogue system.
this was to keep things visually in line with the barks and dialogue system UI.
And That is currently the progress of this project name still undecided thinking something along the lines of "That one time I broke reality"
In the next blog post for this project I'll have quest progression on showcase along side a more in depth look at the cave (Level 3)