In explorations project, we got to choose what we wanted to work on, being able to do basically whatever we wanted as long as it related to our elective and a 21st Century Skill.

For my project, I chose to make a simple 2d game. I’ve always been interested in making games, and since I’d never used a game engine before, I thought that would be a good thing to learn how to use. This builds upon the 21st century skills of Creativity and Self Direction.

Making it was a long process. The first thing I did, for some reason, was the main menu. Pretty simple, just plop down the main graphic and some buttons, and make the buttons do things. I made the audio and sliders much more near the end of the process, and they were also fairly simple, just a bunch of math to work out.

Next up was a test of player physics and motion, no actual graphics yet. The gravity circles were implemented, but didn’t act as smoothly as they now do.

I didn’t even bother with polygon sprites for most of the ground

The obvious next step was to make actual sprites for the player and gravity circles. The player sprite I made at this time was just a placeholder, but the gravity circle was good enough for me to keep.

Not very good tbh
Those multiple versions of the crystal are actually the animation frames!

I then tried to make the camera rotate properly with the player, so the effect is that the level is rotating, not the player, and snap the camera to the level edge bounds. These two goals did not play well with each other, and I had to ditch the latter.

why is camera2D bad
I had to write that first if: in _process to make it not try to rotate 360°, smh

I then made the gravity circles require a keypress to activate and have a direction indicator. After making a couple levels, the next task was to make code to switch between them. The trigger was easy, just make an invisible object that tells the main game scene to switch to another level when touched. To do this, I found an example of a dynamic scene load/unload system on the official docs and modified it to fit my purpose, adding some fade in/out and debug logs.

It seemed about time to make an actual player sprite with animation, so I did that.

The whole sprite sheet of the player

Next up, levers that change whether a wall is active. Pretty easy to do, just change whether the wall is visible. Carrying this change over when you enter/exit the level was not nearly as easy. I managed to make a system that’s pretty simple to call and works pretty well.

The code this is calling is less understandable, don’t worry I didn’t forget it

It needed a bit of sound, so I made some music. As I said before, making the volume sliders work required a bit of math, since a linear dB scale doesn’t feel linear due to the fact that dB is based on logarithms.

And finally, the pause menu!

This took a lot of effort, but I think I made something pretty decent out of it! Here’s some example gameplay of the whole game (it’s pretty short). The way I recorded this didn’t get audio for some reason, only noticed that after submitting it.

A web version of my game is playable at:

https://kumquat-ir.github.io/Anchored/Anchored.html

NOTE: THE GAME DOES NOT WORK ON MOBILE DEVICES, YOU WILL NEED TO BE ON A COMPUTER TO PLAY IT
Note: the web version doesn’t display completely correctly without fullscreening the window (press F11 to toggle fullscreen, still playable without), and does not continue functioning after the in-game quit button is pressed (reload the page and it will be reset and continue working. I don’t know why this problem occurs, and it’s not serious enough for me to spend a couple hours fixing it)
Note: the volume of the music may be a bit loud, press escape to pause, you can change the volume in the settings menu (since there are no other sounds, the sliders are redundant). The music on the web version can sound pretty bad for some unknown reason, so be warned, if the music is static-y or glitchy, that’s not what it’s supposed to sound like.

If you want to download a desktop version, go to

https://github.com/kumquat-ir/Anchored/releases/tag/v1.0

Infographic on the process of game design and creation
Creation of the infographic

Honestly, this project was the most fun so far. I learned how to make a game with a modern game engine, did pixel art for the first time, and made some music. I’m kinda proud of the crystal for the gravity circles. It was also a chance to practice my programming skills, in a new language nonetheless.

We made a presentation on our topic, in celebration of completing it, and made a video, in lieu of doing an actual presentation.

Experimental Music

For our experimental music project, we used skills in Pro Tools and Reason to make an experimental piece of music. Fun fact, since I decided to do this project the first week of quarantine, and didn’t have a Windows or Mac computer at the time, I was unable to use Pro Tools or Reason for this project. (I since have acquired a hand-me-down Windows laptop, so I can actually submit things.) Due to the age-old restriction of “software does not have Linux version”, I ended up using Ardour to make my experimental music, using a soundfont for all the instruments.

As usual, I didn’t have any specific inspiration for this project. I just kinda started at the start of the song with some cello and violin and blindly rushed forwards, with no idea about key or chord progression or anything like that. This is probably why, in retrospect, I realize the start section of the song is too long, and that the master goes above 0.0db at some points.

The main editor interface of Ardour
The mixer block, with a couple plugin UIs visible