Alpacadores was my first semester game class project at DigiPen.
It was developed over 5 weeks by a team of 3 CS students. It was all of our first times working collaboratively on a programming project and making a game.
The game was created from scratch in C with a library called C Processing created by our teacher to be a C language clone of the processing Java library.
What Went Well
The initial concept for our game was “battling different colors of alpacas” and from that we made our design decisions to fit that description. That description led us to coherent theming and combat systems and worked as our de facto design pillar for the project. For example, using different colors as classes led us to a combat system like a classic JRPG with turn based combat between squads of multi colored combatants.
We did a good job of compartmentalizing the code for a first time game project. We used different files for the different systems when up until that point our work had been simple single file projects for homework.
We committed early to using git and learning how to use it correctly. We put in the effort up front to learn git and had no issues with version control or merging because of it.
Having C Processing meant we were able to focus on programming the game and didn’t have to worry about doing any low level graphics or OS interactions. We even used limitations of the library to our advantage. Since it ran at a locked 30 FPS we were able to declare up front that animations would take X many frames and split off the animations from other logic. For example, when an attack is declared it waits 30 frames to deal the damage and whoever programmed the animation had 30 frames to move their alpaca wherever they wanted before it was put back in line.
What went poorly
We should have spent more time planning and polishing our game. Since we didn’t do almost any planning we had a hard time scheduling our work and managing our scope. We didn’t prioritize polish and left some low hanging fruit that could have made the players experience better.
Without a dedicated person to work on designing the systems the actual combat isn’t balanced. Some of the systems like armor and healing never had a balance pass and were put in just to be in.
Even though we did a good job for first timers at compartmentalizing our code we still wound up with a 2000 line long
combat.c file, since most of the gameplay was implemented in that file and slowly built upon over the games development.
I made the mistake of putting in a thing I just learned because it sounded cool. I learned about variadic functions and thought that we needed that to be able to instantiate variable amounts of combatants in the game. As a bright eyed new programmer I was so excited to learn about a new tool and I spent too long learning it instead of just asking for help with the problem. If I had just asked someone for help they would have probably been able to point me towards just passing an array and I could have saved myself the time and had a simpler implementation.
- Spend time planning your projects
- Don’t make a serious game based on a joke idea
- Schedule time to polish
- Systems design is complicated and requires planning
- Version control is awesome
- Ask for help early