Quake 3 Web

broken image


Quake III Arena (Id Software) (1999) An icon used to represent a menu that can be toggled by interacting with this icon. Quake 3 - Forever 2,772,182 play times. Add this game to your profile's TOP 3 loved list. Add to favourite. Add this game to your web page. The result: tireless operatives impervious to panic or pain, with 'manageable' psychopathy. But their senses were dulled—especially sight. The GRU turned to a cryptic American scientist and double agent. Just 3 of 20 subjects returned, each with a grafted mask, inexplicably normal vision,.


The Q3A Guide - Setting Up a Server
— by Dekard

So, you have your Quake III Arena CD and you're itching to get started by running a server on your 'l33t' cable modem or Internet connection. Well, it's pretty simple out of the box to set up; if you want to customize, it's a little more work, but more or less it's a piece of cake.

There are two types of servers: Listen and Dedicated. Listen is in-game and is the easiest to set up. Dedicated is strictly console mode, where you have access via the scrolling text and to join you have to run another instance of the game (which isn't advised as it adds to server lag that your clients will feel on your server). I would suggest only dedicated mode if you have an extra box that you won't be playing on or don't plan on using for other than gaming.


The Listen Server

First off, lets start with a Listen Server. Your friends will need your IP address to connect to you. You can wait for the in-game browser update from id, but it could take up to an hour for your server to show up in the in-game browser. So, lets find that IP -- go to Start->Run and type in winipcfg (for win9X) and you'll see your IP address. Tell your friends what your IP will be and tell them to try and connect in a few minutes. For most users, 56k or less and cable modemers, this will work for you. If you are using DSL or ADSL, you may see your proxy port there, and you can find out your actual IP by hitting a network ip site that reports your IP to you. Network Tools will do that.

Start up Quake3. Click on 'Mulitplayer.
Click on 'Create' in the bottom right corner.
On the next screen you can pick a map, pick a gameplay option, Team DeathMatch, Free For All, or Capture the Flag. Then you can click 'next'.
This is last screen is the 'server settings' screen here is where you set fraglimits, timelimits, turn Pure Server on or off, & specify your hostname.

If you and your friends also want to add some bots you can do that as well by adding them at this point. You can also add them in game by typing this in the console:

/addbot [botname] [skill 1-4] [team] [msec delay] [altname]

If I typed /addbot ranger 4 100 weiner in the console, it would spawn a bot named weiner with a skill 4 with a 100 ping (like movements). If I was playing team DM or CTF I would also add which team I wanted him or her on. If at anytime you'd like to add bots to your game make sure the CD is in the drive!! To disable bot's and the CD requirement you can type this in the console or add it to your config 'set sv_botenable 0'. You can also change maps by simply typing /map mapname in the console.

After this is set, click on 'Fight'. You're now in the game and playing. If you'd like to learn some more, read on; if not, enjoy the game!


The Server Config

If you have a certain config with map configuration and special settings, with the setup you can also bring down the console and run it now simply by typing in /exec myconfig.cfg. What follows is an easy config made from the existing config's located in your Quake III ArenaBaseQ3pak0.pk3 file, which you can open up with your favorite zip file application. Take a look at the ffa.config. As you can see, the included config's are pretty self-explanatory. You can also download any of the existing applications that make this easy for you, I have tried many of them, and they all work really well.

That's pretty much it to get your 'listen mode' server up and running and start fraggin' as quickly as possible.


The Dedicated Server

If you'd like to run a dedicated server you can simply create the same type of config and make a shortcut on your desktop to start the server.

Right-click on your desktop, and then click New->Shortcut, and map to your quake3.exe file. Now that you have your new Quake3.exe shortcut on your desktop, we can now add our options. Right click your new shortcut and click on 'Properties'. On the Shortcut tab you should have something like this:

'C:Quake III ArenaQuake3.exe'

Now what we need to do for a dedicated server is add some command line parameters. Here are the ones I am using on my server:

'C:Quake III ArenaQuake3.exe' +set dedicated 2 +set net_port 27970 +com_hunkMegs 50 +exec ffa.cfg

What this is doing is setting it to dedicated 2, where it's reporting to id master, setting my port manually to a port and not the default, setting my memory dedicated to Q3 to 50, and then finally executing my ffa.cfg file.

You'll notice the quotes around the shortcut area, this is one of Windows' many quirks; for Windows to understand long file names with spaces and such, you need to leave them in. If you try and put the commands in there it will think that it's a Windows executable and say the path is invalid, so you need to put the commands after the quotes.

You should now be up and running with more or less a basic understanding of how to set up a listen server or a basic dedicated server for you and a few friends.


Some common admin commands

If connecting remotely, you'd be using /rcon (or 'remote console').

/status
gives players status, id fields, ping, score, and port.

/kick [playername or id field]
will kick player from server.
/map mapname
will change map to map specified.


Some common server related misconceptions

If the server is running sv_pure 1, I will be kicked out, and sv_pure only allows 'id' approved pak files.

This is not true. Running sv_pure 1 protects you, the gamers, from hacked pack files and cheats that are capable via pack files. The sv_pure option works like this: if it's turned off, any pak file is visible that the client has; with sv_pure 1, however, only the pak files located on the game server are allowed on that particular server, so if you want your favorite hud replacement available to you in game see if the admin will load it to his baseq3 directory! Also, since the point release you no longer will get kicked back to the main menu if you have other pak files; that was a bug in the code that id fixed. (side note: Please be aware, if you're an admin, that you need to verify that the pack file is legit, and not a pak file that may have a cheat in it.)

