As the game only has three levels I am reluctant to call it a full game, although it does have all the necessary mechanics completed. Adding a few more levels, projectiles and bosses wouldn't take too long but I didn't want to turn this project into a full game, I have already achieved my goal.
Originally the game used more realistic jumping and movement velocities, when I decided to turn it into a Mega Man game I had to adjust it to accurately mirror the Mega Man controls and physics. A lot of study and testing went into this, including getting the collision box around Mega Man just right.
This game only contains three levels, which are unlocked one after the other. The final level was an added bonus, it was only added on a whim which gave me a chance to add a more advanced and difficult boss.
Several playable characters are available, they are unlocked as you complete the levels and find items. You're able to switch between them during a level except during the last boss fight.
Why a platformer?
This is a project I've been wanting to do for a long time. Since my time with BYOND I've created several small pixel movement demos in an attempt to create a simple side scrolling platformer, unfortunately BYOND lacked some features which made it possible.
With BYOND 4.0 came some necessary features, key up/down detection, interface customization and client screen offsets. I decided to start from scratch and make a simple platformer game from the ground up.
Is it Multi-Player?
Unfortunately the engine could only be used as a single player game. I tested the possibility of a multiplayer option multiple times but it just wasn't reasonable, the data transfer is just too slow; the game appears very jumpy to clients. It's not unexpected, the networking in BYOND is obviously not designed for that sort of game. Perhaps if the network export features were more reliable, it may have been possible.
I also toyed with the ideas of 2-player gameplay using the same keyboard. It worked fine but didn't seem as useful as network play, and the game wasn't meant to grow too big.
Will the game be updated?
Unlikely. BYOND isn't the best platform for a project like this, especially lacking multi-player support. There is an unknown problem where the game appears to slow-down and become less responsive; I spent a lot of time trying to track down any leaks but found nothing significant; everything the game creates is cleaned up correctly. Sadly BYOND lacks some more in-depth debugging features at this time.
This makes me reluctant to add any more to the game because features may have to be disabled.
Was it difficult?
Yes and no. The challenge was that the game required many unique systems, I had to create my own libraries and management systems. Game states were used to separate areas of the game. Sprites represent all game objects, which only use objects to display themselves. Sprites also had to be bigger than 32x32, up to 256x256. A custom icon management method was required as the sprites were bigger than 32x32, I couldn't decipher how the large icons worked in 4.0 so I had to create my own method using the 32x32 limitation.
The hardest part was dealing with the icons, something I don't like doing. This is the major reason more wasn't added.
Enemy AI was especially difficult, having never worked with AI in a platformer before I had to be creative.
Any plans to release the source
Not at this time. Due to my lack of experience with this kind of game some parts of the code doesn't look too pretty. I don't believe it would be beneficial to release it in the current state.
As for the libraries and such at the base of the game, possibly. I made them first and well enough but I'm no expert and the BYOND community is unforgiving if a library has a flaw or uses something that has a better alternative. The safest option is to not release anything.
What has BYOND 4.0 allowed?
The best feature is the interface and the ability to customize macros, allowing you to detect key up/down events. The other major feature was allowing the client screen to be moved in pixels.
Both of these features were essential.