That said, I don't want to just copy the Mega Man games straight up, but I feel that I don't have the experience to create my own original game right off the bat. Like how some artists start their careers with fan art of their favorite franchises or how some writers get their start in fan fiction, I need to start by imitating things I enjoy until I can feel confident in my abilities to make video games. Lots of forums and websites tell new comers to the craft to start really small. They recommend games like Pong or maybe Space Invaders or maybe 1942; but usually Pong. Making a game as simple as Pong can be great to practice your ability to make a game compelling, but I can't let myself go that small for reasons of maintaining my interest in the project as well as feeling like I could learn more by being more ambitious.
With that introduction out of the way, here's the major milestones I want to hit with this engine:
- Replicate Cutman's level from Mega Man 1, release it (for free of course) online and gather feedback.
Cutman's level is pretty simple all things considered. There's a good number of things for me to have to account for (boss fight, multiple enemies, some vertical as well as horizontal sections, etc) but not enough to overwhelm me (one level means no real weapon switching/upgrades, no level select or title screen really needed, a ton of enemies won't appear, no need to come up with and polish my own original level design, etc). All the functions of the game are pretty straight forward and easily checked. I could make improvements at this stage, but I probably won't make many (one improvement I will make is not implementing the infamous "Pause Trick" that lets you murder bosses easily). Once I have released this and gotten some feedback on what I did wrong or poorly, I can move on to the next stage.
- Create a short game in the Mega Man tradition that doesn't copy weapon, enemy or level designs.
This allows me to polish up things from the previous milestone and then improve on them and implement more functionality. I view this as a halfway point between starting from scratch and releasing my first "real" game. If I can get here, I'll have 4-5 levels with some sort of game mechanic that is hopefully fun and probably not very original. This step will be very much focusing on presentation and what it takes to release an actual game. Reaching this milestone will be a big deal for me because it will mean that I have what it takes to make a "real" game. I will have proved to myself that I have a shot at being successful at this. I'll release it for free online and more or less beg people to play it and give me feedback.
- Create an honest to goodness video game and release it commercially.
This milestone is currently a long way off, but it's part of what will keep me going. This is my carrot at the end of the stick. It doesn't matter if it's a success or not, it just matters that I make it here. It'd be great if it was a success for me (I'm defining success here as I can afford to take my wife out to dinner with the profits), but that's not the primary reason I'd be happy. If I can release a game commercially, then I've proven to myself that I have the basic skills to live as a game developer. This is the point where I would feel confident enough to apply to developer jobs at game studios. That far off dream is what gives me the energy to come home after work each day and program for another three to five hours.
I plan on documenting the entire process of reaching for these goals here, on this blog. As I go along I expect that I'll be writing posts about me learning things pertaining to design of a game overall, level design, making sprites (I'm a very poor artist) and debugging. As I release each milestone, I'll be posting about feedback I get and how I intend to incorporate those suggestions/criticisms into the engine. I'll also be taking breaks from programming sometimes to post here about past games I've made (successfully finished ones and maybe a post about the ones that were not so successful), if only to document my past failings and maybe learn something from them. I'll probably start that sometime in the next few weeks depending on how busy I get.