Sunday, May 23, 2010

Shotgun Debugger

In Shotgun Debugger, you play a hacker on the run from black-shades-agents and fight against armies of droids. Projectile and energy weapons serve your cause, the most original of which gets reflected by walls and can be used to destroy enemies out of sight.

Game mechanics include damage-inducing surfaces, exploding barrels and droids and simple press-the-button or find-the-key tasks. The story progresses in text boxes which appear between levels.

Varying level styles...

Relatively simple puzzles...

Various weapons, including grenades...

... a kind of 'blue rocket launcher'...

... and a reflecting laser rifle

Shotgun Debugger has two problems: default control and perspective, thus here are two hints for playing the game:
  1. Press 'v'. It will fix the perspective.
  2. Use WASD and mouse (or set different keys in ~/.sdb/preferences.txt)
Also, here's one hint, in case you get stuck in the first level: "behind the police car". I didn't know about 'v' and the police car hint the first time I tried sdb about a year ago and gave up on the game after starting level one for the 20th time. :)

The game is rather hard and there are no save function, except between levels. Enemies mostly hit hard and I found careful movement and taking cover to be the safest way to finish it.

SDB gameplay [small .ogg | big .ogg]

Code and assets are both GPLed and levels are editable in the SVG vector format. Inkscape was used to create the 2D (but rendered in 3D) levels! The level sources, are available on the homepage. I also want to recommend the 'trivia' section there.

Part of one of sdb's levels, viewed in Inkscape

I think that with such level editing capabilities and mechanics (exploding and movable barrels) some interesting levels could be easily produced. I only need to figure out how to load levels independent of story mode.

Shotgun Debugger is probably the best 'pure action' (no base building or 'advanced' item collecting or xp-gathering involved) top-down shooter I have played so far and it's definitely worth giving a shot.

PS: If you're desperate for a windows version, over here!


Padster said...

i've tried to get that game working, but it never works. is it only available in a source package? how did u get it going?

qubodup said...

@Padster tell us what you do step by step :)

Isaac Smith said...

Cool game! Its much different from most games of this type, and is pretty hard. I like the look and feel a lot.

Padster said...

okay, here:
i tried to follow the instructions.

cd'ed to the directory

i ran ./
terminal output at

and when i ran ./sdb:
bash: ./sdb: No such file or directory

now, what's error 1 mean?

Anonymous said...

To run a custom level you just have to run :
$./usr/share/games/sdb/sdb your_level.vl
(replace /usr/.../sdb/ with the correct path. You should be in the directory your level is into. The '.vl' extension is not needed)

Or you could just copy your level file to the sdb directory and run
$./sdb your_level

Then start a new game. Don't forget to make a backup of your save file (player.dat in ~/.sdb/)

Padster said...

qubodup? u there?
also, when i was trying to get penumbra working i couldn't do it. i noticed u tried, too. did u ever get it working?

qubodup said...

@Padster, well I get the following when trying to compile 1.1

$ make -j1
g++ -DPKGDATADIR="\"/usr/share/shotgun-debugger/\"" -c player.cpp -o player.o `sdl-config --cflags` -I/opt/local/include -O2 -Wall -ansi
In file included from sdb.h:588:0,
from player.cpp:29:
levelobjects.h: In member function ‘bool PathNode::isVisible(int)’:
levelobjects.h:94:64: warning: comparison between signed and unsigned integer expressions
In file included from sdb.h:588:0,
from player.cpp:29:
levelobjects.h: In member function ‘void Surface::setVert(int, float, float)’:
levelobjects.h:178:79: warning: comparison between signed and unsigned integer expressions
In file included from sdb.h:591:0,
from player.cpp:29:
objects.h: In member function ‘void Object::giveKey(int)’:
objects.h:556:46: warning: suggest parentheses around ‘-’ inside ‘<<’
In file included from sdb.h:597:0,
from player.cpp:29:
interface.h: In member function ‘bool TerminalWindow::doneDrawing()’:
interface.h:62:76: warning: comparison between signed and unsigned integer expressions
player.cpp: In member function ‘void Player::loadPlayerData()’:
player.cpp:78:10: error: ‘LOCALSTATEDIR’ was not declared in this scope
player.cpp:89:19: warning: unused variable ‘check’
player.cpp: In member function ‘void Player::writePlayerData()’:
player.cpp:149:10: error: ‘LOCALSTATEDIR’ was not declared in this scope
make: *** [player.o] Error 1

I am playing the version provided by Perhaps looking at might help

qubodup said...

@Padster: again, you need to provide your errors, but I think it would be better to look into their forums.

I also fail at playing Penumbra, as it uses a proprietary 32bit-only library

Padster said...

thanks. i still don't have it working, but i give up.
maybe i'll wait for someone to make a good working version of penumbra, too. a package or something.

Lmg49 said...

I personnally got the same error as someone posted: game.cpp:1053: error: ‘INT_MAX’ was not declared in this scope
and I tried to add the limits.h header to the game (which define INT_MAX and other stuff) to have this constant defined, and ... it worked :)

You just need to add the following line:
#include <limits.h>

In the file : sdbinstallationdirectory/src/sdb.h

Anonymous said...

Am I blind or is there not a windows version? I'm not the coding type so I can't do anything with the source code.

qubodup said...

@Fake appears so. You can get an older version win binary at though :)

Provide feedback:

Due to SPAM issues we have disabled public commenting here.

But feel free to join our forums or easily chat via IRC with us.