Survivors of a mysterious apocalypse in which an artifact has caused Dreams to intrude on your dimension, you find yourselves in the only inhabitable space left. Get to work developing protections from the Dream Haze, head out into the unknown, and exploit the new resources this apocalypse has brought forth to rebuild a new society, grow strong with fantastical powers, and destroy the source of the intrusions for the good of all.
We've been spending the last few weeks working on Synonauts, and as we approach a point where it's ready to start showing off, we want to just talk about the technical progress we've made, and our experience organising and working on this project in Godot.
To start things off, we should say that we've been using Godot 4.0 beta for Synonauts, for several reasons;
Now, let's get into the details of our workflow and approach to making this game. The biggest revelation in development of Synonauts has been learning to make custom Resources, as prompted by this youtube video. Our inventory system is heavily based on this tutorial, and we then followed the same logic to develop Recipes, which are basically just a list of items for the input, and a list of items for the output. We also wrote up Drop Tables, which were somewhat more complicated, so we'll go into the design here:
Drop Tables contain a list of Drop Table Entries. A Drop Table Entry has reference to an Item, a min and max quantity, and a chance to drop. When prompted for a list of drops, the Drop Table will go through every Drop Table Entry in its list, roll a die, and if the number is below the chance to drop, it will add the item to a drop list, with a random quantity between the min and max. There is also a subtype of Drop Table Entry, called Drop Table Entry Exclusive, which contains a list of Drop Table Entries, and will pick only one of them from the list, using their chance to drop as a weight. We are likely going to extend this slightly, so that a Drop Table Entry can contain a Drop Table itself, allowing an Exclusive Entry to pick between multiple Drop Tables, rather than single items, but right now the thought is giving us a headache.
Aside from a myriad of custom Resources, we've also put together some components that use these resources and their interfaces. We a standardised Collectible Item object that will fall to the ground and display a sprite, and holds a reference to its item type and an item count. Next we made an Item Collector component that detects these Collectible Items in its area, and sends a signal that can be connected to an Inventory, so the Inventory can store the items if there is space. Lastly, we made a simple component that will roll for items on a Drop Table, and spawn the results as Collectible Items, so destroying objects or defeating enemies can actually give you things, when we make them.
So essentially, we have a lot of the basic building blocks that make a game like this work. With very little additional coding, we could simply add a ton of content and have a fairly simple but fully functional crafting game. We could add any number of items, have them drop from enemies and blocks, and then they could be combined in a recipe to produce new things. That right there is progression, already! But there are several more mechanics we want before the game goes live, and a LOT more coming before it's done. Eventually we want automation, we want distant bases, we even want you to set up your own 4G network (not even really joking). But what do we want right now?
But ultimately, the thing we're going to be working on next is much less impactful, but arguably more important: Visuals. Without an appealing set of visuals as a base, we can't effectively share our progress and get people interested in the game itself. With unappealing visuals, it's that much harder for people to look past them and see the fun of the gameplay, and imagine themselves and their friends taking part. So visuals are necessary for driving interest at this early stage, in the lead up to early access.
We have a lot of assets from various humble bundles, so we're going to go through, pick out a lot of sprites that work well together, and start populating the game with a variety of basic items and objects and recipes. We'll also reserve some sprites to use for some simple basic enemies and crafting stations, so that when we implement those functionally, we can show them off visually too. Lastly, we'll make note of any gaps in our art - If we just can't find anything that works for a flying enemy, or there's nothing that resembles an amulet, then we'll have to just make it ourselves. Maybe we'll finally get good at art.
That's all there is to say about Synonauts right now. Next week, we'll see if we can make a post about CGA Hell, where we left it off, and our plans for where to take it when we come back to it. Keep an eye out for that one, because it'll contain a lot of visual intrigue!
Did you like this post? Tell us
Leave a comment
Log in with your itch.io account to leave a comment.