Many people who know me professionally know that I started my journey as a developer in Flash making small web-based games for Newgrounds, Kongregate and so on.

Although I only released a small handful of completed games like Destroy All Zombies III and Grey Life, I have a massive collection of implemented game ideas, each that I at the time intended to flesh out into a complete game. I even created an entire game framework in ActionScript 3, which is still available on my public GitHub profile. This quickly taught me that although I really enjoy some elements of game development (namely, writing the code, as demonstrated by my rise to the #1 ActionScript 3 user on all of StackOverflow), I actually really dislike the other just as important components like creating artwork, creating animations, selecting sound effects, developing a storying and characters, and so on.

Unfortunately once I began work at an actual agency after I completed high-school, the complete lack of time to even consider working through these tasks ended my production of games, with the last release being just before I started the job. With that said, I am still strongly drawn to the idea of one day creating a game and often find myself writing code for systems of games that I would like to create.

What technology would I use?

If I were to approach creating a game right now with the intention and dedication to fully complete it, the technology stack would probably be:

  • TypeScript for authoring the codebase.
  • Pixi for rendering the game scene.
  • React for rendering UI elements.
  • Potentially Electron for packaging the game.

The reason behind this is largely based on my goals when approaching the development of a game, which are:

  • To enjoy the development process as much as possible.
  • To allow easy distribution to many players (it's web-based and can be released to large web-based game portals).
  • To extend my skills in the technology I use for my day-to-day work.

When I think about developing a game, I never consider a financial goal which would of course have significant impact on the choices of technology I choose. For example, something like Unity would allow for much easier packaging for phones, tablets, desktop and web altogether vs the above which could involve quite a lot of convoluted build steps to be able to be playable on phones.

What technology have I explored?

Unity is something I really tried to like. I'm not blind to the fact that it is an extremely good tool for the task and I never claim that it does anything poorly or incorrectly, however I just don't enjoy using it. The UI-heavy approach is something that does not work well for me because I like writing code. I don't like spending time clicking and dragging things around a screen and I find the lack of code entrypoints other than dragging scripts onto entities in the scene irritating and awkward.

Another thing that really bothers me about Unity, though I can fully understand the reason for it, is the lack of a 2D API when trying to create a 2D game. I can appreciate that "2D" in Unity still fully uses the 3D engine with some clever camera positioning and rendering strategies, which allow you to easily supplement your game with 3D features if you'd like to, but in my case I have no use for this and would much prefer a traditional 2D API where I don't have to concern myself with quaternions to do simple sprite rotation, awkward z-axis positioning to emulate layers and so on.

XNA was a framework I really, really enjoyed working with. It has been by far the most enjoyable game development experience that I have had to date. The API is really well written, having access to the rendering loop was a lot of fun and all of this being in C# was just the icing on the cake. Being able to deploy from Visual Studio directly to my Xbox 360 was also a huge bonus. Unfortunately XNA was discontinued and though it was revived as MonoGame, it has inevitably lost traction against newer frameworks.

I've played with a few "complete" game development frameworks written in JavaScript like Phaser, however the API does not align well with my coding style and I do not feel like I would enjoy working with it.

What would the game look like?

I enjoy developing top-down games. They offer a good balance of easy to overcome technical and mathematical skill requirements (e.g. basic trigonometry and vector based math) while offering enough room to be creative with the game mechanics.

I would draw heavy inspiration from the work of Yasumi Matsuno, the designer of my favourite games of all time (Tactics Ogre, Vagrant Story and certain Final Fantasy entries), aiming to flesh out a tactical RPG style of gameplay. The combat mechanics of Vagrant Story in particular would be of high interest to me because of the complexity involved in creating such a detailed and delicate system. A very primitive example of what would be involved in a system like this can be read about in this article I wrote last year.

For the world itself I would create it as a series of small to medium sized connected rooms also heavily inspired by Vagrant Story. These could easily be stored as individual JSON entries which describe the structure (floor, obstacles etc), what enemies can spawn, the level of those enemies and what rooms are connected to it. Developing this system is highly appealing to me as well.

Because I really enjoy micro-managing a party in RPG style games (managing very particular sets of skills, equipment, abilities etc), which is why I love Tactics Ogre so much, I would incorporate a small party of 3-4 playable characters instead of a single character.

Outside of these foundational mechanics, I would theme the game ideally in quite a dark setting. I'm a big fan of the art style used in entries like Darkest Dungeon and Thronebreaker, however this is not something that I would be able to create myself.

Why haven't I done this?

The biggest reasons that I haven't completed a full game for a decade now are:

  • Time constraints: I work full-time from 10AM-6PM and commute for 2 hours either side of that. Game development in particular needs large stretches of uninterrupted time especially when fleshing out some of the more intricate systems. Although I could string together something slowly during my commute, I don't believe the 2 hour blocks would be suitable for the quality of work that I would want to do.
  • Lack of interest or motivation for the non-coding parts of game development. I have nil desire to spend months creating artwork and animations. I have no creative talent to be able to come up with stories, characters or environments that will make up the world.
  • Lack of discipline committing to long repetitive tasks that are involved in developing a game. Creating complex well-crafted systems for a game would typically be the part that intimidates a developer away from building a game, however the thing that really scares me off is the actual process of creation of content to fill that system once it's complete. Coming up with new enemies and gear, balancing everything, iterating hundreds of times on every detail so that everything works in harmony in the complete product, replacing the sound of a sword hitting an enemy for the 30th time so that it better suits the rest of the sound effects, etc. None of this is appeals to me at all.

Some other minor road-blocks that aren't completely preventing me from starting a game but still impact the decision to do so are:

  • There is no-one in my network that I would be able to discuss crafting complex game logic with. This is a good way to stay motivated and come up with the best possible solution to the problems you are designing systems to solve.
  • I don't have any contacts for artwork. Obviously I can write almost all of the game code without this, however it's not motivating looking at temporary artwork and finding this person in the first place in my recent experience is quite challenging.
  • The style of code I write on the job is completely different to the style of code that would be written in the context of a game. This is both bad and good but in both cases a barrier not only for writing the game code but potentially would require a continuous mental shift between what I'm doing at work and what I'm doing on the game, which could become distracting and inefficient.

Potentially one day down the track I will craft enough of these individual systems that they can be puzzled together to create the shell of a game, then try get in touch with artists or game designers to bring so life to it, however I don't see that happening for some time especially given my attention to the work I am doing with Simply Wall St.