Os x version 10 11. All servers must run cg_syncrounousclients 1 so I can record a demo!

This is untrue as well. Actually if the server is running cg_syncronousclients 1, it may actually hamper clients' playability -- they may experience packet loss, lag or even connectivity problems. Recording a demo is all controlled client side, not server side as once thought. To record client side, the clients simply type /g_syncronousclients 1, /record demoname, /Recordstop all within the console.

If you have any questions you can stop by my site, , for more information on basic server configuration, advanced server configuration, commands, variables, or anything you may have on your mind. Antibotics is dedicated to not only to preventing auto-aim bots & cheats from ruining the game; we are also trying to help admins with any questions they may have. We have been giving a lot of content by many gamers over the last few months, and if you have something to contribute, let me know. We'd love to add your content as well; after all, if we all don't share our knowledge together and push each other to be the best we can be, how can we push the limits of the games we love to play? Happy fraggin' and gib one for me! Go to web address.

Free os x virtual machine.

Quake 3 Arena Index


Quake 3 Web
Comments (9):

Posted by jowazzz ( 85.206.xxx.xxx ) at 2006-11-29 07:28:12
nu pyze tokiu gun dar nemates

Posted by fabiojack at 2006-11-14 11:15:32 Voted 5.00 on 11/14/06
*bleep*

Posted by JOCIMAR ( 201.50.xxx.xxx ) at 2006-11-08 14:13:27
INICIAR O JOGO

Posted by baily ( 70.230.xxx.xxx ) at 2006-10-01 10:06:12
glfkmf

Posted by tebeloy ( 88.229.xxx.xxx ) at 2006-09-30 19:13:10
try copy paste man-_-

Posted by medo4h ( 196.218.xxx.xxx ) at 2006-09-28 12:18:02
thank you

Posted by tebeloy ( 88.229.xxx.xxx ) at 2006-07-29 09:47:53
tebeloy

Posted by nekrox ( 200.5.xxx.xxx ) at 2006-05-07 10:42:47
damn, why, i can't download it?, i just have the ordinary quake 3 arena

Posted by hallo.andreas@hotmail.com ( 83.88.xxx.xxx ) at 2006-05-03 10:16:34
sjh

