Wednesday, 27 April 2011

Robotz DX (PC) (2010)

System Requirements

Robotz DX was created in GM8, and therefore should work on XP, Vista and Windows 7 PC's. The game requires around 200MB of RAM (blame the Game Maker interpreter for that!) and 20MB of hard disk space.

I'm unaware of the exact system specifications (CPU, etc.), but any system capable of running XP or Vista should cope with this simple little game. Note that the title screen uses slightly more CPU (about 5%) than in game.


Download Robotz DX (1.02) (ZIP archive) HERE!
Download Robotz DX (1.02) (with installer) HERE!
(Full version history is given in detail below).


Jacob was rudely awoken from a mildly drunken slumber by the shrill and piercing tone of his military issue mobile communicator. Blindly reaching out of bed to his jacket pocket, he flipped open the receiver and held it up to his ear.

"Private! Get your shit together!", the voice on the other end barked. It was the Sirius-Delta base Commander, and receiving a call from him at such an ungodly hour could only mean one thing; bad news.

"I need you back on base ASAP. I know you're on R&R, but HQ have an important mission for you!"

Alarm bells went off in Jacob's head; if HQ were calling *him* back then something or someone had seriously fucked up.

"Affirmative, Sir." he replied, struggling not to slur.

"You'll be fully briefed before dispatch, but the short of it is that those quacks in the military research unit were screwing around with some test EMP hardware, and someone set the bastard off. Its chaos here; half the site is in flames, the barracks have been completely destroyed and no electronic hardware is working correctly - I had to get this civilian communicator shipped in by chopper!"

Jacob was intrigued. Slowly the adrenaline levels in his blood were negating the effects of the previous evening's alcohol consumption. "Is the base under attack, Sir? Who is the opposing force?"

"Negative, the situation is now under control. As for the hostile force, we were attacked by our own defence droids! Seems that following the blast, their default emergency programming kicked in and they began registering everyone as enemy targets. Alpha and Bravo squads were butchered in their sleep. The metal bastards caught us with our pants down."

Pausing to catch his breath, the Commander continued, "The robots on base have been eliminated, but HQ is gravely concerned about the situation within the main RoboCorp Industries site nearby. We are unable to make contact with them due to all our comms equipment being reduced to garbage, and our emergency recon team has failed to return. You're the only available soldier within 100 clicks, and HQ need to ensure that any hostile robots at the site are destroyed; if any of the military droids based there break out to a civilised area the casualties will be off the scale."

Struggling into his uniform, the gravity of the situation sobered Jacob faster than a bath in ice-cold coffee. "Sir, I'll be there within the hour."

"Good. We'll issue you with an auto-pistol and a belt full of clips when you get here, then escort you to the RoboCorp site. Unfortunately, the auto-pistols are the only weapon in the armoury that were unaffected by the EMP; I wish we had something with a bigger bang to offer you, but that's all we've got."

Jacob grimaced. He didn't relish the thought of going up against an army of heavily armoured robots, armed with what was effectively the military equivalent of a pea shooter.

"An auto-pistol? Even with AP rounds, that's not going to penetrate their shields!"

"Take out the shield emitters with the pistol, then eliminate the robots. Like I said, you'll be fully briefed when you get here."

"Understood Sir."

The line went dead. Grabbing his keys, Jacob left his apartment and quickly marched down the main corridor of the residential complex. The condensation in the cold, early morning air felt sharp against his skin, a cool reminder that he was a awake and alive. Jacob hoped that he would remain that way, but following his discussion with the Commander his chances of surviving the mission didn't sound promising...

Playing The Game

Robotz DX is an unashamedly old-school, single-screen shoot-em-up with strategic game play. Although simple in concept, it is a difficult game to beat; you will die many times before you master all 30 arenas - and even when you do conquer the game, it's randomly generated level layouts will provide a new challenge on every subsequent play-through.

OK, with the hype and 80's sci-fi b-movie plot out of the way, let's talk about how you actually play the game... :)

On each level, the goal is to destroy all the robots within a time limit of 60 seconds. To destroy the (shielded) robots, the player has to blow up the red, pulsating shield emitters first. You'll know when you have successfully hit a target because it will flash white. There are bonuses to collect, and computer banks to use as temporary cover, or to simply blow up for extra points (and note that there is a small chance of the computers hiding an additional bonus within).

