Usually classes don’t get their own blog posts, but this class was my last “final” at Cornell — not measured in a test, but measured in an annual Showcase at Carpenter Hall. It was one that particularly defined my availability and sleep schedule this semester, and one that turned out to be particularly gratifying.
The thing about the Cornell game design classes is that you are given the bare minimum to succeed. The components to success seem to lie in having good team dynamics, achieving software and design milestones in a timely manner, and having a good idea. Software wise, both intro and advanced do not use any platforms. Intro uses a LibGDX (Java) engine, and we use a custom Cornell engine CUGL (C++) inspired by the Cocos2D-X engine.
It was nice to know all my team members to some degree beforehand. My team consisted of programmers Kenneth Lee, Kyle Sampson, Jonathan Chen, Hong Jeon, and myself with designers Susan Zou and Kelly Lee. For many of us, we had shared the same classes in the CS major, but I’ve never worked with any of them in a project-based class before. My team was half comprised of members who had all taken intro the previous year, so they came into the class aware of many potential software mistakes. We also had the boon of having two designers, who later specialized into gameplay assets and UI/UX.
We started off our semester by forming the team between late October through January. We had a couple of meetings over Christmas break, nothing big, just mulling over different team ideas.
But then we struck a bit of gold. Susan came up with this idea that involved a character slashing monsters in different patterns with areas of effect zones. That was intriguing. Kenny built off of that idea, and we came up with something that looked like doodle jump that was a fast-paced bullet hell sort of game. And then there was the color switch where the character switched colors after each swipe. We took a more strategic focus and removed the scrolling screen and split the character into two fixed-color characters, and zones were added to enemies. And thus the love story of Canon was born.
Canon is a strategy game with an action feel. You control a yellow and blue character; if either of them dies, the game is lost. Each character can only defeat monsters of their same color, and is harmed by monsters of the other color. This color mechanic is our main point of interest and has really made the game unique.
We developed the software incrementally over the semester. The approximate order of completion was: data file loading, paths, animations, various AI for enemies, zones, data serialization, bullet time effect, level editor, sound effects, level design, health system, bullets, particles, tutorials, chapter system, menus, and final art assets.
Thanks to Kenny, our team lead, we started early in our software architecture, following conventions early on to prevent development disasters down the road. In this way, programming for Canon was strangely calm 70% of the time due to our (sometimes overdone) abstractions. We met most milestones in a timely manner and identified most problems in advance so that they could be resolved. We all trusted each other to complete work and we all completed said work.
We always had faith that our game idea was solid, as we all enjoyed playing our initial levels and really liked the color mechanic. The key then ended up being execution, and we cut it close. Our final art assets came into the game in the 24 hours leading up to Showcase. Our final game features also came into the game less than a week before. But it worked out! We ended up getting recognition at the Showcase for gameplay and audience voting.
It’s been a thoroughly busy semester, but I appreciate the times I was busy for game design. We spent many nights under the fluorescent lights of ehub, grinding away until the early hours. After all this, it’s still unclear whether or not I’ll ever learn to sleep promptly after my brain stops working instead of trying to code more, or if I’ll ever really write C++ the way it should be written, but I suppose these kinds of wisdom only come with time. Due to our limited knowledge and time, our game is currently wrought with memory leaks and strange bugs and is only on iOS, but I love it anyways.
Shout-out to my team Boonana for an excellent adventure! I hope we get into BFIG and I look forward to developing the game further with those of you who choose to stay on. It’s been a good and worthwhile time.