Before the class, I thought this
Before CS377G, I was a marginally depressed college student that just finished my undergrad, not knowing what I wanted to do after university. I realized that one of the main reasons I did the AI track for my undergrad and wanted to work a SWE job at FAANG so badly for the past four years was just to prove to other people that I was worth something. For a long time, I let other people define success for me.
When planning classes for my coterm, I decided I wanted to take CS377G to refine my game development skills. This was because over the summer, after graduating Stanford, I took an interest in making games via Love2D and started making my own game prototypes via the framework/engine. What I found was that making games was some of the most fun I had doing anything in the past several years, and was one of the few things that brought me solace. I then decided that I wanted a formal place to practice making games, surrounded by people that also love games, which brought me here.
In the class, I did these things (that were particularly helpful)
During CS377G, I made an interactive fiction called In The Lighthouse, Over The Stars. It was a point and click game about an astronaut trapped in a non-steerable spaceship at the edge of space with nothing but a computer terminal and his memories.
The most important thing I learned from this project was that I suck at putting the pen down. Despite working a part time job, doing research, having other classes, I sometimes spent upwards of 6-8+ hours a day working on this game during the two week sprint, adding shaders, cutscenes, narrative events, comprehensive dialogue, scrollable menus, chapter system, SFX, etc.
It was an unhealthy obsession, because I didn’t want to compromise the vision I had for the game. I wanted to bring the game to life as much as I could. And even after all that work, I still didn’t even do 50% of what I wanted to do – so many scrapped systems, dialogue, cutscenes, and so on.
—
I also worked on a team project for about a month, called Catopia. This was a cat colony sim game where you slowly grow a kingdom of cats, each of which have special abilities to help other cats hunt food, get buff, or recruit new cats.
The most important thing I learned from this project was the benefits, sacrifices, and tradeoffs from working on a team. For one, I was so grateful to be on a team of experienced Unity developers – they were able to show me the ropes, and I learned so many tricks from just watching them navigate the Unity GUI. Pretty quickly I was able to find places within the codebase I could meaningfully contribute – for instance I implemented all the abilities in Catopia and played a major part in getting the area system working. And despite my initial discomfort working with Unity visual editor, I was still able to fix many outstanding UI issues, prettifying cat stat displays and so on.
Additionally, working with game developers with drastically different values in games and different priorities when it comes to fun made our game so much richer. For example, both Pedro and Melissa decided to implement a furniture shop late into the game’s development to beautify the cats’ home and add a food sink. This surprised me because it’s not an idea I would have ever thought of myself – it’s just not something I value very much in games. For instance, I never cared about adding decorations to my home in a game like Hades. I’ve always enjoyed games about making combos that surprise and empower the player, which is precisely something that Melissa doesn’t value too much in games.
I’m glad my team’s different aesthetic tastes ended up complementing each other well, instead of creating anti-synergy and conflicting design goals. In fact, I would go as far as to say that this was the smoothest group project I’ve ever worked on – our group had a separation of powers (e.g. Cole on art and promotional material, me on abilities and general backend, etc.) that ran like a well-oiled machine together, while still having the capacity to wear multiple hats (e.g. I still helped with UI, despite it not being my specialty).
But there’s definitely downsides to working on a team. For example, Melissa, Pedro, and I all come from different game dev backgrounds, and we all had our own different workflows and coding styles. Pretty quickly, when we started to run into bugs, I had to fix problems with Pedro’s code, Pedro had to fix problems with Melissa’s code, and so on. We started implementing many crude hacks into our code because we didn’t fully understand the coding decisions the other group members were making. I can confidently say that our current codebase for Catopia is not maintainable, held together by duct tape, and suffered a death of a thousand cuts. This somewhat troubled development means that our codebase has calcified and is difficult to make changes to.
When I go to make games in the future
In both of the above projects, I was obsessive. I had incredible inertia, and I never really wanted to stop working on either of them. Whenever I had the thought of taking it easy, or not implementing a feature, I always thought to myself, “try telling that to the player”. The player doesn’t care whether or not a feature didn’t have enough time to be fleshed out, or if a bug didn’t receive enough attention to be fixed – they care that a game is engaging and fun. If I wanted to share this project with my friends, my family, or even myself in a year, I had to give it my all and ensure that my future audience would have as smooth a play experience as I could muster.
—
Ultimately, I can say with certainty that CS377G is the best class I ever took at Stanford. It made me feel heartache and made me cry. I made friends that I hope will last a lifetime. And most of all, it reaffirmed my love for game development and made me realize that this is what I wanted to do as a career.
When I graduated Stanford, I wasn’t sure if I could say that the things I learned here were worth the depression, trauma, and identity crisis I gained in return. Now I can say that it was, if only for this one class – that’s how important I think CS377G is. To the friends I’ve made here, to all my team members, and to the wonderful teaching staff, thank you for changing my life.