2010-10-10

Panoramic Quake 3

Running Google Earth on five screens is pretty cool, but we all know that the real test for any computer system is whether it can run Quake. Today I'm going to show you how to run Quake III Arena in a panoramic multiple screen configuration. Here's what my setup looks like:



And here's a video of me playing with some bots:



How do you make it work like that?

It turns out that it's actually easier than it seems, as Quake 3 already includes the view synchronization functionality, because it's needed for spectators. The only thing that we need in addition to that is a way to rotate the view a little to the left or to the right. This simple patch does exactly that, introducing a new console variable named cg_yawOffset.

You're going to need:
  1. five monitors and five computers (or some other number)
  2. a working copy of ioquake3 on each of them
  3. my mod
(Technically, you don't need a separate machine for each screen, you could drive two or more screens from the same computer if you figure out how to make one instance of Quake 3 run in fullscreen on one monitor and another one on the other. Also, there's nothing ioquake3-specific about my mod, it's just that I used ioquake3 to compile it, so it uses the new QVM format, which doesn't work with vanilla Quake 3. If you want to make it work with vanilla Quake 3, you'll have to take my patch and compile it yourself.)

Unzip my mod and put the galaxy directory in your ioquake3 directory (it has to be on the same level as the baseq3 directory). Do it on every computer. The mod consists of QVM files and not native code, so it's platform independent and can't hurt your computer, so don't worry.

For simplicity I'm going to assume that you're going to play using the computer connected to the screen in the center, even though it doesn't have to be that way. The server is also going to run on it. On that computer, run ioquake3 with the following command line parameters:

+set fs_game galaxy +set sv_pure 0 +devmap q3dm7

(You can use some other map if you like.)

On the rest of the machines, just run ioquake3 as you normally would. Then connect to the server, either by typing \connect server_ip in the console (you'll have to know the server's IP address) or from the menu. Then become a spectator, by typing \team s in the console or from the menu (press Esc, choose start, then spectate). Then click the left mouse button (or whatever you have bound to +attack) until you're following the player from the master computer (center screen). All your screens should now be displaying the same view.

Time for the real magic. On each computer, type \cg_fov 45 in the console to set the field of view (use a number that matches the geometry of your setup, 45 degrees is what I used). Then on the first computer to the left of the master, type \cg_yawOffset 45. That will rotate the view 45 degrees to the left (if you used something other than 45 degrees for the FOV, use the same number here). On the second computer to the left, type \cg_yawOffset 90 and on the computers to the right, type \cg_yawOffset -45 and \cg_yawOffset -90. You should now have a nice panoramic Quake 3 configuration. Move around and see if everything works as it should.

You'll also want to disable the gun and the HUD on all screens except the master. To do that, type \cg_drawGun 0 and \cg_draw2D 0 in the console.

Oh, and by the way, if you don't have the full version of Quake 3, all of this works fine with the pak0.pk3 from the demo.

5 comments:

  1. Is it possible to launch a command that make connect every server as a team spectator attached to the player? because I'm working on how to automatize the launch process like google earth and VLC for example, but I still have some problem with quake, if you can answer me on glforproject a.t google mail dot com
    Thanks :-)

    ReplyDelete
  2. Check on the follow cmd on quake3
    /follow - switch to follow mode (follow "" or follow1 for 1ST place follow2 for 2ND etc…)

    ReplyDelete