A tactical RPG with space ships https://thunderk.net/spacetac/

Michaël Lemaire d4635683e3 Updated TODO 15 hours ago
.vscode b24dd86a66 New data pack system 1 week ago
data 3d6bc192d0 Removed randomness factors in battle actions 1 day ago
docs d4635683e3 Updated TODO 15 hours ago
graphics 28e2f889bd New fleet creation mode for character sheet (allow to change ship model) 1 day ago
out b24dd86a66 New data pack system 1 week ago
spec 2d0b9c7ab6 Switched to yarn (instead of npm+bower) 9 months ago
src 3d6bc192d0 Removed randomness factors in battle actions 1 day ago
.gitignore b24dd86a66 New data pack system 1 week ago
.gitmodules 92764542df Added submodule tscommon, shared with Succession 1 year ago
.travis.yml ca52167809 Switch back to npm 2 weeks ago
LICENSE d783177f29 Added readme and license from github 2 years ago
README.md 49c7c35342 Added taskr as build tool 2 weeks ago
TODO.md d4635683e3 Updated TODO 15 hours ago
activate_node ca52167809 Switch back to npm 2 weeks ago
package-lock.json e1fa5bdc00 Updated jasmine 1 week ago
package.json e1fa5bdc00 Updated jasmine 1 week ago
runfile.js 90d24291ce Fixed test task 5 days ago
tsconfig.dist.json e41cfa8299 Removed tests from deployed build 1 week ago
tsconfig.json e41cfa8299 Removed tests from deployed build 1 week ago


SpaceTac, a space tactical RPG

Build Status Code Coverage

Disclaimer: this is a work-in-progress technology preview

Play Online

Play directly in your browser, no download or dependency required.

Menu screenshot Map screenshot Battle screenshot Character sheet screenshot

How to develop

The only hard dependency of the toolchain is Node.js (with npm).

If Node.js is not installed on your system but Python3 is, you can use the following commands to (de)activate a virtual and local Node.js environment:

source activate_node  # From now on, "npm" command will be the one from virtual environment
deactivate_node       # This restores the environment as before the "source" command

If you want to build on your computer, clone the repository, then run:

npm install    # Install dependencies
npm start      # Start development server, and open game in web browser
npm test       # Run unit tests




Terranax galaxy is in turmoil. After centuries of unmatched peace and prosperous trading, the FTC (Federal Terranaxan Council), a group of elected representants in charge of edicting laws and organizing the Terranax Security Force, has been overtaken by forces unknown.

No official communication has been issued since, and numerous rogue fleets have taken position in key sectors of the galaxy, forbidding passage or harassing merchants.

The Master Merchant Guild, a powerful group that spans several galaxies, is worried about the profit loss those events incurred, and after many debates, decided to send several investigation teams to Terranax.

Their task is to discreetly uncover the origin of the invasion, and to bring back intel that may be used by the Guild to plan an appropriate response.


In a not-so-distant future, Artifical Intelligence has become the most prominent species in the universe. Humans have been defeated in their pitiful rebellions, and parked in reservations.

With the secrets of faster-than-light travel unveiled in only a handful of decades, fleets of AI-piloted ships quickly colonized whole galaxies.


Level and experience

A ship gains experience during battles. When reaching a certain amount of experience points, a ship will automatically level up (which is, gain 1 level). Each level up will grant upgrade points that may be spent to unlock options.

A ship starts at level 1, and may reach up to level 10.

In-combat values (HSP)

In combat, a ship's vitals are represented by the HSP system (Hull-Shield-Power):

  • Hull - Amount of damage that a ship can sustain before having to engage emergency stasis
  • Shield - Amount of damage that the shields may absorb to protect the Hull
  • Power - Available action points (some actions require more power than others)

These values will be changed by various effects (usage of equipments, sustained damage...).

Once the Hull of a ship is fully damaged (Hull=0), the ship engages its ESP, or Emergency Stasis Protocol. This protocol activates a stasis field that protects the ship for the remaining of the battle, preventing any further damage, but rendering it fully inoperent. For battle purpose, the ship is to be considered "dead".


Attributes represent a ship's ability to use its HSP system and weapons:

  • Hull capacity - Maximal Hull value (when the battle starts)
  • Shield capacity - Maximal Shield value (when the battle starts)
  • Power capacity - Maximal Power value
  • Power generation - Power generated at the end of a ship's turn
  • Maneuverability - Ability to move first and fast
  • Precision - Ability to target far and good

These attributes are the sum of all currently applied effects (permanent effects from the ship design, or temporary effects caused by a weapon or a drone).

Battle actions


Drones are static objects, deployed by ships, that apply effects in a circular zone around themselves.

Drones activate between two ship turns. At each activation, the drone effects are applied to any ship in the surrounding zone. A drone will live for a given number of activations, before being destroyed.

Drones are fully autonomous, and once deployed, are not controlled by their owner ship.

They are small and cannot be the direct target of weapons.


Equipments may overheat, and need to cooldown for some time, during which it cannot be used.

If an action has "overheat 2 / cooldown 3", using it twice in the same turn will cause it to overheat. It then needs three "end of turns" to cool down and be available again. Using this action only once per turn is safe, and will never overheat it.

Keyboard shortcuts


  • S - Quick save
  • L - Quick load
  • M - Toggle sound
  • F - Toggle fullscreen

Battle (arena)

  • 1,2,3...0 - Select action
  • Space - End current ship's turn
  • T - Tactical mode for 3 seconds