Empi: Ruby Edition is a turn-based wargame with hotseat multiplayer, currently in alpha development state. The game is inspired by Classic Empire, originally from 1977.


License
CC-BY-SA-3.0
Install
gem install empi -v 0.25

Documentation

/-- /// /-/ -/- /-- ||| /-/ | /-- ||| | -/-

Empi

Empi (full name Empi: Ruby Edition) is a singleplayer turn based wargame. You take command of one faction and try to use various units to win over the other one.

Current imperfections

Due to its alpha development state there are few major imperfections:

  • player is playing for both factions at once
  • there are no victory conditions
  • "various units" currently means just two moveable pieces

Installation

  1. Get ruby – Some of you may already have ruby included on your computers. Others may use their favourite package management system or check the documentation for other ways.
  2. Get gosu – Run gem install gosu. Check additional requirements if you are on Linux.
  3. Get Empi – Here you can pick from two options:
    • either download this repository, navigate to its folder and run ruby empi.rb

    • or obtain empi gem with gem install empi, create small runfile somewhere, call it empitest.rb, navigate to its location and run it with ruby empitest.rb:

      require 'empi'
      Empi::GameWindow.initialize
      

Controls

Empi is run from terminal and controlled via a keyboard when its main window is focused. The main window shows infopane and a view of the battlefield. The infopane consists of turn and score counters and the status of the currently selected unit. Additional info is printed out to the original terminal window. Using QWERTY keyboard layout is advised.

                  QWE                    ↑                     N7 N8 N9
movement          A D   or   arrow keys ← →   or   numpad keys N4    N6
                  ZXC                    ↓                     N1 N2 N3


show help         h
switch freeroam   j   or   numpad key N0
get unit info     Enter   or   numpad key N5
set functions     n – none
                  s – sentry
                  b – build
end turn          . (full stop)
end game          Esc

Rules

  • Each moveable unit has given amount of moves per turn. Each move, attack or capture spends one of these points. Loading of unit into transporter spends all its remaining moves.
  • Moveable unit which moves to an unsuitable terrain gets destroyed.
  • Only armies can capture.
  • Towns lose progress of their current project when captured.
  • Capturable units (towns) don't fight themselves and use their cargo as defenders instead. Transports (ships) can't use their cargo in combat so when they are destroyed all their cargo is lost with them.

Functions and cursor

Each unit has one function which changes how the unit behaves:

  • none: ask for commands if you have unspent moves
  • sentry: do not ask for commands, wake up (set function to none) if there are not-allied units nearby at the start of next turn
  • build: produce new unit every few turns, according to selected project

Cursor jumps to next unit waiting for commands when current one uses its last move. If you want to give commands to some other unit first (e.g. move transporter closer so it can be boarded) or wake up sentrying unit, switch to freeroam mode and move cursor to given unit. You can set functions while in freeroam. Switching out of freeroam when cursor is over some unit with moves still left will select given unit, switching when over an empty tile makes the cursor jump back to the last selected unit.