Supervillainous turn-based hiest game (Ruby/Gosu)
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
config
lib
media
raw_media/images
tasks
test
.gitignore
.gitmodules
CHANGELOG.md
Gemfile
Gemfile.lock
LICENSE.txt
README.md
Rakefile
smash_and_grab.gemspec

README.md

Smash and Grab

Description

Smash and Grab! is a retro isometric, super-villainous, turn-based heist game.

Requirements

Windows

If running smash_and_grab.exe, there are no other requirements.

OS X

If running OS X, use the executable (SmashAndGrab.app), which has no dependencies.

Source for Linux (or Windows/OS X if not using the executable)

If running from source, users must install the Ruby interpreter and some rubygems. Linux users must also install some extra dependencies for Gosu.

Dependencies

  • Ruby 1.9.2 (Install via package manager or rvm). Ruby 1.9.3 recommended though, since loading is significantly faster.
  • Gosu gem 0.7.32 - Dependencies: Linux only
  • A number of other rubygems, which can be installed automatically using Bundler (see below).
  • Linux Only: xsel or xcopy command to allow access to the system clipboard:
    sudo apt-get install xsel

Using Bundler to install gems

If the Bundler gem isn't already installed, that can be installed with:

    gem install bundler --no-ri --no-rdoc

In the game's main directory (with Gemfile in it), use Bundler to automatically install the correct gem versions:

    bundle install

Running the game

May need to use ruby19 rather than ruby. Depends how you installed Ruby!

    ruby bin/smash_and_grab.rbw

How to Play

Move your supervillains around until you win!

Implemented game features

  • Play in single-player (Human vs. AI), hot-seat (Human vs. Human) or AI vs. AI modes. Bystanders are always controlled by the AI though.

  • All characters can:

    • automatically attack if they have actions left in another player's turn:
      • get reactive melee attack against an enemy entering OR leaving an adjacent tile.
      • make ranged shots against anyone moving in their LoS and within range (over-watch).
  • You can select your Baddies and/or Goodies to:

    • move around.
    • melee with enemies (Baddies => Goodies or Bystanders, Goodies => Baddies).
    • shoot enemies within range and LoS.
    • pick up objects, like bags of cash, by clicking on them.
    • drop objects, to random adjacent square, with the drop button.
    • sprint to get extra movement (sacrificing all actions for that turn). Can be cancelled at any time (if you have enough MP left).
    • see indicated:
      • all tiles they can move to
      • all enemies they can melee
      • all tiles where they'd suffer reactive fire or melee
      • all tiles they have LOS to and all enemies they could shoot (assuming they have a ranged attack)
  • AI

    • the AI is pretty dreadful, even by game standards :)
    • The AI ignores objects, like bags of money.
    • Goodies/Baddies AI can:
      • charge into melee with an enemy in range.
      • shoot an enemy within range and LoS.
      • if baddies, will prefer to attack goodies over picking on bystanders.
      • move aimlessly.
    • Bystanders AI can:
      • wander aimlessly.
  • Scroll map with keyboard arrows; zoom with mouse wheel.

  • Saving/loading (F5/F6) of state in Editor & Game.

  • Undo/Redo (Ctrl-Z/Ctrl-Shift-Z) support in both Editor and Game (can't take back attacks though, since they are non-deterministic).

Implemented editor features

  • Editor works, but some bugs with placing Vehicles where there are existing objects.

Saved data

Save games and configuration are saved into (Windows):

C:\Users\<your-username>\AppData\Roaming\Smash And Grab\

or (OS X / Linux):

/home/<your-username>/.smash_and_grab/

Credits

Many thanks to:

  • Michael Margerison and SiliconEidolon for epic brainstorming sessions.
  • kyrylo, Michael Margerison, SiliconEidolon and Tomislav Uzelac and for play-testing and feedback.

Third party tools and assets used