Education Projects


C# Cave Generator – University Year 3 solo project

During my second year of University I created a procedural cave generator in C++ for use with Unreal Engine 4. I was not satisfied with this however, as the models generated, while usable, did not expand or branch into other pathways, and the program was tied to the engine. So for my third year project I decided to re-do this in a way which would create meshes that were portable, and could be put in any game engine. Inspired by work I had done in a graphics programming module, creating our own engine and displaying input models, I decided to use the same format that would use: .obj.

One of the year 2 caves, as seen in Unreal Engine 4, this had parameters such as the “resolution” of the cave and how long each segment should be

The new version, developed in a language I was more comfortable with – C# used L-systems to generate cave systems, however this would often result in very messy structures that could even intersect each other and block each other off, making it impractical for game use.

Example of one of the new caves – opened in blender

C# Windows Forms – randomly generated platformer / hack ‘n’ slash game (6th Form)

For this project I was given complete free range on what to design and implement, and given little to no guidance. I decided to produce a 2-d game with elements of platforming and combat in which the player could create their own character and a world would be randomly generated for them. I had the opportunity to use Unity for this coursework, but decided instead to use the more limited Windows Forms, this was because I wanted to have the most hands-on experience in creating my game, and Unity would do a lot of the more technical work for me. There were many hurdles as a result of this that I had to overcome. For example some of the platforms were at angles, which Windows Forms did not support, so I had to program a way for the game to manipulate an image to rotate it. Windows Forms also had no built-in physics engine, meaning I had to develop it’s handling of physics i.e. collision, between enemies, the player, and the angled platforms, and gravity.

Complete with angled platforms jumping, health mana and stamina bars, and a single enemy

I also designed a database for saving the game to, I decided on using a database instead of a text/markup or serialized file as it meant that it would be more difficult for people to hack their save files to cheat in items and such. And more importantly, would mean that students at the school would be able to continue their save from any PC (due to the database only being accessible from within the school however, they wouldn’t be able to play at home).

There’s a reason I didn’t go into graphic design
At least the system actually worked (somehow)

As an actual videogame, it was not fun or even remotely good. Obviously. It was made with Windows Forms. But that wasn’t the point, the point was to develop it as an experiment and learning experience, which it did so very successfully, as I’m currently using the experience gained in putting together my own 2d engine