SO YOU WANT TO PLAY QUAKE?
MAY 1, 2016 version 7.1
#####TABLE OF CONTENTS#####
SETUP - LINE 13
MUSIC - LINE 45
CONFIG - LINE 57
CUSTOM - LINE 83
ONLINE - LINE 109
HOSTING - LINE 149
MAPPING - LINE 164
IF YOU DONT WANNA PIRATE:
nQuake is EZQuake (quakeworld) bundled with the shareware episode among other things to make getting started ez as fuck. This will allow you to play online for free and legally, and will also net you the first episode of the game which is really good and should be compatible with fan map packs and all that good stuff. This also comes with a collection of popular multiplayer maps with the server browser all set up.
You can of course replace the shareware episode with the full game if you choose to do so, and I recommend you do.
IM A FILTHY PIRATE:
Unzip all of these into one folder. You should have "id1", "hipnotic", and "rogue" if you grabbed them all.
SOURCEPORTS: This guide will focus on these two (nQuake is just EZQuake) though the guide should be applicable to other engines.
Quakespasm - faithful, recommended for singleplayer, multiplayer protocol is fitzquake
EZQuake - faithful, recommended for multiplayer, multiplayer protocol is quakeworld
OTHER POPULAR SOURCEPORTS:
Darkplaces - not-faithful, multiplayer protocol is darkspaces
DirectQ - faithful, multiplayer protocol is fitzquake
ProQuake - faithful, multiplayer focused, multiplayer protocol is fitzquake
!!!DIFFERENT NETWORK PROTOCOLS ARE NOT COMPATIBLE WITH ONE ANOTHER!!!
Unzip the sourceport(s) into the folder you placed "id1" into. You should now be able to run the game by running the executable. If you can't, ensure the executables are at the top of the folder and not nestled into their own folders.
"But wait! Wasn't there a soundtrack?!??"
EZQuake does not support music to my knowledge, Quakespasm supports ".mp3", ".ogg", and cd music.
"Where can I find the music?"
ADDONS: (might be exactly the same?)
You would unzip the music into the respective folders for whichever game/addon it is for.
Create a file named "autoexec.cfg" in the "id1" folder. All commands will go in there.
Here is my autoexec with explainations;
gl_texturemode gl_nearest // forces texture filtering and mipmapping off
r_particles 2 // forces square particles in engines that support it (quakespasm)
r_lerpmodels 0 // removes interpolation on models, makes weapons feel more powerful for example, (quakespasm)
r_lerpmove 0 // removes interpolation on movement, makes enemies less wobbly looking but more jerky (quakespasm)
// the above three options wont work in ezquake, but it has options to do this in it's option menu under "misc"
fov 108 // field of view, the higher this is the more you will be able to see. i like 108. note ezquake adjusts fov to widescreen by default so this would likely end up being 118 so just know you would have to change that behavior if you dont like it (you wont)
sensitivity 5.5 // mouse sensitivity, i set it to 5.5 by preference
bind 1 "impulse 1" // axe
bind 2 "impulse 2" // shotgun
bind 3 "impulse 3" // super shotgun
bind 4 "impulse 4" // nailgun
bind e "impulse 5" // super nailgun
bind q "impulse 6" // grenade launcher
bind f "impulse 7" // rocket launcher
bind r "impulse 8" // lightning shaft
// i bind weapons to buttons around my hand. this makes it easier to access them faster, so for example, if i wanted to use lightning gun, as i have shaft bound to "r" i would press "r" and it would switch to the lightning gun
// in addons and other things with their own weapons, you may have to bind more "impulses". like for example, in hipnotic, mjolnir is bound to impulse 226 which is fucking nuts, you will just have to research and read addon readmes or use "next weapon" commands like a pleb
Most maps are found here.
I know this is lazy, someday I will create an infographic showing off some cool maps. Anyways this is basically Quake's DoomWorld.
Quaddicted has provided an excellent frontend to download and install mods and their dependencies called Quake Injector.
This uses Java, so you would have to have that GARBAGE installed. You would then double click the quakeinjector.jar file, point the program to your Quake install, and choose whatever you want.
If the mod is a ".PAK*" file and comes in a folder, you would place the entire folder into the Quake folder and load it by going ingame, opening the console with ` (tilde) and typing "game (addon foldername)".
!!!THIS IS CASE SENSITIVE!!!
Make sure to read the output as it may require you to "exec quake.rc". For example, lets say I wanted to play "czg07", a miniepisode by czg. I would type "game czg07" and it wouldn't start yet. If you read the console output it would have asked you to type "exec quake.rc", and once you do BAM.
If this doesn't work it is very likely just a regular map file, the next lines touch on this.
You can also create a shortcut to open the addon/mod. Create a shortcut to your sourceport, then right click and open the shortcut's properties. At the end of the target line, add "-game <modfoldername>" with or without the quotes, shouldn't matter. An example like;
C:\Quake\quakespasm.exe -game hipnotic
-and thats it, you should be able to run the addon by double clicking the shortcut.
Single maps such as "ztricks" or "skull" have the extension ".bsp" and have to be installed in the folder the sourceport reads from. For example, EZQuake loads maps from a folder named "maps" found in another fucking folder titled "qw" within your quake directory;
-Quakespasm however looks for maps in a folder also titled "maps" within your "id1" folder;
-throw your ".bsp" files into one or both of those folders and load the sucker by typing "map (mapname)". You will not need to write the extension of the file. If you had installed nQuake it would have loaded you up with a big pack of popular maps and mods already which I very much recommend. If loading the map with "map (mapname)" doesn't work out of box, it could be because the map maker did not add any singleplayer spawns. So you would need to open deathmatch, host a server (doesn't have to be online) and then call "map (mapname)".
Open console, and type "/connect (server ip)".
SERVER BROWSER IN EZQUAKE:
You will need a server list.
Grab the file "global.txt", unless you know what you are doing. This has all the servers. Once you have saved the text file (you may need to right click the "global.txt" link and "save page as"), you need to create yet another folder within the directory "ezquake" titled "sb";
-then throw "global.txt" into this folder. You will then need to enable the server by opening EZQuake, selecting multiplayer and then join game, press right arrow key to get to the sources page, press enter on global, press left arrow, and then finally press space to refresh the list. You will need to do this everytime as far as i know.
"But there are still no fucking servers!!"
EZQuake also hides empty servers by default. Turn this off hitting right arrow a couple more times to go to options, and then finally hitting enter on "hide empty servers". You also have to do this everytime.
"OK. I see servers, but I dont see anybody in my fucking country"
Welcome to Quake, try joining a server with decent ping and expect to wait an hour for someone to join. During your wait, you can practice playing the game. You can type "ztricks" in your console to go to this map called "ztricks". It will help you learn movement exploits while you wait forever. There is a sequel called "ztricks2", as well as others like "zjump" and so on. Most servers have this so you can just call the map and it will autodownload.
!!!TO CALL A VOTE FOR A MAP, YOU DO NOT WRITE "map", YOU JUST CALL THE NAME OF THE MAP. OTHERWISE YOU ARE LEAVING THE SERVER AND GOING INTO SINGLEPLAYER!!!
If someone says they want to play an aim map, this is where you only play with rocketlauncher and/or lightning gun. On the map called "end", which is the final map of Quake, they expect you to run to the little circle in the middle of the map, not run around collecting ammo and health (i did this at first). A common sub-gametype is where you only have rockets but cannot kill the other player unless you nail them in the air.
To ready up you would type "/ready" in the console, or just press F3 which is by default bound to "/ready". If it says something about teams, you would type "/team (color)" and then press F3. So for example, "/team red".
This link has a great list of maps commonly played in certain gametypes.
But for the sake of compilation i will list them;
duel - dm4, dm6, dm2, ztndm3, aerowalk
aim maps - povdmm4, end, endif, oldcrat, amphi
2v2 - dm4, dm6, dm2, ztndm3, aerowalk
4v4 - dm3, dm2, e1m2
clan arena - dm3
ffa - ztndm3, aerowalk, pkeg1, castle
Players (mainly in America) congregate on the weekends to play together. Saturday is freeforall, Sunday is Team Fortress, you will always see different countries having fun in duels and 2v2 but you will just have to like waiting for the American that rarely shows. I am often running around on various Texas hosted servers so feel free to join me and maybe we can get a game going where you can fuck my shit up.
"And how would I host a server?"
First of all, don't be "that guy" hosting on a toaster. I recommend *at least* a 486 CPU capable of clocking at 50 megahertz or higher.
Starting a non-dedicated server in EZQuake can be done by opening the port "27500", opening EZQuake, going to multiplayer, then finally go all the way to the right with the arrow keys and press host for whatever you want (deathmatch, coop, etc). To actually start a game, I have no fucking idea. Ready button isn't recognized so you can't even ready up and the nQuake IRC is dead. At least coop works seemlessly as it should.
For dedicated servers, I recommend nQuakeSV.
To download it, hover over the download button until a popup shows up asking if you want the client or the server. Pick server. Don't pay too much attention to the hostname dealios as in the scope of things it doesn't fucking matter but do change the RCON password as this can be used to interface with the server remotely. Install the program to your Quake directory (nQuakeSV will try to nest itself in it's own fucking folder so it can download shareware quake so be wary of that shit), open the port it asks you to in your router, and then open one of the shortcuts respective to the gametype you want to host found in the folder;
-you will get a graphical interface and you will also be able to join the game. And to start the server, who the fuck knows. Seriously what the fuck why is it so undocumented I cant find shit anywhere. To read how the shortcuts work, right click them, and go to properties. You will see they point to .cfg files found in;
-which determine your settings.
"What about creating maps?"
If you thought playing quake was userfriendly you will love this.
This isn't aiming for completion I want to mention. I am just trying to compile information that isn't very easy to find in one place. There are other tutorials that are more in depth on certain topics such as this excellent tutorial.
As you will probably notice, this is specifically for WorldCraft, but the information is relevant for any editor.
TrenchBroom - recommended. I only have experience with this editor.
OTHER POPULAR EDITORS:
Valve Hammer (previously WorldCraft)
Some editors have built in compilers and other *bloat*. but not TrenchBroom my friends, and neither do most editors anyways so I need to mention this. There are three programs you will need to make your map playable. "bsp", "vis", and "light". Grab them from one of these places.
!!!THESE PROGRAMS WILL NOT WORK AS THEY SHOULD IF THEY ARE NESTED IN A FOLDER WITH TOO LONG A NAME (not actually 8 letters like i said at first)!!!
And if you want textures you will also need "quake.wad" (or other Quake texture wads) which is basically the textures ripped straight from Quake and even though you already have the fucking game download it anyways (unless of course you just don't want to use the quake textures).
Once you have read the manual for whatever editor you are using, have created a map, and saved that puppy, it will be a ".map" file. First of all open this ".map" file with a text editor and change ""wad" "textures/quake.wad"" to a direct path to the previously downloaded texture wad if it isn't already a direct path. If you aren't getting textures on compilation this is the problem.
You would then drag the ".map" file over "qbsp.exe" and it will create a ".bsp" file. Then you would drag the ".bsp" file over "light.exe", and then finally drag the same ".bsp" file over "vis.exe". This needs to be done in order. In Linux you would have to compile the utilities and then you could basically do this same thing after making it executable with "chmod +x ./(program name)" and drag+drop or use the terminal to point the files to the respective binaries, but you could probably just use wine if you don't feel like compiling it. Consider reading the README. You can now load the ".bsp" file by plugging it into the previously mentioned "maps" folder for your respective engine, opening your game, starting a deathmatch server (or singleplayer for singleplayer maps, deathmatch maps have to be loaded like this though and it doesn't have to be online) and once you are ingame type "map (mapname)" into console.
You should read the ".log" files respective to these utilities. This is where you would find errors. I am actually pretty new to the mapping scene so will list shit as I learn it.
Some things require more explaination than others and are not explained in the map editor's manuals themselves. First of all, all editors use the same entities and all that good stuff. Therefore tutorials for different editors should be applicable to use in your editor. So theoretically, you should be able to create teleporters in QuArk the same was as in TrenchBroom. I say theoretically because I cant fucking figure it out!!!
Complex entities are those that require a trigger, such as a teleporter. I was stuck on this for awhile and I realized my problem was that I was actually attributing a target to the graphic. Draw the box you will use as the teleporter, right click it and select "trigger_teleport". This will not be visible ingame, you will need to give it a graphic by creating another box of the same size and stuffing it in there, but do this later. So now give the teleporter a target on it's entity page on the right of the editor, say "tp1" (but it can be anything). Then create an "info_teleport_destination" and give it a "targetname" of "tp1"
Check out the WorldCraft complex entities tutorial.
"How can I make a mega health?"
Create a health box and select it, then go to it's respective entity page. Select "spawnflags" and change it from 0 to 2. You can also create a smaller health kit by changing the spawnflag from 0, to 1, so instead of healing 25 health, the pack will heal 15.
"How would I make certain ammo boxes have different ammunition amounts?"
Similarly to mega health, you would select the ammo box, and then go to the entity page. Change the "spawnflags" area from 0 to 1.
Also notice that when you click on a field, a list of different variables and their effects will be listed. This includes being able to restrict items to singleplayer or multiplayer and so on.
""light" isn't working, says something about a file not found."
This can happen if the directory you are working in has too long of a filename. I just renamed "tyrutils-214jfdhslkdj" to "TyrUtils" and then "light" worked.
"What about optimization?"
Said nobody. I know what you are thinking;
"I have seen this game run on literal toasters, I have seen it run on a hospital's oscilloscope, my washingmachine plays Quake demos on loop all day, why would it need optimization?"
My answer to this is, why not? Actually I will go ahead and tell you several reasons you may not want to do these at the end of each suggestion.
Less polygons equal better performance. A roof comprised of several polygons will run worse than a roof comprised of only one polygon. If you can replace several areas with a single polygon, even if that polygon in the end is bigger, the map will run better. A downside to this is management. I don't recommend doing this at first because if you wanted to change a room later it would take longer to edit so this is more of an end-of-development optimization.
Triangles are smaller than squares. You can cut squares in half with the cut tool (c) or with the vertex tool (v). I have replaced every rectangle in my map that I could without it being visible with triangles, and I have milked an additional 100 fps out of it. Not like I needed 1500 fps but I wanted to mention that there are potentially results. Much like the removal of polygons, this should be done only at the end of development if ever. If you needed to change up an area it would take around three times as long to deal with it comparatively if all the areas were rectangles. And yes it is very time consuming, I spent three hours just running around my map cutting every block I could in half, which I did specifically for the guide as I wanted to see if it would make the map run better. I think it is worth doing but you might not.
All textures found in the map will be saved into the ".bsp" file, making it considerably larger, so it is also important you remove any additional textures found in the level that you didn't end up using. This could be a problem because you could lose your "bookmarks" of those textures if you intended to ever use them.
You will also want to utilize "vis". Yes it is optional, but "vis" will determine every single part of the map a player can see at any time. This makes it possible for the engine to only render what the player sees at any given time considerably lessening CPU usage. You can expect an additional 30 percent fps increase from "vis" alone and even more depending on how big your map is.
"I ran my ".bsp" in "vis", but it didn't work. In the logs it says it cannot find the ".prt" file for my map."
If "qbsp" detects a leak in the map, it will refuse to generate a portal file, or ".prt". Read your "(mapname).log" file and you will find something like this;
*** WARNING 10: Reached occupant at (464 320 16), no filling performed.
!!!THIS DOES NOT MEAN THE LEAK IS AT THIS SPECIFIC SPOT!!!
Previously I said this would point you to a leak which is wrong, it will point you to an entity. "qbsp" detects what are playable areas by entities. So, its really just telling you that there is a hole somewhere in the map, and that an entity is in the room with the leak. Now if your rooms are all linked together this wont do you much good at all, the leak could be anywhere, but if you utilize separate rooms this will point you to an entity in that room making it easier to find the leak. This also means you can have a room without any entities and it having a "leak", yet still generating a .prt file as it recognizes that you would not be able to have a player there.
I know it may be tempting to create a gigantic fucking box around your map, but don't. It wont work, trust me. "vis" on it's own is not a heavy hitter and will make the map run much better so it is worth doing right. There are no cons other than having to fill in leaks which should be a priority anyways.
"So, what is a leak?"
A leak is when an entity contacts an area outside of a room, so holes. They are easy to see ingame as they will be flashing. If entities are touching the walls or are inside the walls, the game will also spit out leak errors, or the entities will not load into the map.
"Is lava, water, or sludge a wall?"
No, these must be covered by a solid wall or the map will spit out leak errors.
TL;DR, after optimization, I have managed to; raise map fps by 600, lower filesize by nearly half (imagine if all 50 players downloaded your map, you just saved 10 MEGAbytes), and cut down the actual source .map file by 50 percent.
""bsp" says I have a leak at "x y z" but I don't see anything there."
This is likely a bug caused by entities touching walls. This appears to be the case regarding pickups. If ammo or health is touching a wall of any kind, it will either A.) not load into the map, or B.) give you errors with a leak. I have also had issues with light but I couldn't determine an explaination for why this happens. If its the fucking lights I recommend reloading a recent autosave which actually did generate a .prt file and build back onto that hoping to fuck these errors don't hit you as this is the cockroach of mapping.
"My map has areas where I don't see textures but textures are there."
I believe this is a bug with the engine. When a triangle's pointed side touches another wall's bottom (the one with the texture issue), this will cause the texture to not be drawn for the side the corner touches for whatever reason. I assume this is caused by my brute force triangle optimization but I can imagine several situations where this could happen in a normal setting. This can be fixed by rearranging the triangle to where the thin part touches no walls (or at least touches a wall not as stubborn), or by reverting the triangle back to a six sided polygon.
"Can I have a copy of your map for reference?" ;)
Included is a basically finished version of my map, tt1, and the accompanying .map file which can be opened in TrenchBroom. To get textures in trenchbroom though you would need to have Quake.wad and HexenTwo.wad (which may be under another name, I may have renamed it for easier organization), both found;
Here is a video of the map I was requested to make.