Procedural Platformer with AI Boss
A Computer Science NEA (Non-Exam Assessment) is a major independent coursework project completed as part of the A-Level Computer Science qualification in England.
As it is meant to simulate the software lifecycle, students are required to design, build, and comprehensively document a significant piece of software over several months and around a hundred hours, working with a real or hypothetical client.
It is marked on several sections:
- Analysis
- Design
- Technical Solution
- Testing
- Evaluation
The NEA I chose involved designing and building a 2D scrolling platformer in Java with LibGDX for a hypothetical client.
It was structured around a deep entity/OOP hierarchy (Entity → Enemy → Boss/PacingEnemy) across 40+ classes.
I implemented:
- A custom three-box AABB collision system: Hitbox, Hurtbox, CollisionBox.
- Level loading by parsing CSVs
- Recursive generation system that assembles levels from a list prefabs by dynamically reading them from an available pool at runtime
- Layered this on top of recursive binary space partitioning combined with Perlin noise for difficulty
The boss enemy uses an adaptive Markov chain to learn from the player's attack patterns over time, with transition probabilities persisted to disk between sessions. I also built parallax backgrounds, a weapon-swapping combat system (melee and elemental projectile staffs), and controller/keyboard input handling with just-pressed vs. held detection.


