Saturday, 10 December 2011

Mental detected in Head!

Remember when games were simple but dripped atmosphere? I've been playing Dead Space 2 on my Xbox 360, a game I enjoyed right up until the end where it succeeded in pissing me off. The game introduced a relentless 'necromorph' that could be killed as well as throwing millions of standard 'necromorphs' that could be killed. In the end, I began to hate Dead Space 2, because this ending just seemed to be a different game from the 10 or so hours before it. I felt that the constant bombardment from these enemies as well as the one that couldn't be killed was just too much over and over again.

Then, there it was. On the World of Spectrum forum. Right there, in the New Game Ideas section. Berzerk. Why wasn't there a decent version on the ZX Spectrum of this classic arcade game from Stern Electronics. It turns out there had been some clones of it, but they weren't that good. For those who are not familiar with Berzerk, the game consists of you, the humanoid, running through a maze occupied by killer robots. These robots can be killed but there is also the added difficulty of the appearance of 'Evil Otto' - a relentless bouncing ball that cannot be killed. Sounds familiar? It conspires that this is the game that Dead Space 2 wants to be but with fancy graphics and sound and in 3D.

Where is all this leading?

I've been doing ZX Spectrum graphics for a while now and ever since those heady days in the early 1980's, I've always fancied writing a ZX Spectrum game. Back then, I'd spend ages on the graphics then when it came to the coding, it just wasn't exciting enough for me and another game would slip away to be forgotten. Twenty-odd years later and I'm a freelance graphic designer as well as a systems developer. I'm also still doing graphics for ZX Spectrum games. But, here's the rub, I still hanker to create my own ZX Spectrum game. Doing everything - all the design, coding and graphics.

I know absolutely nothing about Z80 assembly language, but feel that due to my systems developer job, I should be able to pick up another programming language" like I have done in my career. Having a browse through the World of Spectrum forums, you'll read about people wanting to write a Spectrum game but have no programming knowledge.."Where do we begin?" they ask. Coupled with other projects where the coders have come and gone due to real life and/or other projects and people always keen to get their ideas across to you in making a game where their final words are "..of course, I'm no programmer." and with the odd "Why don't you do it?" replies to coding...As for myself, I get frustrated as the next man by doing ZX Spectrum graphics but have no game to put them in.

And so, I have decided that it's about time to actually learn programming for the Spectrum and then I can get my ideas and graphics out there in a game. But, so many people have delusions of grandeur, myself included, and say these things then realise they've bitten off more than they can chew and just give up.  The key is starting on a simpler project. That's where Berzerk comes in. It plays great - you hear that the ending Dead Space 2? - and it has simpler graphics and simple but rewarding gameplay. What's more, I've also decided to document the whole learning/development process here so that anybody else who'd like to try what I'm doing, can use this blog/diary as a guide. I'll be posting everything about doing the game, including technical stuff, problems faced, moods, designs, sketches, highs and lows. Other than helping other do the same, I'm hoping that it will be a good read.

I'm under no illusions that this is going to be straightforward.

Now, Berzerk. This is a game I haven't played for more than 2 decades. I can only barely remember playing it in the arcades but can remember playing it more on Atari's 2600 console and I also remember loving the Atari 2600 box art. Having a think about learning Z80 machine code to code Berzerk, the game at least gives me some milestone :

  • getting a sprite on the screen
  • getting multiple sprites on the screen
  • moving a sprite around the screen
  • adding animation to the sprites
  • firing 
  • getting a simple maze on screen
  • enemy AI
  • scoring

I think that's the basics and learning to do all of the above will hopefully help build a game.

What's my ideas for Berzerk?
Well, I have a couple. Firstly, and more importantly, I want to create a version similar to the original arcade version - and that includes the basic graphics. Secondly, I'd like to do a reskinned version, with all new fancier graphics, maybe some enhancements - a Berzerk+, you could say. Lastly, I'd like to do an unnofficial ZX Spectrum sequel - a large mappable maze with amazing graphics following your escape to safety. A few years ago, I created graphics for a top down game - similar to the view in the 2D Legend of Zelda games - but the game they were being done for didn't come to fruition. Then there was talk of a Spectrum Zelda-esque game and again these graphics were dusted off and again the game disappeared. I'm proud of these graphics but would love to see them used...and this Berzerk sequel gives me the chance to use them at last. But, I'm getting ahead of myself here, I need to learn to code first and get the first basic game done.
Before I go anywhere near some paper, a ZX Spectrum emulator, a book to learn Z80, or the various links I have on the web to help, the first thing I need to do is refamiliarise myself with Berzerk and that means installing MAME and getting the Berzerk ROM and playing the shit out of it. That's where I'm heading now. I've had a couple of games and I'm shit. I'm terrible playing games using the keyboard now. This makes me think that when - and I say 'when' and not 'if' - I get to do Berzerk+, I fancy doing Robotron type controls (1 joystick for 8 directional movement, another joystick for 8 directional firing).

In my next installment, I'll go into details of the how I'm going to start learning, tools, books, links as well as any other thoughts about the game after playing the original.