THIS IS NOWHERE NEAR WORTH RUNNING YET: IN THE MEANTIME SEE hexgen2014
What is it?
"Hero Extant" is an open source fantasy Role Playing Game (RPG) that uses many simulations to create a believable world.
Imagine if J. R. R. Tolkien and Karl Marx sat down together and created a computer game.
Available for Windows and Linux.
- Website: http://www.heroextant.net/
- Source code: https://github.com/golightlyb/Hero-Extant
- Downloads: http://www.heroextant.net/hex1/pub/
- Facebook: https://www.facebook.com/heroextant
- Reddit: http://www.reddit.com/r/heroextant/
- Contact: firstname.lastname@example.org
You are permitted, free of charge, to use, copy, modify or redistribute this work subject to the conditions found in the COPYING file.
Please refer to the COPYING file for full copyright information, license conditions and disclaimer of warranty.
Very incomplete. Although several prototypes exist -- see below!
Right now it's just a cross-platform OpenGL context that displays a basic tilemap that you can move with the arrow keys. You can also press "a" to play some basic music that is synthesised on-the-fly (sound only plays on Linux only at the moment).
Run with "wgen" as a command line argument to access the (in-progress) standalone world generator component.
Run with "composer" as a command line argument to access the (in-progress) music composer.
See Also the Prototype World Generator
See http://www.tophatstuff.co.uk/archive.php?p=99 for the 2010 version!
The prototype world generator has also been ported into Java by avh4 here: https://github.com/avh4/hero-extant
The prototype world generator is also used as an extra feature in TT Tile Tools http://www.deamonsouls.de/TT/
- Operating System: Windows XP / Vista / 7 or Linux
- Graphics: Graphics card and drivers must support at least OpenGL 3.0 and Shader Language 1.30.
- Audio: Optional. Any audio device that supports stereo or monophonic output with a sample rate of at least 11 KHz.
Supported GPUs: Nvidia GeForce 600/500/400/300/200/100 series, Nvidia GeForce 9000/8000 series, ATI Radeon HD 7000/6000/5000/4000/3000/2000 series, Intel HD Graphics starting with the "Sandy Bridge" architecture. Please use the latest drivers available from hardware vendors.
Linux users need to support GLX 1.4 as well. You can use the
glxinfo program to determine what level of support your system provides. In some cases you may have to use a proprietary graphics driver.
Installing Hero Extant
- Download the latest Windows package for your platform from http://www.heroextant.net/hex1/pub/
- Extract the package by right clicking, then choosing the "Extract All" option.
- 32 bit Windows: double click
- 64 bit Windows: double click
- Optional: You can run the program without installing from the
binfolder contained at the root of the package.
- Create a directory to hold the package:
mkdir hero-extant; cd hero-extant
- Download the latest Linux package by typing
- Extract the package by running the command
tar xvzf hero-extant.hex1-linux.LATEST.tgz
- 32 bit Linux: Run the program directly by typing
- 64 bit Linux: Run the program directly by typing
Optional: Install the program by either creating a symlink to the file:
sudo ln -s "`pwd`/bin/hex64" /usr/bin/hex
Or by copying or moving it, e.g. either one of
sudo cp "`pwd`/bin/hex64" /usr/bin/hex sudo mv "`pwd`/bin/hex64" /usr/bin/hex
You may want to check that nothing with the name
hex already exists -- type
which hex and pick a different name if necessary.
Optional: Once installed, use the command
hex opt add (path) to install
.opt files from the
opt folder in order to install additional feature packs.
Building Hero Extant from Source
Hero Extant is desgined to be cross-platform. At the moment the build system can create Windows and Linux targets.
The build process itself is designed to run on Linux.
In particular, a Multiarch-capable system is needed to compile both 64 and 32 bit Linux targets. For a full cross compiler, 64 bit Debian stable and oldstable are supported.
The instructions below might look daunting, but most of it is optional and everything is spelled out in detail.
Step One: Dependencies
First Download and install the
tup build system from http://gittup.org/tup/ or through your package manger:
sudo apt-get install pkg-config libfuse-dev git clone git://github.com/gittup/tup.git cd tup ./bootstrap.sh sudo mv ./tup /usr/bin/tup cd ..
If you get an error about fuse, try:
sudo gpasswd -a your_username fuse
Then logout and back in again.
Install obvious dependencies:
sudo apt-get install gcc
Install the dependencies for -lX11 and -lGL with (or similar):
sudo apt-get install libx11-dev libgl1-mesa-dev
Optional: For Multiarch targets (i386):
Setup Debian multiarch (assuming you are running 64 bit Debian stable or oldstable):
sudo dpkg --add-architecture i386 sudo apt-get install libc6-dev-i386
sudo apt-get install libx11-dev:i386 libgl1-mesa-dev:i386
Optional: For Windows targets,
sudo apt-get install gcc-mingw32 and verify the compilers exist with
Optional: to compile with ALSA sound support,
sudo apt-get install libasound2 libasound2-dev lib32asound2 lib32asound2-dev
Optional: Alternative C compiler
sudo apt-get install clang
- Extra Optional: to test using wine, build
wine64from http://wiki.winehq.org/Wine64 either installing missing dependencies one by one as reported by the make file (ignore unimportant ones), or otherwise as follows (32 bit wine is broken so don't bother):
sudo apt-get install bison ccache flex fontforge gcc \ gettext git-core libasound2-dev libaudio-dev \ libc6-dev libcups2-dev \ libdbus-1-dev libelfg0 libesd0-dev libexif-dev \ libexpat1-dev libfontconfig1-dev libfreetype6-dev \ libgcrypt11-dev libgif-dev \ libglib2.0-dev libgnutls-dev \ libgpg-error-dev libgphoto2-2-dev libgsm1-dev \ libgstreamer0.10-dev \ libgstreamer-plugins-base0.10-dev \ libhal-dev libhal-storage-dev libice-dev \ libjpeg62-dev liblcms1-dev libldap2-dev \ libmad0 libmad0-dev \ libmpg123-dev libncurses5-dev \ libogg-dev libopenal-dev libopenal1 \ libpng12-dev libpopt-dev libsm-dev \ libssl-dev libtasn1-3-dev \ libusb-dev libvorbis-dev libvorbisfile3 \ libx11-dev libxau-dev libxcomposite-dev \ libxcursor-dev \ libxdmcp-dev libxext-dev libxfixes-dev \ libxft-dev libxi-dev libxinerama-dev \ libxml2-dev libxmu-dev \ libxmu-headers libxrandr-dev libxrender-dev \ libxslt1-dev libxt-dev libxv-dev libxxf86vm-dev \ m4 make \ unixodbc unixodbc-dev \ x11proto-composite-dev x11proto-core-dev \ x11proto-fixes-dev \ x11proto-input-dev x11proto-kb-dev \ x11proto-randr-dev x11proto-video-dev \ x11proto-xext-dev \ x11proto-xf86vidmode-dev \ x11proto-xinerama-dev xtrans-dev \ zlib1g-dev prelink
git clone git://source.winehq.org/git/wine.git ./wine-git mkdir wine64 cd wine64 ../wine-git/configure --enable-win64 make sudo make install
Note that this will take AGES to finish.
Extra Optional: to deploy your changes as a package to a remote host, install the
fabric python library from http://fabfile.org/ as follows:
sudo apt-get install python-pip python-dev sudo pip install fabric
Step Two: Checkout and Prepare
Checkout the Hero Extant source code
git clone git://github.com/golightlyb/hero-extant.git cd hero-extant
Prepare the build system
tup.config to specify target platforms and build options.
In particular, look out for
You may want to change the Linux compiler from
gcc at your option. I use
gcc as the Linux compiler for debugging or profiling, and
clang for normal builds. This is partly because
clang has better error messages. But it also generates far faster code when optimisations are turned on -- particularly for the 32 bit versions, where the
clang version runs literally twice as fast as the
gcc version when generating maps.
Step Three: Compile
Based on your changes to the
tup.config file, the tup build system will compile Hero Extant for each target with the following command:
You can perform a partial update by naming an output explicitly. For example:
tup upd ./bin/hex-w64.exe
bin folder should now contain the compiled program for one or more of your chosen platforms:
hex32 - 32 bit Hero Extant for Linux hex64 - 64 bit Hero Extant for Linux hex-w32.exe - 32 bit Hero Extant for Windows hex-w64.exe - 64 bit Hero Extant for Windows
You can either run the program where it is...
Or install it...
Step Four (Optional): Install
You can install your chosen version of Hero Extant so that you can access it easily by typing
hex from anywhere.
You can do this by creating a symlink:
sudo ln -s "`pwd`/bin/hex64" /usr/bin/hex
This will automatically update if you compile a new version.
Alternatively you can
cp the file instead.
You can now type
hex cfg for help managing your preferences such as sound or window size.
Step Five (Optional): Install additional feature packs
Hero Extant can be trivially extended with optional packages containing additional graphics or data.
You can download additional packages from http://www.heroextant.net/hex1/opt/
Use the command
hex opt to manage these files.
As an example only, run these commands:
wget http://www.heroextant.net/hex1/opt/example/example.1.opt hex opt install example.1.opt
This example package contains an alternate image that will invert the foreground/background colours on the default font. Run
hex to see the difference.
To undo this, type:
hex opt remove example
Step Six (Optional): Share your changes
Step One: Dependencies).
Edit the deploy script:
Then release your changes to a remote host with the command:
This will build packages for Windows and Linux and upload them to your website for you to share.
Please note that if you have modified this software you should make that clear (e.g. in the Readme) -- see COPYING for information about this.
This software is in an early stage of development.
Please let me know how you got on with installing, compiling or running this software. Any errors? Any library dependencies that I forgot to mention?
I am eagerly accepting patches that fix portability issues e.g. to build on compilers other than
clang, as well as any reasonable adjustments to support platforms in addition to Windows and Linux.
I can be reached at email@example.com