A Christmas Adventure point-and-click for Xmas
A little later than intended, I’ve published this year’s Christmas game: “A Christmas Adventure” on Newgrounds.com. You can play it here.
It’s a point and click adventure game where you play a helpful Elf delivering a present for Santa.
I’ve wanted to write my own point-and-click adventure for some time, but it’s a lot of work! There are plenty of tools and game engines out there to help, but none of them did quite what I wanted.
The free Adventure Game Studio (AGS) is amazing and some of the games made with it are incredible. Most recently I’ve been playing Unavowed which is completely epic and the first point-and-click adventure offering multiple narratives and different puzzle routes that I’ve been really impressed by. I really need to write a blog post on that topic!
But AGS doesn’t work in Internet browers, which is my main way of sharing my stuff. It’s also geared towards the pixellated art style of the 80s and 90s, which is charming but a bit limited.
[Aside: Happily, I was able to generate enough income from my Real Stars assets and Blender files last year to support my gaming habit and a little bit extra. Adventure Creator went on sale just before Christmas so I finally bit the bullet and bought it. Hopefully I’ll be able to dig into it and maybe produce something with it before next Christmas]
Instead, the masochist in me decided that I wanted to write my own game engine within Unity for making simple 2D point-and-click adventures. I think I started around June and it’s still very much a work-in-progress. But it worked enough to produce “A Christmas Adventure”, thanks to art from my other half at nicolaschofield.com.
The starting point for my own engine was my work on creating Puzzle Dependency Charts. I wanted to see if the ideas behind these charts could be turned into a game engine. The answer: sort of.
The essence of my game engine is that every “Interactable” object has a “Dependencies” class attached to it and these Dependencies communicate using “Consequence” objects. The Dependencies class is called every time you click on an Interactable to check if the Dependencies have been fulfilled by Consequences received from other objects. If they have, a “success” event is invoked, if not a “failure” event is invoked.
Fundamentally, this works really well and I’m proud of what I’ve achieved with a first attempt. The downside is that I had not appreciated just how many events need to occur even after the most simple interaction.
Let’s say you’ve picked up carrot (displayed in your inventory) and give it to Rudolph in order to gain access to a door that he’s blocking. The main events to invoke are changing the Rudolph graphic and sending a Consquence object to the Dependencies class on the door Interactable to confirm that it has been “unlocked”. But there are many other side events to remember like removing the carrot from the inventory. For a short, simple game, it’s easy enough to keep all these Dependencies, Consequences and other events in your head, but a larger project would be an impossible task. TLDR: My engine needs a lot of streamlining to make it usable.
My hope was to produce a full game engine (tentatively called the SQUAWK engine) that I could sell relatively cheaply on the Unity Asset Store as a casual starting point before people consider upgrading to the more professional products like Adventure Creater. Nicola wants to try making another game together, so maybe I’ll make some progress on my engine in the next 6 months.
Until then, I hope you had a good Christmas and New Year and that you enjoy our little adventure.