finally solved the memory issues and got the engine in a stabe place, so i thought it was finally time to make a progress update!! :smile:
after my i uploaded previous devlog,
I had made the descision to switch from baking in sprites right into the game, to reading the decompiled flash assets from the SD card instead
(this was for a few reasons. I thought it was a bad idea to package a public build of the game with
copywrited assets, to avoid legal issues, but it also opens some pretty cool doors, like modding and reskinning!)
adding in all 5 ages and all their sprites was easy, and it was working just fine on emulator,
but then I tried on console..... it crashed my entire sysetm whenever it got to around age 3, sometimes
right away, sometimes I just had to think about it and it would crash... sometimes i would see it crahing in my dreams
and i would wake up and it would be crashing in front of my face !!!
I struggled with this for months, went crazy actual coocoo bananas to
the point that didn't even wanna look at this project anymore.. but I finally just sat down
and committed myself to it again, and ended up making an image swizzler/caching system
that converts assets into 3DS optimized textures (32-bit to 16-bit, power of 2 downscaling,
reorganizing the pixels into 8x8 tiles, etc) and caches them into binary files on the first boot
of the game! ages then dynamically load, 2 at a time! the current age and the next age, and
if there's still some units of a previous age still alive after both the player and the enemy
have evolved, theres usually still room in memory for them too until they die and are fully culled from memory!
a few other small things worth mentioning is that I made a wood grain texture generator which generates a new wood
grain texture every time the game is booted for use on the bottom screen's GUI!
and to create 3D depth whenthe background image of the ground/treeline is just one image, i built a custom pixel scanning
algorithm which is applied to the image during the cachine process, which converts it into 2 seperate
assets which are then rendered at different depths!
another thing worth mentioning is that
I've completely reworked formation logic, in my original devlog they just attacked opposing units
and ranged units shot from behidnd friendly units that were attacking, it was very simple, but caused a lot of problems.
but I've refined it so now units follow a strict rank order, so theres a frontline unit rank,
and a support unit rank. support ranks are just ranged units that are directly behind
an attacking frontline unit, all frontline units default to melee in close combat, and it just simply works like it should!!
and the base enterance hitbox is also refined, so that now units spawn on one edge of it, and opposing units attack the other edge,
leaving the space in the middle, which solved all of the weird overlapping and desync in the formation line!!
the big reasons for the memory issues and system crashes I've been
dealing with the past year was the massive overhead of
processing and opimizing literally hundreds of pngs on the spot in during gameplay..
and on top of that, the power of 2 conversions i initially were using were converting
textures into HIGHER resolution instead of smaller! for example,
the dinorider's death sprites are 140 pixels wide, and they were being converted to 256 pixels!
and so the system just always ran out of memory and even cpu power, from all the image processing happening ingame.
the entire thing was just so messy, and it took me a long time to solve,
and I had actually reverted to much older build and soft resetted more than once!
but it's working now! and the systems are wayyy cleaner!
I could technically add as many ages as i want,
and theyd all load as they should!
the current engine is very very solid, adding the rest of the features should
honestly be way simpler! I'm working hard right now at getting the special attacks fully implemented,
and still continuing to tweak hitboxes and sprite offsets, to get the formation
looking tight and consistent, and then I'll be focusing on the turrets!
I'm already making progress on the special attacks, so you definitely
won't be waiting another year for the next devlog!
I'm feeling confident my next
one will be my last for this project! :smile:
noo pls stop unsubscribing from my music channel lol i swear im still making music :cry:
huge news for anyone who was following my age of war 3DS port,
I finally cleared the wall that was standing in my way for months
and fixed the memory crashes!! I solved it by making an image swizzler
which generates a binary cache on the first launch, which
optimizes the images for 3DS hardware and converts them into .bin files for each age!
now an entire age is able to load in a second!!! I'm feeling very positive about this,
I'm working now on adding in special attacks, and getting all the values aligned with the original game,
like health, xp given, gold given, cooldown speed, damage given, health, etc, for each unit,
I'll post a new devlog to show the current progress! :cool:
wtf