gus goucher->projects
Last silly update: October 2023
Projects

Here you can find the various projects I've worked on so far that I feel like are polished or interesting enough to list. Most are either games or are game related, but a few are some tech projects I've worked on for learning purposes. Hopefully there's a good variety of languages respresented, but I would say (at the time of writing) my strongest languages are C/C++, C#, and Python. Thanks for looking!

Games

VR Drum Machine

VIDEO DEMO


Tech: C#, Unity, MIDI | Completed: 11/30/2022 | Source Code

A "drum machine" that can generate physics-based rhythms over MIDI and allows the user to move around platforms and portals to create complex emergent "music" or experimental noises and beats.

Short Postmortem: I really enjoyed working on this one for my VR Development elective sophomore year, and I particularly am happy with how the controls feel to use and how fun it is to play around with. It really is very inspiring and it would be cool to see it integrated in a larger MIDI-based synthesis set up. It's not great at keeping basic rock-and-roll time but what it lacks in stability or conformity it definitely makes up for in inspiration! I hope you can get it to build, I don't have a way of testing VR in my current set up, please let me know if you can get an executable out of it! It shouldn't be too hard (I hope?)

LD50: Death and Taxes

Tech: C#, Python, Godot | Completed: 4/4/2022 | Source Code | Play Online!

DEATH AND TAXES is a short game about pushing papers and pedestrians off of ledges to try to obscure the evidence of your tax fraud. Submitted for Ludum Dare 50.

Short Postmortem: I thought the last game was highly polished, but this is borderline overkill. There's a whole cutscene in the beginning of the game in a jam game. Unfortunately, the gameplay is a little abbreviated because of all the effort that went into the beginning of the game. It's still fun and I'm super pleased with how it turned out but it's a little more short than I would have liked. I think establishing the gameplay in an almost overkill, crystal-clear fashion might have helped with that - I think I stalled a bit when adding polish because I wasn't completely sure of the gameplay. Overall, very happy with the results and I'm glad I got to try to do some new things in Godot. Placed 95th out of 2900! (And 31st in Humor!!)

Mini Jam 100: VoiceOS

Tech: C#, Python, Godot | Completed: 2/23/2022 | Source Code | Play Online!

VoiceOS is a small operating system style game made for the Mini Jam 100. I completed it in 48 hours with Braeden Trefethen and Jacob Nelan, who helped out with the audio and design, respectively.

Short Postmortem: Highly polished, and I'm super happy with the way the visuals came out. This was my first foray into vector art, and after floundering with Illustrator for a moment I landed on Photoshop for all non-pixel-art graphics. The audio is very nice, although I wish I had requested more audio from Braeden to create a more dynamic game. The weak point for this game was the gameplay. It's pretty shallow and not the most engaging because we tried to have many gameplay loops at once (leaning into the chaos theme). Overall, I'm super glad I got to really dive into vector graphics, and I'm excited to use them more in the future. Placed 6th out of 176 entries!

Ludum Dare 49: WOBBLE

Tech: C#, Python, Godot | Completed: 8/4/2021 | Source Code | Play Online!

WOBBLE is a short game I created for Ludum Dare 49 with some design help from my friend Braeden Trefethen. I programmed the game using C# and GDScript (Python) in the Godot Engine, as well as creating most of the pixel art and graphics and about half of the music. Levels were designed using the in-editor tilemapping system. Placed #94 out of about 3000 entries in the "Fun" category!

Short Postmortem: Playtesting was super crucial for this game. It's a puzzle- and skill-based design, so tuning was essential, and I'm very glad that we were able to test the game with our friends and polish it to a fine sheen. I'm also glad that I limited the scope of the art severely - it's cohesive while retaining charm and character that helps set it apart in a flood of Ludum Dare submissions. If I could change one thing it would probably be to fix some of the mouse controls, and to try to test with a wider gamut of people - some found the mouse controls to be buggy or unintuitive, which our test group of mostly gamers was able to get past more easily.

Code in the Schools Game Jam 8: Balance-game

Tech: C#, Python, Godot | Completed: 1/13/2021 | Project page

Balance-game is a game I created for the eighth installment of the Code in the Schools game jam. I worked with my friend Nicholas Miller, however everything that ended up in the final product was created by me. I used Godot with C# and GDScript/Python, created the pixel art graphics in Aseprite and made the music in FL Studio (I think there's music. Can't remember.) Placed #1! (In an admittedly very small and local game jam.)

Short Postmortem: Scope was great on this game. I had a borderline too-simple concept that I executed solidly. The art for this game took the bulk of the time (especially because it goes hand-in-hand with the level design.) I would probably have made the game a little less detailed and added more levels or polish if I could go back, but this was a really great experience, even if I did have an unfair experience advantage.

Jumpstart Jam 2020: Caeeba

