Tom Taylor - Software Engineer

Escape Sequence

Escape Sequence

Escape Sequence was the first real video game project I ever really produced.

Visibly inspired by the 2D action platformer genre, this game was a hobby project I worked on early in my career. It was built using Unity and C#, and it was my first real foray into game development.

Trailer

My first ever game project!

I always knew I wanted to make video games, and I had always dabbled in various things growing up as outlined on the home page of this site.

One day I decided to take the plunge and start building a game. I had no idea what I was doing, but I was determined to learn and create something fun. The way I saw it, the easiest place to begin was a simple 2D platformer style game. I always loved the immense challenge and satisfaction that came from games like this.

Written during the summer months of 2014, I was young and eager to learn and really threw all my free time into this project. Getting to grips with Unity and the concepts of building a game.

Technologies used

  • Language: C#
  • Engine: Unity (2014 era - Unity 4.x)
  • Development Tools: Unity Editor (prefabs, scene management, animation tools), Visual Studio
  • Assets & Art: Photoshop & licensed third-party 2D sprite packs, audio assets
  • Version Control: Github

Gameplay is king

Gameplay was at the forefront of my mind when building this project. I wanted to create a game that was fun to play, with tight controls and a steep learning curve.

  • Mechanics: Building fun and responsive mechanics for jumping, shooting and platforming was a lot of fun. Really learning to prototype and tweak until everything felt just right. I was, and still am very proud of how the game feels.
  • Enemies and AI: It is really important to nail enemy AI, walking that fine line between not being impossible to defeat but also being difficult to evade. With the clear Megaman inspiration, you are expected to die often until you learn your way around... Yet not feel like the game is unfair or that you are powerless.
  • State Management: A video game is not some linear or deterministic process. The user has choice, free will. They need to be able to navigate the entire game, from menus, to loading screens, to gameplay, and then back to menus again. Being able to manage both game state and player state is hugely important and this project taught me key skills in this area.

Level design challenges

The game has about a dozen levels, all with various different platforming/action challenges. It is split into multiple worlds, each with their own gimmicks.

  • Platforming: Platforming is the key part of any platformer. That feeling of being able to control your character perfectly and nail jumps that you feel like a genius for nailing. There are whole levels dedicated to the platforming challenge alone.
  • Fighting: You are equipped with a laser gun which can be upgraded throughout the game. This is important as the enemies you face are a strong threat and you need to be able to hit them hard while dodging attacks. The game includes not only random enemies littered through levels, but also intense boss battles against larger and stronger foes.
  • Auto-scrollers: There are levels where the camera is on a set path, and scrolls for you outside of your control. If the camera ditches you from frame -- You die. These challenges bring both the action and the platforming together into a tense and cohesive whole that is very rewarding when you hit the finish line. Trying to navigate the difficult platforming while destroying/avoiding enemies makes for a very strong gameplay loop.

Lessons learned

  • Game design: Considering this was my first game project, I learned a lot about game design principles, level design, and how to create engaging gameplay mechanics.
  • State management: Usually a software developer's bread and butter, but in a game this is even more important. I learned how to manage the state of the game, the player, and the world. Even if there is a lot of room for improvement.
  • Code reuse: A big part of clean code is the ability to structure code for maximum reuse. I learned the importance of creating reusable components rather than duplicating logic.
  • Art direction: Mixing third-party assets taught me how crucial visual consistency and color theory are for overall presentation.

Thoughts looking back

I am incredibly proud of this project.

I think the game is a really great first attempt and I learned so much more than you can see from the demo. When I think of it, I feel very nostalgic about the time in my life that it was built, but also my wide eyed viewpoint on the world of development at that time, being so young. During this project, my brain had several of those critical eureka moments that every developer goes through... And I'm not sure I would be the developer I am today without this project.

Saying this, and looking back from beyond 10 years later, there are so many things I would do differently. For example, while the state management is passable, I would probably nowadays implement much of it using finite state machines. This would have significantly sped up development and kept me active on the project.

There is also a lot of bad code reuse. While I knew the concept of it and why it's bad, there are probably hundreds of lines of logic that frankly could have been combined into a common unit or library. When making games or big projects these days, I tend to try to encapsulate a lot of the shared code into discrete parts which is good for coding standards... But also my and my colleagues collective sanity!

Another part I still acknowledge to this day are my troubles with art. Much of the art content of this game was (legally) licensed by a third party asset maker, and so there is some incongruence when it comes to the design of the game... And it can look outright ugly in parts. I think these days I would be much smarter about artistic choices and colour theory.

Please give the demo available on this site a go, and see what you think for yourself.

Demo

The demo for Escape Sequence is not yet available on this site, but will be coming soon!