Thanks for writing up a postmortem! I love reading about the developer's experience making a game. Calling out the audio tools you used is especially helpful.
I recently finished working in Power Word: Pong, a game I made for participating in the GameDev.net November challenge, which asked participants to create a game based on the classical Pong, but with a creative twist. Incidentally, I could also submit the game to Game Off 2017.
As I'm been preparing myself for Ludum Dare 40, I wanted to make this game from scratch, as if it was made for the Compo, which is Ludum Dare's classic competition. The Compo requires almost every asset of the game to be made from scratch during the competition, therefore, in order to get some realistic training, I needed to make everything in my pong game from scratch, including music and sounds, which I had never done before. I also decided to make the game in Game Maker: Studio, a tool I recently got thanks to the generosity of two people (thanks to Eduardo Elrick for the engine and to Gustavo AC for the Android plugin!), and that I wanted to try as I've seen great Ludum Dare games being created with it.
So, let's see how everything went!
Gameplay and theme
I quickly decided how the game would be: two teams of several units that needed to be tactically moved through the field in order to be able to attack and defend. For this to work, the ball needed to be faster than the units.
I also wanted the game to have a theme and characters; I quickly decided to make it a battle between wizards. Castilla 1528 and Mythos probably influenced this choice: I was comparing the characters I drew for both games and then decided to try to draw a more detailed wizard (which in Castilla is extremely simple because I used 8x8 characters). After doing some initial experiments with placing and moving an animated character in Game Maker, I extended the concept to make it a battle between fire and ice wizards, as until that moment it was a battle between two teams of "blue" wizards with a "red" ball.
As I mentioned before, I wanted to try drawing more detailed graphics than those in Castilla 1528. Here are my first versions of the wizards:
I also drew some tiles for the background, and a couple of models of balls. The first "stable" version of the project looked like this:
However, after a while, the colors seemed kind of random to me, the wizards looked too simple, and the whole scene didn't look good. Therefore, I made color palettes for both teams (fire and ice) and reworked the graphics from them.
For the wizards, I first tried to put some antialiasing, but I didn't like the result, partly because my inexperience, and partly because I thought the wizard would look better without it as I wasn't planning to make the whole game look smooth. I also tried some shadows, but my skills aren't good enough for that. I finally tried adding an outline, and then antialiased it; I liked the final result, so that was it.
For the field, I changed the color of the floor. It was wood-colored, and now it has the colors of the wizards. I also added some variations (like the broken floor tiles or the snowballs).
The ball also evolved a couple of times, from a red placeholder to a couple of colored balls to the ones that I finally used. Handling rotation needed a bit of extra work, as I didn't wanted to simply rotate the ball because the pixels would look rotated, and I had trouble trying to draw rotated versions of the ball. In the end, I used 90° rotations, which required me to use a ball that wasn't symmetrical in both axis (as a 90° rotation would leave the ball looking the same).
I really believe everything looks way better now!
For the sound effects, I used Jfxr. It worked quite well, even if I didn't understand a lot of the variations. The fire effects were way easier to achieve than the ice ones.
For the music, I required way more effort. I don't have knowledge in music or skills in composition, so I read some basic material about majors, minor, chords, arpeggios, harmony and melody. However, I couldn't find practical tutorials about the topics. In the end, I managed to make what I think is a decent background music by mixing the following:
- Bosca Ceoil, a tool for creating music, which helped me to test stuff because it included scales and chords. However, the sounds where too retro (and brought some good memories back!) for what I was looking for.
- Rytmik Ultimate, a tool I got in a Humble Bundle, which allows the creation of cool music of very diverse genres. Sadly, it isn't perfect, as it misses some basic features (like easily controlling the length of notes).
- Hearing a lot of music for inspiration. I started to analyze music while I heard it, something I had never done before.
- Patience coming from the love I have towards music and learning new stuff.
My final result is based in an, in my ignorant opinion, simple progression: D, E, F, G (re, mi, fa, sol). It's based in a fragment of Chrono Trigger's battle music. I did my best to make it sound like something "based on" it rather than something that sounds "exactly like it", but it's difficult, probably because both use the same progression of notes.
The challenge required the game to be for one player, with an AI to play as the opponent. I initially implemented an "easy" AI that followed the ball based on its position and vertical direction, and the first version of the game was left with that.
Recently, when I worked in the game again to finish it, I implemented two extra AI levels. One was based on the easy version, but the wizards would change their horizontal position randomly each time the opponent scored. They would also go backwards when under attack, in order to try to have more time to get to the ball. The other AI level is far better. It calculates the future position of the ball based on where would it bounce against the field borders. Also, each wizard has a role: one for defense, one for offense, and one for supporting the other two in the middle, based on the position of the other two wizards and the ball.
There's room for improvement. At some point, I wanted to try implementing a genetic algorithm that took into account every variable in the game (including the locations of the wizards), but it seemed like a lot of work. Maybe some day...
I used a couple of free fonts for the game (Ludum Dare allows the use of external fonts, so I won't have trouble with that during the competition). I had to implement a main menu, which was rather straightforward. Sadly, Game Maker doesn't have some kind of form editor, so everything had to be located by hand.
By the way: the name of the game comes from the "Power Words" that appear in adventure games like Dungeons and Dragons. They are words that convey ultimate powers that wizards can use (like "KILL", or "STUN"). Here, the power word is "PONG"!
What went right
- I like the final overall result. The game looks nice, sounds nice and plays nice. It works great for two human players, or for one player only, or for looking two AIs play against each other.
- I liked the tools I used. They aren't perfect (more on that below), but they did the job.
What went wrong
- Sadly, as usually happens, the tools could be better in some kind of obvious aspects. Game Maker has some weird behaviours in the Tile Editor, and I found strange the order in which code is run between Create events and the Initial Code of objects. Also, I had trouble working with particle systems; I needed to use an external tool for designing the particles, as GM:S doesn't have one, and then I got some weird behaviours in the game when I tried to actually add the particles to the scenario. Rytmik also has some important limitations (such as the one I mentioned before, of not being able to control notes length), which is sad because I otherwise like the tool.
- I'd like to improve my music-making skills. While I liked the small song I did for the game, it's too simple, and therefore it sounds too much like the music it's based on.
- There are still some details to work on. The most obvious is that matches don't end, but the player always needs to finish them manually. It would be nice to have a couple of modes, such as playing until some fixed amount of points, playing for a fixed duration and playing with no restriction (the one I have now).
I enjoyed this experience, and learned a lot of stuff making this small game. As always happens, I would like to revisit it in the future to add more features (or port it to Android!), but we'll see!