Doom Clone In Unity Introduction

The basic idea

So ever since I first saw it on my friend’s 386, I’ve really liked Doom. I think I’ve put more hours into playing and modifying Doom over the years than any other game – including Animal Crossing on my Switch.

I should mention this is the original DOS Doom that I’m on about, not the latest modern version. It’s maybe nostalgia, but the original Doom has some features that sort of got lost in the modern FPS style games, so I figured it might be fun to try and make a Doom clone in Unity.

This is not going to be an actual clone of the DOS game Doom. In this context, a “Doom Clone” is a particular genre – it’s what we had before FPS games came along. It’s not an FPS with missions, objectives and stats. It’s a pure shooting game with the most basic and straight forward controls and gameplay.

Watch the video

I made a video that explains it in a somewhat rambling way, click it below to have a watch

What is a Doom Clone?

Today we’d call them “FPS” games, as in First Person Shooter. However Doom was one of the original ones, and back in 1994/5 we didn’t yet have a name for that type of game. It’s a bit like Minecraft – there’s loads of “Minecraft clones” out there because “Voxel based mining and crafting game” doesn’t yet have a catchy word to describe it. It will one day though.

Why not just play modern Doom?

Oh I have Doom 2016, and will probably at some point get Doom Eternal however everything from Doom 2 onwards just misses out the things that made DOS Doom so fun for me. The gameplay is nothing more than a 2D top-down shooter, but rendered from the player’s viewpoint. And this makes the gameplay very intense with rooms full of enemies to shoot at, some quite unfair traps and environmental challenges to overcome and that old style of gameplay where getting to the exit was the whole point. Doom even rewards you for getting there quickly.

I also find the visual design of these early 3D games quite easy to make sense of. The screen isn’t cluttered with lots of visual distractions, so it’s always obvious what to shoot next.

The Plan

I’ve followed various random Unity tutorials over the years, they showed me how it works and I know how to write code in C#. What I don’t know is how to write a game that has multiple levels, enemy behaviours and a level design that is interesting to play in. These are the things I want to learn. Previously I’ve tried to take part in game jams, and do random little projects and the effort required to make a short game stopped feeling like it was worth it. If I’m going to sit at my PC for hours thinking about code, I’d rather it added up to something bigger.

Iterative design

I’m not going to sit and plug away at “The game” for years though, before farting out some rubbish. Instead I’m going to iterate over everything, learning as I go along. The end goal is to make some sort of Doom clone, but at this stage that’s as far as I’ve got with the idea.

This is not a tutorial!

This is not a “How to make a doom clone using Unity and C#” tutorial. If you came here by mistake, exits are available to both sides and may also be behind you. This is a dev blog. I figure that if I keep writing down and explaining what I’ve been doing, it might motivate me to keep going and not get bored or distracted by something else.