Prototyping is an exciting time in game development. During my time at Ustwo Games, we have prototyped everything from a castaway simulator to a village drama about the world of language.
The most important thing to remember in prototyping is: know what you are trying to prove. One tool won't be able to help you with creating everything you need in narrative, level design, and logic, but running short prototypes can be an invaluable way to test your big ideas for each separate element. If you're excited about an idea, it's far easier to get the rest of the team excited as well if they can see it in action.
Free tools are a great way to adopt this approach, so we use them enthusiastically. With tools like Fungus, ProBuilder, and Twine, you can quickly get something up and running. Even if the prototype doesn't look completely polished, it will still help you learn something new about the game you want to make.
Building with Fungus
On a basic level, Fungus is a tool for creating narrative elements inside Unity. Similar to Scratch and other visual scripting systems, Fungus consists of blocks of code that can be reordered and sequenced, giving you extra tools that can be hooked directly into your game for prototyping.
We first started using Fungus in the early prototyping of Assemble With Care, our most recent release. Matt Newcombe, the lead programmer on the project, suggested we use it to help with shaping conversations, as we already knew these would be central to the game.
"Fungus gives you extra tools that can be hooked directly into your game for prototyping"
In Assemble With Care, you play as Maria, a repairwoman who helps save the town's cherished possessions. As you restore objects, you carry out a conversation with the customer -- much like the conversation you'd have in the hairdressers, or with a taxi driver.
This meant the conversations needed to be dynamic, with characters "reacting" to the player doing things like unscrewing the back off a camera. Fungus allows you to do this easily, by "listening" to the gameplay and then triggering audio and on-screen text when a certain action is completed.
We played around with this functionality a lot in the early stages of Assemble -- sometimes, perhaps, taking it a bit too far. One of the level concepts we had was about fixing dolls. The player would swap in parts like pirate heads, or skeleton legs, and hear the child watching react in delight or horror. As fun as the level was, it didn't fit in the game, so we decided not to keep it.
A far less creepy idea we had was about fixing a picture frame. As you tried to repair the picture frame, the glass fell out and broke into tiny shards. In Fungus, this was as simple as turning one object off (the complete glass), and other objects on (the tiny shards).
As we could do this quickly and roughly in Fungus, we didn't have to spend valuable programmer time on it. Even though this level didn't make it into the game, it still taught us valuable lessons about how to add moments of surprise when the player was fixing objects.
Although these two examples didn't make it through prototyping, Fungus did. We ended up using Fungus for level logic throughout Assemble, building on it with our own "blocks" of animation and code. In fact, we are now so smitten with Fungus that we are using it for NPC conversations in our upcoming projects as well.
However, I do have one word of advice for using Fungus during production. If you're combining Fungus with your own code, it's very easy to get them jumbled up, which can be a nightmare when it comes to debugging. I'd recommend making a clear delineation between what you script in Fungus, and what you script in C# (or other scripts). Trust me, it will save you headaches down the road.
Getting on with ProBuilder
"Through ProBuilder, you can quickly create level environments without needing to run a separate program"
ProBuilder is a free tool within Unity, focused on 3D modeling and level design. Through ProBuilder, you can quickly create level environments without needing to run a separate program such as Maya or Blender. So, unsurprisingly, ProBuilder is another extremely useful tool for prototyping.
We used ProBuilder for prototyping Assemble, but a number of people in the team, including myself, were already fans of the tool, having used it for previous prototypes and in personal projects.
As we started to use ProBuilder on Assemble, we realized that it could be used to quickly build objects as well as environments. Say, for example, we were designing a level where you needed to fix a lamp. Using ProBuilder, we can quickly make a lamp that wasn't just lifeless cubes -- in fact, we could create the basic shapes, with a bit of a colour, so it was easy to recognise. This meant everyone on the team could visualize where the object would go and how the final level would look.
But what works for one kind of developer, doesn't work for everyone. Our artists struggled with ProBuilder, because the toolset is designed to be basic and easy to use. It's a bit like being asked to work in Paint when you're used to Photoshop.
To get around this, Max van der Merwe, our technical artist, created our own custom tool that would allow us to export from ProBuilder into Maya. So when the levels "graduated" from prototyping, we could export our existing shapes directly into Maya. Our artists could then work directly onto, say, the outline of the lamp, before sending the completed object back into Unity. Happy developers all round.
In the end, almost all the levels in Assemble started out in ProBuilder. It's now a firm favourite among the team, and we are using it for our other, unannounced projects too.
Spinning a story with Twine
You've likely heard of Twine, a free tool for developing narrative-driven games through hypertext. Twine can be used to prototype long conversations, including branching narratives. In the vanilla version, you can also add text-based designs, 2D pictures, and other simple audio/visual elements. Finished projects can look anywhere between a beautiful digital poetry book and a Geocities website, circa 2000.
"You'll learn loads more about the tool by finishing a project, rather than just diving in with your magnum opus"
Twine is often seen as a "beginners" tool, but it can be extremely useful for prototyping larger games. As it is just text, you can evoke a much bigger game than what is in front of you. It's much faster, and much cheaper, to just say there is a beautiful castle than to paint one. You can also get Twine to talk to Unity through Yarnspinner -- but that's a whole other article.
We've used Twine a lot for prototyping, especially for games with long-form storytelling. For example, a few years ago, we were experimenting with a game that would be played over one or two weeks. The player would pick up their phone, speak to characters, make a decision, and then the decision would take real-time to play out. Twine was a really easy way to visualize that story and see how the narrative decisions would work in practice.
Twine's simplicity can be deceptive. Don't forget the golden rule of prototyping: know what you are trying to prove. Regardless of your skill level, I wouldn't recommend shooting for the stars in your very first Twine project. Rather than trying to create something novel-length, do something small that only takes 15 minutes to play through. You'll learn loads more about the tool by finishing a project, rather than just diving in with your magnum opus.
There are some brilliant games built entirely on Twine, but on their own these tools might not get you everything you need. Many actually work best when combined with your own code or with other paid tools. But still, when it comes to fast-and-loose prototyping, these tools can be a lifesaver.
These are just a few of my ideas for how Twine, ProBuilder and Fungus can be used to speed up prototyping, but I'm sure there are many, many others. Free tools have a huge advantage in this way -- there are tons of resources available for them. By picking up a free tool, you are joining a community of developers from total beginners to complete experts. There's always someone doing something you'd never have thought of.
Joel Beardshaw is a lead game designer at Ustwo Games. He recently shipped Assemble with Care for Apple Arcade and is currently working as part of the prototyping team. He has worked as a level designer for a large portion of his 12 year career. Before Ustwo, he worked in Birmingham at Codemasters. More recently he has been experimenting with making shorter and more personal games as well as making games inside Instagram filters.