You must be Logged In to post comments in this section.
Got a great question in the comments on my Quake 3 Tech Talk post today from Daniel P.
It's been almost 2 years since you did this. My question is: how much could you improve the rendering with your knowledge today?
Indeed, both WebGL and myself have improved since I initially did the Quake 3 demo, so it's interesting to look back and see what could be done better today given more expertise with WebGL and the evolution of the API.
First off, let me clarify something: I wouldn't change much about how the level actually looks. My goal back then was to faithfully reproduce the original look and feel of the game and that's what I would do again if I were to take another stab at it. Even though it would be perfectly possible to add things like dynamic lights and whatnot I wouldn't want to simply because that's not what Quake 3 looked like.
What I would be tempted to change in visual terms is to fix up the few effects that weren't quite right the first time around. The lack of fog in the pits has always bothered me, as has the fact that using a cube for the sky results in ugly seams on the corners (the level geometry hides this pretty well). There were also some specular effects that I just faked for the demo that it would be nice to get right, but that plays a pretty minor part in the original scene.
It could also be fun to load and display the appropriate weapons and items around the level, but that would involve writing a whole new parser for the mesh format.
On the technical side, there's one huge change I would make right away that would spill out into everything else. I would not load the level from it's original file format as I did in the demo. Quake 3 was built around a very different hardware environment, and as such most of it's formats are aimed squarely at the fixed function hardware of the day. This means that my code does a lot of pre-processing before it can finally hand the scene off to the graphics card and say 'go!'. Compiling vertex buffers, calculating curved surfaces, translating q3 shaders into GLSL, etc. It was a fun exercise back then, but if I was looking at improving the experience it would pretty much be a given that I would want to do this once during an export process and serve to the users data that is already in a WebGL format. This could massively cut down on the load times by producing smaller files and easier parsing.
(Fun fact: I actually started on something like this, with the original target being Three.js. The exporter code, a Node.js utility, is on Github under the 'exporter' branch of my Quake 3 repo if anyone wants to play with it. I doubt I'm going to take it any further.)
Once the geometry has been processed, honestly I feel as though the current demo renders it about as efficiently as is practical, so there's not any significant speedups to be had there. The one area that comes to mind that could be improved in terms of rendering efficiency is the way multipass effects are handled. Most of the level geometry doesn't have any special rendering effects applied, and as such it's done as a single pass where the lightmaps and diffuse textures are combined in the shader. For any surfaces with their own materials, however (anything that spins, flickers, glows, flows, shimmers, or shines) they are defined as multipass materials, with each pass typically only utilizing a single texture. During my conversion to GLSL I kept these all as individual passes, and as such we're not taking full advantage of the number of texture units available to us.
Some of these passes simply couldn't be combined due to the unique blend modes they use, but many could easily be boiled down into a single shader which would make the rendering of those surfaces a bit cleaner. In the exporter code linked to earlier I am condensing the shaders as much as possible (since Three.js doesn't nicely support multipass materials), but it's an imperfect conversion and there are still some blending issues to be had depending on the level you export.
In the same vein as pre-processing the level geometry I would also try and take advantage of the fact that WebGL has started supporting compressed textures in the time since the demo was first put online. Texture loading still makes up the bulk of the load time for the demo, and the ability to load Crunched DXT files instead of PNGs for everything would cut down on load times immensely, plus be kinder to video memory to boot! Unfortunately support for compressed textures in spotty right now, especially on mobile, so I would probably have to leave in a code branch that uses raw JPEGs and PNGs, but at least the JPEG textures would offer a savings over the current demo, which normalized everything to PNG for the sake of removing guesswork from the load process.
I mentioned at the time that I was unable to find an implementation of visibility culling that actually improved performance, but I think that was more of a symptom of where Javascript engines were at two years ago. I've since very successfully implemented culling in the Team Fortress demo, and would likely add it to this demo as well. For desktop users that probably wouldn't make any difference whatsoever, but it may be of some benefit to mobile devices.

Quake 3 Webgl


