Community Spotlight – Bringing balance to the void
In our latest Community Spotlight, we catch up with spacedog, one of the makers of the game Void Runners, a blockchain game of decision-making and strategy, set in a sprawling sci-fi universe.
Last week we spoke about how spacedog got involved in the web3 game space, in today’s post, the last one of a series of two, we’ll talk about spacedog’s journey into Machinations. She’ll tell us how she first discovered and learned Machinations, and how she’s using the tool to design and balance the game economy of Void Runners. She will also share with us a few tips to use Machinations.
[Alex] Can you tell us a bit about your journey with Machinations?
[spacedog] I first tried Machinations quite a long time ago, back at an early stage in its life cycle.
I adore spreadsheets – I spend a lot of time in spreadsheets, but I’m constantly trying to use them for things that they’re not really designed for. And so I could see immediately that there was a huge amount of potential in the approach that Machinations was taking in.
But I wasn’t able to start using it fully straight away – if you’re working with bigger game development teams or in bigger companies, you need a little bit more time to bring in a new tool like Machinations, so that everyone can build a level of familiarity with it. But once I switched to this project – a small team where I can make up my own rules, I was like, great, this is going to be my chance to really dive into Machinations.
The first thing I did was to play around with one of the Infinite Runner diagrams that you provide. Tweaking and evolving things in existing diagrams is a really good way to get a little bit of fluency. I’ve also watched your videos and sat in on some of your webinars. Those presentations have been very helpful.
The next step for me was building models of other economies, like Wolf Game. The great thing about modeling an existing economy is that you’re not burning any time designing, and you know what to expect as outputs so you can immediately get a read on whether your model is working or not. From there I went to the next step of building my own design.
[A] What was your workflow with Machinations in regards to Void Runners development?
[S] With Void Runners, we’re using Machinations all the way through the stack. The game itself pits Ship owners and Outpost operators against each other in a game about breaking the rules and pushing your luck – we made an intro video you can check out to explain the dynamics.
The first set of models that I built was to check our ship balance. Our ships each have three stats (Capacity, Efficiency, Speed) which are defined by a relatively unique generation system – the ships build themselves iteratively from nested lists with weighted rarity. Each ship starts with a hull and iterates through the lists, rolling to decide if it’s going to add something from that list, and then rolling to pick which component if so. And then each of those components has a stat impact that determines the overall capability of the ship.
So it’s not that we start with the stats and say: make a ship with these stats. Instead, we start by building a cool ship and then see what stats come out of that – and that’s great for getting ships that look cool, but there’s a risk that we’d end up with a collection that was really unbalanced in terms of gameplay. That’s where Machinations comes into play, as a way of proving out that we’re also getting the balance right.
One of the first things that we did was to run test builds of the collection from the generator in Unity. We then dumped the stats out of Unity and pulled those into Machinations to build an initial, simple economy, to test and predict the ships’ performance. If we had ships with stats in these ranges, what would that do to their ability to travel around the Void and gain cargo?
Then you start to build Outposts into that system. You want to make sure that Outposts and Ships are balanced well against each other – I need to be sure that a ship’s earning ability is where I want it, but I also need the ratio between Ships and Outposts to be right, and I need to monitor their outcomes in a situation where the rules that are changing all the time, and potential player decisions mean that all of that is very dynamic. That would be a nightmare in a spreadsheet because you need to run a lot of iterations to really see the impact of small changes.
The Machinations team talks a lot about Monte-Carlo simulations – realistic probability, in other words – and I think some people don’t understand what a big deal that is. I could run spreadsheets that are doing a lot of simple randomization, but they’re nearly always individual use cases. Machinations lets me easily simulate stacks of naturalistic randomized outcomes so I can find outliers and feedback loops.
Another big change for me with Machinations has been regarding archiving and records keeping. In spreadsheets, you can iterate, but you’ll end up with 4,000 tabs and that’s not always easy to really do good record-keeping, and it makes the communication across the team difficult. So what I find effective with Machinations is to run a set of simulations, dump the outputs out to Google sheet, and then have an easy way to archive and monitor progress between balance passes.
So yeah, for me, being able to model that sequential randomness and then record those results has been a big shift in my workflow. The tool is also really helpful in getting people who are strangers to game design to understand how our game works. In that sense, Machinations becomes a communication tool in a way that a spreadsheet never could. It’s really a new paradigm and I feel like I’ve been waiting for it for 20 years!
[A] Are there any tricks or tips when using Machinations that you would like to share with our members?
[S] I find that quite a lot of new users don’t know about the Google Sheets integration. So they don’t know about being able to export and import data and they’re psyched when they find out about it.
I also use arrays a lot. I’m using them when I export datasets out of Unity. I get that big huge, dataset, but then I’ll have a spreadsheet set up that will digest all of that into a concatenated array that I can then pull straight back into Machinations and see playdata for a sample of hundred spaceships that I can roll against and pull the relevant stats out of the array for.
Layers are also really valuable for making diagrams more legible. And I use emojis a lot! It’s sort of silly, but it sort of isn’t. It can be a really good way of helping people keep track when zooming in and out a diagram.
[A] To conclude, is there any exciting news about Void Runner you would like to share with us?
[S] We’re minting on June 8th! We’ve also been unveiling a lot of our world-building. Check out our Twitter to meet some of the people who live in the Void, and to see more about our upcoming special reveals. Our gamepaper is also full of information about what to expect from the game itself.
Check out the first part of this community spotlight where we talk about how spacedog got involved in the web3 game space and what inspired her team to develop a web3 multiplayer spacefaring game.
Are you using Machinations and working on something cool? Reach out to contact[at]machinations.io if you’d like to be featured in our next Community Spotlight!