Quake III Arena

Quake III Arena

Not enough ratings
Quake 3 LAN Server on Raspberry Pi 3b+/Pi 4/Pi 5/Risc V/x86/x64
By AmishCrusader
should work on any Pi 3/4/5/Risc V/x86/x64 (or possibly any SBC running Debian/DietPi/Ubuntu)
   
Award
Favorite
Favorited
Unfavorite
Quake 3 LAN Server on Raspberry Pi 3b+/Pi 4/Pi 5/Risc V/x86/x64
Things needed to setup a Quake 3 server on any Debian (possibly Ubuntu) distro. I use DietPi, and it should work on any Pi 3/4/5/Risc V/x86/x64 (or possibly any SBC running Debian/DietPi/Ubuntu) >= 1GB (or higher on CLI/minimal/headless install)


We need Putty and WinSCP installed on your Windows client computer to copy the pak0.pak to the server. Google instructions for Putty or WinSCP if necessary.

Login with Putty using root (not your normal user) to your hostname or IP of server and type

apt install quake3-server -y

It should show the line below when it is almost done:

Created symlink /etc/systemd/system/multi-user.target.wants/quake3-server.service → /lib/systemd/system/quake3-server.service.

Open WinSCP and login with server's hostname (or IP) and login as root.


Copy your pak0.pak file from your steam dir [mine is C:\Program Files (x86)\Steam\steamapps\common\Quake 3 Arena\baseq3] on windows client to your root's home dir with WinSCP


[[ Make sure 'File protocol' is changed from SFTP to SCP in the connection drop down menu. Make sure pak0.pak is all lowercase, you can rename if necessary. ]]


Open putty and login using root (not normal user) and type

/usr/games/game-data-packager -i quake3 ~/pak0.pk3

[[[ IMPORTANT! it might seem to hang, it will do it's thing for a few minutes.]]]
A few lines down it should read 'INFO:game_data_packager.build:will not produce "quake3-demo-data" because we have the full version "quake3-data"', this is what we want.

If at the end it says ' Download is performed unsandboxed as root as file '/root/quake3-data_73_all.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) don't worry.

Reboot server.

It should work whether it said it installed or not, see if server now shows in your Quake 3 client,
it should show as 'noname' hostname, map Q3DM2, make sure you are browsing LAN not internet ]]

pak0.pk3 can safely be deleted from the /root dir.
'/root/quake3-data_73_all.deb' can safely be deleted from /root dir.


Your Q3 server will survive reboots as it is installed as a service. This config assumes you want LAN speed on LAN. This config also assumes you have a 120 fps display or higher. 60 fps or any client refresh rate should work fine as well -- we all good.

Below is NOT recommended for internet facing dedicated servers!


edit /etc/quake3-server/server.cfg as root, add

rate 150000
sv_maxrate 150000
snaps 120 //locked at 30, boo.
sv_fps 120
com_maxfps 125 //might be client command but it won't hurt here
sv_hostname "my amazing Q3 server"


... and save, reboot.

Inside of your client, hit tilde or add to your config (you are using quake3e or ioquake3 instead of normal Q3 engine I hope)

rate 150000
snaps 120
cl_maxpackets 125
com_maxfps 125
cl_packetdup 0
cg_predictitems 0
cg_nopredict 1
cg_lagometer 1
//this makes a graph show in your client, bottom right of screen. You should get //a rolling thin blue line and perhaps some green dots at the bottom.




Save your changes in client! Hit tilde, and

