SnifitGuy wrote:When I get the code, I'm so going to try (and most likely fail) at creating my own custom character. How difficult was it to make the different characters?
It depends. If you have no LunaLua experience, I recommend not starting with a character. They're much more advanced than beginner status. I would recommend trying to do fun silly things like a double jump or weird tricks with layer manipulation or enemy spawning or something until you're more comfortable.
If you already know LunaLua the hardest thing is designing the characters, really. And ensuring they're compatible with character switching - that their mechanics reliably turn off when you switch to Mario or Luigi or whoever. It gets even trickier if you're switching between one another. That sort of juggling is often quite difficult.
But it also depends on the characters. Wario was relatively easy, so was Zelda oddly enough, but someone like Ninja Bomberman had a hella complex task before him. Like, the way SMBX worked it spawns bomb explosion hitboxes one frame before the bomb explosion animation. We can detect the animation - we can't detect the hitbox reliably. And since the NPC dies before the animation exists, they never intersect reliably. So what I had to do THERE was create a system by which NPCs have 'ghost hitboxes' that can't hurt you, but exist for exactly one frame after they die. Then detect the collision between the explosion and that ghost hitbox if the enemy NPC is indeed dead.
Maybe this could be done better now that onNPCKill exists, but at the time ensuring your jumps refreshed after you killed an enemy with the explosion radius of a bomb was a multi-week investigation.
The characters tomorrow also have unique features that took a LONG time and a lot of code to replicate faithfully, but I'm pleased with how they ended up.
So it really does vary. Something that seems utterly mundane (like detecting when a bomb explosion kills an NPC) is insanely hard, whereas something that seems utterly mad (Zelda's save state based powerups) is relatively easy by comparison (all red's savestate library really does is find structs in memory, copy them, then overwrite them).