Sounds easy? Well, it isn't. The player takes one hit to kill (or contact with an enemy), and those 60 seconds run out fast.

Keyboard Controls

Cursor Keys - Movement (8-directional).
Z/Y/C - Shoot. Hold down for auto fire, tap for rapid manual fire.
X - Hold down to lock your current facing direction (strafe).
P - Pauses game. Z or P continues play (in game only).
Q - Ends current game and returns to title screen (in game only).
F - Toggles full-screen/windowed mode (from title screen only).
I - Toggles instructions (from title screen only).
J - Toggles controller type (from title screen only).
ESC - Quits game.

The game (on first load) defaults to windowed mode with the keyboard for controls. However, there is some limited joypad support, selectable via two seperate configurations by pressing the 'J' key on the titlescreen; JoyA and JoyB.

JOYA - XBOX360 Joypad Controls

POV Hat/D-Pad - Movement (8-directional).
Button A - Shoot. Hold down for auto fire, tap for rapid manual fire.
Right Shoulder Button - Hold down to lock your current facing direction (strafe).
Start - Pauses game. Button A continues play (in game only).

JOYB - Generic Joypad Controls

X/Y Axis - Movement (8-directional).
Button 1 - Shoot. Hold down for auto fire, tap for rapid manual fire.
Button 6 - Hold down to lock your current facing direction (strafe).
Button 8 - Pauses game. Button 1 continues play (in game only).

Note that the joypad code is a bit of a rush job; the button layout may not be suitable for your particular joypad. I strongly recommend that after loading the game for the first time (which creates the .ini file), you open robotz.ini in notepad and change the shoot, strafe and pause button numbers to something more comfortable.


Across the bottom of the screen, the following information is displayed (from left to right):

Lives left. This counter shows how many lives you have in stock. 0 means that you have your last man in play.

Time left. You receive a bonus of 50 points for every second left when completing a level, so be quick! Run out of time, and you'll lose a life.

Bullet counter. You can have 5 bullets in play at any time. Why? Well, because that's an old-school game-play mechanic that forces the player to be careful with their shots and stops them from aimlessly spamming the screen with flak. ;)

Level counter. Tells you what level you are on (out of 30).

Score. Obvious really. :)

The Shield Emitters

These red, pulsating and almost phallic looking devices prevent the player from blasting robots. When active, robots are invincible - so you'll need to take these out as fast as possible, before the robots hunt you down. Each emitter takes 5 shots to destroy, and rewards the player with 100 points.

The Robots

