Black Death



Black Death was Matthew Perez’s Digital Arts senior project at Chapman university. It was an original game concept that he created and then put together a team to build. Over the course of roughly a year, a demo game was produced and showcased at the yearly senior Digital Arts final project showcase. It was made in the Unreal 3 engine using original assets and levels designed by the team’s artists and programmed from scratch.


Quick Notes:

  • Created in UDK
  • Action-adventure and survival horror game
  • Development team of about 8 to 12
  • Used Agile development
  • I did the vast majority of programming myself


Download Link:

  • Sadly, the game demo is not currently available and development has not continued on the game. However, I do have the source code for it as of when I left.
  • Source code Zip file



I was the only programmer on this project during the majority of its development. We used the agile development method and meet weekly as well as dividing up tasks for each sprint. During the meetings the team, which varied from 15 to 8 members over development, discussed the state of the game, the most important features to work towards during the week and what each person could do that week. Since I was alone in programming, I was responsible for looking at things from a code stand point and deciding how long things would take as well as which ideas could be finished in a reasonable amount of time, and suggesting alternatives for ideas that might save time or be replacements for idea that wouldn’t work out. Over the course of the project I programmed enemy AI, User input, Weapons (a torch, a sword, enemy weapons, etc.), Intractable objects (a bed to recover health, a chest to store objects, weapon pick-ups, etc.) cameras, and all other coding in the project, with the exception of some camera code and scaleform programming which has handled by other team members.


Personal Growth:

The main thing I learned from this project was how to properly work in a team of developers. I had to meet once a week with a fairly large team of developers and learn how to communicate and work smoothly with others. Although I was alone on the programming side, I did discuss game ideas with the rest of the team and share thoughts on the project and the work that was done during the week with the other members. Being the only programmer I was in charge of assessing ideas given to me by evaluating if they were feasible and how long they would take to finish. Aside from determining how to complete features and how to programming them, I would also sometimes suggest alterations or replacement for the ideas presented to me that I felt would be better for the game. For example, I made suggests that I felt would simplify the the controls by reusing buttons that were unused in certain states, and I discovered and brought up using script calls in animations to synchronize certain events to happen at a certain point during animations.

I also worked extensive with the Unreal 3 engine and learned it fairly deeply. This was the first time I had had to learn how to deeply diving through an API to knock things into shape and it was the first engine I ever had the chance to dissect and closely examine the workings of. Over the project I looked though nearly every class from Object up to the Unreal 3 weapons to figure out how to implement ideas and how to accomplish tasks as well as replicating features seen in other Unreal games. It gave me a notion of how an engine is put together and what structures it has. This has served to color how I think about games and engines and I usually address design by think in terms of the vocabulary and structure of the Unreal Engine first. I also try to development my own engines using structures that are somewhat similar to how Unreal structures things, simplifying or expanding in certain areas if needed for that specific project.



Code Samples:

The BlackDeath Pawn: the base class for both he PC, and the enemies, zombies SelectShow
The BlackDeath PlayerController: The player's controller in the game and the interface of input to gameplay SelectShow
The BlackDeath EnemyController: The enemy controller that serves as the AI for enemies in the game SelectShow
Socketed InventoryManager: An SelectShow