About Me

I’m a fourth-year Master’s student studying Computer Science at the University of Warwick. On this page, I'd like to talk about stuff like that, as well as some of my interests and hobbies.

Games

It should come as no surprise that, as well as making games, I also enjoy playing them. I play all kinds of games, but I have a particular fondness for retro games. I was born in 1998, so a lot of the games I like are older than I am.

To me, the era of games released on consoles like the NES and SNES are most interesting. It feels like this was when developers had advanced enough technology to make some very interesting games, but they also had to work around limitations of the system in creative ways. Games were also often ported to different systems with different architechtures, resulting in multiple versions of games, each developed from the ground up. I think that the differences between these versions of the same game are fascinating.

In terms of genre, I tend to gravitate towards Role Playing Games. I especially like games that let you influence the growth of characters and strategise, and it's also always fun to watch your numbers go up.

Other Interests

In my first year of university, I joined the Magic Society. Despite being possibly the worst magician, I stuck with it, and I’ve served as the Society Librarian since my second year. My official responsibilities include keeping track of Society resources and bringing materials required for teaching sessions. Additionally, I work with other members of the exec to organise sessions and events and to help teach during the sessions.

During my third year at university, I took the first two levels of the Japanese. I’ve always been interested in Japanese, due to the number of games that have it as their original language. For me, older games with harsh memory restrictions are the most interesting. I love looking at the way that these games made the transition from Japanese to English, and how much content needed to be changed, or removed along the way.

I wanted to take lessons in the language, instead of trying to learn it by myself. I didn’t want to teach myself bad habits or end up speaking Japanese like a video game NPC. I still have a lot to learn, but it’s something I’d like to continue learning at some point.

My History with Programming

My first experience programming came at the start of secondary school, were we were introduced to Scratch, an introductory programming language. Scratch's interface is limited to drag and drop code blocks, and has a lot of pre-built blocks designed for making games. I made a lot of projects in this language, most of which are sadly likely purged from the school's computer system when I graduated. Some of the projects I tried to make were perhaps a bit too ambitious for the language, so I soon started to feel the limitations that Scratch imposed. I decided I needed to move onto something more advanced.


Scratch is a drag-and-drop beginner’s programming language. (Image from Scratch Wiki)

My next step was using the game engine GameMaker. Game engines were still quite daunting for me, having only used Scratch before, but this engine offered the ability to program behaviour by dragging blocks, quite similar to Scratch. However, I soon found that writing code to do the same thing was easier and more understandable for me. GameMaker uses its own programming language called GameMaker Language, or GML. Syntactically, GML is very similar to Java or C#, but uses loosely typed variables, similar to Python or Lua. I didn't know this at the time though, as this was my first experience programming.


As well as drag-and-drop blocks, GameMaker introduces coding using GML. (Image from GameMaker Documentation)

At around this time, I was doing my Computing GCSE, and was being taught how to use Visual Basic. Teaching us Visual Basic was an odd choice, as we were never taught how to use it outside of the command prompt window until A-Level. This didn't stop me from trying to make games in it though. My crowning achievement in Visual Basic was when realised I could read keyboard inputs directly from the command line, and then implemented a full game of solitaire, which could be played in the Windows command prompt.

As much as what I managed to do in Visual Basic was impressive, it was clear that this wasn't the most useful language to keep learning. Although it isn't traditionally associated with game programming, I decided to learn Java next. Object-oriented programming was new to me at this point, but I conveniently knew someone who was pretty experienced with Java, so I was able to ask him any questions I had. Naturally, I learned Java by writing games in it. This felt like a big step for me, as I was able to write a game from almost nothing. Another plus side to learning Java was that I was good enough at it to use it instead of Visual Basic for my A-Level project.

When I finished my A-levels and went to university, I found a large portion of my first year was dedicated to teaching Java. I already knew Java, but it was still quite nice to have some formal teaching about best object-oriented programming practices.

At university, I also started to experiment with other game engines. Unity was the main one, and it ended up being used for my final year group project. This time around, I had the university game design society to help me get to grips with the it. Unity typically uses C# for its code, but that wasn't hard for me to learn, as it has many similarities with Java. I had also made use of it, along with C++ at an internship I had after my second year at university.

I've also had a look at Godot, which is an open-source game engine. Code in Godot can be written in multiple languages, but it recommends its own language, GDScript, which is similar to Python. Personally, I found GDScript very easy to use, and Godot very intuitive. Godot was one of the engines we considered for our final year group project, but we elected to go with Unity instead due to its better documentation and support.

Most of my personal projects are written using the fantasy console, PICO-8. A fantasy console is a game engine which has limitations placed upon it in order to mimic the performance of old consoles. I've written more about the limitations of PICO-8 in my article about my game Demon Castle. The language used for PICO-8 is a slightly modified version of Lua. This was my first experience writing Lua, and I found I quite enjoyed it. PICO-8 really plays into my love of retro-style games, with its fixed low resolution and limited colour palette. It also includes features like a sprite editor and music tracker, which are pretty helpful for my unartistic self.


PICO-8 really appeals to my love of retro games.

I also tend to use PICO-8 for game jam games, both hosted by the game design society, and online. Its small scope and fully-featured working environment let me get started creating a game pretty quickly with minimal fuss. Lua is also a pretty good language for game jams, as it's very quick to write and easy to make quick changes to.

PICO-8 has a great online community, with people often sharing the games they've made. One of my favourite things to see is the concept of a "Tweetcart", in which a programmer tries to fit code to create some kind of cool effect within the 240 characters of a single tweet. It's a pretty interesting form of code golf. I've also given a talk at one of the game design society's "lighting talks" events, where members of the society are encouraged to give a short talk on a subject they're passionate about. The title of my talk was "What's PICO-8, and why do I keep making games in it?", and I covered some of the advantages and drawbacks of writing a game in PICO-8.