Projects

This page is a collection of some of the many projects I have developed and worked on.

RPG Engine

My longest term project, I’ve been working on a Role-Playing Game engine since 2013. I’ve restarted development on it during that time, but not dedicated a huge amount of time to it; finding free time here and there to develop additions. It was initially started with Java and Slick2D, and currently runs on C# with SFML.NET.

It’s designed to power games of a style inspired by that of Spiderweb Software’s games.

My original repository is at https://github.com/ashleydavies/RPG, and my current effort is at https://github.com/ashleydavies/ShaRPG. The README in the new repository is usually kept up to date with my progress.

It has all sorts of functionality, some of which is overkill and designed to test myself or have fun developing, including a custom assembly-style language with assembler and VM to support dynamic scripting. An extensive list can be seen in the README in the new project.


Gamer-Island


I’ve been working on Gamer-Island, a social networking site for young gamers, since around 2013. I initially was a developer on it when it had a fairly live community, but since have ended up taking ownership of it and redesigned it twice (single-handedly). The current website uses CakePHP (MVC framework for PHP) and AngularJS (v1). It has quite a lot of dynamic behaviour and I mostly use it as a training ground for web development these days, as the community has died down a lot.


MCServerAdmin

I made a significant server administration panel for Minecraft servers. It supported multiple servers, each with multiple staff, all with variable privileges on each server. You can add staff to your server and set up their privileges, and then view live chat, ban players, kick players, etc. This communication was enabled as a result of a modified version of the JSON API Bucket plugin on Minecraft, which I modified to allow my web server to make more privileged requests to. Functionality was available to see every message a player has said and all sorts of other useful administrative features. The long term plan was to be able to associate bans with messages and actions so that server owners could ensure their staff teams were not abusing their powers.

This was intended to become a monthly subscription for server owners however due to a limit of free time, and my allowance being barely enough to fund a low-grade VPS, let alone marketing and business expenses (I was about 14), this project got put on hold. I still intend to do something like it one day.


OnBoard

I worked on OnBoard with three peers as part of a university project. The source is located at https://github.com/Imperial-Web-Apps-Group-4/. OnBoard is a website where you can construct board games from images, with built in support for cards, flippable components, player-owned components (i.e. private / only shown to one player), and others. It has online multiplayer and its feature set means it can support quite a lot of popular board games.


Compiler

Valid code in the language we developed

During my university compilers course, I designed a full compiler with two peers. During the extension phase, I was responsible for the majority of the OOP features we added, which included Java/C# style interfaces, accessibility modifiers, methods, overriding, and inheritance. I wrote up a post about vTables and runtime method resolution on this blog. I unfortunately cannot release the source as this was a university project. We were awarded marks over 90%, and largely over 95%, consistently at every milestone of development.

Toy compilers

As well as the big compiler I worked on in my university course, I was very interested in compilers before I got to university, and made quite a few attempts at implementing some. I have two hosted on my GitHub profile, one of which is fully functional for some limited syntax, and one is just a lexer and parser. Both are fully hand-built.

https://github.com/ashleydavies/ComPyler-1.0

https://github.com/ashleydavies/ComPyler-2.0


ARM assembler and emulator

As part of the first year at my university, I was part of a team of four developing an assembler and emulator for a subset of ARM instructions. As an extension, we made an ncurses-based assembly REPL and debugger.


AS-Level Coursework – Spelling bee management program

As part of my first year of my computing A-Level, I developed a (significantly overkill) spelling bee application, with student, staff and administrator areas and all sorts of functionality, ranging from year group management to timed tests to leaderboards and statistics. It’s stored at https://github.com/ashleydavies/Spelling-Bee, and remains one of the largest projects I’ve made. It is developed with C# and XAML, and it uses the Entity Framework (if I recall correctly).

 

 


A2-Level Coursework – Chess Club management program

 

As part of my second year of my computing A-Level I developed a (slightly less overkill) chess club management application. It has a tournament system, ELO system, and statistics. The tournament page renders a bracket of the tournament. It’s stored at https://github.com/ashleydavies/Chess-Club-Manager. It runs on Windows and the Windows Phone (an ancient relic used in the early days of humanity. Some say they can still be found in some museums, but I am dubious that any still exist). I’m unfortunately unable to build it anymore, since the project style it used isn’t supported in newer versions of Visual Studio. Visual Studio 2013 should be capable of compiling it.


Minor projects

I have worked on hundreds of other minor projects, many of which I did not get far through creating. I list the more complete ones below:


Flappy Bird on a Casio FX-9860G Plus

After I got my graphical calculator for sixth form, I spent a few bus rides figuring out the programming language on it and writing flappy bird on it (later I realised you can write the code on a computer and load it onto the calculator, which would’ve been nice to know beforehand). I’ve included a video of play here. I’m planning to upload the source code at some point, but don’t have the calculator at hand at the time of writing.


Zombie Hack

As part of ICHack ’17, myself and three friends made a Unity-based zombie shooting game with a twist – it’s also got towers and walls you can buy to help you fend off the zombies. Unfortunately, explosive zombies have a tricky AI that will run at and blow up your towers and walls if they think you’re trying to block them off.

A fun challenge, and also quite a fun game considering how little time we had to polish it. It’s stored at https://github.com/MarekBeseda/ICHack


Imperial College Department of Computing Mark Calculator

I made a mark calculating website for students in my department. It currently only supports first and second years, and it may be a little out of date now. I’ll probably update it come my next exam period (great procrastination). It’s hosted at https://www.doc.ic.ac.uk/~ad5615/ICDoCMarkCalculator/index.html, and the source is stored here https://github.com/ashleydavies/ICDoCMarkCalculator.


Zombia

The source code is gross to look back on, but this is the first game I actually finished to a playable degree. You’re kept static while waves of zombies progressively swarm you, and your job is to try to hold them off. https://github.com/ashleydavies/Zombia


Awful RSA implementation

During my first year of university, I was jokingly challenged to make a set of RSA utilities with no background knowledge as an extension to a Haskell exercise which was due in 6 hours, and did my best to make an implementation which I believe works, but breaks down under all sorts of input (including anything longer than like 20 letters) due to unknown bugs I didn’t manage to track down. It’s hosted at https://github.com/ashleydavies/Haskell-Prime


AI that plays like a parent

I worked with a team at the 3Hack hackathon, we developed an AI that tries to imitate a person’s style of play, with the intent of marketing it to parents who have limited time on their hands but still want their kids to have something that feels personal and like their parents to practice with/against in a game. We won first place overall at the hackathon, and were encouraged to enter the Imagine Cup, but unfortunately due to many of us having unfortunately timed exams we decided not to do this. It’s hosted here: https://github.com/ashleydavies/3Hack-AI


Boolean satisfiability problem solution generater

I wanted to practically discover why 3SAT can’t be solved in polynomial time with a naive approach (less naive than brute-force, of course), and set to work implementing a solution in Haskell to discover why. Unfortunately, the runtime is awful, but I’m not entirely sure what it’d be as I haven’t analysed it. Nevertheless, it was fun to implement. It’s stored here: https://github.com/ashleydavies/Propositional-Truth-Tables/


Snapshot Isolation ‘database’

A simple database using C# Dictionaries that follows a snapshot isolation consistency model. https://github.com/ashleydavies/SIKeyValueDB