Sound is an area in which browsers have made great strides in the last two years. At the time I had tried to use the audio tag to play ambient noises as you walked around the level (torches crackling, electronics humming, footsteps, etc.) but the audio capabilities simply were not up to snuff. For example: I couldn't accurately get a single audio sample to loop without a gap! Now we have the Web Audio API which allows much tighter control over audio playback (though widespread browser support is still a work in progress), and would allow me to get all of those lovely sound effects into the walkthrough as I had originally wanted.
Web
Comments (9):

Posted by jowazzz ( 85.206.xxx.xxx ) at 2006-11-29 07:28:12
nu pyze tokiu gun dar nemates

Posted by fabiojack at 2006-11-14 11:15:32 Voted 5.00 on 11/14/06
*bleep*

Posted by JOCIMAR ( 201.50.xxx.xxx ) at 2006-11-08 14:13:27
INICIAR O JOGO

Posted by baily ( 70.230.xxx.xxx ) at 2006-10-01 10:06:12
glfkmf

Posted by tebeloy ( 88.229.xxx.xxx ) at 2006-09-30 19:13:10
try copy paste man-_-

Posted by medo4h ( 196.218.xxx.xxx ) at 2006-09-28 12:18:02
thank you

Posted by tebeloy ( 88.229.xxx.xxx ) at 2006-07-29 09:47:53
tebeloy

Posted by nekrox ( 200.5.xxx.xxx ) at 2006-05-07 10:42:47
damn, why, i can't download it?, i just have the ordinary quake 3 arena

Posted by hallo.andreas@hotmail.com ( 83.88.xxx.xxx ) at 2006-05-03 10:16:34
sjh

You must be Logged In to post comments in this section.
Got a great question in the comments on my Quake 3 Tech Talk post today from Daniel P.
It's been almost 2 years since you did this. My question is: how much could you improve the rendering with your knowledge today?
Indeed, both WebGL and myself have improved since I initially did the Quake 3 demo, so it's interesting to look back and see what could be done better today given more expertise with WebGL and the evolution of the API.
First off, let me clarify something: I wouldn't change much about how the level actually looks. My goal back then was to faithfully reproduce the original look and feel of the game and that's what I would do again if I were to take another stab at it. Even though it would be perfectly possible to add things like dynamic lights and whatnot I wouldn't want to simply because that's not what Quake 3 looked like.
What I would be tempted to change in visual terms is to fix up the few effects that weren't quite right the first time around. The lack of fog in the pits has always bothered me, as has the fact that using a cube for the sky results in ugly seams on the corners (the level geometry hides this pretty well). There were also some specular effects that I just faked for the demo that it would be nice to get right, but that plays a pretty minor part in the original scene.
It could also be fun to load and display the appropriate weapons and items around the level, but that would involve writing a whole new parser for the mesh format.
On the technical side, there's one huge change I would make right away that would spill out into everything else. I would not load the level from it's original file format as I did in the demo. Quake 3 was built around a very different hardware environment, and as such most of it's formats are aimed squarely at the fixed function hardware of the day. This means that my code does a lot of pre-processing before it can finally hand the scene off to the graphics card and say 'go!'. Compiling vertex buffers, calculating curved surfaces, translating q3 shaders into GLSL, etc. It was a fun exercise back then, but if I was looking at improving the experience it would pretty much be a given that I would want to do this once during an export process and serve to the users data that is already in a WebGL format. This could massively cut down on the load times by producing smaller files and easier parsing.
(Fun fact: I actually started on something like this, with the original target being Three.js. The exporter code, a Node.js utility, is on Github under the 'exporter' branch of my Quake 3 repo if anyone wants to play with it. I doubt I'm going to take it any further.)
Once the geometry has been processed, honestly I feel as though the current demo renders it about as efficiently as is practical, so there's not any significant speedups to be had there. The one area that comes to mind that could be improved in terms of rendering efficiency is the way multipass effects are handled. Most of the level geometry doesn't have any special rendering effects applied, and as such it's done as a single pass where the lightmaps and diffuse textures are combined in the shader. For any surfaces with their own materials, however (anything that spins, flickers, glows, flows, shimmers, or shines) they are defined as multipass materials, with each pass typically only utilizing a single texture. During my conversion to GLSL I kept these all as individual passes, and as such we're not taking full advantage of the number of texture units available to us.
Some of these passes simply couldn't be combined due to the unique blend modes they use, but many could easily be boiled down into a single shader which would make the rendering of those surfaces a bit cleaner. In the exporter code linked to earlier I am condensing the shaders as much as possible (since Three.js doesn't nicely support multipass materials), but it's an imperfect conversion and there are still some blending issues to be had depending on the level you export.
In the same vein as pre-processing the level geometry I would also try and take advantage of the fact that WebGL has started supporting compressed textures in the time since the demo was first put online. Texture loading still makes up the bulk of the load time for the demo, and the ability to load Crunched DXT files instead of PNGs for everything would cut down on load times immensely, plus be kinder to video memory to boot! Unfortunately support for compressed textures in spotty right now, especially on mobile, so I would probably have to leave in a code branch that uses raw JPEGs and PNGs, but at least the JPEG textures would offer a savings over the current demo, which normalized everything to PNG for the sake of removing guesswork from the load process.
I mentioned at the time that I was unable to find an implementation of visibility culling that actually improved performance, but I think that was more of a symptom of where Javascript engines were at two years ago. I've since very successfully implemented culling in the Team Fortress demo, and would likely add it to this demo as well. For desktop users that probably wouldn't make any difference whatsoever, but it may be of some benefit to mobile devices.

