With limited time comes limited progress. Because this is literally my first foray into game development I need to select the right tools for the job to maximize my efforts. This post is going to catalog the foundational assets I’m using up to this point and the reasoning behind my choices.
There are lots of options to choose from in Unity’s asset store and it takes research outside of just the asset’s reviews to decide if it’s right for your game or not. So I took to various game dev and Unity related subreddits, joined many a Discord community, and plowed through dev blogs and articles. I also don’t want to bloat my game by including assets which provide functionality I don’t plan on using (even though I may have failed at this 😆) and I had to take pricing into account as I don’t actually plan to make any money off of my first game. Here’s what I ended up with:
Bolt by Ludiq
Bolt is a visual scripting tool which empowers me to use programatic thinking without requiring me to learn all of the semantics associated with C#. I’m a very visual person so being able to literally watch the code systematically execute commands, group, colorize, and name specific collections of functionality, and see real time error checking has been the most empowering tool of my game dev tool kit.
The tool was very accessible even from my early, complete novice days. The install went smoothly, the tutorials were incredibly easy to follow and well explained, and the community has been incredibly helpful. They also hold regular game jams which I really hope to jump in on in the near future.
As I slowly advance my skills, Bolt advances with me. Adding other assets to my project and injecting their functionality into Bolt was confusing at first, but now makes complete sense. Same goes for using Scriptable Objects - you simply save the code into your project and use Bolt’s Unit Options Updater/Wizard to get everything sync’d up and viola, you’re off to the races.
Bolt is growing! As their user base continues to amass so does the breadth of their tutorials, videos, and community interaction. Growth also means revenue which has enabled the company to hire more people and to focus on developing Bolt 2 which will introduce a host of new functionality alongside greatly increased performance.
I’m clearly not an expert on this, but from what I understand the way Unity interprets Bolt’s macros is not the most performance efficient way to do things. Bolt 2 is going to essentially convert your bolt macros into C# which theoretically should be almost as performant as writing actual C# scripts. Oh, the things I get excited about nowadays.
Core GameKit by DarkTonic
As soon as I knew I wanted to make a bullet-hell/shoot-em-up type game I started reading about implementing the foundational concepts of the genre. Primarily, the ability to pool (meaning using Unity’s prefabs to reuse game objects like bullets, enemies, and effects over and over to increase performance by pre-loading a specific quantity when the scene loads) and to manage spawning and waves (the timing, logic, and placement of where enemies, items, and other objects appear throughout each level). All signs pointed to Core GameKit.
Honestly, I was a little put off with their site and forums because they look a bit dated and thrown together, but don’t let it fool you - this asset is a powerhouse. Core GameKit is a Swiss army knife for this kind of game offering modules dedicated to pooling, spawning, level/wave management, global variables, enemy stat management, audio swapping, and so much more.
My biggest qualm is that the bar for entry is a bit higher than Bolt’s in terms of required programming knowledge. The documentation isn’t detailed enough for an absolute beginner to hop in and know what’s going on as there are references to development terminology that is assumed to be understood. Because of this, I feel like I’m utilizing a small piece of what the asset truly offers. Pooling and level/wave management are about as deep as I go and I ended up hand-rolling the rest, but I do plan to explore the audio triggers when the need arises. But honestly if that’s all I’m using it for, it’s still completely worth it due to how dynamic and easy to use those modules are. The dev is also very responsive on the forums.
Uni Bullet Hell by West Hill
There are tons of options for bullet patterns (the various ways enemies fire off attacks in a bullet-hell/shoot-em-up game) out there, but UBH appeared to be the most lightweight in that it didn’t try to step on anyone else’s toes and simply focused on providing as many customizable bullet patterns as possible. This demo video only scratches the surface of the possibilities. Another huge plus is that it provides a seamless integration with Core GameKit’s pooling functionality which is huge as there could be hundreds of bullets on the screen at once. Once you get everything set up you never have to worry about it again!
UBH offers even less in terms of community and their site is literally just a basic “how to setup UBH” but honestly that’s all you need. Their developer responded to my questions after a few days but honestly it was mainly user error on my part. Because of the laser focus of the asset, nothing else is really needed. Essentially you choose from one or more of the preset bullet patterns, attach it to your object, and then you can customize every single aspect of what bullets get fired, move speed, acceleration speed, amount, turn radius, homing capabilities, etc. etc. etc. it’s fantastic.
My one and only drawback (which again, could be user error) is I can’t find a way to associate the shot fired with the parent object which means I can’t dynamically assign a damage amount to the enemy, but rather to the bullet. This isn’t a huge deal because I’ve created a bevy of custom bullets for enemies to choose from but I did spend a day or two trying to make this happen from the enemy’s controller.
I nabbed a slew of interesting assets from Humble Bundle a while back and caught a handful of assets on sale over the months. I started using 2d Movements for introducing circular and pendulum movement to specific enemies but it requires me to nest objects inside of nearly empty parent objects to utilize other forms of movement (like entering and exiting the scene). Not the end of the world, but that was certainly confusing for me to figure out how to handle enemies in a group nested three or four objects deep just to maintain consistent movement patterns.
This Sprite Outliner effect has been super valuable to highlighting enemies, objects, and the player. I’m using this to outline an object’s sprite when I mouseover it, showing a specific color to denote wether it’s an enemy, item, or other. I’ll likely also use it as part of inventory and skill management later down the road. It was incredibly surprising how difficult of an effect this was to achieve on my own so I’m glad to have a dedicated asset to use for it.
Finally, I haven’t gotten around to using Inventory Pro yet but apparently other Bolt users have it up and running and it seems fantastic. Excited to get to the point where I can dig in.
If you’ve read this far: wow. I’d love to hear any feedback on these choices or recommendations for assets you’ve used in similar projects.