Tremulous Mods

The game Tremulous is based on the open source ioQuake 3 engine, a derivative of iD Software's GPL'd Quake 3 source code. Because the code is transparent and available on a public SVN, an avid modding community has developed around it. This page is devoted to my efforts on this excellent game.

General FAQ top

How do I find modded servers?
How do I install a mod?
How do I host a modded server?
How do I enable client downloads? ("unpure PK3" errors)
How do I enable HTTP downloads on my server?
I get a G_ParseSpawnVars error!
I get an error about menu.txt!
How can I get started making my own mod?

How do I find modded servers?

There are several options:

  • The best method is to download the backport client on this page and filter by gametype.
  • Download a server browser, the All-Seeing Eye for Windows or XQF for Linux.
  • You can also try searching QuakeDev's online server list, search for the mod name in the server title.

How do I install a mod?

You don't need to manually install mods. The best way is to enable automatic downloads and connect to a server hosting your mod.

You can manually install mods if you want a faster download. You must download the mod client PK3 from the author's website and create the mod subdirectory (named after the mod, e.g. "relic", "balance", "domination") in your Tremulous directory. Copy the PK3 in there. If you installed the correct version, you will not have to download when you connect to a server running that mod.

How do I enable client downloads? ("unpure PK3" errors)

Downloads can be enabled through the Options menu. Alternatively, open the console by pressing the ~ key and enter \cl_allowDownload 1. If you want faster downloads, try the backport client which includes HTTP download support.

How do I host a modded server?

While you can host using the Tremulous client, in many situations it's more convenient to use a stripped down dedicated server (TJW's tremded). If you do decide to use the client, you can simply replace references to tremded below with tremulous and follow the guide.

To install a mod, create a new folder in your Tremulous directory corresponding to the mod name. For Linux users this should be .tremulous in your home folder. Windows users should use their installation directory. Place the client PK3 (if there is one) and the vm folder in there. On Linux you should have:

/home/risujin/.tremulous/arcade/arcade.pk3
/home/risujin/.tremulous/arcade/vm/game.qvm
On Windows you have:
C:\Tremulous\arcade\arcade.pk3
C:\Tremulous\arcade\vm\game.qvm

Start the dedicated server through this command:

tremded +set dedicated 2 +set fs_game directory +exec server.cfg

Replace directory with the mod folder. Windows users will need to make a shortcut to their tremded or tremulous.exe and add all of the commands to the additional parameters box.

How do I enable HTTP downloads on my server?

You can only enable HTTP download redirection with TJW's tremded. Add the following lines to your server.cfg:

set sv_allowDownload 1
set sv_wwwDownload 1

// Choose ONE of these
set sv_wwwBaseURL "http://www.mercenariesguild.net/" // for base server
set sv_wwwBaseURL "http://pub.risujin.org/tremulous" // for Arcade server

If you are hosting a server without a client side mod, you can use the Mercenaries Guild website. They host many maps for the Tremulous community. You can find additional information on the forum. If you are running a client side mod such as Arcade, you should use my web server instead. I host some custom maps, you can check here for a list. I'll be happy to upload any additional maps you'd like hosted.

I get a G_ParseSpawnVars error!

The G_ParseSpawnVars error is the following or something similar:

