-IN PROGRESS-
(If watching the video, please note that this is not the final product, just the result of five people working on one project for two months. The game is fairly playable, with a few graphics glitches and no majorly important game components missing.)
For this project in CSE 3902, we are given a full semester to implement part of a 2D video game. The project is split into sprints to give us an idea of project work in the industry. We are given full reign over software design components although we are required to use C#, the XNA Monogame framework, and Visual Studio.
Our group chose to implement the first level (dungeon) of the original 1986 Legend of Zelda. In this particular assignment, our group designed an entity-component system to make it easier to implement a variety of enemies. We have a behavior script system, which modifys the entity's behavior and usually determines movement sequences, a sprite system to implement the drawing of each entity on the screen, and a text component for writing and animating text on the screen.
I specifically designed and implemented sprite drawing, level loading, and text system. During the first sprint I created an interface for a basic sprite in which you could load a list of frames and the code would cycle through the frames for a set number of updates to slow down the animation. I also went through and set up the sprite factories for all necessary entities by having frames classes for each type that designated a dictionary of rectangles taken from the spritesheets, and then the factory would set up the frames into the list and return the basic sprite that had been initialized.
Each room is loaded using a csv file that is parsed through to build and return each related entity. Getting the scale of the sprites and gameview was very difficult, but the time was well spent. The game looks amazing now and everything is very visible. Some groups left their scaling as 1-1 with the spritesheet, but that meant their games were 1/4 of the size of ours, and watching the game was very difficult. The parsing of the csv takes into account different motifications and adds some modularity to the game. For example, game pieces can take on different collision types, and this is determined by a switch case reading the information from the csv.
The text system is very similar to the sprite system, but figuring out how to animate the text at a certain speed was interesting logic. It essentially just adds a character to the string after a particular elapsed time but makes sense for animating, but is a different logic than the basic sprite frames iterating through a list of frames for animation.
Over the course of this project, I have also learned a lot about AGILE / SCRUM project management. Every Wednesday and Saturday our team would meet for a small standup to go over everyone's current progress, then have an hour and a half work session where we could bounce ideas off of one another and begin development, and then everyone was responsible for finishing their assigned tasks before the next meeting.
Please contact me for more details. Source code is on github in a private repository as the class is currently in progress and for academic integrity.