Today I decided to give Round Ninjas another try:
Basically, they dash out from the right side of the screen to the left, where they dissapear. The Ninjas are the only enemies in the game that respawn. Everytime they go offscreen, they are respawned back at their starting point. If the player scrolls over the spawn point again, the ninja will attack again.
This idea came to me when playing New Super Mario Bros. Most platformer game engines that I've seen erase and respawn enemies who go offscreen, and than back onscreen. Blocky Man doesn't do this. If an enemy goes offscreen, they won't dissapear and respawn back to their original position. My original idea for the ninjas was to have them quickly attack and disappear, and I figured that I would just program this enemy like I've seen in other platformers. That means that ninjas will keep respawning, however they will also do things that other enemies don't, like fall off cliffs.
Something else I realized when playing Mario is that Blocky Man shouldn't be able to move back and forth while jumping. In Mario games, or any platformer for that matter, once a player jumps they can't change the general direction they are heading, but they can slow their x-speed by pressing the oppisite direction. Blocky Man can move freely in mid-air, which I feel kind of defeats the purpose of jump puzzles, because the player can quickly move back to the ground they jumped from. Therefore, tomorrow I'm going to try and reprogram the jumping so movement isn't so free in mid-air. I guess I'll see how it goes.
On a final note, I forgot to mention that a few weeks ago I added RLE compression to transparent images in the game, and have immedietly noticed that the game runs smoother. I knew something was amiss when I was getting slowdown on the Robot City level, so I added RLE, and now it works fine. I know some people who've played the demo have mentioned performance issues, and this should help.