Halo dedicated server how-to

Wanna discuss anything about the Hardfought game servers, from game mods to hardware specs? Do it right HERE.

Moderators: EatMoreLead, Suck., G$, Burzum, WidowMaker

User avatar
Posts: 7114
Joined: Sep 14th, 2002 at 6:33 am

Halo dedicated server how-to

Postby K2 » Oct 14th, 2003 at 6:00 pm

I've had quite a few requests for this, either in IRC or on the Gearbox forums, figured I'd just make a post here and just point people to it instead of having to type all this shit out over and over ;)

NOTICE - some of this you can skip over, and get right to the meat of it. If you're a beginner, read the whole damn thing.

Getting started - make sure you have a server-class operating system, either windows 2000 server or windows 2003 server. WinXP/2000 desktop will work, but they just weren't made for it. Make sure ya have your OS patched fully and all unnecessary services disabled (like, if you don't have a printer connected to your server, disable the print spooler service. Things like that).

OK - obviously you'll need to download the necessary dedicated server files, and patch that to the latest version, which as of this writing is version 1.02. The installer for the patch hates you. It hates you because it knows you're going to hate it. If you want to install to a different folder other than what it defaults to and can't, just let it install to default and move the files over manually.

Here's where we get into the nitty-gritty of things :) First off, read the friggin' manual that comes with the install. Lots of juicy tidbits there. Just in case ya didn't read it...

Command line switches - currently those are -exec, -cpu and -port. Using -exec <filename> tells haloded.exe which config file to load, and for most everyone it'll be the init.txt file. The -cpu switch tells the executable which CPU to latch onto in a multiple CPU system, with -cpu 0 being the first CPU and -cpu 1 being the second, and so on. The -port switch tell haloded.exe which port to open up to allow players to connect to it. By default this is 2302, but you can change this to whatever you desire, with the exception being port 2303 - Halo dedicated uses this port to talk back to the client that's connected to it. Don't touch port 2303. So... your batch file or whatever you use to kick off your Halo port should look something like this - ..\Halo\haloded.exe -exec init.txt -cpu 0 -port 2302

The init.txt file - not too much admins can do with this file... yet. There are server side cvars that exist, but are un-usable at this time of writing. So, I'll just copy/paste what a typical init.txt file will look like -

Code: Select all

sv_name <your server name here>
sv_maxplayers 16
sv_public True

sv_rcon_password <your password here>

sv_mapcycle_timeout 20

sv_mapcycle_add timberland HF_CTF
sv_mapcycle_add bloodgulch HF_CTF
sv_mapcycle_add sidewinder HF_CTF
sv_mapcycle_add deathisland HF_CTF
sv_mapcycle_add beavercreek HF_CTF
sv_mapcycle_add dangercanyon HF_CTF
sv_mapcycle_add bloodgulch HF_Race
sv_mapcycle_add icefields HF_CTF
sv_mapcycle_add infinity HF_CTF
sv_mapcycle_add gephyrophobia HF_CTF


That's the init.txt file for the main Hardfought Halo port. sv_name can be no longer than 15 characters at this time, and if you use spaces in the name, you must wrap it in quotation marks... and that holds true for pretty much anything you do with Halo ded configuration. The rcon password should be set as well, not sure what the max character limit is on it, probably 15 as well. Sixteen players is max, and if you want your server to show in the Gamespy list, set sv_public to 'True' (make sure to capitalize the word True). Gametypes - it's obviuous I created my own custom game type by the way the game type is displayed in the map cycle. Default ones are types like CTF, Assault, Slayer, Race, Elimination, etc. If you do not include a game type with a map, it wont load.

Creating custom game types - go into Halo, then go to 'edit game types' - from there you can create whatever type of game you desire with whatever settings. WARNING - do NOT use spaces in the title of your custom game type, or you will not be able to manually change maps via rcon. After you save your custom game settings, open explorer, and browse to C:\Documents and Settings\<your profile name here>\My Documents\My Games\Halo\savegames - in this folder you'll see a folder named after your custom game type. Zip up this folder and all of it's contents, and import it over to your Halo server. You'll need to re-create this folder and contents from one to three places, depending on what you wanna do. The first place on your server will be C:\Documents and Settings\<your logged in profile name here>\My Documents\My Games\Halo\savegames - create a folder with the name of the custom game type and put the contents of that folder there (will be two files - blam.lst and your custom game type file, and possibly an empty subfolder called 'checkpoints'). If you want to run halo dedicated as a service, you'll also need to create a 'My Documents' folder and all subsequent sub-folders under C:\Documents and Settings\Local Services and C:\Documents and Settings\Network Services. To use your custom game type - just slap the name of it on the end of the map name when creating your sv_mapcycle_add entries. Done deal.

Performance and tweaking - I recommend running Halo dedciated as a service, because it will crash on you from time to time, depending on how busy it stays. http://www.firedaemon.com has a great utility for creating services under all windows sevrer platforms. Running Halo dedicated as aservice will allow the system to restart the executable should it crash, and will also auto-start it on the event of a reboot. Another useful tool i use is ServerDoc (http://www.serverdoc.com) - I use FireDaemon to kick serverdoc off as a service, and serverdoc in turn spawns Halo dedicated. Why do I use serverdoc? Because not only will it restart an application on the event of a crash, but it'll do so also on the event of a lockup or freeze - a normal service app manager cant do that. AND serverdoc will email me on the event of a crash/lockup. Nice lil tool, uses little to no memory/CPU.

Another nice tweak - TCPoptimizer from http://www.speedguide.net - by default, your OS uses a generic template for handling incoming/outbound data packets (even server versions). Using TCPoptimizer will improve data transfer speed and efficiency.

Stability concerns - I find that haloded.exe runs best on w2k3 server... CPU and memory usage is minimal. Hardware could also play a role in that, but I dont have the resources to confirm that... but from what i hear, haloded.exe appears to be optimized for Intel CPU's. Is that true? Dunno. Regardless... if you run a server and your Halo ports keep crashing every several minutes to every few hours or so, it would be a good idea to re-examine how your server is configured, making sure 1) it's fully patched, 2) all unneeded services are shutdown/disabled and 3) your hardware BIOS settings are set for stable operation, especially things like memory timings, etc. I've had a busy port stay up for as long as three days before crashing on me, which serverdoc restarted right away without a hitch.

Hope this guide helps some of ya out there. If you have any suggestions or comments, especially things you may know of to help run a stable instance of haloded.exe that I missed here, by all means share them here.

Enjoy ;)

Return to “Game Server”

Who is online

Users browsing this forum: No registered users and 2 guests