Advanced Server Customizations

From Fortress Forever Wiki
Revision as of 19:43, 21 September 2008 by AgentBuckshotMoose-5554 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Advanced Server Customizations

This section will cover some of the more advanced changes you may want to implement on your server.

Such as:


Installing MetaMod:Source

Metamod:Source is an advanced plugin system for Half-Life 2. Plugins for Metamod:Source are written in C++ (not to be confused with "SourceMod"). It is similar to Valve's plugin layer, but much more advanced. It is coupled with SourceHook, an expansive API layer for intercepting and hooking individual virtual functions. Metamod:Source greatly simplifies otherwise hacky tasks and provides safe ways for multiple plugins to hook the same object.

It is recommended that you never download a beta version of anything if you are planning on using your server for public games. Most companies will have a released version and a beta version. Generally you are going to have problems if you download / upload a beta version. So again, you may want to download / upload the latest released version. This will make your install a lot easier, especially if you are not familar with your server files. You will also need to know what operating system (OS) you have for your server. Windows, or Linux 32 or 64 bit for the installer to install the proper files. For more details on how to install MetaMod:Source you might want to read through the MetaMod:Source Web-Site

Installing Admin Plugins

There are several plugins available to you as a server owner that you may or may not want to upload onto your server. Some of the most common plugins are Admin Plugins. These are plugins (or additions) that you can upload to your server to help you moderate and control the content and activity on your server.


If you are interested in installing additional plugins to your server, below are some links to get you started:

sourcemod

mani-admin-plugin


This is by no means a complete list of the plugins availble, but attempting to list them all would be very difficult. You may want to try using your favorite search engine to find some of the less popular plugins out there.


Seeing as there are countless plugins available, there isn't a whole lot of advice that can be offered in this section. However if you ever have any questions or concerns you are strongly urged to seek out help and ask questions!

Creating a Fast Downloads Server

Half-Life now supports the download of custom content (maps, skins, sounds, and so on) from a HTTP server (ie: webserver) when connecting, instead of downloading directly from the game server itself.

HTTP downloading has three major benefits:

1. There is no impact on the game server when downloading custom content, as a completely separate HTTP content server does the transfer

2. Players will download custom content at their maximum transfer rate, resulting in much faster downloads

3. Players who are downloading custom content do not take up a player slot on the server while they wait

What Players Connecting See

When a player connects to a server utilizing custom content, one of two things will occur:

1. If the server is not configured for HTTP download, the game server will use the normal "trickle" download mechanism

2. If the server is configured for HTTP downloading, the player will see an enhanced download dialog, and much faster downloads. While this content is downloading, they are not connected to the game server. Once the download finishes, they are automatically reconnected to the game server, and ready to play.

If any of the custom content is not present on the HTTP content server or the case of the file name does not match then the player will disconnect from the HTTP and fall back and download any remaining content via trickle download from the server.


Configuring Your Server

To configure your server for fast downloads, just follow these easy steps.

1. Make a list of all the custom files (.res, .lua, .bsp, .vmt, .vtf, etc) used on your server

2. Put these files on a HTTP server (ie: webserver), keeping the folder layout intact

3. OPTIONAL: To display a "banner image" to players that download content, place a 340x56 pixel image in the file <custom content directory>/gfx/banner.gif

4. Set the sv_downloadurl cvar to "http://yourserver/custom_content_directory/"

Example:

Your server uses the non-standard map "ff_generic", which requires the following files:

C:\Program Files\Steam\Steamapps\FortressForever\maps\ff_generic.bsp

C:\Program Files\Steam\Steamapps\FortressForever\maps\ff_generic.lua

C:\Program Files\Steam\Steamapps\FortressForever\sound\ambience\ff_generic_a.wav

C:\Program Files\Steam\Steamapps\FortressForever\sound\ambience\ff_generic_b.wav

C:\Program Files\Steam\Steamapps\FortressForever\sound\ambience\ff_generic_c.wav


You have web space (perhaps through your ISP) with the URL "http://www.fakeurl.com/notreal" that you will use to host your custom content.


To do this, you copy the files needed for "ff_generic" to your webspace, placing them in a folder called "my_ff" in your webspace top-level directory, keeping their directory layout intact.


You now have the following files in your webspace:

http://www.fakeurl.com/notreal/my_ff/FortressForever/maps/ff_generic.bsp http://www.fakeurl.com/notreal/my_ff/FortressForever/maps/ff_generic.lua http://www.fakeurl.com/notreal/my_ff/FortressForever/sound/ambience/ff_generic_a.wav http://www.fakeurl.com/notreal/my_ff/FortressForever/sound/ambience/ff_generic_b.wav http://www.fakeurl.com/notreal/my_ff/FortressForever/sound/ambience/ff_generic_c.wav


You now set the "sv_downloadurl" cvar on your game server to "http://www.fakeurl.com/notreal/my_ff/".


Players who then connect to your server will automatically download the map "ff_generic" and its required files from your webspace when they connect

(unless they already have it, of course).

Technical Details

  • The maximum length of the sv_downloadurl is 127 characters
  • A username and password can be specified for the HTTP server by embedding them in the sv_downloadurl like so:
http://username:password@www.somewhere.com/

( Note - recent IE patches may disable this functionality )

  • If a connecting player has an existing file of the same name, it will not be overwritten. The download file will be skipped.
  • Certain game-crtical and/or dangerous files cannot be downloaded (ie: *.exe, *.vbs, etc)

Summary

1. The command you enter into the server is:

sv_downloadurl "http://<yoururl>/FortressForever/"

use quotemarks on either side of the string and include the final "/".

2. Then you create folders for gfx/env, maps, overviews, sound, sprites, models, etc. and populate them with the respective resource and in the "FortressForever" directory exactly the way you would populate your server normally.

If the client has ANY of the files already (including the BSP) it will not be overwritten, there is no way to do that, the client must delete the out of date or offending resource him/herself.

Win32 http servers are more case insensitive then linux http servers but its best to do the job right in the beginning otherwise you end up propagating bad resources to all the clients which will make things a real headache later.

3. To make your client DL times even faster and conserve space on your hosting account compress all files to .bz2 format.

Troubleshooting

1. Make sure all instruction above is entered correctly.

2. Make sure your hosting provider allows permissions for all associated file types (.bsp, .res, .lua, .bz2, .vmf, .vtf, etc.) You can find which permissions you have by asking tech support for your web hosting provider.

See Also