Posted October 03, 2023 by Zeke Lionhart
#update #development #changelog
And here we are, into 0.9. As stated last time, in this version I was focusing on improving a lot of existing things in the game, though I left balancing for the next update.
There was a lot to learn this time around, especially when it comes to making things faster. The standout, for me, is probably the use of particles. While I had some experience with particles before and was looking forward to trying it out again, It's been a while and my memory about it was vague at best - which is why I was avoiding using them until now. Funnily enough, while it did take me some time to get refamiliarized with the Particle System, it probably took less time than making and now removing the previous hand-made animations I had in place, especially the dust and pebbles from the Stonewall. And it looks MUCH better too! Now I have to keep in mind that, even if I forget stuff again and need to learn how to use the Particle System again, that's still a better choice than otherwise.
On a similar note, a neat new thing I've found out is the Trail Renderer component. It was taking me a while to figure out how to make a trail for the arrows using the Particle System, but I happened to stumbled upon a tutorial showing this tool I wasn't familiar with. And it solved my problem in less than a minute! I tried using a similar solution to the Fireball's smoke trail, but I wasn't able to. The problem is that for a number of reasons, the Fireball and its explosion are two different prefabs, and the projectile's trail was being deleted alongside it when it was time to instantiate the explosion. Instead, I've opted for creating each puff of smoke as a separate object with no parent, so they could last beyond the lifespan of the fireball itself. It feels like there might be a better solution out there, but this is good for now and I didn't want to waste much more time on this.
Another big thing I've added this time, though it isn't getting the spotlight it deserves, is a save system. I wouldn't dare imagine it would take me so long to figure that out and get it to work. I've used the standard .json method once and I knew that was pretty simple to set up and use, but saving on a WebGL game is a whole 'nother beast. Being unfamiliar with JavaScript and the lack of online tutorials is how to handle saving for this platform, it took me much longer than it should to get this working. As it turns out, not only PlayerPrefs and indexedDB saves get wiped out every time I upload a new build to itch.io (and I spent a lot of time finding only these solutions), but the official documentation and peer comments on localStorage were NOT newbie friendly. But after an entire day (and a half) learning the basics of the necessary JS and building and testing the game, I figured it out, it works, and now I can finally save and load anything I want! So despite the effort now with little return, when I finally get around to needing a save system to store the player's progress, it will be preeeetty easy to implement.
And finally, I decided to take some time to fix this build's resolution and aspect ratio. Up until now, I thought itch.io was in charge of the game's resolution, but it was pretty weird to me why it was set up to a 16:9 ratio while the game was obviously at 16:10. After some testing, I figured out itch.io had nothing to do with it, so it had to be somewhere in the project. First, I tried the canvas settings next, which too turned out to not be the case, as all my tests resulted in the same resolution every time. It all led me to find the "Player Settings" (silly me, I've always thought this was something related to the "person who plays", not the "thing the game is played on"). Getting here was a pain as well, but an easy fix once I realized it.
There were a few other smaller things, but I think this is enough for now. I'm pretty satisfied with the result, learned a lot on the way, and now I think it's about time to stop messing around and expanding the game. I've been thinking about how to deal with balancing and I got a few ideas I'll try out. I'll probably find a way to collect data (through programming or by hand), hand the game out to a few testers, and while they play I'll start developing the next few steps, such as a level system and a tutorial. But for now, this is all.
Changelist: