Post-jam version of our Ludum Dare 44 game jam entry.
- Screenshots
- Description
- Post-Jam Version
- Jam Version
- Running the Game
- Controls
- Campaign Types
- Items
- Enemy Types
- Changing the window resolution
- Development
- Licensing
The theme for Ludum Dare 44 was...
Your life is currency
We went for a simple, generic approach:
You pay with your health to buy items.
The game is a 2D action-platformer.
Your goal is simply to get to the end of each level.
Throughout the levels you will find items which you can buy using your health as currency.
See the items section for a list of all available items.
You regain health by defeating enemies.
Each level acts as a checkpoint; when you die, you restart at the beginning of the level.
The game will also automatically save your progress to a savefile, each time you beat a level or die.
When you beat the game, you may choose to start from the beginning again, keeping all your items ("NewGame+"-style).
Timers for the current level and for the whole game will also appear
once you start your second play-through on the same savefile.
Most of what's written in this README is directed at the post-jam version.
After the jam ended at the end of April, we continued working on the game
with the goal to release a finished product (like always).
This time, we are proud to say, that we actually finished this game!
Post-jam version downloads are available on itch.io.
To see the jam version, visit out our Ludum Dare page, or
check out the LD44-release
tag.
As always with our jam games, we never properly finish.
This jam's game was especially unfinished.
If you intend to check out our game, we recommend trying our post-jam version.
Jam-version binaries are available via Google Drive:
Platform | Download |
---|---|
Windows | Google Drive |
Linux | Google Drive |
After downloading the appropriate version for your platform,
simply unzip the zip-archive and navigate into the unzipped directory.
Double-clicking on Stabman.exe
should start the game!
To run it from the terminal, simply execute the ./Stabman
binary.
To run it from within your GUI file manager, simply double-click on Start-Stabman
.
The exact controls are specified in the file resources/config/bindings.ron
.
You can change bindings in this file however you want; the syntax should be self-explanatory enough.
But careful: if you make a syntax error, the game will crash.
See the generated file logs/panic.log
for error messages, if it crashes.
When playing the game casually for the first time,
we recommend using a controller (if available), or otherwise
using the keyboard keys marked in bold text,
as those are probably the most intuitive.
These are broad suggestions, feel free to use whatever keys you are comfortable with :)
(If you're trying to beat the bonus levels, you may want to look at the other keyboard control options; controller is not recommended for bonus levels)
Note:
For the controller buttons we are using the Xbox naming scheme.
So the A
button would be the X
button on a DualShock controller, etc.
Action | Keyboard | Controller | Notes |
---|---|---|---|
Move LEFT | A |
DPadLeft , JoyStickLeft |
|
Move RIGHT | D |
DPadRight , JoyStickRight |
|
Jump | Space , K , Up |
A |
Hold down the jump button for a slower fall (lower gravity). |
Attack LEFT | Left , H |
X |
|
Attack RIGHT | Right , L |
B |
|
Buy item | E |
Y |
|
Dash | Shift , J , Down |
ShoulderButtons (left or right) |
Need to hold down movement keys + press dash key; diagonal dashes work; can only dash in-air |
Toggle pause | P |
Start |
|
Start game from main menu | Enter , Space |
A |
Starts the normal campaign, not bonus. |
Continue game from pause menu | Enter , Space |
A |
|
Quit game from main menu | Escape , Q , Backspace |
B |
|
Quit to main menu from pause menu | Escape , Q , Backspace |
B |
There are three campaigns you can play:
The standard, recommended game.
Includes 10 levels total:
- 3 in the overworld theme, and
- 7 in the graveyard theme.
There are two bonus campaigns: Bonus A and Bonus B.
These are collections of super hard levels, with the main focus on hardcore platforming.
Each of the bonus campaigns includes 3 levels.
These campaign types are primarily just meant for us to play.
But if you're enjoying the game, and are feeling confident enough,
feel free to give these a try! >:D
Item descriptions from left-to-right:
- Extra Jump Stackable
Each pickup grants an extra jump in mid-air.
When in mid-air, the player can jump additional times.
Extra jumps are recharged when standing or sliding on a solid wall. - Wall Jump Non-stackable
Grants the ability to jump off walls.
When sliding on a wall, press the jump button to jump off of the wall. - (unused)
- Bullet Deflect Stackable
Grants the ability to deflect enemy bullets by attacking them.
Deflected bullets deal one unit of damage.
Each pickup increases the deflected bullet's damage by one unit. - Damage Up Stackable
Increases attacking damage by one unit. - Speed Up Stackable
Increases the player's speed. - Jump Height Up Stackable
Increases the maximum height of the player's jump. - Bullet Shoot Stackable
Grants the ability to shoot bullets when attacking.
Bullets deal one unit of damage.
Each pickup increases the bullet's damage by one unit.
Don't worry about the weird name, that's what my dumb brain came-up with during the jam, and we stuck with it :) - Dash Stackable
Each pickup grants the player to use a dash in mid-air.
Dashes can only be done in mid-air.
Dashes are recharged when standing or sliding on a solid wall.
See the controls section for the key to trigger the dash. - Knockback Up Stackable
When attacking an enemy, knockback punches the enemy backwards.
Each pickup adds additional knockback strength.
A normal, tank-like enemy.
Has the most amount of health out of all enemy types;
walks slowly and hits hard.
A small enemy, which will start rolling at the player,
when they move into its trigger range.
Once rolling, this enemy will only stop moving upon hitting a wall.
This enemy is not affected by gravity.
It simply tries to follows the player when they are within trigger distance.
This enemy cannot be damaged or killed.
It shoots bullets from its mouth in regular intervals.
Its bullets can be deflected if the player has picked up the Bullet Deflect item.
Included with the game's binary, is a file called resolution.txt
.
You can specify a custom window resolution in this file.
Simply write your resolution in the format ...
WIDTH x HEIGHT
... where WIDTH
and HEIGHT
are positive integer numbers.
Any lines starting with #
are seen as comments and are ignored.
See the resolution.txt
file itself for more information and some preset resolutions.
If you wish to compile the game directly from its source,
then you will need to have rust
installed (preferably rustup
).
This game is compiled with Rust version 1.34.2 (other versions may cause issues).
After cloning the repository and navigating into its directory,
compile like so:
cargo +stable-1.34.2 run --release
(omit the +stable-1.34.2
part if you do not have rustup
installed.)
This will download all dependencies, compile everything, and run the game when it's done.
This may take a while... You can also omit the --release
flag for a slightly increased speed at compile-time,
at the cost of a slightly decreased speed at runtime (FPS may drop below 60).
If you want to run the same setup I ran during development,
you may compile the game using the provided bin/run
script.
You will need to have rustup
and the nightly-2019-03-01
toolchain installed for this.
The benefits for doing this are primarily for development purposes.
Compiling the game from source, gives you access to some additional features:
controller
Includes amethyst'ssdl_controller
feature, to enable controller support.
Note: For this feature to work on Windows machines, theSDL2.dll
file
must be included with the binary. This repository redistributes this DLL.
It seems to work on Linux without dependencies (?) (tested on a blank VM of Puppy-Linux).
Enabled for pre-compiled binaries: YESdebug
Generate a backtrace and write it tologs/panic.log
, when a panic occurs.
Enabled for pre-compiled binaries: YES (just in case)encrypt_savefile
Encrypts the savefile usingbase64
.
I originally planned to encrypt the savefiles for the final binaries,
but in the end decided against this, so players would have the option
to mess around with their savefiles.
(not that it would've been difficult to decrypt the base64-encoded variants)
So I kept this feature behind a feature-gate. (I'm really liking meta-rust :))
Enabled for pre-compiled binaries: NOnightly
Can only be used with a nightly rust toolchain.
Improves some of amethyt's error messages.
Enabled for pre-compiled binaries: NO
- Rust, programming language
- Amethyst, engine
- Deathframe, framework
- Vim, code editor
- GitHub, git repository hosting
- Gimp, tile/background/menu graphics
- Aseprite, sprite graphics
- Bosca Ceoil, music
- FL Studio, music
- Tiled, level design
- Google Drive, file sharing
- Trello, task management
This project, including all of its code and assets (such as images, audio, level files),
excluding fonts, are distributed under the terms of the MIT License.
The fonts (found under resources/fonts
) remain unchanged,
and are licensed individually by their authors.
- Located at
resources/fonts/undefined-medium.ttf
- OFL License
- Website
- GitHub Repository
- Located at
resources/fonts/rujis-handwriting.ttf
- OFL License
- Author's Website
This project uses and redistributes an unchanged copy of SDL2,
for controller support with amethyst's sdl_controller
feature.
SDL2.dll
is distributed under the zlib license.