Core Surge
Project Overview
Core Surge is a top-down 2D shooter where you fight enemies in a procedurally generated dungeon using a constantly rotating set of weapons. This was created for IAT 410: Advanced Game Design, where I worked as a solo project over two months.
https://xinnoh.itch.io/core-surge
I improved on many skills during development, but my key learning outcomes include the following:
Technical Skills:
- Modelling and animating in blender to generate high quality player/enemy pixel sprites
- Heavy focus on quality modular code, making it easy to add new features or content.
- Designing a UI to display large amounts of information without being intrusive.
- Collecting feedback from playtesting and understanding how to use the data.
- Creating a custom workflow using scriptable objects to quickly iterate many weapons that are customisable with code.
Soft Skills:
- Time management - I had to juggle a large variety of tasks and tackle them based on their priority.
- Problem solving - There were many approaches to how each aspect of the game could be made. When deciding how to make the game, I also had to research and learn about solutions that I was not be familiar with.
- Work ethic - I worked on this game with hours similar to a full-time job, avoiding procrastination and staying focused for long hours.
3D Character Animation
I modelled and animated characters in blender, and used compositing to create pixel-art sprites.






Scalable Weapon System
The modularity of the weapon system was my main focus during development. I wanted to create a system that would make it easy to add 30 weapons without much issue, and have them all be compatible with the player's inventory system. All weapons use a scriptable object as its basis. letting me easily create many weapons and change their parameters to create unique weapons.

When the player uses a weapon, the player state machine enters the state for that weapon, which extends a superclass of a generic weapon that has common code used by all attacks. Most weapon states simply inherit the superclass without adding anything.

If I want to customise how the weapon behaves, I can add the additional function as needed.

Level Design
When researching what method to use for procedural dungeons. I settled on using level graphs based on Enter the Gungeon. In this approach, you define what order rooms will appear in, and randomly generate rooms based on that order. This approach is excellent for reward scheduling and gives a lot of control over the level, while still maintaining the randomness of procedural generation. For example, I could choose to have rewards at the end of dead-ends, or ensure that the exit spawns far away from the entrance.
I initially created a functional level graph generator, but opted to switch to an external asset to speed up development.





During playtesting, the complexity of the dungeons was brought up as a major issue and players kept getting lost. Because of the level graph system, it was very easy to adjust the number of rooms.
Reflection
From a systems perspective, the game is well polished. It's very easy to add content and modify it according to my needs.
However in its current state, the game is not fun. There is a lack of content due to the deadline that came too early, and some of the game's mechanics don't work on a gameplay design level. The enemies are repetitive and the reload system doesn't add any depth to the game while creating downtime that the player can't act in. Most of these issues are solvable, but would require more work.
Funnily enough, this is quite the opposite of my first game jam, where I created a game about climbing a tower with a grappling hook. The game was fun and had many players on itch, but the game's code was awful and it was impossible to add more features. Given that I've now improved at coding fundamentals since that was developed, rather than continuing to develop this game, I will be following the fun and remaking that game with a proper foundation of code.
Development Log
I kept a development log for full documentation of creating the game: https://docs.google.com/document/d/1_eZHjV_Rd67vLfxs9uXp3o9GNnwOpeHT-Su-0HXn0Io/edit?usp=sharing