/writeconfig mylanconfig (or whatever name, make sure it's not autoexec or config or a default name. Customize it.)

Instructions for running CPMA with RA3 maps coming next post. As God intended.







Running CPMA mod (or other mods)
Now that we have verified our Q3 server works, let's add CPMA!

https://playmorepromode.com/downloads has a 'DEZ' zip file that we can download, do this client-side for now. When extracting it make sure we preserve paths. We just need the /cpma folder and its contents within. Using WinSCP we copy this folder to our server. Drag your cpma folder to

/usr/share/games/quake3/

Now we need to add rocket arena maps, download from here, do this client side:

https://www.mirrorservice.org/sites/quakeunity.com/modifications/rocketarena3/ra3176.zip

inside there should be an /arena folder, copy all the maps with WinSCP (ra3mapXX.pk3) and put them in the new cpma folder server-side:

/usr/share/games/quake3/cpma

Using putty we:

nano /lib/systemd/system/quake3-server.service

Under [Service] you'll find:

ExecStart=/usr/games/quake3-server +set com_homepath server.q3a $DAEMON_OPTS +exec etc/quake3-server/server.cfg

add this:

+set fs_game cpma +set sv_allowdownloads 1

Should now read:

ExecStart=/usr/games/quake3-server +set com_homepath server.q3a +set fs_game cpma +set sv_allowdownloads 1 $DAEMON_OPTS +exec etc/quake3-server/server.cfg
Save... and exit.

As root, type:

systemctl daemon-reload

we have to modify our server.cfg to reflect our new mod + maps:

nano /etc/quake3-server/server.cfg

add the following:

mode_start 1v1
map ra3map1


change the following:

sv_hostname "LAN CPMA server"

save... and exit.

we can start, stop, restart, and get the status of our quake 3 server.

systemctl restart quake3-server

We are almost finished! Make sure your new CPMA folder client-side matches what you have on your server.

C:\Program Files (x86)\Steam\steamapps\common\Quake 3 Arena\cpma folder must match with /usr/share/games/quake3/cpma

Fire up Quake3e client side, and do not search for server under multiplayer. Instead, choose mods > cpma > play online > servers: local, make sure 'show empty' is checked, your server should show in a few seconds.








Rocket Arena 3 for x86 or x64 ONLY (NOT RASPBERRY PI OR ARM SBC)
Did we read the section title? Good.

We are still using Dietpi or Debian or Ubuntu (x86 or x64 version, instructions are the same for either.) >= 1GB memory, headless/CLI.


From the Windows client side, we download the latest server and map files. We get them from here:

https://www.mirrorservice.org/sites/quakeunity.com/modifications/rocketarena3/ra3180.zip

Inside of that zip we drag 'arena' to the desktop. We delete the map files inside (ra3map1.pk3-ra3map20.pk3) I know this sounds counter-intuitive, but we will be replacing the maps from an older version of Rocket Arena 3. Why? Because new maps are baked in with vertex lighting and it looks horrible. Close out of this zip file.

Download the older zip file with the correct maps:

https://www.mirrorservice.org/sites/quakeunity.com/modifications/rocketarena3/ra3176.zip

open the zip file, double click on 'arena' inside ra3176.zip, and ONLY copy the maps (ra3map1.pk3-ra3map20.pk3 to the 'arena' folder on your desktop.

Using PuTTY to connect to our server, we login as root.

Type:

dpkg --add-architecture i386

apt install -y libc6:i386 libncurses5:i386 libstdc++6:i386 quake3-server


Open WinSCP and login with server's hostname (or IP) and login as root.


Copy your pak0.pak file from your steam dir [mine is C:\Program Files (x86)\Steam\steamapps\common\Quake 3 Arena\baseq3] on windows client to your root's home dir with WinSCP


[[ Make sure 'File protocol' is changed from SFTP to SCP in the connection drop down menu. Make sure pak0.pak is all lowercase, you can rename if necessary. ]]


Open putty and login using root (not normal user) and type

/usr/games/game-data-packager -i quake3 ~/pak0.pk3

mv /etc/quake3-server/server.cfg /etc/quake3-server/server-orig.cfg


Switching from Putty to WinSCP, we copy the server.cfg from 'arena' folder to /etc/quake3-server/server.cfg and go back to PuTTY:

nano /etc/quake3-server/server.cfg

Copy and paste below, save and exit afterwards

// You will want to disable strictauth because it's broken and not needed.
set sv_strictauth 0
// Set your server's name
set sv_hostname "MY LAN Rocket Arena 3 1.8 Server"

// Set the max number of clients to connect
set sv_maxclients "16"

// Set the time to cycle maps, ra3 does not use fraglimit, only timelimit
set timelimit "7"

// Uncomment this var to reserve spots for people with the privatePassowrd
// set sv_privateClients "4"

// Set the private password to use the private spots with
// set sv_privatePassword "lol"

// In-game admin password
set g_adminpass "youradminpw"

// Remote console password
set rconPassword "youradminpw"

// Memory allocated for server
set com_hunkmegs "64"

// Set sv_floodprotect to 0
set sv_floodprotect "0"

// Chat flood protection
set g_chatFlood "5:5:2"

// Minimum of seconds between allowed callvote command
set g_voteInterval 3

// Votepercent for callvote commands.
set g_votePercent "60"

// Enable player tracking.
// set g_trackPlayers 1

// Enable stats tracking
// set g_trackStats 1

// Set server fps
set sv_fps "30"

// The name of the arena config file.
set arenacfg "arena.cfg"

// This message will scroll on the bottom of the arena selection menu
set g_motd "Welcome to Rocket Arena 3..."

//Use the following for location:
// Region 0: No Region Specified (any Region)
// Region 1: Southeast US
// Region 2: Western US
// Region 3: Midwest US
// Region 4: Northwest US, West Canada
// Region 5: Northeast US, East Canada
// Region 6: United Kingdom
// Region 7: Continental Europe
// Region 8: Central Asia, Middle East
// Region 9: Southeast Asia, Pacific
// Region 10: Africa
// Region 11: Australia / NZ / Pacific
// Region 12: Central, South America
sets location 0

// Set the initial map
map ra3map1
//End of server.cfg

Paste the above, save and exit afterwards

As root using Putty:


mv /usr/lib/ioquake3/ioq3ded /usr/lib/ioquake3/ioq3ded-orig

On client side, reopen ra3180.zip. Do not double click on arena folder inside, look for ra3ded without the .exe. Drag that to /usr/lib/ioquake3/ inside of WinSCP.

Switch back to PuTTY, and

cd /usr/lib/ioquake3
mv ra3ded ioq3ded && chmod +x ./ioq3ded
nano /lib/systemd/system/quake3-server.service


Under [Service] you'll find:

ExecStart=/usr/games/quake3-server +set com_homepath server.q3a $DAEMON_OPTS +exec etc/quake3-server/server.cfg


add this **BEFORE** $DAEMON_OPTS:

+set fs_game arena +set dedicated 1 +set vm_game 0 +set sv_allowdownloads 1 +exec /etc/quake3-server/server.cfg +exec arena.cfg

Should now read:

ExecStart=/usr/games/quake3-server +set com_homepath server.q3a +set fs_game arena +set dedicated 1 +set vm_game 0 +set sv_allowdownloads 1 +exec /etc/quake3-server/server.cfg +exec arena.cfg $DAEMON_OPTS

Save... and exit.

As root, type:

systemctl daemon-reload && reboot

We are almost finished! Server will be running Rocket Arena 3 upon reboot! Now to mirror arena folder to your client.

On the client-side, move your desktop 'arena' folder to your Quake 3 folder, mine is:

C:\Program Files (x86)\Steam\steamapps\common\Quake 3 Arena

Make sure your new arena folder client-side matches what you have on your server!!

Fire up Quake3e client side, and do not search for server under multiplayer. Instead, choose mods > arena > Multiplayer > servers: local, game type: RA3, make sure 'show empty' is checked, your server should show in a few seconds.

Join, manually walk to arena you want (it may look funky) and when two or more clients enter the same sub-arena the actual Rocket Arena game should start, otherwise it will make you spec.Winner stays.

/rconPassword youradminpw in client console, and now you can /rcon map ra3mapx