A general gist of the process that went on behind this


I am telling this story while looking at only my git repository comments. This was another chance to be more familiar with git. It feels so natural to use.

I got started by brainstorming on what to make, that would utilize Aqua and of course be pixelated. I considered several ideas, some very quirky like one, which was like, pretending that all water is made out of squares, and doing something like pouring squares... sort of geometrical fluid dynamics. Or, putting blue squares on a conveyor belt and checking their quality. I thought that would be funny thematically, but I also felt like it lacked oomph. 

Anyway, I came to the right answer for me: skipping stones. Rather, at first I recalled playing Echo the Dolphin on Sega, the game where you swim as a dolphin under the sea. And in parts, you can jump out of the water. Was I going to make a dolphin game? Well, no, but I hadn't yet arrived at skipping stones. Until I remembered another game concept I liked and which I knew would be on the simpler side of things, which is, the kind of game where you hit or throw something, and then watch how far it goes. "Learn to Fly" is a great example of this, where you're a penguin, and you slide down a ramp and see how far you can "fly," gradually upgrading yourself as you go, with gliders, and rockets, and stuff.

So, I went with skipping a stone on the water, and upgrading things that would help it skip farther, and throwing some silly stuff into it as well.

May 11th, around 5pm, I wrote some generic code I knew I would need, such as Textboxes, and Sprites. I did this entirely in Python, and used the things I knew from the Pygame library, and wrote objects I knew how to use.

May 12th, I spent about twelve hours making the basics of the game. I drew a bit of beach, and a person to stand on it, and animated that person in a throwing animation. I got the "throw" mechanic down first, and then hours later got the stone to "skip" on the water. I made a basic animation for a wave, just an up-n-down animation of blue bands, and I wrote for this a "wave handler," which would draw about 20 of these to span the screen, and when the screen moved to the right, it would teleport the waves that are off-screen to begin again as oncoming waves. So I also implemented the "camera," but to be honest, a camera is just a x,y reference point which you offset everything with, and that was easy.

I also started on the upgrades menu, added water-drag when the stone is underwater, and put in some sound effects. Lastly I added boats, which, when you run into them, they smash, and you get a little boost.

May 13th, I fixed some bugs, having to do with floats and ints and index out of range. I added a lightning event, which strikes your ball when it is raining, but only sparingly. A brief but powerful boost. Even though it's only been two days, I get a whole lot of the core mechanic of the game done.

May 14th, I add joystick support. This was easier than I thought it would be, but it required some careful re-wiring of the input-event code I had written. I had to break it down into separate functions: one function to read any&all keyboard and joystick inputs, and turn them into strings such as "up", "button 0", "quit", and then a second function that interprets these inputs and knows what to do with them. This was a logical evolution because now I could have separate event handler functions for each different scene in the game, but all of them using the same string inputs such as these. "button 0" and "button 6" are both buttons on the joystick and map to keys on the keyboard, for example, so, anyway, I was just glad it ended up being so simple. Reading joystick inputs itself was a matter of checking every button in a for loop against their previous state to generate an on-button-press event for that specific button, but once that was done I could forget about it... ah the convenience of abstraction.

Anyway, I also worked on the graphics more on this day, including parallax scrolling. Oh and ramps to go with the boats.

May 15th, my notes only show "tweaks." 

May 16th, I added the "what the upgrades do" help panel, and had it slide into view and out of view just like the upgrade panel itself does. I was quite pleased to see this working. A lot of this project was just affirming to myself what I can do. 

May 17th, I finished doing the upgrade explanations, and then I made an attributions page in the main menu, to show the info about the typeface(font) I used, as well as the few sound effects I customized for this. I also made a pre-main-menu sequence, as you almost always see in games, to really "present" the game. Then I put in volume settings in the menu, so you can adjust the volume in-game. Started adding parasailers to the game (Another thing you bounce off of)

May 18th, finished parasailers, and made some jellyfish that you bounce off of under-water. They don't really do much, but it reminds me of a pinball machine, and added a sound effect that invokes that very thing.

May 18th, I added save and load to the game, so that your progress is not lost when you quit. This took some real ironing out, but, it was easier than in the past for sure. I made one dictionary with every value to save in it, which was not even that much, and then used pickle to dump this into a data file. Then to load, it loads the data file as a dictionary, and it just works. I then unpack that dictionary and assign each thing to its respective variable in the game, and presto, progress is restored. So of course I added a "reset save data" option to the options menu as well. While this was easy, there were many things I had forgotten about, such as, a variable being adjusted when you upgrade something.. so, some of those, I simply added to the save data, and others I would have it compute during the loading, because it would be as simple as, "wind_resistance -= .001 * data['stone level']." That is to say, this was not only simpler, but efficient. I also saved the volume levels this way, as well as the full-screen option and the no-flashing-lights option. I mean, we are all used to games keeping our settings, so this is just a demonstration of how you have to actually code that stuff, of course. The remainder of this day was ironing things out, tweaking things, and stuff.

May 19th, I had already built the game once, not because it was done or anything, but because I wanted to make sure I knew how to. I added airplanes to the game, and then birds at the very end. The birds are a negative, they are better avoided. I played and replayed until I discovered bugs that needed fixing, and I played and replayed to get the game feeling good... not too grindy but not too easy. By the time I added the birds, the entire rest of the game felt done. So the thing I didn't get around to was UFO's and the moon. I was like, of course I'll have there be UFOs even higher in the air, where the sky will turn dark and you see stars, and then have a gigantic moon that you can land on, and have that be an ending. But I simply didn't get around to that, and felt like the game was good enough without it. Maybe later, maybe not.

So, that wraps it up.

Leave a comment

Log in with itch.io to leave a comment.