Running Quake 3 on the Raspberry Pi?

The classic first-person shooter Quake 3 Arena can run surprisingly well on the Raspberry Pi. With some optimization, it’s possible to get smooth gameplay up to 720p resolution. This guide will walk through the steps to get Quake 3 running on the Raspberry Pi and tweak the settings for the best performance.

Running Quake 3 on the Raspberry Pi?

Why Play Quake 3 on the Raspberry Pi?

Here are some of the benefits of running Quake 3 on the Raspberry Pi:

  • Nostalgia – Quake 3 Arena is a classic PC game from 1999. It was groundbreaking at the time for its fast-paced twitch gameplay. Running it on the Pi can be a nostalgic trip down memory lane.
  • Low cost – The Raspberry Pi is an inexpensive, credit card-sized computer. It provides an affordable way to play classic PC games.
  • Portability – Since the Pi is small and low power, it’s easy to make a portable Quake 3 system. You can bring it anywhere and hook it up to a monitor or TV.
  • Educational – Getting Quake 3 running involves installing drivers, optimizing settings, overclocking, and problem solving. It’s a great learning experience.
  • Multiplayer fun – Thanks to the Pi’s Ethernet port, it’s possible to play Quake 3 online against others. Local multiplayer is also possible with split-screen.

Step 1 – Install Raspbian

The first step is to install an operating system on the Raspberry Pi. Raspbian is the official OS optimized for the Pi’s hardware.

Download the latest Raspbian image and use etcher to flash it onto a microSD card. Then insert the card into the Pi.

On first boot, Raspbian will guide you through configuring settings like locale, time zone, keyboard, and changing the default password.

Once at the Raspbian desktop, it’s a good idea to update the system. Open a terminal and run:

sudo apt update

sudo apt full-upgrade

This will ensure you’re running the latest software versions.

Step 2 – Install Quake 3

Now we can install Quake 3 Arena. The game data is proprietary and must be provided yourself. But the open source engine can be installed through apt:

sudo apt install quake3

This will install the Quake 3 binaries and game libraries. But we still need to supply the pak0.pk3 game data file.

Copy this file over from an existing Quake 3 install on another system. Place pak0.pk3 in /usr/lib/quake3/baseq3/ on the Pi so the full path is:

/usr/lib/quake3/baseq3/pak0.pk3

Now Quake 3 is installed and ready to launch!

Step 3 – Launch Quake 3

You can launch Quake 3 from the terminal by running:

quake3

The first launch will optimize shader caches which may take some time. Once in the game, you can browse servers and connect to online matches.

However, performance will be quite poor at this stage. The default settings are not tuned for the Pi’s hardware. We need to make some tweaks to get playable framerates.

Step 4 – Improve Performance

Here are some tips to boost Quake 3’s speed on the Pi.

Overclock

Overclocking increases the CPU and GPU clock speeds. This makes a significant difference in Quake 3’s FPS.

The easiest way to overclock on Raspbian is through the GUI tool:

Menu > Preferences > Raspberry Pi Configuration > Overclock

Set the GPU memory to 256 and test various overclock presets. Medium overclock settings tend to work well. The Pi 4 can often handle High settings.

After changing overclock settings, reboot for them to take effect.

Lower Resolution

The Raspberry Pi will struggle to run Quake 3 smoothly above 720p. Lower resolutions perform much better.

Edit ~/.quake3/q3config.cfg and change seta r_mode “1280 1024” to a lower resolution like 1024×768 or 1280×720.

Disable Antialiasing

Antialiasing has a big impact on FPS. Disabling it can boost speeds significantly.

In q3config.cfg set:

seta r_ext_texture_filter_anisotropic “0”

seta r_ext_multisample “0”

Reduce Texture Quality

Lowering texture detail reduces memory bandwidth usage for improved FPS.

In q3config.cfg set:

seta r_textureMode “GL_LINEAR_MIPMAP_NEAREST”

seta r_picmip “2”

This will disable bilinear filtering and increase mipmap blurriness.

Use Static Lighting

Quake 3 has dynamic lighting and shadows that are quite demanding. Using static lighting improves performance.

In q3config.cfg set:

seta r_dynamiclight “0”

seta r_vertexfog “0”

This disables dynamic lights and vertex lighting. The game will appear brighter but run faster.

Disable Background Downloading

Quake 3 downloads data like skins and maps in the background. This taxes the Pi’s limited bandwidth.

In q3config.cfg set:

seta cl_wwwDownload “0”

Limit Framerate

Setting a max FPS can prevent wasteful rendering during menus or when FPS exceeds the screen refresh rate:

seta com_maxfps “60”

Experiment with different values. 30 FPS may be sufficient if 60 is unstable.

Overclock GPU Memory

Overclocking the GPU memory to 500 MHz or more can provide a nice speed boost. Use raspi-config or directly edit /boot/config.txt.

Step 5 – Launch with Optimal Settings

Once you’ve tuned Quake 3’s settings, you can create a custom launch script that applies them on startup.

Make a new file quake3.sh:

bash

#!/bin/bash

/usr/lib/quake3/quake3 +set r_mode “1280 720” +exec q3config.cfg +set com_maxfps 60

Make it executable with chmod +x quake3.sh and run it to start the game with optimized settings.

Step 6 – Set Up Controls

Quake 3 plays best with a mouse and keyboard. USB or Bluetooth input devices work well on the Pi.

You can also connect gamepads. Add udev rules to ensure the gamepad is mapped properly. For example, create /etc/udev/rules.d/10-gamepad.rules:

SUBSYSTEM==”input”, ATTRS{name}==”Your Gamepad Name”, MODE=”0666″, SYMLINK+=”gamepad”

Then in Quake 3’s settings, bind the gamepad axes and buttons to keys:

