Creating a Server

server
tutorial

#1

Welcome to this nice and hopefully clear enough guide on making a server for tremulous. I was asked quite often to make a guide and here I go. I will try to cover as much of my knowledge as possible. If you already know a lot on the server creation process you are welcome to add to this thread.

Now let’s get on with this guide. Shall we?

Downloading the prerequisites

First of, thank you for following this guide. I will make my best to make sure that by the end of it
you will be able to make a server, add mods to it and possibly even make your own depending on when
I can add that section to the guide.

Now. As for the prerequisites. You will need these:

  1. A working Tremulous Client. (If you have any problem running your game, make sure to post your
    problem no the forums as we can help you more that way.)

  2. At least 5 GB of space free on your disk. Just in the case that you would end up with a ton of maps.

  3. A completely CLEAN folder to store the server in.

  4. Either a pre-compiled QVM/Mod or the source of one. Link to a pre-built QVM (Download all three files.): Link

  5. (Optionnal) A Compiler. (Only if you want to compile those sources. Note that this will be a really
    big section when/if added on this guide.)

  6. A server starter package File: ServerStarterPackage.zip (400.3 KB)

  7. Time and the will of making a good server.

(Small edit: As of a copyright requirement, here is link to tremfusion’s license and source in the same link. Thanks to amanieu for keeping a repository up.
Tremfusion Source Link

Okay, now that you have your files downloaded make sure that the path is as clear as possible and
that your server’s folder structure looks like this:
image

You will be missing the base folder until you install the game and go copy the base folder from it. Just like in the image below. You don’t need data-radiant, server.cfg and maprotation. (maprotation will be generated by the server. Data radiant is just not needed to run the server. server.cfg is just useless in this folder.)
image

Once you have all the good files it should end up looking like this in your server base folder:
image

Small note: If you use the 1.3 alpha client, to connect to your server you will need to use this
console command: (Default key to open console is your slash, tilde or apostrophe key next to the key 1.)
(Do not forget to change the port to the one you chose when creating your server in the next section.)
(1.1): /connect 127.0.0.1:PORT
(1.2): /connect 127.0.0.1:PORT
(1.3):

  • to connect to (1.1): /connect 127.0.0.1 -1
  • to connect to (1.2): /connect 127.0.0.1 -g
  • to connect to (1.3): /connect 127.0.0.1

Also note that the server files provided in this guide will be for (1.1) as I do not have files for
(1.3) nor (1.2) and if you really want a (1.3) or any other possible versions, the steps will be
exactly the same but for the QVM/Mod part which they will need to be for the right version first.

And lastly for this section, you will NOT be able to see your server on the Internet filter in-game.
Why so? Because windows and any other OS’ prevents this. There is a work around, but it might not be
covered in this guide.

Creating the server

Now, if you have downloaded the prerequisites, you should have a server starter package
(.zip most likely.), have Tremulous installed and if you decided to go with the
source building, a source.

First of, you will need to unzip the ServerStarterPack.zip.
It should be pretty simple and straight forward.
Now you will have to edit the file named Start Server.bat or simply Start Server if you
do not have extensions visible.
Change the (CHANGE ME) areas to your liking.
There should be only three of them to change.
To make the server appear on the server list, change dedicated to 2.

Note: Make SURE you have a port set correctly as it will be needed to connect to your server and
even open and make sure the port is not used as the server will not open if it is in use.

Now you should be able to just run the batch file and the server should run.
Open your game and make sure you can connect to it. (Refer to the previous section if you have
trouble connecting and make sure you use the right command for the right client version.)

You should now be connected and be able to play against no one! Congratulations!
You finally have a server set up and running!

In the next sections things will get a little more complicated however. We will dive in the
great world of Modding your server.

Modding the server

Now that you have your server all ready to go (Congratulations once again!),
if you have a QVM or Mod downloaded like asked in the prerequisites, you will need
to do these few steps.

For a QVM (In the good old .vm file fashion):

  1. Open your server folder.
  2. Go into the base folder.
  3. Create a folder named vm (in lowercase, it is important!)
  4. Unzip the qvm’s files in that folder.

It should look something like this:
image

For a Mod (More known as a PK3):

  1. Open your server folder.
  2. Open the fs_game folder you have defined in the Start Server.bat.
  3. Drop the pk3 files in that folder.
  4. Open your %appdata% folder.
  5. Open the folder called Tremulous (You may have to create it for (1.1)).
  6. Create a folder named with the same name as the fs_game folder you defined earlier.
  7. Drop the pk3 files in there as well.

It should look something like this:
Server Folder:
image

%APPDATA%/Tremulous:
image

Now it is time to run the server once again.
Connect to it and you should now have a modded server! Congratulations on modding your first server!
Now all there is left to do is make sure you set the rest of the server files according to your need
and it should always open up with those new changes.

Note that the server does NOT need to be restarted for the admin.dat to be reloaded there is a command
in-game that I will let you discover for now unless nobody finds it :wink:

In the next section we will talk about the commands. Be prepared. We are getting in to the second hardest
part of making a server.

Managing your server

Managing a server is quite easy in fact.

Add commands to your needs, get a staff team to keep the server clean of those
pesky cheaters and trolls, establish rules and so on.

As for the command, it is relatively simple. There is two way to add commands,
directly using the admin.dat and adding this template
at the end and altering it accordingly: (It should be BEFORE the admins rank definisions.)

(Note that this might not be valid, but I will fix when I can make sure of the correct template.
Usually this method is quite limited.)
[COMMAND]
[NAME]
[FLAGS]
[DESCRIPTION]

And for the best and more useful way:
Adding it directly into the code which sadly will not be covered currently.
I will try to edit the guide once I have more time, but for now I will keep it into some simpler
managing.

As for getting a staff team, well first of you will want to get known a little more if you are still
at the point of wanting to create a server. If you have had experience in the past as an Admin this
shouldn’t be too bad. But if it is your first server, prepare yourself for quite an adventure.

As for the rules and the rest, you will end up knowing what are the needs for your server.
Is it rules? Probably. Will it be banning everyone? Maybe, who knows. What is more important is that
you keep your server as you want it and make sure everyone knows how it works on your server and make
it a good place to play in and have fun.

Note that making a server simply to troll people and spam ban/unban them just to take a “Revenge” is not
a valid reason to make a server.

In the next section we will cover the most important part. Portforwarding.

Portforwarding

Portforwarding is required to make your server available for everyone to join.

The steps will be different for everyone as close to no one on Tremulous has the same
Modem/Router and so on.

But generally you should have a page on your modem where you can put a port
redirecting to a specific local address.

Example of such page:
(NAT>Port Transfer>Service to a custom service made when going through the drop-down list>Add>Save
And it should end up making your server portforwarded if done correctly.)

Congratulations! You have successfully created a server! Welcome to the world of creating servers!

Q&A
Feel free to ask questions. I will try to answer them as best as my current knowledge allows me.

Q. The Server loads but the qvm won’t!
A. You might need to add +set vm_game "2" Directly after +set dedicated %DEDICATED% and you can also promote it to a variable like the rest of the Start Server file.

Q. Can we make a 2000 derbunkers now?
A. No, unless you alter the code of a client and the server’s code to allow such high packet transfer and manage to reduce lag to a minimum so it is at least playable. Which will not be covered in this guide as the goal was to allow people to create servers more than alter the whole game directly. More advanced systems will be for another guide when it is needed.

Latest Edits
Made the thread into a proper wiki thread to make it easier to maintain valid information.
Updated the Q&A and made the guide a little clearer.
Updated the thread with a new section to allow for easier linking to other posts having useful information that were not covered in this guide.

Helpful Information from other posts
(You can click the post name above the automatic quote to get to the actual post directly and see everything covered in it.)


#2

Can we make 2000 derbunkers now?


#3

That picture isn’t English. Can you please translate or change language for understanding? :confused:


#4

Why host 2000 bad ping servers when you can make 2000 F servers.


#5

understandable


#6

Well, I just realize that isn’t hard to read it. LOL xD


#7

I like the guide so far @avarthar , good work :slight_smile: !

Could you include in the ServerStartPackage.zip the source code necessary to build the tremded that is distributed with that package, as well as include a copy of the GPLv2+ license, and a COPYING text file like this one: https://github.com/GrangerHub/tremulous/blob/master/COPYING ?

The 1.3 alpha release does include a tremded in the root of the release zip file. Although at the moment that particular tremded is not yet compatible with the latest 1.3 game logic (fixing that is on the TODO), that tremded can be used to host the game logic included with the 1.3 alpha release (which is mostly just gpp vanilla), or it could be used to host a multiprotocolized QVM such as multiprotocol slacker ( https://github.com/GrangerHub/multiprotocol-slackers/tree/master/src/game ).

To host a multiprotocol server, you would need two versions of the cgame.qvm and ui.qvm (one version is used mainly by 1.1 clients, and the other is used by gpp and the latest clients, the 1.3 clients can use either version). You would have to make sure fs_pk3PrefixPairs is set, that cvar allows the 1.3 tremded to know which qvm pk3s to broadcast to which protocol.

On GrangerPub the value is:
/fs_pk3PrefixPairs "&vms-1.1.0|vms-gpp1&"

and as an example, the current names of the vms pk3 files that conatin the cgame.qvm and ui.qvm are:

  • vms-gpp1-grangerpub-6-g706cbfc.pk3
  • vms-1.1.0-grangerpub-6-g706cbfc.pk3

To enable all three protocols, set:
/net_alternateProtocols "3"

Additionally you would have to make sure you have the master server set in at least 3 different cvars:

  • /sv_master1 "master.tremulous.net"
  • /sv_alt2master1 "master.tremulous.net"
  • /sv_alt1master1 "master.tremulous.net"

You should also set 3 ports (one for each protocol):

  • /net_alt2port "30720"
  • /net_alt1port "30721"
  • /net_port "30722"

A lot of the above cvars I mentioned might already have those values by default. @avarthar , you should try setting up a multiprotocol server using the tremded included in the 1.3 alpha release, and let us know if there are any issues.


#8

NAT should still be the same I think, as for the Port transfer it should be either Portforwarding or something like it.
And as of Add, well it’s either Add or Create ^^. Hopefully it was good enough to help :stuck_out_tongue: Sadly I can’t put my modem in english.

Edit:
@dGr8LookinSparky, Sadly the tremded used in this was Tremfusion’s tremded. I don’t think the code was ever published for it tho. But as for using 1.3’s Tremded, the start server should work as well with it. I still plan on upgrading my qvm/mod into a proper 1.3 mod but sadly I can’t work on it lately due to work.

Thank you for the additionnal information. I which I could pin it tho. But I don’t think it is an available feature on Discource.
I’ll try to update the main thread once I can. It was made as a Wiki also so everyone with proper rights can edit it.


#9

@avarthar , GPLv2+ requires that if someone distributes a binary to a program licensed as such, they must supply a copy, of the source necessary to build that binary, to anyone who has obtained a copy of the binary, If that tremded is from tremfusion, the code is publicly available on github, and I recommend that you build from that source, to ensure that you know that the binary is from that source (binaries can be compared to verify they are identical), be sure to test ofc, and then include that built tremded, with the copy of the source in your ServerStartPackage.zip.

Here is a link to the tremfusion repo:

That would ensure that all licensing and legal obligations are met.


#10

Thanks a lot, I will add a link to the source itself right next to the server package.

EDIT:
Should be done.
I will see about adding the license files in the proper package file as well once I got more time for it.


#11

It’s OK. Nevermind. :slight_smile:

At least I can use translator to know meaning.