Dedicated Server
Binary
You will want to obtain the upstream
NZP-specific FTEQW nosdl binary
(nzportable
, nzportable64
) for your respective
platform. You must run this version of NZP with the
-dedicated
argument.
If you run pterodactyl there is an egg that handles the Binary, Assets, QuakeC, and CVars for you.
Otherwise for everyone else, you will need to download the Assets and QuakeC files when
using upstream
NZP-specific FTEQW. For assets, you will want to
download pc-nzp-assets.zip
and extract it to the same
location as the binary, you should have the FTEQW binary
(nzportable
or fteqw-gl
) and a directory
called nzp
beside it. For QuakeC you will want both
fte-nzp-qc.zip
and standard-nzp-qc.zip
and you
will want to extract them inside the nzp
folder. The NZP
folder should now contain some .dat
files. After that, you
can run the binary (with the -dedicated
argument if not
using nzportable
) and with the below cvars
outlined. It is recommended to put these into a file called
ftesrv.cfg
inside the nzp
to auto-execute
these on server start.
Web
Defining a Port
You would use the sv_port_tcp
cvar to specify which port
the WS server will run on.
Protocol Name
com_protocolname NZP-REBOOT-WEB
Without this, players will not be able to join your server becuase
the client does not know this is specifically an NZP server targetting
the web build of NZP. The dedicated server runs a websocket server, you
will need to type explicitly connect ws://ip:port
into your
console on an HTTP (not S) page of the web client
otherwise the browser will block the connection.
Desktop/Native
Defining a Port
You would use the sv_port
cvar to specify which port the
UDP server will run on. The defualt port is
27500
.
Protocol Name
com_protocolname NZP-REBOOT
Without this, players will not be able to join your server becuase the client does not know this is specifically an NZP server.
Custom Tick Rates
sv_mintic
is how frequently (in seconds) physics frames
are calculated. The default value is 0.045, every 45 milliseconds, it
calculates the physics. Be careful with raising this value too high as
the more times per second the physics are calculated, the more packets
are sent out and can be very bandwidth intensive, this becomes more
apparent at higher rounds. With that being said though, 0.045 may be too
high/slow and can lead to some physics issues such as zombies getting
stuck on the ground/terrain, unable to climb stairs (observed on NDU),
etc.
Server Publicity
sv_public
controls how your server is broadcast to the
internet. sv_public 1
is the default and requires you to
set up Port Forwarding on your router and system, and broadcasts to frag-net via an IP
address. sv_public 2
abuses P2P networking without
port-forwarding and broadcasts to frag-net via a roomcode
(/123
). NZP uses this on the client for hosting servers.
sv_public 2
is the easier one to use, and is
recommended but may be more unreliable.
Troubleshooting
SV_Error: Couldn't load a map. You may need to use the -basedir argument.
You need to set a map. Include map ndu
in your
ftesrv.cfg
or add it as an argument:
./nzportable +map ndu
If you are executing the server in a directory that isnt where the
binary is located, you do need to set your basedir to where the binary
is located with -basedir
, e.g
./nzportable64 -dedicated -basedir C:/Users/soldier/fteqw/
People can’t join
There is countless possible reasons as to why people cant join, and as such, we can’t simply tell you to do one magic thing. Common fixes are listed below, but they may not work. If they don’t, you are simply out of luck, due to how NZP does networking.
something ive mentioned in the past — tl;dr is peer to peer networking without any port forwarding whatsoever is basically abusive and uses a bunch of sneaky tricks and depending on a bunch of different factors it may just flat out not work for you. - Cypress, NZP Developer
sv_public 2
As mentioned before, sv_public 2
can have reliability
issues. If you can, try to use sv_public 1
and
port-forward.
WEB Compiling with OpenSSL
If you are on Windows, you need to compile FTE with OpenSSL for NZP for Web as the default Windows SSPI uses too old of a standard for FTE (Specifically, Windows has TLS 1.0, we need TLS 1.2). We recommend you stay away from hosting an NZP web server on Windows due to this.
UNKNOWN type server / Client error about mismatched game type
By an UNKNOWN type server we mean the ones here, on frag-net. Mostly this should not be an issue if you are using the standard upstream NZP-specific FTEQW nosdl binary.
Otherwise, you forgot to set the com_protocolname
cvar,
most likely. Otherwise, as frag-net says: > These servers have sent a
heartbeat but have failed to respond to an appropriate query from a
different port. This can happen when: > - Server is firewalled and
all inbound packets are dropped. Try reconfiguring your firewall to
allow packets to that process or port. > - An intermediate router
implements an Address/Port-Dependant-Filtering NAT. Try setting up port
forwarding. > - Outgoing connections are asynchronous with regard to
port forwarding. Such servers will show with arbitrary ephemerial ports.
Docker: you can supposedly work around this with –net=host. > - Plain
and simple packet loss, servers in this state for less than 5 mins may
still be fine. > - Server crashed or was reconfigured before it could
respond. > - MTU limits with failed defragmentation. > - Routing
table misconfiguration. > - Other.
Update NZP
Make sure both your server and your players are running the latest version of NZP. NZP can be updated on the client by redownloading from Github Nightly Releases, and on the server by redownloading the NZP’s FTEQW fork and all files mentioned in the third paragraph of this page.
Your Router is blocking inbound traffic/has a firewall.
Your first choice is to port-forward NZP’s port.
If that doesnt work,
net_ice_servers turn:host:port?username=foo?authorization=bar
allows you to configure proxies for FTE to use which can work around the
blocking of traffic. Do note that proxies will add latency. Have a look
at coturn to find out
more.
Additionally, make sure UDP and TCP are enabled and not blocked on your router. Additiocnally, your network provider may be using CGNAT, which gives multiple customers the same IPv4 address, which will stop you from hosting.
You may also be having MTU issues. net_mtu 1200
can
mitigate that.