I knew I was gonna need to do a lot of tuning in Sentinels, I wanted to be able to make changes and be flexible. A tower defense game normally needs serious tuning, and Sentinels, being a hybrid, was gonna need alot more since gameplay experimentation would result in design changes… So I opted for a procedural system to smooth things out for me.
The Director system was designed to allow me to setup encounters either uniquely for a level, or potentially shared with multiple levels, allowing me to tune an encounter and reuse it in a level where it proves to be fun. Being able to visualize the flow of the level, setup wave events/properties, power levels, etc was something that I wanted to be able to do quickly. The Director, after much toiling, was able to satisfy that goal.
I am able to scrub through the timeline, change power levels, and get a preview of what it looks like in the level, as well as an icon stack at bottom that gives you a more bird’s eye view of multiple waves. This was, and continues to be hugely useful for not only making rapid iterations, but since it’s mostly procedural I can make pretty sweeping changes to things like speed, seperation, enemy density, etc. in order to test out different gameplay scenarios to figure out what is most fun.
Overall this is a good system, but I made many mistakes along the way, sadly. I actually started with a standard editor, where I would specify the creeps that came in, but it quickly became apparent that this was going to suck a ton of time, and not necessarily produce a better product. It gave precise control, of course, but when you are wanting to make economy changes, this can fairly dramatically change how many enemies you want to throw at the player, possibly invalidating a lot of work… I thought about having a hybrid where it was procedural, but you could override with direct editing where needed, and I still might do that, but for now the procedural system is working well enough.
I also changed the way the internal procedural data was handled more times than I’d like to admit… I settled on a good solution, but something this critical to the project had me iterating on it way more than I thought I would. Live and learn, I suppose.