by Mathieu Olivier, Dave Turner and Luke Ashdown
v1.1cvs (July 9 2006)
Abstract
This manual covers installation and usage of the Transfusion game.
Table of Contents
2.1. Using Transfusion as a Quake mod 2
2.2. Transfusion and QuakeWorld 2
3.2. Impulses and extra commands 3
The Transfusion Project aims to recreate an old DOS game, from Monolith Productions, called Blood, using the Quake engine.
You may think it's a simple mod, but actually, you don't need any Quake data to run it. In fact, Transfusion is a complete total conversion of the multiplayer aspect of Blood. The original Blood is a remarkable game, and the Transfusion team hopes you'll have as much fun playing it as we had playing Blood.
Obviously, you'll be more at ease if you already know Blood and/or Quake. Even if it's not the case, don't worry: you should be able to find in this manual all you need to know about Transfusion.
If you are reading this manual, chances are that you have already installed Transfusion on your machine. If it's not the case though, don't worry, it's easy. If you are lucky enough to use a Transfusion installer program, just follow the steps as with any other installer program. If you have an archive file, such as a ZIP file for instance, extract its contents in a new, clean directory. That's it. You can launch the game now.
Unfortunately, there are a few cases where people will have to use another Quake engine instead of the one we provide, because of a low-end machine, or a poor network connection, or because of drivers with no OpenGL support or even a video card with no 3D acceleration.
If you are one of these people, you will be happy to know that old versions of Transfusion, up to version 1.01 included, can be run using any Quake compatible engine, as a simple mod to the game. Theorically, all you have to do is to copy the "transfusion" subdirectory (the one which contains the PAK files) into your Quake directory. Or copy a Quake binary in the Transfusion installation directory, for that matter.
Be aware that most Quake 1 compatible engines will requier the Quake's original data, despite the fact that Transfusion doesn't need them. So you may also want to have the "id1" directory included next to your "transfusion" data directory.
To launch Quake using Transfusion as a mod, type the following command line: "winquake -game transfusion", if your Quake engine is named "winquake" of course. You may encounter a few minor bugs (Quake engines with a software renderer have a few visual bugs, in particular), but the gameplay should be very similar to the one we intended to create.
After version 1.01, Transfusion exclusively uses the DarkPlaces engine, allowing us access to many more features at the expense of compatibility with other Quake engines. This means that the above procedure will most likely not work, and no official support will be given in an attempt to get it to work.
If you want to play on the internet and your computer can't run our engine, then you will have to use a QuakeWorld based engine. Bad news...
First, make sure you really want to play Transfusion on the internet and that there's no way to use our engine on your machine. I insist because 1- it's not easy to install and use Transfusion with QuakeWorld, and 2- the gameplay is significantly different and some features are missing.
Now that you are sure you want to give it a try, start by getting a copy of a good QuakeWorld based engine (ZQuake is the best choice in my opinion). Then, (re)install Transfusion version 1.0 or 1.01 (later versions don't support QuakeWorld) with the QuakeWorld support if you haven't done it previously. You will get a "qw" directory in your install directory. This "qw" directory contains 2 PAK files. The first one, "pak0.pak", will stay in this directory. The other one must be moved to the "transfusion" subdirectory when you play Transfusion with QuakeWorld, but only during that period of time. If this second PAK stays in "transfusion" while playing the game with a non-QuakeWorld engine, you will surely get at least visual bugs. Also, you may have the same kind of problems than those mentioned in the previous paragraph (Quake data needed, software renderer bugs, ...).
If you have enough luck or skills to make all things work correctly, the greatest challenge still remains: finding a server and some other QuakeWorld players... Good luck. You will need it.
Transfusion supports 3 game types:
BloodBath (deathmatch = 0 or 1, and teamplay = 0): This is standard Free For All Deathmatch play. Everyone is your enemy - kill them all.
Team BloodBath (deathmatch = 0 or 1, and teamplay = 1 or 2): Divides the game into two teams who are pitted against each other. When setting Teamplay to 1, team members are impervious to Friendly Fire, while setting Teamplay to 2 leaves you vulnerable to shots from your team mates.
Capture The Flag (deathmatch = 2). Capture the opposing Teams flag and bring it your base. As with TBB, setting teamplay to 2 activates friendly fire.
Single Player mode is planned for the future, however as of version 1.1 it is only rudimentary (no monsters/entities), and not generally accessible as a game mode.
Impulses are command numbers. You can bind them to keys, or type them directly at console. For example, typing "impulse 10" at console will make you switch to your next weapon; you could achieve the same effect by binding a key to "impulse 10" and pressing it.
Here is the complete impulse list:
impulses 1 to 10: select a weapon
impulses 21 and 22: cycle to next/previous weapon
impulses 23 and 24: select next/previous item
impulse 25: use the currently selected item
impulse 26: view the current value of the next armor type
impulse 27: identify the player you're aiming at
impulse 35: select the proximity bombs
impulse 36: select the remote detonators
impulse 40: select the Dr's Bag
impulse 41: select the Crystal Ball
impulse 42: select the Beast Vision
impulse 43: select the Jump Boots
impulse 50: add a bot (to the red team if available)
impulse 51: add a bot (to the blue team if available)
impulse 52: kick a bot
impulse 55: enter the voting menu
impulse 56: go back to the observer mode (only allowed when dead)
All those impulses are considered cheats (not available in multiplayer games, except if the server has the "sv_cheats" cvar set to a non-zero value). WARNING: although it's very unlikely, it may be possible that some of them crash the game under certain conditions. Be fully aware of that if you allow cheats on your server.
impulse 53: botcam mode (unavailable in QuakeWorld)
impulse 54: waypoint edit mode (unavailable in QuakeWorld)
impulse 250: Put you on the Brink Of Death
impulse 251: Give full armor
impulse 252: Burn yourself !
impulse 253: Give all inventory items
impulse 254: Give Guns Akimbo
impulse 255: Dump all entities stats to console (for debugging)
Lastly, the DarkPlaces engine provides us with a few extra commands, that you use the same way you use impulses (at the console, or by binding them to keys). In Transfusion, we use the following ones:
+button3: secondary fire
+button4: use object (you must be close enough)
Bots are fake players controlled by a simple AI code. Transfusion bots are heavily based on FrikBotX source code, a Quake mod that provides its bot system as a separate piece of code.
The bots are easy to use. Take a look at the impulse list to see the few ones you'll have to use to spawn and remove bots.
Bots count as normal players, so if you can't spawn bots (message: "server is full") or if nobody can join your server, you have probably reached the current maximum number of players on the server, or you may have forgotten to put "-listen 8" or more in Quake's command line ("-dedicated 8" for a dedicated server). By default, Quake allows only 1 client into the game. That's why you must explicitly start a multiplayer game with the menu or add a "-listen" or "-dedicated" argument to your command line to tell Quake you want more clients.
You can't fill a server with bots. Transfusion will always let one slot free so that a new human player can come into the game. If a new player comes and takes the last free slot, a bot will be kicked automatically to free another slot if possible.
Sometimes you'll knock opponents to their knees instead of killing them outright. The victim spends several moments swaying, poised between life and death. If no one reacts, the victim will slump over and die, earning you a point. Of course, because your victim is helpless, you'll have a moment or two to gloat. You may end the torture swiftly by blowing the victim's head off. You may also draw it out by tossing a lit bundle of dynamite on the ground nearby. Be careful, though. Victims bring themselves back from the brink of death after a dozen secondes.
You'll recognize the brink of death by the sudden inability to move and the removal of your weapons.
Also, note that BOD doesn't apply to someone who's on fire, and does NOT exist in QuakeWorld.
You have 12 different weapons at your disposal in Transfusion. Aside from the Pitchfork, each of them has a normal fire and a secondary fire, also known as altfire. Most of the time, it's a deadlier mode that consumes more ammo.
You have 12 differents weapons at your disposal in Transfusion. Aside from the Pitchfork, each of them has a normal fire and a secondary fire, also known as altfire. Most of the time, it's a deadlier mode that consumes more ammo.
The warmup is a short period of time before the fight actually begins. The idea behind this system is to make sure all players start at the same time so that no guy gets all the stuff before someone else even enters play. Also it lets the time to players who don't know the map yet to explore it a little bit.
You control the amount of time dedicated to the warmup by setting the g_warmup cvar to a value in seconds. A server will wait after at least 2 players (of different teams if any) have entered the game to start the countdown. It will then reset the map and respawn all players. Be sure to set it to a non-zero value before starting the map, or you won't have any warmup at all.
Of course, no frag can be taken during the warmup.
The voting menu is a mechanism that allows players to change server settings via votes. For the moment, the available settings are: map, game type, frag limit, time limit, warmup duration, and options.
To enter the menu, you must use "impulse 50" while idle. The menu is entirely based on impulse commands. To enter into a submenu or vote for something, just send the impulse number corresponding to your choice. Once you have voted, you will be exited from the menu automatically, but until you vote or you explicitly exit the menu, all your impulses will be handled by it.
Observers don't have access to the menu.
You'll find in Transfusion quite a lot of the usual cvars from Quake (be careful though, "samelevel" hasn't the same use as in Quake, see the map cycling section for more informations). We have already talked about "deathmatch", "teamplay", "fraglimit" and "timelimit"; but you'll also find "skill" for setting the bots skill.
Transfusion has a few specific cvars that you may want to use if you host a server:
"g_flashyEffects": turn on/off some flashy effects. Some of them may actually be changed only after restarting the map.
"g_lockTeams": if set during a teamplay, the end of the warmup locks the teams so that no new player can join them until the end of the match.
"g_warmup": if set to a non-zero value, it indicates the duration of the warmup in seconds. If set to 0, the warmup is disabled.
"g_weaponStay": if set, weapons don't disappear when taken, but you can't take a weapon more than once (equivalent to "Doom Old DeathMatch" and "Quake DM 3").
"sv_cheats": enable a few client impulses which may be used to cheat one way or another.
"sv_disable": a set of flags that allow a server administrator to keep his server under control despite the voting system. Its value must be set by adding the following numbers: 1 to disable bots, 2 to disable map voting, 4 to disable game type voting, 8 to disable frag limit voting, 16 to disable time limit voting, 32 to disable warmup duration voting, and 64 to disable options voting. For example, setting "sv_disable" to 5 (1+4) will ensure your server won't have bots and won't change its initial game type.
Your server must have a "set" command or an automatic cvar creation at progs request to allow you to use the new cvars though. It's not the case of the original Quake binaries and of quite a lot of more modern versions of the Quake engine. Be sure to check that.
In general you won't have problems with Transfusion specific cvars. The voting menu allows the players to set most of them manually as needed, so you shouldn't have to worry about that. That said, there's one particular case that is indeed problematic: when you want to set a Transfusion specific cvar right at server start, using the command line or some config file. At this time, the Transfusion cvars won't be created yet and the program will tell you that it doesn't know this command. This is due to the fact that they are created by the game code the first time you start a map.
For instance, if you run "transfusion +set g_warmup 15 +map bb3", the g_warmup value will be 0 because the map is launched after the "set" command. The right way to do it is: "transfusion +map bb3 +set g_warmup 15". Actually, this example is even trickier than that, because you will probably want to have a warmup at once. Unfortunately, the value is set after you start the map, so you won't get a warmup the first time. The best way to do it is then: "transfusion +map bb3 +set g_warmup 15 +restart". With the addition of this last command, you'll restart the map immediately, and so you'll have a warmup.
With the engine we provide with Transfusion, it's even more complicated (yes, it's possible). To put it in a nutshell, DarkPlaces doesn't launch a map when it executes the "map" command. Instead, it waits until all parts of the engine are initialized to do so. This means that you'll have to make your commands waiting too. How to do that? With the "wait" command. The previous example becomes "transfusion +map bb3 +wait +wait +wait +wait +wait +set g_warmup 15 +restart". Yes, the 5 "wait" are necessary, because the engine has the time to execute the command buffer 4 times before the map is actually launched.
Transfusion supports a map cycling mechanism which is very similar to the system used by several popular Quake mods, including FrikBotX and Omicron bots. It is based on a script file ("maps.cfg"), a cvar ("samelevel"), and a few console aliases. Basically, you have to write a "maps.cfg" in your "basetf" subdirectory so that it sets "samelevel" to the number of maps in your list, and that it defines an alias for each of those maps, named "map1", "map2", "map3", ... you get the idea. Each alias must contain the command line to launch the map.
Here's a sample "maps.cfg" file to help you understand the system. It cycles through 4 maps (bb3, bb7, cpbb01, and crypt):
samelevel "4" alias map1 "changelevel bb3" alias map2 "changelevel bb7" alias map3 "changelevel cpbb01" alias map4 "changelevel crypt" |
This file is reloaded each time the server starts a map, so you can safely modify it without having to restart your server. Also, this means you don't have to execute it manually: the game code will do it for you when needed. All you have to do is putting the file in the right place.
Note that the voting system still works correctly even if the server administrator defines a map cycling list. The map will change according to the vote, and the cycle will resume afterwards.
The Transfusion Project: our home page
Transfusion on SourceForge.net: our development page
The DarkPlaces engine: the engine we recommend and provide
FrikBotX: where our bots come from
ZQuake: arguably the best QuakeWorld based engine