Sunday, August 23, 2015

Space Vice - Diary of a Game

Introduction 

I suppose it all started at one random Absence of Mind gathering back in Haugesund around 25 years ago. Between checking the latest floppies received in the post, some gaming, checking out new demos, copying, bottle after bottle of Coca Cola and bowls of crisp, possibly (read: most likely) very late at night (early morning hours). Can’t really recall who came up with the idea, but somehow we had a big laugh and discussion about what would happen if you mixed the two games Delta and Miami Vice. How would “Miami Vice in Space” — aka Space Vice — look like? Of course, our first attempt (possible the best one, in the end) was just freezing Delta once started and change out the Delta player with an animated Miami Vice car. Job done :) Still have a copy of the hack on one of my trusty old floppies :)
Personally, I have had quite a few (failed) attempts in making this game happen up through the years. Dating back to the original Shot ‘em Up Construction Kit on C64, same program years later on the PC (C64 emulator) and finally, last year, on GameSalad. Since this is just for fun, and I have no plans to pay for the recent update to GameSalad’s business model, I had to look for other options.

I was a bit reluctant to go for Construct 2 (although I have tested it in the past, and it is fairly straight forward to use) as it’s a Windows only program. But since Construct 3 for Mac is years away, I had to bite the bullet in the end and install Windows 10 in a Virtual Environment on my MacBook Air. Yuck…

So, off we go — again…

Preparations

Seeing as I did a lot of graphics and “programming” on GameSalad already, I didn’t really had to spend a lot of time on preparations. The files were securely left in one of my (many) GameSalad subfolders.

First thing I had to tackle was how Construct 2 would cope with the different aspects of a Horizontal Scrolling Shoot ‘em Up game. So I read — and read. Luckily working offshore, on a diving ship in the North Sea, gives you plenty of time at night to solve all sorts of challenges.

After a week or so, I didn’t really have much to show for, bar plenty of experience in Construct 2.

First things first

I opted to go for a parallax effect for the background of my game. You have 4 layers to work with on the free version of Construct 2, so two star field layers and an action layer (plus one left for other graphics to differentiate each level) looked like the way to go. Half an hour later I had a quick working “level” with the player on screen (movable with the arrow keys), and a parallax scrolling background. Everything working nicely with Construct 2’s Delta Time (dt) expression.

Oh, and I also had a Game Logo + Sprite Font (made manually, of course) ready after trying to do some pixel art in Photoshop. Worked out surprisingly well.

Brainstorming

And that was more or less the status of game for the next week to come. I wanted to try and have as much of the game’s design and functionality planned ahead before I started to add more and more events and code in Construct 2. During earlier trials in GameSalad I’ve found I’m designed the game as I go along, but in the end it all turns out to a great big mess. This time was going to be different.

After many mails, lots of feedback from my old Absence of Mind buddy and hours of post-it designing, I more or less had the design in place.

Boss Fight

So, time to start making some action in Construct 2. First thing I wanted to try, as I already had the enemy waves more or less figured out, was the boss fight at the end of each level. Luckily, I had a boss ready from my previous attempt in GameSalad. Added a few movement behaviours (horizontal and vertical sine) and there it was. Just like I imagined, and planned it. Added a bunch of image points for its bullets to be spawned from. A couple of different bullet types (one standard — horizontal moving and one bigger one with a few sine movements, always moving at an angle towards the player), the necessary object collision events added, and I had a working Boss Fight!

I tied everything together with a startup screen. Ie. press space to start, press y to restart level if player is shot and return to startup screen if boss enemy is killed.

Worked like a charm.

Back to Brainstorming — again

Seemed I got a bit ahead of myself when I considered myself done with brainstorming. I had most of the gameplay ready, but I also had to design the top/bottom menu. Turned out to be one of the hardest part of the brainstorming, actually. There’s just too many ways to do a menu — and twice that if you have top *and* bottom menu in your game.

I really wanted to keep it as simple as possible, but also have all the info available. Like Current Level, Score, High Score, Players Life, all the different bonus objects available and different ways/places on screen to display these.

I ended up with 4 options, quickly eliminating the upper left from the list. The 3 remaining is slightly different variations of the same menus, so I guess trial and error will have to decide the outcome. The different menu items are easily relocated once you have the different objects ready, and the corresponding Global/Instance Variables and events set up in your game. Just a matter of moving them around on the layout screen.

Bored at work

As “luck” had it, just as I completed the menu draft, our communication system on board the vessel crapped out. Meaning no phones, no mail, no internet, no “work”. It turned out to be a painfully slow day, so in my despair, I found a piece (and two) of paper and drew some ideas for different levels. Half an hour later — job complete. The game will consist of 7 levels + startup screen (and maybe one or two more — we’ll see)

Level 1

More or less a copy of Miami Vice on C64. Few issues regarding player control and length of level. Should the car fly over the city, or drive through the city? Both options are easily done in Construct 2. If it drives through the city, I’ll probably end up with a very short level, otherwise it’ll be “standard” length. Think I’ll opt for the first option as it’s more in line with the original game and less graphics to draw. Drive around a few blocks, shoot at some cars, maybe pick up a bonus or two, and continue to… space… Maybe a nice transition would be to fade out the city underneath while zooming the car, and then continue the next level with the car “flying” in on the screen — small at first — to its original size.

