Like last weeks post this post is very well thought out and I spent nearly 3 days writing parts of it up. If I missed something here or you have any questions please don’t hesitate to comment.I could’nt cover every detail , But there is enough here to get someone started and running with a basic game server , and a good understanding of some key Area in unreal and networks in general.
This is a topic which is a never ending ongoing question I hear from people.
How to host a server?
I want to host my own server unreal is the best game ever \(!)/
The thing about this is I would love to explain this, But it requires multiple areas of expertise to do it correctly. The typical person who wants to run a unreal server and is asking that question typically has no idea what ports or a IP address are or how to access there router. In many cases that means the person is a teenager or kid that lives in his parents home and shouldn’t necessarily be mucking around with a machine exposed to the intenet.
Some things you need to understand before we even talk about starting the game , You need a rudimentary understanding of how a network works. It will help you to understand what a local and extrenal ip adress is , You need to know how to access a routers control panel and how to foward ports in said router.
Understand The Network Model – A Short Crash Course:
This model assumes you have a router , If your server is directly connected to you cable modem via a single wire you may be able to skip this. That’s Highly unlikely these days.This dosnt cover ipv6 or any ‘weird’ setups like windows ICS.or Linux.If you have a Firewall such as zonealarm installed make sure you allow unreal to pass tho it.
The network your pc’s connect to in you home or business or school is called a LAN (Local Area Network). Every device , be it a Xbox , Set-top box , or PC that communicates in this LAN is assigned a number by a router when it makes a connection for the first time (In the case of a DHCP). This could be considered a room number for the purpose of understanding. This number looks like “192.169.1.x” This range of “192.169.1” can vary by router ,Many routers can also be configured to use a custom range. These number ranges are reserved for lan use. The number that the router assign each computer is called the internal IP address.
Now that you understand about local or private IP addresses or “Room numbers” , Its a lot easier to grasp the next concept. “house numbers”!
Your ISP (Internet Service Provider) That you get your internet service from assigns you a number that your conection is identified as to there WAN , This is a number from 0.0.0.0 To 255.255.255.255 It cannot be any IP in the reserved block that used for Private networks.. This is you external IP address ,It can be used to identify your network from the outside of your home. But the outside world can’t see your rooms inside your house. This make any sense to you?
Here is a handy diagram that explains what I just summarized.
In order for the outsite world to directly see a computer or server hosted on a LAN , The IP address and port needs to be forwarded. When a (Player) Queries your server they use the extranal IP, Then the router points then to the fowarded pc on the LAN network. Unreal and many other game servers require you to forward ports , Now that we understand why people outside you house cant ever see your server ,Lets discuss how to forward ports.
Routers are Embedded PC”s with no display , So how can I access the settings are there buttons on the router somewhere? All managed routers , (that are not hubs ) , Have a built in web interface that can be accessed in any internet browser on any PC on your LAN. By simply typing the gateway IP adress into the browsers for example 192.168.1.1 But as we discussed earlier different manufacturers of different brands of routers use a slightly different subnet sometimes, Like 18.104.22.168, to find out what the address of your router is theres a few ways. The only fail proof way I know of is to first find the internal IP of the computer your sitting at.
Theres a number of way to do this, One is to open a dos commandline window , goto start manu >RUN and type ‘command‘ and hit enter. Then type ‘ipconfig’ , Something like this This will be printed to the screen
If you cant use ms-dos , You can also find the gateway in the network connection properties in the control panel in windows XP.
Now it spits Up a bunch of info , But the info we want is the ip address and the default gateway.Take the default gateway and goto start menu > Run and type “http:\\22.214.171.124” Where that number is the defualt gateway and hit enter. this should open up a window in the defualt browser.A dialog asking you for a user name and password.
What you need to enter into this box varies by router models ,(http://www.routerpasswords.com/) You may need to refer to the routers instructions for the default credentals. in the case that he default user / pass combo has been changed , You may need to contact the network administartor or the person that setup you newtork , (Your parents mabye?) to get the password to gain access.Or have your administrator do this for you.In the case of the linksys wrt54g the defualt info is user= admin password= admin
Enter the password and click login. The next step assumes you got past the login somehow.
Now you have 2 options You could use this table (Best) or setup a DMZ (lazy) If you setup a DMZ every port on you computer will be visable to the world , This may be useful if you have alot of network services running on one machine , Like HTTP , FTP , WAMP , or multiple unreal servers on one machine where you don’t have enough fields to forward all the ranges.. It’s not generaly recommend.
Unrealgold could use port 7777 – 7780 or so by defualt. So you can make a rule to allow 7776 to 7780 over UDP to be safe and set the address to the last number in you local IP address you got earlier.You need to also forward master server port. 27900 over UDP so add a rule for 27900 – 27900 Udp.
Click save changes
Broadcasting The Server To The World
Unreal uses the master server model so your server tells the master it here and the master relies this information to the clients. So You need to do one more thing to be visable. Open the game , hit tilde “`~` and type preferences in the console. Scroll down to masterServerUplink , and change the value douplink to true ,Also expand tcp/network play. make sure dobeacon is set to true as well. This will allow you game to be broadcast to the master server.
Public Server Information
You server is advertised as a server name so you need to set one up so that people can find you.Open the game and open advanced option by opening the console and typing ‘preferences’ goto networking , > public server info > and set the servername .Servers with blank servernames are not advertised.The shortname is the game as xirwe are gamespy will denote it when long names are not avalible.
While you are here you may as well fill in the rest of the fields , they are mostly optional, You can fill in The adminEmail field if you would like players to be able to contact you in case they need assistants or they want to contact you for any reason. You can add a admin address here or a AIM address or a msn messenger address is sometimes used so they may use instant messager to contact. Depending on how paranoid you are , You may consider making a separate email address for this purpose and not exposing your main email. and possible a Facebook account attachted to that adress etc
adminname – This feild is generaly used to display the owners name , in the case somebody can contact the server owner , But it is generaly excepted that many people have used this field or a website address or a blog address.
MOTD line 1 – 4 – these fields are a message that will display above the score board in the hud , It useull for a website url , or some message o the day , If you use this field , make sure to enable showmotd
Alternate Master servers(optional)
To note are the new master server addresses , Open up the unreal.ini file of the advanced option panel of the server ,and make sure these 2 alternative master servers are in the list in the serveractors. This step is not critical , But sometimes when the gamespy or epic master server goes down no one can see your server , Many dedicated players have hosted masterservers for unreal , and these will help you be seen.
For 226 and 225 it should look like :
Nephthys.NptServerUplink MasterServerAddress=hyper.dnsalias.net MasterServerPort=27900
Nephthys.NptServerUplink MasterServerAddress=skwmaster.no-ip.org MasterServerPort=27900
IpServer.UdpServerUplink MasterServerAddress=hyper.dnsalias.net MasterServerPort=27900
IpServer.UdpServerUplink MasterServerAddress=skwmaster.no-ip.org MasterServerPort=27900
Netspeeds and Tickrates;
While you also here expand tcp/ip network play and find the tickrate and netspeeds .The defualt unreal installation assumes you use a dialup connection, So these numbers need to be adjusted. You can use a fancy netspeed calculater if you know what you network throughput actually is.If you don’t want to do all the math for that. You can just enter some good numbers , assuming you have cable or dsl. Set maxclientrate to about 10000 – 20000 people recommend 10,000 .But alot of 227 clients seem to use 20,000 when they join so find a good number between those 2 yourself. maxtickspersecond is largey dependent on you connection bandwidth , but it recommended to set this to somewhere between 10 – and 15. increasing your net speeds and tick rate can speed up downloads in some cases , but it will negativity effect the game play in game.
Try to Start your server!
Start unreal , Goto Muliplayer> Start new game , an select some game type and hit start wait a minute or 2 then Goto the all servers tab in you server browser and see if your visable!
Now your server is visable to the world (Hopefully) If not you need to check every thing i just said above intill it works.I know you are excited , Before you do anything serious , Its important to continue reading..
You need at least a basic high-speed home cable connection. Preferably higher tier then basic service. As you need more upload bandwidth. Normal home internet upload speeds will be the killer here (The latency as well). If all you have is DSL or Dailup , Consider renting a server from a site like ultimategameservers.com It cheap, Only 8 or 9$ a month for 8 players . For that premium price you get Tier 1 bandwidth , But you lose control of the advanced settings. If your gonna Self host you preferably need a dedicated machine , Or a multi core pc to host and play with the same PC any old crap pc can host a server for unreal ,A 1.3ghz win98 machine with 256mb ram ‘Could’ work *, its not recommended.
*Depending on the version of unreal you wish to run , That machine may need to be running windows xp or above.
You need about 1GB of harddrive space for a basic unreal install ,If you gonna run custom maps or mods , Plan or needing 4 – 8 GB.If your name is Bob , or you edit maps and mess around a lot , Plan on needing about 10GB. My unreal server install is about 9GB! You should have 512MB – 1 GB of ram at a bare minimum on the server most people will recomend about 2 gb. Unreal can run with 256mb but its seriously not recommended. Bigger maps and huge mods with tons of monsters o even just adding a lot o skins to the server can eat up ram like candy. I have 3 GB of ram on the PC I use to host , It’s not enough sometimes.
Picking A Unreal Version:
You need to decide if you want to run 226, 225 or 227 , And weather you want RTNP support (Unrealgold) you need the version of your choice’s install disk.
Dispute retail unrealgold being the last offical release of unreal( 226f wasn’t made to patch unrealgold) , It is one of the worst versions or servers compatibility wise to host with , When 226f came out it broke compatibility with 226b (Gold) So if you host with unreal227f 225 and 226b users cant join you.Users with 227 patch without unrealgold support cant join your server. I would recomend staying away from 226 If at all possible. If you absolutly must use gold use the retail version and dont patch it to 226f so that the migatory of the retail players can still join you server. Oh yeah I forgot the fact that there is also the anthology version , Witch also cant join 226 or something…yeah stay away from 226..
edit: as many have piointed out and casey explained , you CAN use 226b to host if you disable upak , but 226f may not be able to join you. ( so we still have issues again )
225 is the common version of servers since all future versions after it were built against it , So any version ever made after 225 can join a 225 server** 225 isnt terrible stable if abused , Dosnt support upak or rtnp , but there are workarounds for most of that. 225 obviosly dosnt support the features in 227 , so you cant play new 227 maps. From a technical standpoint level summary wasnt introduced intill 226 , So you will need to hex edit or convert maps made after 225 to work in225 It also requires extra security mods to be safe for online hosting, People can exploit you server or crash it if it not protected.That why i said you needed to continue reading. ** certain native mod issues
227 is the offical community version patch. Currently if you run a 227 server 226F cant join you but the release of 227I will fix this. This patch added hundreds of bug fixes an many awsome enhancements. 227 requires windows xp or later to run . When 227I come out this is you best choice without any doubts. 227 supports both Unrealgold , and non gold versions. If you patch your server to unrealgold version you can also use rtnp maps and content , but at the trade off that people who dont own rtnp cant join your server. So you need to decide about that.. You have a lot more options later for mods if you use 227 now.
unreal lets you use super fast redirects so your client can download up to 10X as fast as 225 here’s a post on how to setup a free redirect server
Thinking about mods before deciding on a server version
If you choose 225 , You cant use rtnp maps. They used native upak code that wasnt built intill 226 came out. If you want those weaposn of maps , You need to use one of the many rtnp conversion like thsrtnp. also if any custom maps you use use those weapons of actors , They wont work without editing thoe maps..If you used 225 or 226 , You cant use mods that use emitters , skeletal meshes , static meshes , dynamic zones or any 227 features. so that great mod that just came out , may not work with your server.
Gametypes and specifics
You need to decide on the gametype ,Generaly you can only use one gametype at once. You can have multiple gametypes installed onto the server , and you can switch mid game but that not a typical application.You can use voting handler to allow you players to vote what gametype they want to play . but for the immediate purpose of this article we will concentrate on running a single game type on a single server.
This may end up conflicting with you choice or server version as some gametypes like mcoop only support 225 or 226.If you already have one in mind then you can jump to that section.If not you need to decide what you doing this for and what your options are. I cant cover the details and issues with every single version of every single gametype , as this is only to help up get up and running.
Coop Game Types
unrealshare.coop is the basic coop gametype in unreal. this is ‘fine’ to play for 5 minutes but offers no usefull features by istelf.
Not recommended if your serious about running a server , this gametype screems you just bought the game and you have no idea what your doing.
compatibility : all versions , it part of the original unreal game.
jcoopz1 is a feature packed coop game subclass. if offers alot of features in a small package. Since I cant acully dicuss the featues here without 7 more pages I will jump to installation
This aassumes you have a version of unreal installed already.
- Download jcoopz1 and unpack it into some folder.
- Copy Jcoopz1.int , Jcoopz1.u , Jcoopz1grp.u Jcoopz1ntp.u and Jcoopz1ssf.u Into your unreal/system folder.
- If you are going to run server as 226 or 225 ;
If you plan on using 227 , Skip this step.
Open the archive Nephthys_v1.5a018_inst.zip and run the Nephthys_v1.5a018_inst.exe installer.
- Start up unreal, Open the console , Type preferences . Hit enter.
Something that looks like this will open. Locate the section ‘Gametypes’ expand it to reveal “Advanced coop play jcoopz1” then find the child section “Gamecontrol” from there find the section “Primaryadmin” Here is where you will setup the admin password for your server. Fill out the field ‘adminpassword‘ with a pasword keep in mind this is a game server , and not you bank account , You can use a 3 charactor password if you want , The odds of someone brute forcing is is nill since then get like 3 attemps to guess it. I highlighted the field in red for you.Set the value benabled to True so we can use this password. For normal users , ‘bauthenticate’ should be set to False .
You dont need to edit any of the other fields ,The game will fill them out when the admin logs in for the first time.
- At this point you can start the server one of 3 ways.
In Game– You can start a server in the game by going to Multiplayer > Start game > and selecting ‘Jcoopz1’ select the option ‘Start dedicated server‘. Unreal will close , And Your server will start in the background. Launching from In game is the crappy way to do it as it takes about 15 keyboard presses , and In certain cases this can have issues and crash.
- Using command line– This is the ideal way , You can create a shortcut to Unreal.exe and edit the parameters. Add this to the target field ” Nyleve.unr?Game=JCoopZ1.JCoopZGame?Difficulty=3 -server ” now you can click on this shortcut and your server will start in the background..
- –Using a batch file – Batch files are like mini programs , You create a basic control structure and it can do a task. I cant get into the depth of what a batch files is here , But I will explain how to use one.The benefit of using a batch file to launch your server is that if the server crashes or closes down , The batch file will auto restart it. It can also save the log on crash so we can debug the next time.
Here is a link to a example batch file guard.zip
Using UCC – you can also start a server using UCC , In a way similar to a batch file. This way , Starts unreal in a dos window , With no GUI or options this allows unreal server to have a even smaller footprint.. “ucc.exe -server nyleve.unr?Game=JCoopZ1.JCoopZGame?Difficulty=3”
- To login as admin in jcoopz , you use’ adminlogin password’ in the game.You can also login with join with password (226 or 227) or by commandline.
———–Installing XcoopXcoop is a open source coop game subclass. I covered the features of xcoop in my xcoop review last week so I Will jump to installationThis assumes you have a version or unreal installed already.
- download xcoop and unpack it into some folder.
- Copy Ccoop.int ,Xcoop.u , Xcoop.ini, Datastructures.u and Xcoopdata.ini into your unreal/system folder. Copy XCoopTextures.utx into unreal/texture Copy Xcoopsounds.uax into the unreal/sounds folder
- if you are going to run server as 226 or 225 do the folloing , If you plan on using 227 , Skip this step.
download and open the archive Nephthys and run the Nephthys_v1.5a018 installer.
- Start up unreal open the console , Type preferences . Hit Enter.
locate the section ‘Gametypes’ expand it to reveal “Xcoop” then find the child section “Logincontrol” here is where you will setup the admin password for your server.
Fill out the fields ‘0‘ with a primary password and ‘1‘ as a differnt secondary admin password.
- At this point you can start the server one of 3 ways.
- In Game– You can start a server in the game by going to Multiplayer >Start game > and selecting XCOOP select the option ‘Start Dedicated Server‘.Unreal will close and Your server will start in the background..
Using Command line– This is the ideal way , You can create a shortcut to unreal.exe and edit the parameters. Add this to the target field “Nyleve.unr?Game=xcoop.xcoop?Difficulty=3 -server” now you can click on this shortcut and your server will start in the background..
- Using a Batch File; Batch files are like mini programs , You create a basic control structure and it can do a task. I cant get into the depth of what a batch file is here , But i will explain how to use one. The benefit of using a batch file to launch your server is that if the server crashes or closes down , The batch file will auto restart it.here is a link to a example batchfile Guard.zip
- Using UCC –You can also start a server using UCC , In a way similar to a batch file. This way , Starts unreal in a dos window , With no GUI or options this allows unreal server to have a even smaller footprint.. “ucc.exe -server nyleve.unr?Game=xcoop.xcoop?Difficulty=3”
- To login as admin in xcoop you use ‘login password’ Xcoop and 225 dosnt support loggining in password other then the primary in the commandline
Installing other gametypesI cant possibly discuss every since game type thats currently available even tho I want to, I am hoping after you understand the basics of how these 2 game types above operate , Are Installed and how they are configured. That you may be able to help yourself to install any game type available it basically the same.The game type you plan on installing will have it own instructions and you should most definitly read them as well.
Is the server running ?
- OK you got you server running but where is it I dont see it! The unreal dedicated server doesn’t have a GUI Per-Se when you start a server a icon is added to your system tray .If you don’t see in there and you know you followed all the directions,You need to open the unreal.log or server.log and trace the error out by reading the information , If all it done properly you should have a running server and no problems so far.
The server’s settings and options can be accessed by right clicking the unreal icon that in the system tray , and selecting a option. In this case the server console is selected and shown as a text based window.This basicly shows you in realtime whats happening , It will show Connections , downloads, Chat , Errors , Spawns , and other Useful Information to the server owner.You cant use any cheats or many commands in the server windows, But you can click the window and type commands and they will show at the bottom of the screen , and you can press enter to execute them.You cant use “player” commands only game type specific or dev commands , Like ‘mem stat’ , or ‘exit’ , You can use say , If you want to talk to the server players. Gamtypes offer there own set of command to be use in this console , You need to refer to the game type’s instruction for thos commands and there uses.
Selecting the advanced options will open up the same menu as preferences did where you can edit spawn rates Serverpackages, and server settings on the fly. Most taking effect imeadiatly or after a Level Switch..Take some time to explore the advanced options and tinker with the settings.
Adding mods and Server packages
On a Dedicated Server , Only the files that are in use are sent to the clients or players. The Gametype and Current map is always sent to the clients, Along with any files that are attached to the game type itself like Textures or Sounds , the Exception to this is that some things are Dynamicly loaded.
Weapon mods are dynamicly loaded or replaced , Therefore they are not sent to clients themselves. For the client to be able to use or see the weapon on there end the mod must be in the server packages so it knows to send them the files they need.The map itself can load these file if thay are placed into he map, otherwise you need to add them to the packages.
Some mods that run Server-Side don’t need to be added to the Server Packages, as a rule if the mod has no phyisical obejcts IE (not any Texture , Sounds , Models , or a weapon or another displayable actor) The client dosnt need to know about it. So this means any custom weapons or textures or Mutators that Contain custom models , Pawns or Skins need to be in the Server Packages,
You can edit the server packages 2 ways , In the servers advanced options user game engine setting > server packages or in the unreal.ini file manually.Make very sure you don’t load blank lines or incorrect file names , As in 225 and 226 this will halt the server and exit and you will get annoyed having to troubleshoot you mistake latter manually editing a unreal.ini file in notepad.You need to restart the server for server package changes to take effect , Unless your using 227g or later.
Every game has asshats and trolls that want only to make you and your players lives hell. They spam chat , blow themselvess up continuosly , teamkill, hack your servers, cheat or lag you game with rapid joins and downloads.
Most game types have built in banning capabilities, If your game type doesn’t support these features or you want low level control over your connections, both 225 and 227 have advanced ways to deny people from joining you server and ruining you fun and the fun of others.
225 and 226 only – Using Nephthy to block/ ban/ rate limit/ query ban.
Nephthys is a native security mod made for the older versions of unreal that has so many features that you need to Read the full documentatione if you want a better understaning . Nephthys has more options and features then the 227 stack has and can log EVERYTHING related to the players connection.
If at anytime while in game you want to see the current open connection to your server type ‘admin npt status‘ in the console it will dump every connected user inormation. You can kick players or downloaders by ip adress as well by using “npt kick 126.96.36.199”
You can ban a ip or range by ip adress in the server console easily
simple – “npt ban new ip= 188.8.131.52 bstealth=0 Message=asshat” Would ban the ip 1.1.1 from joining, and when he connects he would see the message a’ssha’t. If you would likeit the an to be invisible, ie a server quary ban , you can use “npt ban new ip= 184.108.40.206 bstealth=1” this way if the player opened the server browser it wont even show you server in the list to him.
If you worrry about cheats/radars/aimbots online , You can look into psync , or one o the other package checkers , I am not getting into that here.
227 uses a entirely diffident network system so you need to use 227’s commands to do this , If your running 227 as server and 227 as your client , You can hit esc , goto tools > admin menu and kick/ban players in a gui.
if your in the server console , You can use ‘ugetconnections‘ to display connected players , and use ‘ubanid’ or ‘ukickid‘ note that you cant kick downloaders since they have no id.
You can find the documentation here for that but its pretty sparse.
If you worrry about cheats/radars/aimbots online you can use unrealintegrely anticheat thats built into unreal 227 , make sure to read and understand the limitations and issuess with integerity anticheat beore you choose to do this. it can be picky about packages and only works with 227 clients.
Well I hope this helps someone in case I ever decide to quit hosting unreal servers one day.I have covered alot of parts here that other tutorials didnt even touch on,I wish you the best on your endeavors to host your own unreal server.
Mabye I can talk about mods or messing with gametype-generic settings such as respawn rate and teams and features along with getting advanced things like voting handlers to work in a seprate post this one is already 10 pages long..