Welcome back to a very special edition of my personal Hacktoberfest challenge, where I built a Typing Platformer in 7 days using nothing my but own personal skills (and a JS Game Engine cal MelonJS of course).
If you haven't heard of this before, I journaled (almost) every day here in Dev.to, and you can find those entries below:
But now that the challenge is complete, I wanted to do a quick post-mortem, look back on the experience and cover the things that went right and the ones that turned out ... less good than I had expected (to put it mildly).
Seven days for a working prototype of something I've never done before is not a lot of time. Especially if you consider I'm a coder, not a visual or sound artist.
I have to admit, I was pretty excited about the art part because I do like to draw and since I don't get enough time to do it, this was the perfect excuse to "force me" into doing it.
Finally, the sounds I was certain I would get from the Internet since I have no experience creating them.
I feel like this list is bigger, so let's start here. For my personal projects I usually always do the same thing: I tend to get excited about them and make one, conscious and realistic plan but keep another... shall we say, wish list in the back of my mind for it.
The original plan included:
- At least one final boss
- More enemies variation
- Some environment mechanics (i.e moving platforms, triggers for tramps and so on).
- More stages, I always thought I would manage to get at least 3 done.
- Inter-stage results. You know, the screen that pops-up after you finished with the level and gives you points based on your performance? I managed to only get a final one.
And my wish list, also included:
- Some kind of scripted dialog, showing a basic a cheesy back-story
- A waaaaay better looking UI
- Better level design, something that would allow my kid to move forward but at the same time, give him a challenge once he understood how to play the game and started wanting more from it.
In the end, time was the bane of me, and it shouldn't be a surprise, it was the main constraint after all. I was able to work on this project around 4 hours per day, and it was normally during the late nights after everyone in the house went to sleep, so more than once I would fall asleep mid-something and then wake up, finish as best as I could and then go to sleep.
Time affected the following:
Drawing the levels took me a lot of time, which is normal to me, as I've already mentioned, I'm not an artist, so achieving somewhat of a similar result to my original vision for each level took some time. It was around 3 - 4 hours per level if I'm not mistaken.
Creating the animations for both, the main character and the blobby enemies was another completely different challenge. I had never done any kind of animation. I have to say, I'm really proud of the ninja's running animation. It's not perfect, by any means, but I really liked it :)
Running into random gamedev-related bugs was another non-art related pain I suffered which swallowed a lot of time as well. After I was done with the first level's background, I tried to create a map for it and ran into several issues: Initially, nothing worked since my map wasn't a POT texture. What the heck is a POT texture? That was my first thought, eventually, I learned about Power Of Two textures, and why they were important. I then ran into issues with misaligned collision maps which rendered the level unplayable. And the best one? That was a bug I had after I had finished everything and decided to create the final gameplay video, for some reason, the texture for the map was getting truncated after a certain point. I was unable to understand why this was happening but I managed to find a workaround for it.
Another issue I ran into was not programming related: exhaustation
I'm usually used to working during those times of the night, but instead of coding, I tend to write articles so it was a change of pace, forcing me to get into coding-mode or even drawing-mode while being so tired from a full day of work.
In the end, time also determined how I spent my limited energy, which ended up influencing things like:
- The unfinished UI. I wasn't able to find a good placement or design for the action UI, which tells you which words you can type in order to perform each action.
- The lack of inter-level screens. I just worried about moving from one level to the next, and I was able to find a quick and simple way, so I went with it. Having extra screens in between would've taken too much time.
- Lack of final bosses. I really wanted to have, at least one, but I couldn't even stop to think about what kind of mechanichs it would have, since you're a bit restricted by the nature of the controls, it would require some extra thought.
- And essentially, anything from my wishlist. I just had no time to tackle any of them.
I know the previous list is quite extensive, I had a lot of expectations after all. But with that being said, I think I can muster a few good points as well:
The typing mechanics were easy to implement. This was the first thing I tried and I'm happy to say after day one I had it working. This meant the game was actually doable.
Time was one of the main problems I had to endure but it was also a great motivational tool. I had no time to waste, and thus "analysis paralysis" wasn't an option. When in doubt, I just started doing and went with it. This shows in the silly design choices, "pixel art" (the quotes are there because true pixel artists would cringe at the sight of my creations) was a concious choice, since I felt it gave me more room to have bad lines and goofy looking desings. I liked the end-result, although I still wish I had a few more days (even a week) to just work on this part.
I did finish the prototype, so I have to add that into this list. The end result is playable, with all the visual and coding issues you can find, it's still playable and my kid liked it, so I count that as a big win.
The engine was very easy to work with. Aside from the random gamedev-related bugs I found which weren't really covered in the tutorials or the documentation, their website has a lot of information and the samples included help out quite a lot for those just getting into it. So I'm definitely glad I went with MelonJS, their platforming sample helped me kickstart my own prototype.
That is it, I think that in the end, the aim of these 7 days was for me to create a game, with the known limitation and the correct expectations I think I managed to do so successfully.
Of course, there are TONS of things to improve, my kid even started making suggestions after two minutes of playing, things like:
- Adding different enemy types.
- Adding final bosses, or at least one at the end of the game
- Easier to understand UI, I had to explain to him how to play which is something games shouldn't require in my opinion.
- Definitely more levels, and better level design.
Anyways, this has been my experience, what now? Now after this post-mortem is done, I'm starting to write a series of articles about melonJS and trying to explain the bits and pieces I got to learn in the process of these 7 days.
Is there anything you'd like to read about? Share it in the comments, and I'll add it to the schedule.
Thanks again for all the possitive comments and words of encourangment.
Until the next challenge! (or article, I don't know.. )