In total, there are 8 different types of enemy (well 9 really, but lets count the mini-drones and spawners as one type for argument's sake). These are split into three groups, and I'll use the development nicknames for them as I can't be bothered to make up new ones; Daleks, Randoms and Spawners/Drones.

The daleks have a specific movement pattern; they track the players location, move a step of 16 pixels (a tile) then open fire before moving again. They have basic path-finding AI, and will try to overcome obstacles in their way. Learn their behaviour - you'll need to become adept at luring them into safe locations so you can get past them. As with the player, they can move and fire in 8 directions. They take 2 shots to kill (when unshielded), and reward the player with 100 points each.

Silver and green daleks are the basic models, with staggered movement and firing. Black daleks have rapid fire (gulp!) and red ones are lethal; they fire in all eight directions after every movement.

Randoms are a real pain in the ass, as their movement is completely unpredictable. They travel in four directions only, but move continuously, firing every couple of seconds (or so). Silver randoms mostly turn anti-clockwise upon hitting a wall, and green ones turn clockwise. Red ones fire in all 8 directions (waaah!) and have no preference as to what direction they turn in. Each is worth 100 points, and take two shots to kill (when unshielded).

Spawners are access entrances in the floor that open and close, and they create armies of little red drones that kill the player on contact. The spawners take three shots to kill, and are always unshielded. They reward the player with 100 points, as well as the peace of mind that no more drones will be produced.

Drones are weak little robots that both player and robots shots destroy with a single hit. Drones continuously follow the player, taking the shortest route open to them, and are worth 10 points each (when destroyed by the player).

Computer Banks / Bonuses

Most levels contain a number of computer banks that can be used as temporary cover from enemy fire, or just blown up for a 50 point reward and the chance of finding a bonus pickup underneath. They take two hits to eliminate.

There are also score bonuses scattered around the levels; floppy diskettes are worth 100 points, ROM chips and PCB's earn the player 250, and coins give a 500 point boost! :)

Points and bonuses are important in Robotz DX; every 5000 points the player will be rewarded with an extra life (and you'll need them).

For every second left upon completing a level, the player is awarded 50 points. You'll also earn 1000 points if you completely clear a room (all robots and computers destroyed *and* all bonus items collected). You'll need to decide yourself whether it's worth the risk of spending valuable time collecting bonuses instead of blasting droids! ;)

Recommended Strategy/Playing Tips

* Rapid, manual fire is the best way to play, but be cautious not to use the five bullet allowance on one robot as you'll have nothing left available for another encounter until your bullets have regenerated!

* Learn the movement and firing patterns of each robot, and use them to your advantage.

* Due to the random nature of the game, some levels may appear to be un-winnable; in fact, occasionally they will be near impossible to beat. Remember to lure daleks out of the path to the emitters by moving the player, and leg it past them when you can. Their 8 directional fire means that there is always a blind spot where they cannot hit you, so if there is no available cover, that's where you want to stand. If all else fails and you know that you cannot beat the level in time, go for the computers and bonuses instead to build up your score - points will soon add up and reward you with a much needed 1UP. :)

* Spawners should be given a high target priority. If they are easily accessible from your start location, go for them *before* the shield emitters. Battling robots is hard enough without having to wade through an army of annoying little drones as well!

* Play strategically. If a robot is trapped behind a computer bank, try to keep it there until you are ready to confront it; don't just blow up computers carelessly for the score bonus. Likewise, lure robots to park on top of spawners that you cannot reach to prevent them from creating more drones.

* Note how the player fires slightly off-centre (from the position of where the gun is, in fact). Use this to your advantage, especially when firing diagonally around corners - you can usually position yourself so that you can hit a target without being shot.

* Always take cover after releasing a volley of shots at an enemy so that they cannot retaliate just before they are destroyed. Keep on the move so you are a difficult target to hit, but be careful not to run into another firing line when avoiding bullets!

* Keep an eye on the timer. Those 60 seconds don't last for very long.

* Stay calm, and don't panic!

Known Issues

1. Robotz DX uses Chevy Ray's system for scaling up the 320x240 resolution graphics, and I know that surfaces are not compatible with all video cards. However, it works fine on all my systems here, so I have no way of checking what the compatibility is like on other machines.

2. Joypad support is limited to two seperate configurations; JoyA uses the POV hat for movement (the XBox 360 d-pad), and JoyB uses the x/y axis instead (compatible with Saitek pads). As mentioned above in the game control section, the control type used can be selected in game from the title screen, or via editing the .ini file after the first time you load the program. For both JoyA and JoyB config's, the button mapping has to be set from within the .ini file manually. This is something I would like to address in the future, but for now you can use most joypads if you reconfigure (if necessary) the button layout, or use the excellent joy2key utility available from the address below (google for it if this url is dead);

3. Exiting the game via the ESC key shuts down BGM.dll correctly. Using the X button on the game window does not. I've had to 'fix' this by removing the buttons from the game window... Sorry! :P

4. A bug(?) has been reported regarding music failing to play on the title screen on one user's system, but fine in game. I've been unable to replicate this error, so I cannot solve it.

5. A bug has been reported regarding the graphics being displayed incorrectly; moving sprites are instead shown as black squares and so on. This is most likely due to incompatibilities with some video cards. As I cannot replicate this error, I doubt I can fix this one either! :(

6. When playing in full screen mode DO NOT ALT-TAB out of the game, as the desktop resolution will be 640x480, and you won't be able to use your PC very well in this mode. It will also (most likely) cause a stream of 'can't draw surface' errors when you ALT-TAB back into the game. Sorry about that!


Heavy Stylus (RGCD)
Project X

GML Code
Heavy Stylus (RGCD)

GML Advice
Chevy Ray
Derek Yu

Heavy Stylus (RGCD)
Project X

505 (Paradox)
Crazy_Q (G-Spot)
Damo (Reservoir Gods)

Heavy Stylus (RGCD)

TomChi (NoExtra/RGCD)
Young Stylus

Robotz DX is an enhanced PC remake/re-imagining of the Atari ST game 'Robotz' originally by Project X. A lot of effort was made to try and contact the original coder/artist, but to no avail. If you know who Project X is, please get in touch!

The SNDH soundtrack to Robotz DX has been used with permission granted from the original artists. Do not use the MP3 versions without their authorisation first.

Original game artwork is copyright Project X and was ripped on my request from the Atari ST version of Robotz by GGN of D-Bug ( Additional pixel art and fonts by Vierbit and Heavy Stylus (RGCD).

BGM.DLL & BASS.DLL are used for mp3 playback. Sound effects were generated using the excellent SFXR.


If you'd like to contact me to provide feedback, bug reports or anything else, just drop me an email! It would be great to hear why you love/hate Robotz DX, and friendly emails will encourage me to work on other games.

Email: heavystylus [at] yahoo [dot] co [dot] uk

Robotz DX is freeware, and can be freely copied amongst your friends and family. I do not expect anything in return for developing this game, however, paypal donations to the above address will be very gratefully received and will further motivate me to complete future projects! :)

A boxed, CD copy of the game complete with source code and all assets used will be provided to anyone who makes a contribution of £5 or more, and you'll be added to the beta testing team for my next release (if you are interested).

Robotz DX on the WWW

Pouet Entry:
IndieDB Entry:
TIGdb Entry:
Yoyo Games Entry:
Review on BDL:

Top Droid Destroyers

The following players have successfully completed the game (list generated July 2010).

Calvin Nguyen (201660 Points)
Alex Weldon (188100 Points)
Erico Monteiro (181700 Points)
Vierbit (176970 Points)
Pixel Prospector (160720 Points)
Heavy Stylus (150870 Points) (Beaten at my own game!)

Version History

Version 1.02:

Improved joypad support and fixed a bug that prevented joy2key and xpadder working with the game (whoops). Improved the .ini file system so that selected joypad config is automatically saved, and hiscore is recorded even if you quit mid-game. Also, reworked the tutorial code so that you can only not skip the intro on your very first play of the game (again this is saved in the .ini file). Fixed the windowed mode so that the game window can be hidden (previously it always stayed on top). Tweaked level 25 so that spawners don't appear in difficult to reach locations. (July 2010).

Version 1.01:

Added basic (amateurish) XBox 360 Pad support, fixed some bugs with the .ini file load, added a title to the game window, corrected the drone hatch animation, fixed a score bug by freezing the player when a room is cleared and slightly reduced the size of the player hitbox (July 2010).

Version 1.00: Initial Release (June 2010).

Final Words

First of all, an apology to Project X and fans of the original game; Robotz DX is NOT a straight 1-2-1 remake of the Atari ST public domain classic. The design evolved during development to the point where only the basic dalek movement and shield-emitter-destroying game-play is faithful to the source material, so really this should be considered a tribute to Robotz, or a re-imagining.

Let's discuss the differences (in brief). In the original Robotz, the walls were deadly (not at all fun), shield emitters took about 20 shots to destroy (annoying) and the player only was allowed to fire one bullet at a time. Also, the robots had only one movement pattern, and took turns in moving one tile at a time. There were a maximum of six robots in a level, and shooting at them when shielded paused them for a second or so.

The deadly walls were removed first, but then the game became too easy, so pausing robot moves was removed and two shot kills were implemented to make it harder. Simultaneous robot movement/firing and more aggressive attitudes meant that I had to balance the game by adding more player shots. Bonuses, computers, and more enemy types were simply added to provide variety and more bombastic action.

The end result is a game that clearly resembles the original, but plays as though it has been injected with steroids. When playing, I find Robotz DX to be equally addictive and frustrating - which was exactly what I was aiming to achieve. :)

I suppose that I should also add here the confession that Robotz DX is my first post-tutorial Game Maker game and although it was written in GML instead of D&D, the structure and code is pretty shoddy. I think I've killed off most of the bugs, but I'm sure there are more in there. :P

I'll probably create a follow-up to this game in the future, with larger rooms (8-dir scrolling), interactive scenery (doors, switches, etc.), more enemy types (and large boss enemies), etc., etc. But let me improve on my GML by working on a couple of smaller projects first ;)

Read the scroller on the title screen for the extensive greets list and further info on the game, and look out for the release of 'r0x zer0' for the Atari STE (hopefully) later this year! (Yeah, we're still working on it!)

Robotz DX is dedicated to my son, Jacob James Monkman, who was born during the game's development. The game itself was created solely for shits and giggles while Tomchi was busy with coding r0x zer0.