Quake 3 Webgl


Sound is an area in which browsers have made great strides in the last two years. At the time I had tried to use the audio tag to play ambient noises as you walked around the level (torches crackling, electronics humming, footsteps, etc.) but the audio capabilities simply were not up to snuff. For example: I couldn't accurately get a single audio sample to loop without a gap! Now we have the Web Audio API which allows much tighter control over audio playback (though widespread browser support is still a work in progress), and would allow me to get all of those lovely sound effects into the walkthrough as I had originally wanted.

Quake 3 Web

Anisotropic filtering has landed in WebGL relatively recently, which could improve the look of many textures in the demo and wouldn't be a burden to any modern GPU, so it would be kind of a no-brainer to throw it in there as well. Antialiasing has also become more common, so if your Browser/OS/GPU combo supports it the demo will just magically look better. Gotta love easy visual upgrades!
One thing that the original demo got right that I would want to continue taking advantage of is that all of the level geometry was loaded in a web worker to prevent the window from freezing up. It worked wonderfully then, and still does today! I would unquestionably do the same in the future, with the exception of using tranferables to make the data passing faster. It's also worth keeping an ear to the ground for the possibility of doing WebGL calls directly in a worker, something that's been talked about on the mailing lists and would make the loading process even faster should it be implemented eventually.

Quake 3 Website

One big improvement worth noting about workers since the time of the original demo is that when I first put this online web workers could not use typed arrays. This meant that all of the parsing that I did for the demo was done with strings and charCodeAt()! (Kill me now!) Since then workers have gained support for typed arrays and data views which makes the binary parsing much MUCH nicer, and the demo code has already been updated to make use of them.

Quake 3 Web Browser

There's several other advances that have happened in the last two years that have already made their way into the demo: Fullscreen support, mouse lock, and gamepad support all greatly improve the experience where available. Mouse lock in particular was a feature that I thought we'd never see in a browser at the time the original demo was put together. It's crazy how fast these things move!
So that's my little brain dump on the things I would be looking at were I to rebuild the demo for the web of today. Please don't expect any of these things to actually make it into the demo, since it's difficult for me to justify putting more work into it at this point. It's fun to look at how things have evolved in the last couple of years, though!



broken image