Level 2

Total Darkness. Starfield(s), enemy waves (blue on drawing), bonus objects (vertical line on drawing) and a boss enemy to defeat at the end.

Level 3

Uridium inspired level. You get my drift. Same gameplay as the other levels, enemies, bonus objects and boss enemy. I’m in hard talk with myself whether to have enemy waves or “fixed” guns (*on* the space ship) on this level. The drawing suggests enemy waves, my head says fixed guns.

Level 4

The Rocks of Doom. Asteroid Belt level. Lot of rocks and a few obstacles to manoeuvre through on your way to the end. The Rocks kills you, of course!

Level 5

The Spikes of Death. Same gameplay

Level 6

Bubble Trouble :) Considering having the car being able to take a few hits (from colliding with bubbles) before you die… Big bubble Boss in the end.

Level 7

The Gate of Destiny
Arriving at Planet xxx (final destination). Star fields and the planet slowly appearing during the level. The end will consist of possible 4 medium bosses (UFO’s?) before the Wall of Destiny. The entire right side is a wall firing all sorts of ammo at you. Once you defeat it, the gate to destiny opens and, passing through it, you have arrived safely at your final destination.

The End…

 Side note:
I wish I was a musician, that my name was Rob Hubbard, and I could make a sound/music pack to this project. Right now, I have a few Delta tunes playing on the different screens, just for inspiration. Working magic, I tell you!!

Getting down to the nitty gritty

I realized I had to sit down and work my brain through what variables the game needed. Both Global Variables for the game and Instance Variables for each object in the game. Again, I followed my “write-down-whatever-pops into- your-mind-and-see-where-it-takes-you” principle. I’m sure I’ve overlooked something, and I’m sure I’ve put some of the variables down as global instead of instance, but at least I have a draft to work from. Trial and error will sort out the rest. Don’t know why I used a red pen on this one, but I think that was the pen closest to me at the current time…










  

Getting your head around the nitty gritty

Writing everything down on (squared) paper is a good way to figure out how to save events in Construct 2 — I hope. I use a Global “GameStatus” to control the “screen flow” in Space Vice (see previous picture) and I use a Global “CurrentLevel” Variable to control the graphical elements in the game. Maybe I can work out an event that only uses one of these Variables to control everything :) Might save me a few events in the long run. Also tried to lay out all the different Sprite Objects — and their respective animations — I need in the Game. Note, the red pen was closest today, as well…

I think I have a game plan ready now, and the next few days will probably be used to draw all the graphics required in the game. Pixel by Pixel takes a bit longer than new fashion drawing methods, don’t hold your breath for the next update…
I also need to look into how best to make Level 1 fit into my events/level control. Level 1 will require different movement control, different enemy behavior and what not. I’ll make the level quite short, just as a tribute to the Miami Vice aspect of this project. I’ll not let this Level be a showstopper for Space Vice, so if need be, I’ll even opt for “the other” solution.

Game Graphics Galore

That’s a week or so spent on graphics (in addition to working, eating and sleeping offshore). By far finished with the graphics yet, but it’s a good start to visualize all the different levels. More or less happy with everything except level 2 and 7 (The “Space Ship” and the “Planet” level.) They need to be completely re-done. Also need to add some more roof-top graphics on the “Miami Vice” level. Other than that, I’m pretty happy so far…








Game play

Started adding some game play last night. I desperately needed some implement some enemy waves. I’ve broken all rules on programming and just got them on the screen. One way o the other. The result actually looks very good, but the events in Construct 2 is another story. Not to worry, it’s all being “re-done” soon :) Right now I’m in a testing stage, and using keyboard controls to change the graphics/object on every level. As soon as I go to Global Variables mode, and starting a more permanent solution, everything will look nice and dandy… Hopefully ;)

Inspiration

By chance, I stumbled over a post on a “retro” Facebook Group about a blog by Steve Turner. A diary of a new game he has started after retiring. That’s cool enough, but when I realized he was sitting in the same office as Andrew Braybrook back in the Hewson days and A. B. also did a Diary of both Paradroid and Morpheus, I just had to find it again. Google is your friend, so didn’t take too long, to be honest. Started reading and just got sucked into the Diary. Man, I’d give my leg and my arm to be working in such an environment 25–30 years ago :)

Anyway, needless to say, I’m pretty much all inspired right now, so tonight starts the “beginning of the end”, so to speak. I’m done with the testing stage, now lets get those global variables in use and finish this thing. I mean, don’t hold your breath, or something, as there is still a long way to go before any release can be considered, but it’s sort of a turning point from now. I’m more or less happy with the game play, most of the graphics and design, so lets get cracking on getting this thing finished, why don’t we.

To be continued…

Update 24.08.2016 - A few other projects has been started in the mean time, so the Space Vice project is at a standstill at the moment.