What is there to say, we've completed it and made it to the end of this project. A bitter sweet feeling so lets recap what happened in the final week. I unfortunately caught the flu right before submission was due however I did make plenty of adjustments before hand. Such as making the boss room, implementing a better map for our players to navigate through the tower and implementing a saving and loading system and various other programming additions.
Level Design
The boss room as shown above emphasizes the final steps of ascending the Tower of Ash. Right before the player may recover any healing flasks and lost health along the way before their final tussle with the final boss. The top part of the arena is not able to be wall jumped so that players have a harder time of trying to get a cheap win over the boss by avoiding all of it's ground attacks. Plus once the player enters, they cannot back out as the first time ever a door locks behind them.
I also just did general clean up of some levels, removed unnecessary sections that hurt the level's pacing overall and made the middle sections less frustrating to climb. On top of that I adjusted the additive loading to load all connected rooms and all rooms connected to the connected rooms, trying to prevent the doubling back issue as much as possible. I also combined a lot of tower's base into bigger chunks to reduce the amount of rooms and additive loading that needed to be done.
Game Design
Above is the new and improved map, that actually shows connections between rooms with white lines. This was done as it was noted in a playtest that the previous map wasn't all that useful because people had no idea where it stopped or how they connected to each other. So taking the prior work of Jon, went in and painstakingly added the white lines to every individual frame. However it was worth it as it was better received than before, not perfect but given the time frame I think it was a worthwhile solution.
Programming
This week I did a lot of programming from large implementations to small bug fixes. One of the major accomplishments though was the saving and loading system with a binary encrypted save file to prevent tampering.
Here is the save data manager class, this class takes all the relevant data that we want to store and converts it all to basic data types and arrays, as we cannot save fully complex classes with binary encryptions. All of these variables are public for easy retrieval later.
All of this data is then put into the static save system class where it saves the save data on the hard drive of the user where it won't be overwritten. It is saved as an smd file which is our own unique file that only this binary reader can decode. It opens up a file stream and then closes it when finished to prevent errors. The bottom bool is for the main menu and whether or not the continue button appears, this is so the player doesn't accidentally load when they have no save data.
Then finally the when the data is read again it is transferred back to it's respective scriptable objects. There were a lot of issues with this system, one I had to rework the entire tinder cache system as it relied on vector2's and every time I attempted to retrieve the values, errors would get thrown despite the fact I was able to print the values and prove there was no issue with the data itself. It ended up just being easier to rework the system and have id's for each tinder cache and quickly implementing that.
Other things I implemented, a checkpoint system for changing spawn locations. Basically so that the player doesn't spawn at the very bottom each time as it didn't make sense to not spawn next to the bonfire after triggering it. It was a simple ontriggerenter2d event that changed the spawn location in the scriptable object.
I also implemented the stoppage of health counting down whilst in the death state, this prevents the health counting down whilst the player is in the upgrade shop which is unfair.
This was also implemented as well, but we prevent health from ticking down to 0 when healing, it was more frustrating for our players to die as they attempted to heal than to try to manage healing without dying before hand to the timer, overall it wasn't fun and so I implemented a fix to it. Small but considerable.
Reflection
I can't believe this project is over, much less that I was apart of it. I learned a lot and I think even with all the short comings of the game, it is still something people would be willing to sit down and play through to experience. I couldn't have had a better project lead with Jon, he really kept the project going and stayed on top of everything especially when I got sick. It truly is a bitter sweet goodbye, I would say "Come back next week for more exciting updates!" but we're out of updates, this time, there is no continue.
Comments