********************
ERROR: G_ParseSpawnVars: found : when expecting {
********************
----- Server Shutdown (Server crashed: G_ParseSpawnVars: found : when expecting {)

It happens when you use the wrong tremded server for your mod. Typically you want TJW's tremded but some mods must be hosted using either the Tremulous client or a different version of tremded.

I get an error about menu.txt!

The menu.txt error is the following:

Sys_Error: recursive error after: ^3menu file not found: ui/menus.txt, using default

This error happens when you try to run a mod or new VMs that are not compatible with your client. For example, trying to start the SVN client with the 1.1.0 VMs. If you have two different clients and the one that is not backported cannot start up, you can create a new mod folder with the SVN VMs and start your client with +set fs_game svn_folder. If you downloaded something and can no longer start your 1.1.0 client, delete any suspicious PK3s from your base folder that are not maps. Careful not to delete the 1.1.0 data and VM PK3s.

Be sure to check both of your Tremulous directories. One is where your Tremulous client is and one is in Documents and Settings/Username/Application Data/Tremulous for Windows users and ~/.tremulous for Linux users.

How can I get started making my own mod?

The extent of the modifications you will be able to accomplish will depend greatly on your knowledge of C (not C++, C#, etc) and the amount of time you have available. A good mod takes a lot of work and you will spend most of your time learning how the game engine works and how things are done.

Your first resource is the Tremulous.net Mods forum. You can get feedback on your idea and ask for help there. Alternatively, if you might be able to catch a developer on #tremulous or #tremulous-dev on FreeNode IRC if you are willing to go looking for help at odd hours of the night.

I have started the Modder's code overview at the Mercenaries Guild Wiki. When it is finished it will provide a general overview of the Tremulous codebase and some general tips on modding.

Arcade mod top

Latest version: SVN971 version 15
Server type: TJW

Arcade mod aims to speed up Tremulous gameplay and remove many of the inconveniences that prevent Tremulous from being enjoyed on smaller servers.

List of features and included patches
How do I use \donate and \share?
How do I use tournament style warmup?
How can I get my layouts to load automatically?
How enable Relics or Domination for one map only?
How do I let my admins physically abuse players?
Can I get Relics or Domination as a separate patch?


List of features and included patches

The major features of the mod include:

Domination with new instant domination mode and countdown timer prevents camping.
Heaven of Relics adds fun powerups to Tremulous, use the new Relic Fount buildable to control where relics spawn.
Team overlay shows your teammates' health, equipment/class, relic, credits, and location unobtrusively in the upper left-hand corner or center-left of the screen.
Tournament style warmup can be used during matches to automatically restart the map when everyone is ready, preserving teams.
Chat bubbles let you know when a player is typing a message or is in the menu, toggle with g_chatBalloons 1|0.
New radar shows buildings and players with two different kinds of blips that fade out with distance.
Turn on 3rd person mode through the new Mod Options tab.
The Feeds column on the scoreboard helps you keep track of feeders on your team. Looking for a challenge? Raise the difficulty level in the options (handicap icons).

Other features include:

  • Both Basilisks have a healing aura
  • Tyrant health decreased to 350
  • Automatically donate extra credits to teammates, toggle with g_creditOverflow 1|0
  • Retribution TK punishment makes TKers pay for their damage
  • Let your admins use the !layoutsave and !devmap commands to create layouts
  • Use the \donate command to give your team credits
  • Bind the \itemgun command to quickly switch to your gun
  • Admins can physically abuse players with the !slap command (with sound effect!)
  • Aliens can devolve near the Overmind, toggle with g_allowDevolve 1|0
  • Barricades cost less, have more health, and heal faster
  • Grangers can slash like Advanced Grangers
  • Resize your crosshair via the new Mod options menu

Many community patches are also included:

Features and bug-fixes backported from SVN:

  • Unlagged improves your aim, toggle with g_unlagged 1|0
  • TJW's health bars
  • Mark deconstruction for easier moves

How do I use \donate and \share?

Open the console via the ~ key and type \donate amount to evenly distribute funds across your team. To give funds to a specific player, type \share name amount. Instead of a player's name you may also use the client number. You can also type \bind key share to bind key to give 1 evo or 100 credits to the player you are looking at. You cannot give credits to the other team. Share and donate are both controlled via g_allowShare 1|0.

How do I use tournament style warmup?

Server operators can enable one of two warmup modes:

  • g_doWarmup 1 enables timed warmup. When there are players on both teams, the timer will automatically start.
  • g_doWarmup 2 enables ready mode. All players must ready up by typing \ready into the console or binding \ready to a key and pressing it. Players may also unready at any time via the \unready command.
Warmup countdown duration can be set via g_warmup seconds.

How can I get my layouts to load automatically?

You need to create a maprotation.cfg and set it to load a specific layout for your maps. Set your rotation in your server.cfg via g_initialMapRotation name. Next, create the file and add a block for every map you want to run like this:

my_rotation {
    atcs {
        layouts "my_layout1 my_layout2"
    }
    tremor {
        layouts "my_layout"
    }
    ...
}

The server zip and tarball both include sample setups for automatically loading a specific layout (named 'arcade') and executing a per-map config file.

How do I let my admins physically abuse players?

The !slap name damage admin command will damage a player and shove them with maximum force. You can give this command to an admin level with the x flag. Assert your authoritay!

How enable Relics or Domination for one map only?

You can use map configs to setup per-map settings. In your server.cfg set the map configs folder via:

set g_mapConfigs "mapconfigs"
Create the tremulous/arcade/mapconfigs folder. If you create a default.cfg inside, it will be executed before every map. To execute a config for a specific map, place mapname.cfg inside. Heaven of Relics can be disabled via g_relics 0 and domination via g_domination 0.

Can I get Relics or Domination as a separate patch?

It is inconvenient for me to develop 3 mod distributions separately. This does not mean that one feature cannot be separated out however. If you would like to get the latest version of the Heaven of Relics or Domination patch, I can create one for you by request.

Heaven of Relics top
Screenshots



Download
Arcade mod

I ported, with permission, Xaklse's Heaven of Relics mod from Unreal Tournament 2004. When you kill an enemy player or building, a random relic will appear. Grab the relic to gain a special power.

How do I pick up a relic?
What do the relics do?
There are too many relics!
What happened to the Sticky Feet relic?
How do I limit specific relics?
How do I use Relic Founts in my layouts?


How do I pick up a relic?

Walk over it. If you find yourself unable to pickup any relics, chances are you are carrying the Immunity Relic. To get rid of it you must either get shot by a player holding the Breaker relic or die.

What do the relics do?

Double Relic doubles the damage you deal and the damage you receive. Heal Relic regenerates your health over time but lowers your maximum health to 75%.
Immune Relic prevents you from picking up relics and getting plagued. The only way to get rid of it is to die or have your relic ejected. Ammo Relic doubles your ammunition capacity but randomly throws off your aim. Works for Advanced Dragoons too!
Vampire Relic gives you health for damaging players but prevents you from healing normally. Builder Relic halves your build timer delay but makes you move very slowly.
Radiation Relic slowly damages everything around you. Half Relic halves the damage you receive and the damage you deal.
Resurrection Relic will resurrect you with low health when you die once. Invisibility Relic turns you invisible. It ejects if you attack or are damaged by an enemy player.
Bounty Relic doubles your credit/evo kill rewards and the reward for killing you. Breaker Relic ejects your victim's relic.
Gravity Relic significantly reduces gravity for you. Ice Relic lowers your friction and acceleration as if you were walking on ice.
Reverse Relic causes your attacks to heal rather than damage. You can heal your teammates up to 150% of regular health. Goomba Relic lets you deal damage by jumping on players and buildables, Mario-style. Falling farther deals more damage.
Unknown Relic will turn into a random relic once picked up. Silent Relic makes you completely silent but you cannot hear anyone else either.
Plague Relic will drain your health until you die. You can spread the plague by touching other players. Mini Relic will shrink you to half your size.
Translocate Relic will swap your location with any player you damage. It has a 3 second cooldown. Push Relic will scale up your weapon's knockback and send victims flying.

There are too many relics!

Control the number of relics on the map by setting g_relics. Setting this variable higher than 32 has no effect. You can disable relics completely by setting this cvar to 0.

What happened to the Sticky Feet relic?

Although clients see a rotated model, the wallwalking code in Tremulous does not rotate the bounding box of the entity. The big consequence of this is that only cube-shaped bounding boxes may wall-walk, and entities with muzzle-points other than their origin will not fire correctly while wall-walking. Humans and even the higher level Alien classes do not have cube bounding boxes. Humans further violate the rules by having a torso-level muzzle point. These problems are not easily fixable. Although it was a lot of fun, I removed the Sticky Feet relic because it suffered from these bugs.

How do I limit specific relics?

Each relic has a corresponding variable to control the maximum number that are allowed to spawn:

set g_relicDouble      32
set g_relicHeal        32
set g_relicImmune      32
set g_relicAmmo        32
set g_relicVampire     32
set g_relicBuilder     32
set g_relicHalf        32
set g_relicResurrect   32
set g_relicInvisible   32
set g_relicRadiation   32
set g_relicGravity     32
set g_relicIce         32
set g_relicBreaker     32
set g_relicBounty      32
set g_relicReverse     32
set g_relicGoomba      32
set g_relicUnknown     32
set g_relicSilent      32
set g_relicPlague      32
set g_relicMini        32
set g_relicTranslocate 32
set g_relicPush        32

How do I use Relic Founts in my layouts?

Relic Founts are locations on the map where relics prefer to spawn. If there is an available Relic Fount, a new relic will spawn there rather than in a random location on the map. Relic Founts look like the relic symbols and can be placed on the floor, walls, or ceiling.

Relic Founts can be built just like Domination Points when cheats are enabled. To have a Relic Fount spawn a specific kind of relic, obtain the desired relic and simply touch the Fount to set it. You can quickly give yourself any relic, including the Unknown relic which cannot normally be picked up, using the \give relic # command. When your layout is loaded in game, the Relic Founts will no longer be changeable.

If you have specified more relics than Founts and do not want relics to spawn in random locations on the map, you can restrict them to spawn only from Founts using the g_relicFountsOnly 1|0 cvar.

Domination top
Screenshots



Download
Arcade mod

Domination mod was designed to eliminate the "Sudden Death" hack and provide an alternative to foil camping teams. The mod introduces capturable domination points that empower the team that has control of the map.

How does Domination work?
How many Domination Points are there?
Why would Domination prevent camping?
Why can't I move to a domination point?
How do I place a domination point?
Do the maps come with domination points?
Why won't the domination points load automatically?
How do I include domination points in my map?
Credits and thanks

How does Domination work?

There are two Domination modes:

For Instant Domination set g_domination 2. This mode is closest to the original Unreal Tournament Domination game mechanics and works best with the timer:

  • Capture a Domination point by touching it
  • Domination points with buildables around them cannot be captured

For Slow Domination set g_domination 1. This mode is designed as a stand alone replacement for Sudden Death and does not require the timer:

  • Stand near a Domination point to capture it, the better your class or equipment and the more players are at the point, the faster it will capture
  • Capturing a Domination point will give you a credit/evo bonus
  • Dominating the other team will allow you to build and receive free kill bonuses faster

In either Domination mode:

  • The amount of build points your team has is determined by the number of domination points you control
  • Domination points provide creep for aliens and function as repeaters for humans when captured allowing for easy construction of forward bases. A Reactor or Overmind cannot be placed within range of a domination point!
  • A countdown timer may be enabled by setting g_dominationTime seconds. Holding all points will count down your team's timer. If your team's timer reaches 0:00, your team wins!

How many Domination Points are there?

I created four models (A, B, C, and D). You are not limited to placing only four domination points per map however. I recommend only placing two halfway between the Alien and Human bases or at other strategic locations. Do not place Domination points in good base locations!

Why would Domination prevent camping?

The more domination points you control, the more BPS your team gets and the less BPS the other team gets:

BPS = normal_bps * (0.5 + controlled_dps / total_dps)

Teams with no domination points get 50% of normal BPS. Controlling all of the domination points will give you 150% of your normal BP. If one team controls all of the domination points, the other team is effectively in sudden death. In slow Domination, faster building and free kills further empower the team with the most domination points. If the timer is enabled, the dominating team may win faster by simply holding all of the points.

Why can't I move to a domination point?

After playing a number of games, moving the base to a domination point proved to be a very successful tactic. The problem with this is that it reduces Domination to regular Tremulous. If the Humans are sitting on one of two domination points, they are camping but do not suffer penalties.

How do I place a domination point?

Domination points are placed using TJW's layout editing commands. These can only be used in cheats mode. Start a map with cheats enabled using \devmap mapname. Spawn as a builder and construct the domination points where you want them. Save the layout with \layoutsave dom.

If you would like to give your admins the ability to edit the map layouts you can do so via the l (lowercase L) flag. This flag defaults to level 5 and allows the use of the !devmap and !layoutsave commands which correspond to their server command equivalents.

Do the maps come with domination points?

You must either place the layouts yourself or download the stock layouts I provide. The stock layouts includes domination points for the following maps (number of domination points in parenthesis):

  • ancient_remains_1-0 (3)
  • atcs (2)
  • atcs3 (2)
  • atcszalpha (2)
  • atcszalpha-b2 (2)
  • arachnid2 (2)
  • flap (1)
  • gloom2beta2 (3)
  • nexus6 (3)
  • niveus (3)
  • karith (4)
  • temple (3)
  • tremor (3)
  • transit (3)
  • sokolov (2)
  • uncreation (3)
  • utcsb2 (1)

The stock layouts tarball also includes a sample configuration file and a standard map rotation. All of these maps are available to download from the Mercenaries Guild.

Why won't the domination points load automatically?

You need to use either maprotation.cfg or mapconfigs and g_layouts to force the right layout to load automatically. See the stock layouts for an example.

You can force a domination layout to load for the current map using !restart dom (assuming you named your domination layout dom).

How do I include domination points in my map?

You tell me. If you are an experienced mapper interested in creating a map designed for Domination, contact me and we will work it out.

Credits and thanks

I wrote the mod and created models myself. The idea evolved through the input of many individuals from the Tremulous community, and not to mention the obvious influence of Unreal Tournament. The idea was first brought to me by tv and Eye. Later kevlarman, who was also kind enough to setup the MG server for testing, tweaked it to perfection. Numerous people have since offered their feedback, thanks everyone!

Client backport top

Latest version: SVN931 version 4

Thanks to vcxzet's backporting efforts, players can have access to the bugfixes in the SVN client and server. I've added a few tweaks of my own:

  • Compatible with both SVN sv_dlURL and sv_wwwBaseURL HTTP download redirection
  • Includes TJW's client changes, specifically guid functionality which will allow you to become admin on servers
  • Client will auto-enable downloads on start-up to make it more convenient for inexperienced players to download mods
  • Added "Game" field to the server browser allows you to see modded servers. The patch is on bugzilla
  • Included up-to-date UI files fix sort-by-ping bug
  • Client will now list 'base' among the mods list so you can return to unmodded Tremulous from the Mods menu

Big thanks to benmachine for the Mac port!

My guid has changed!

After upgrading you may notice that your guid has changed and that you are no longer an admin in servers where you used to be admin. Don't panic! Your guid is not lost. The location of the qkey file has changed. Copy the old qkey file from base/qkey to overwrite the new one Tremulous genereated for you in the Tremulous root folder.

Linux users will find their Tremulous directory in ~/.tremulous/. Windows players need to look in Documents and Settings/username/Application Data/Tremulous. Replace username with your Windows username.