Hack-n-slash roguelike inspired by NetHack
C++ Python Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Legend of Swarkland


Very short (5 levels) turn-based roguelike with a final boss and randomized items.

How Do I Run It?


Latest Windows Build


install dependencies:

git submodule update --init --recursive
sudo apt-get install libsdl2-dev libsdl2-ttf-dev upx-ucl





run with gdb from the command line:

gdb -iex "add-auto-load-safe-path ./" -ex run -ex quit ./build/native/legend-of-swarkland

Build for Windows on Linux

  1. git clone https://github.com/mxe/mxe
  2. Follow these instructions: http://mxe.cc/#requirements-debian (and see mxe#593)
  3. In the mxe directory: make gcc sdl2 sdl2_ttf
  4. In legend-of-swarkland directory: make MXE_HOME=/path/to/mxe windows

(You can build for both Windows and native Linux at the same time by appending native to the above.)

See this project for source code to the website.

Eclipse Environment Setup on Linux

Josh develops this project in Eclipse on Linux, but of course it's optional. These instructions were last updated with Eclipse Oxygen.

sudo apt-get install default-jdk

Follow the obvious instructions for downloading Eclipse Oxygen. When prompted, choose to install the IDE for C/C++.

In eclipse, File -> New -> Project... -> C/C++ -> Makefile Project with Existing Code. Browse to this directory. Click the "Linux GCC" toolchain.

Now you should be able to open main.cpp and see no error or warning annotations. You should be able to select a system include (#include <...>), and F3 to see its source. If SDL.h is still not found, try triggering a full build of the project with Project -> Clean... or using make clean in the command line, and then doing a build of the project with Project -> Build All or enabling auto build and refreshing the project with F5.

Optional Tweaks

Project -> Properties -> C/C++ Build -> Behavior Tab. Uncheck "Stop on first build error". Check "Enable parallel build". Check "Build on resource save (Auto build)". Blank out the textboxes under "Make build target" that say "all".

Run -> Debug Configurations... -> C/C++ Application -> New launch configuration. Main Tab: Project -> Browse... -> select the one. C/C++ Application: build/native/legend-of-swarkland Debugger Tab: Uncheck "Stop on startup at". GDB command file: ${workspace_loc:legend-of-swarkland}/.gdbinit

Project -> Properties -> C/C++ General -> Formatter -> Edit... Indentation Tab: Indentation policy: Spaces only. Check "Statements within a 'switch' body". Line Wrapping Tab: Maximum line width: 9999. Default indentation for wrapped lines: 1.

VIM syntax setup

To get vim syntax highlighting for the .swarkland file format:

ln -s /path/to/legend-of-swarkland/vim/syntax/swarkland.vim ~/.vim/syntax/swarkland.vim

and add this to your .vimrc:

autocmd BufNewFile,BufRead *.swarkland set filetype=swarkland



  • Added weapons
    • Weapons can be thrown for more/less range and more damage than other thrown items.
    • Holding a weapon increases your attack power.
  • New items:
    • weapons: dagger, battleaxe
    • potions of: burrowing, levitation
  • Added lava, and lava island rooms.
  • Added point-blank recoil for beam of force. Gotta go fast!
  • Removed random monster spawns over time. You only get what the level starts with now.
  • Snakes get a lunge attack.
  • Scorpions are immune to poison.

Version History


  • New monsters: tar elemental, shapeshifter.
  • Added dodging: after a move or wait action, you have a chance to avoid incoming attacks, projectiles, magic beams, etc.
  • Window is resizeable, and content scales to fill it while preserving aspect ratio.
  • Enhancements for swarkland developers: removed dependencies on rucksack and libpng. Added dependency on a git submodule.


  • Spells and MP.
  • New items:
    • spellbooks of: assume form, magic bullet, force, mapping, speed
    • wands of: blinding, force, invisibility, magic bullet, slowing
  • Renamed striking to magic missile.


  • New monster: cobra that spits blinding venom.
  • Added a rest button. (issue #22)
  • Limited perception of status effects. (i.e. You can't identify cogniscopy by throwing it at enemies, etc.)
  • AI doesn't wander off when someone gets in their way anymore.


  • Invisibility and blindness.
  • New items: potion of blinding, potion of invisibility.
  • Balance:
    • scorpions have a 1/4 chance of poison on each hit instead of 100% chance.
    • give the final boss 5 random potions, and teach him how to use them.
    • monsters always start at their minimum XP level. (issue #19)


  • Roguelike dungeon crawler.
    • Rooms and corridors with stairs down to the next level (no stairs up).
    • Experience levels.
    • The monsters that spawn depend on dungeon depth.
  • Added potions and quaffing.
  • New items: wand of speed, wand of remedy, potion of healing, potion of poison, potion of ethereal vision, potion of cogniscopy.
  • New monsters: ant, bee, beetle, scorpion, snake.
  • New status effects: fast, poisoned, ethereal-visioned, cogniscopic.
  • Species have different base move speeds, but fighting and other actions are standard speed for everyone.


  • Color text.
  • The game is now a self-contained executable (no more resources.bundle).
  • Builtin help and version number.
  • Bug fixes


  • Items: wand of confusion, wand of striking, wand of digging.
    • Pick up, drop, throw, zap wands.
    • Some species try using wands. Air elementals suck up wands and fling them around randomly.
    • Wands can explode when they are thrown.
  • Building for Windows.


  • The map has randomly placed obstacles. Vision is limited by line-of-sight.
  • You and the other individuals in the game follow all the same rules, including limited knowledge.
  • Friendly humans spawn.
  • New art.
  • Some TAS support via --script and --dump-script


  • Run around a big open space as a human hitting randomly generated monsters.
  • Different monsters have different behavior and movement speed: pink blob, ogre, dog, air elemental.
  • HP regenerates. The game counts your kills.