Tech: Lua, LOVE2D, Tiled | Completed: 6/14/2020 | Project page

Caeeba was a cute and very small game I worked on for the Jumpstart Jam run by Becker College over the summer in 2020. I had some art help from Alexander Nguyen, but all code, music, and sfx were made by me. The game was implemented using Lua and LOVE2D, as well as Tiled as a tile editor and some custom map loading in between. Not a terrible result for a game made in 24 hours!

Short Postmortem: This game really needs polish. Some of the movement and physics are buggy, which could have been avoided if I didn't try my hand at writing a collision system in such a short time window, and I'm surprised we got as many levels cranked out as we did. I started to use Godot a lot more for jams because of its built in physics, which are always something I've found I struggle with in game jams especially.

Ludum Dare 46: Seven Nights in Siberia

Tech: GDScript, Godot | Completed: 4/21/2020 | Project page

Seven Nights in Siberia was a game I worked on with 4 of my friends in a discord call at the very beginning of the pandemic. I wrote all the code, created some of my favorite music I've written, and did the sound effects. Two of my friends did the art one of which did the animation, one did the level design, and one dropped out about halfway through. I also tried to keep the whole thing functioning smoothly which was a rewarding challenge on its own. We used GDScript and Godot.

Angus Goucher: programming, music, sfx
Graham Mack: art, animation
Josh Byrd: art
Nicholas Miller: level design
Amanuel Seifu: prototyping, design

Springpad

Tech: Lua, LOVE2D, Tiled | Completed: 12/19/2018 | Project page

My biggest project thus far by quite a margin, but I recall very little about the development of this game. I know I did everything, with bits and pieces and feedback from friends. I spent about 2 months working on this game in all of my free time, and it's the largest project I have completed to date. It's a Metroidvania-style game that takes place on a room-by-room basis, with miniscule graphics; the resolution of the entire window is 80x80. The music was composed in LMMS, a free software for electronic music. The art was created in Aseprite, and the entire thing was developed on a Dell laptop running Lubuntu from 2006.

Postmortem: For me, this game is a reminder that you can make stuff with anything you have available. My laptop broke at the beginning of the 2018-2019 school year, and I """borrowed""" an ancient Dell laptop from 2006 that my computer restoration club wasn't using as a replacement. I often find myself wanting new equipment for music, and it's always good to remind myself that I can use what I have to make whatever I want.

In retrospect, I have no idea what came over me that made me finish this game. I have the tendency, like a lot of others, to come up with ideas and then get distracted and never finish. Somehow, this game was different. I do remember being so burnt-out at the end of it that I never wanted to use LOVE2D again (which lasted for like a week.) The engine I wrote for this game is pretty bad. It's all very hacked together in a way the LOVE2D permits, so I blamed most of my bad design choices on the flexibility of Lua and LOVE2D. It was definitely part of the issue, but I also had minimal experience making game engines. This ended up sending me down a rabbit hole of making game engine experiment after game engine experiement, and was overall a positive thing for me that might not have happened without this game.

Keeping the art super limited was a big help for this game. I kept each tile (including the player) to 8x8, and there's only 6 colors in the game total. I think these limitations made it much easier to go from idea to implementation, and probably helped with the longevity of the project. I would not want to do this again without someone to collaborate with.

Misc./Experiments

Independent Study: Make A Lisp (MAL)

Tech: Python | Completed: 5/7/2019 | Source code

Make A Lisp is an online course/tutorial that details how to implement an interpreter for a Lisp-like language. It helped me learn a lot about data driven programming and about how the internals of compilers and interpreters work. I worked with Quintin Forrer on the project, however we both wrote our own copies of the interpreter.

Distributed Computing Project

Tech: C#, FNA | Completed: 5/7/2019 | Source code

I was able to skip Python and Advanced Python in high school, and jump straight to the "advanced" CS elective. In sophomore year I took Distributed Computing which focused on the networking and architecture required for processing across multiple computers. For my final project in that class, I worked with Quintin Forrer to implement a peer-to-peer networked "game" that turned out more along the lines of a tech demo, but it was still my first experience with multiplayer even if it was in a somewhat unconventional way. We used C# and FNA(?). I can't remember what made us go with FNA over something more conventional like Monogame. NOTE: The GitHub version looks like it's incomplete.

GameBoy Test Project

Tech: Assembly, C, Python | Completed: 1/31/2022 | Source code

This is a small GameBoy program that I was hacking on with the intent of creating my own tools (besides the compiler). It's using C and GBDK to compile the code, as well as two Python scripts for converting Tiled- and PNG-format assets into compilable C headers. It was also a really interesting experiment to compile my code to intermediate Assembly and look at how things I did in C affected the generated code. I'm interested in finishing this and making it a full game, but I don't have any ideas at the moment.

Thanks to Orteil for the CSS