What’s this about then?
Welcome to my humble re-beginning (???) as a game developer! For the past 2 months I’ve being quietly pushing myself through the initial stages of creating a game. I made a lot of decisions, went through a bunch of processes and finally ended up with something that you could almost mistake to look sort of like a game! Or at least if you squinted hard enough.
So I’m not very far into development. 2 months in actuality is about 110 hours, give or take. This isn’t really an awful lot but I can only manage a couple of hours each day working on the thing since I have a day job. Also, I need to rest like a real human bean does. At this point, I wanted to start writing about what I’ve been doing. This is partly so I can stop bothering everyone I know with “hey look at this thing I did!” messages and use this as an outlet instead, but also to maintain a nice history of my development. Who knows, someone else might actually be interested too. That might be pushing it a bit though.
Anyway, let’s get into the details. Here’s a screenshot of the game in its current capacity.
![](/images/2019-09-29/img01.png)
The game itself is going to be a retro survival horror game. One of my absolute favourite series of games is Silent Hill and it really pains me that those kinds of horror games have just faded away. I love the setting, mood, Lynch-esque acting, the swathing ambient drones and just the general sad and melancholic feeling I get from playing those games. I truly, truly love the Silent Hill games. I also love other survival horror games too, like Resident Evil, Fatal Frame, Clock Tower, Siren etc. etc. and I want to throw my own spin on the game genre.
In addition to games, I am also a huge fan of East-Asian horror films and exploitation cinema and have a fairly hefty collection of DVDs in my flat. I want to pull inspiration for my game from the likes of Sion Sono and my absolute favourite film Dumplings by Fruit Chan. Seriously, that film has some beautiful shots and sound design while the whole concept is whole-heartedly grim. Watch it if you can, I love it!
Anyway, my game is pretty bare bones and I’ll be the first to admit it. But! But but but! Quite a lot has gone into this so far. This is running inside my own custom engine (written in C#, using OpenTK) and so far has various features such as model loading, skeletal animation, multi-pass rendering and other super advanced technologies of the same ilk. You may be wondering at this point why I didn’t just pick up Unity or Unreal. Honestly, I did consider it. I played around with both but decided I didn’t really want to use either. My day job is graphics programming, I knew I could make a game engine and I WANTED to make a game engine. So I did!
While planning the development of the engine, one of the decisions I made was to keep things fairly simple. I’m a one man band, so I don’t have the resources to create hyper-detailed environments and models with super realistic visual effects. Instead, I chose to go old school and mimick the good ol’ PS1. Currently the engine deliberately uses affine texture mapping and the vertices of the geometry snap to a reduced set of discrete positions on the screen. Further to that, I am rendering at half-resolution and nearest neighbour upscaling it to create that low-res, blocky feel. With everything put together, it feels suitably janky just like the PS1 did. All it needs now is some low-poly models and muddy-looking textures and we’ll be good to go!
In addition to having a working engine, I also created my own level editor. The “level” you see up there in the first screenshot was created using it! You’ll be happy to know I’m not a complete masochist and instead of writing an editor from scratch (good LORD I would be doing that for years) I opted to create an addon for Blender. This was written in Python, and I took great inspiration from Super Tux Kart and their track editor, written as an addon for Blender. Doing it this way has meant I have managed to create a fairly competent editor in barely any time and I am able to use Blender’s vast amount of tools to help me design and develop. This is good fuel for an entirely other blog post though if I’m feeling particularly dry one week so enough about that.
That’s roughly it for now! My plan going forward is to keep this blog updated with new information every Sunday. Over the next week I plan to focus on player movement and animation. Following on from that, I should probably see about getting some actual collision detection into the engine.