Tribal Trouble is a realtime strategy game released by Oddlabs in 2004. In 2014 the source was released under GPL2 license.
This fork aims to:
- Bring the game back online and make it available for everyone to play as it was originally✅
- Ensure it is easy to build and contribute to development of the game 🚧
- Remaster and modernize the graphics 🚧
- Add more playable features later 🚧
If you want to play the game with minimal hassle check out Tribal Trouble or see the releases section of the github. Also come join us on discord as we're still a small community!
The game is currently unsigned and not available through another platform like steam so when you launch the game different OSes will respond differently:
- Linux
- Launch the
TribalTrouble-x86_64.AppImage
- Launch the
- Windows
- Launch the
TribalTrouble.exe - A windows defender modal will pop up. Click more info > run anyway
- Launch the
- Mac
- Apache ant
- Java SDK 24 (or Open-JDK-24)
Each instruction below assumes you are in a terminal at the root of the repository
cd tt>ant run
Building the game client Distribution files can be found in tt/builds/dist/common
- Linux
cd tt>ant build-linux
- Windows
cd tt>ant build-windows
- Mac x86
cd tt>ant build-mac-x86
- Mac arm64
cd tt>ant build-mac-arm64
Optional Steps (Recommend for server hosting)
-
Key generation - before building the client or the server keys must be generated.
- Inside a terminal >
cd tools ant run generatekeys- Enter a password when it asks for one
- Make sure the keys are generated under
./common/static/.
Why is key generation optional? The keys it generates are commited to the repository. If you intend to run a server you may want generate your own keys since they are used for encryption/decryption with the client and server
- Inside a terminal >
-
mySQL Setup
- Create the database schema from
initmysql.sql. - Create the user
matchmakerwith any password you would like (remember it for the next step) - Run all scripts in order of their number inside of the
databasefolder
- Create the database schema from
-
Server Configuration
- Copy
server/server.properties.templatetoserver/server.properties - Edit the
server.propertiesfile with your configuration:SQL_PASS* - The password for the matchmaker database userDISCORD_BOT_TOKEN- Your Discord bot tokenDISCORD_SERVER_ID- Your Discord server IDWEBSITE_DOMAIN- Your website domainNATIVE_CHIEF_EMOJIandVIKING_CHIEF_EMOJI- Emoji IDs for game factionsEMOJI_ROLE_MAPPINGS- JSON array for Discord role mappingsExample: [{"role id":"<numeric discord role id>","emoji id":"<custom emoji id or unicode (U+1F602)>"}]
REACTION_ROLE_MESSAGE_ID- Discord message ID for reaction roles
Those marked with * are required to run the game server. Those without * are optional settings. That are generally used for things like discord integration
- Copy
-
Run the servers
- There are two main servers needed. The matchmaker and the router. The matchmaker is what runs the game and most the server logic. The router sends and receives chat messages and other messages from the client
- To build and run the matchmaker:
cd server>ant run-matchmaker - To build and run the router:
cd server>ant run-router - Alternatively run the scripts from the server using:
cd server>./matchmaker & ./router
Note: The router and matchmaker can be hosted on the same or a different machine. The only time they actually need to be on the same machine is when one logs a crashing event to the database
- We are currently using google java format https://github.com/google/google-java-format
- Use the command
ant formatat the root of the repository to make sure all files are formatted before contributing
Thanks for your interest in contributing. We have a channel in discord that is active with contributors if you have any questions on setup or where to find things. Come chat, play some games!
See something you want or could improve upon? Make a PR or an issue! Don't have an idea? There's plenty of work to be done check out the active issues!
There are ways to contribute besides developing. If you have screenshots of the game from back in the day those are welcome.
For example a screenshot of the old the leaderboards.
Being an active member in the discord and playing games also will help keep the game going!

