
Arena (A Text-Based Combat Game)
About
Arena is a small retro-inspired game in which the player steps into the arena as a courageous combatant, facing a monster in turn-based combat. The player must carefully choose their actions each turn to defeat the creature and claim victory.
Project Info
Role(s): Game Developer
Team Size: 1
Timeline: Sept 2017 - Nov 2017
Engine: Visual Studio (C++)
Tags: 2D, Action, Adventure, Combat, RPG, Text-Based
Updated: Mar, 2026
Arena was my first real attempt at writing code. It was developed in C++ using Visual Studio 2015 as part of the Programming Fundamentals (DAC416) module during my undergraduate degree in Computer Games (Indie) at Southampton Solent University.
While the concept itself was relatively simple, understanding the underlying logic was the real challenge. I had to learn how variables such as health and energy could be stored, modified, and used to determine which actions the player could perform. That same logic was then extended to create a simple enemy AI that could respond to the player’s actions. Although the result was functional and fully playable, the code itself could certainly be improved with the knowledge I have today.


As the solo Game Developer, working alongside peer feedback and iterative playtesting, I developed the player character, monster AI, combat mechanics, abilities, and damage system in C++.
I also added small quality-of-life touches such as a game title screen and colour-coded endgame messages to make the experience feel a little more polished. Before submitting the project, I spent time playing through the game myself and asked others to test it as well, gathering feedback and making small adjustments where needed.


At the time, I remember feeling quite overwhelmed by how much there was to learn about programming. Concepts like variables storing data and updating throughout the game loop took a while to fully click. Because this was my first real attempt at coding, optimisation wasn’t something I focused on; instead, I often repeated chunks of code just to get the logic working.
Looking back, I don’t think that was necessarily a bad thing. When you’re starting out, sometimes the best way to learn is simply to jump in and build something, even if the solution isn’t the most elegant one. The result wasn’t perfect, but it worked, and that alone felt like a big achievement at the time.
Even now, the idea behind the project has stuck with me. With the experience I have today, it would be interesting to revisit the concept and see how much more depth and structure I could bring to it. While the final result left plenty of room for improvement, the lessons I learned from building this project were incredibly valuable to me.