Our overall game concept remained largely unchanged throughout the entire development process; we only removed the “nice to have” parts due to time limits, but everything else remained the same. We wanted to have an animal-themed co-op puzzle game with several levels that the players had to overcome, and that essence prevailed. The “nice to have” things were:
We are happy to have remained consistent with the original idea since the beginning because that saved us a lot of time and allowed us to focus on making a working game, which was the whole goal of this class.
Our final project design also remained the same throughout the development process. We wanted to have a low-poly style game — that’s why you don’t see a lot of detail in the models, and everything has a plain, matte color. Because we are a low-poly game, I decided to have 2D Pixel Art for the UI, as Pixel Art is the “low-poly” in the 2D world. I always wanted to do a Pixel Art game, so this UI decision was also influenced by this personal desire. I’m glad it turned out great!
Looking back, it appears we were pretty optimistic when we created the initial timeline for our project. One critical bottleneck was the client and server integration, which didn't get finalized until week 7. This caused a lot of “waiting” for the game logic implementation. In our final schedule, we spent most of our earlier weeks creating stable server/client communication, and much of the actual gameplay was implemented during the last three weeks.
When we started our project, we wanted our environment to support both Windows and Mac users since every team member used one of these platforms. As a solution, we built a Linux-based environment that supported both platforms by using WSL2 for Windows users and native macOS for Mac users. Contrary to our initial plan, we faced continuous difficulties running our program on WSL, mainly due to problems with incompatible OpenGL functions. By the end of the quarter, we ended up running our server executable on WSL and the client executable on Visual Studio, which was the best non-breaking, compromise solution we found in the short time remaining as we neared the end of the quarter. As most past teams had done, we relied on CMake to compile and execute our programs, which in my opinion worked amazingly well. The tool allowed us to fetch all open-source dependencies during the build process without having to manually download them into our repository. In our actions workflow, we also utilized an automated formatting tool that helped maintain consistency in our code style. If I were to leave some advice for future groups, I would definitely not recommend using WSL. Even though it is a great tool, it just doesn't work well with OpenGL. Instead, I would spend the first week or two focusing on development logistics by figuring out how to run the program on Visual Studio for Windows users and natively for Mac users.
😀
server
, client
, and shared
. This clear structure allowed us to easily maintain the separation of server and client codebases both visually and in practice.