bind gamepad_AXIS_LEFT_X +mlook

bind gamepad_BTN_NORTH +MOVEUP

Step 7 – Enable Online Multiplayer

Part of the fun of Quake 3 is playing online against people worldwide. The Pi’s Ethernet port makes this possible.

Port forwarding is required so other players can connect to your Pi. Log into your router and forward UDP port 27960 to the Pi’s IP address.

Test that the port is open by running:

nc -vzu <Public IP> 27960

If successful, you can browse servers and join online matches in Quake 3. Frag your opponents from the comfort of your Pi!

Optimizing Quake 3 on the Raspberry Pi – Summary

Here are the key optimization techniques covered:

  • Overclock the CPU and GPU for extra speed
  • Lower screen resolution to 720p or below
  • Disable antialiasing and anisotropic filtering
  • Reduce texture filtering quality
  • Use static lighting instead of dynamic lights
  • Disable background downloads
  • Limit the framerate to 30 or 60 FPS
  • Overclock the GPU memory
  • Use a custom launch script with optimized settings

With these tweaks, smooth multiplayer Quake 3 gameplay is achievable on the Raspberry Pi. It takes some effort to configure, but the end result is rewarding nostalgic fun.

The Pi’s flexibility makes it great for reviving classic PC gaming gems. With the right optimizations, many older titles can live again on this tiny platform.

Frequently Asked Questions

  1. What Raspberry Pi models can run Quake 3?
    All models from the Pi 3 B+ onward can run Quake 3 smoothly with optimization. The Pi 4 handles it best. Older Pis may struggle due to weaker CPU/GPU performance.

  2. What resolution and frame rate can I expect?
    30-60 FPS is achievable at 720p resolution, depending on your Pi model. Resolution can be lowered to boost FPS further. The Pi 4 can sometimes handle 1080p/60 FPS.

  3. Can I use Raspbian Lite instead of the full Raspbian distro?
    Yes, Raspbian Lite will work fine since Quake 3 runs in the terminal without a GUI. This may free up some RAM and improve performance slightly.

  4. Is overclocking the Raspberry Pi safe?
    The official overclocking options are generally safe. After overclocking, monitor your Pi’s thermals with vcgencmd measure_temp. Keep the CPU under 80C for reliable operation.

  5. Can I play the single player campaign?
    Unfortunately the proprietary pak1.pk3 file with campaign data isn’t included. Only multiplayer is playable with the open source game files.

  6. How can I play local multiplayer on one Pi system?
    Split-screen is possible by launching two instances of Quake 3 and having them connect to localhost. Configure controls for the second player.

  7. Can I use a USB drive for extra storage space?
    Yes, adding a USB stick or hard drive can provide space for game mods, maps, and other custom content.

  8. Is there joystick/gamepad support?
    Gamepads work well for controls. You may need to map axes and buttons manually in Quake 3’s settings. Some additional configuration can enable joysticks.

  9. How can I reduce input lag for a better experience?
    Try overclocking the GPU, disabling VSync, using a wired USB mouse, and connecting the Pi to a TV or monitor via HDMI rather than streaming over the network.

  10. Can I run other games like Quake Live or ioquake3?
    Possibly! ioquake3 is an open source alternative with better graphics. Other Quake-engine games may work if you can provide the necessary game data files.

  11. Can I install graphics mods to improve the visuals?
    Yes! There are many community graphics mods that texture packs, models, effects and more. Installing a mod like Q3XP can make the game look much more modern.

  12. How can I backup my Quake 3 configuration?
    Your custom settings and key bindings are stored in ~/.quake3/q3config.cfg. You can copy this file to back it up or synchronize it across multiple Pi systems.

  13. Is there a way to reduce loading times?
    Using a fast microSD card can help. SanDisk Extreme or Samsung Evo Select cards offer good speeds. You can also disable intro videos in the settings. Overclocking the GPU memory can potentially decrease loading times too.

  14. Can I get it working on a Pi Zero or older Pi?
    It may be possible with very low resolution, all settings on minimum, overclocking, and a few FPS. But gameplay would likely not feel very smooth. Stick to Pi 3 B+ or Pi 4 for a good experience.

  15. Can I play the campaign with downloaded game data?
    Yes, you can find the “Quake 3 Point Release” freely online, which contains the full game with campaign levels. Extract pak1.pk3 and place it with pak0.pk3.

  16. Why can’t I hear some audio or sound effects?
    If you’re using Bluetooth audio devices, Quake 3 may have issues streaming lots of sounds simultaneously. Use a wired headset or HDMI audio output instead.

  17. How can I benchmark performance?
    Use the built-in timedemo option. Launch with quake3 +timedemo demo1 to test a replay and get FPS data. Trying different settings shows their performance impact.

  18. Are there mods that allow split-screen multiplayer?
    Yes, mods like PizzaPieQuake3 add split-screen support. Launch two instances of the game on the same Pi and connect them to localhost for couch competition.

Conclusion

Reviving Quake 3 Arena on the Raspberry Pi takes a bit of effort, but pays off for a fun blast from the past. With Resolution lowered to 720p and settings optimized, smooth multiplayer framerates are achievable.

The tinkering required to get Quake 3 running fast highlights the Pi’s educational merits. Optimizing software and experimenting with overclocking teaches useful skills.

While not quite as convenient as running on a gaming PC, the Pi offers an inexpensive, customizable, and portable way to re-experience this classic FPS. Quake 3 truly stands the test of time and remains intensely enjoyable more than 20 years later.

For first-person shooter fans, getting Quake 3 running well on the Raspberry Pi is a rewarding diversion. The process of optimization makes victory all the sweeter when you finally get smooth gameplay to relish multiplayer face-offs.

Leave a Comment