Welcome to the QUAKE GRAPHICS EDITING FAQ! Ver. 1.2 4/14/98 *NEW* with simpler language for the mentally challenged *even NEWer* with more information by Dan Bickell danbickell@loop.com This document covers the editing and creation of graphics to be used in the incredibly amazing and stupendous id software game QUAKE. Quake is perhaps the single most editable game that currently exists, and the ways in which the game can be altered are numerous. Within this "FAQ", we will focus soley upon the editing of graphics to be used in the game. We will explore the entire process of creating or editing "skins" for the 3D models in Quake and textures for the walls and ceilings in Quake levels. Yes, this is a real FAQ (frequently asked questions). All of the questions are real questions that people have asked me in email. (Well, at least most of them) Contents: *-denotes new or expanded material as of v.1.2 I. Skins A. What is a skin? B. How do I create or edit a skin? 1. How do I get the graphics to edit? - a. .pak file basics part 1 b. extracting the skin 2. What kind of graphic editors do I need? 3. What can or can't I do? * 4. What colors can I use? -or- What is the Quake palette? C. How do I see the skin in Quake? 1. What utilities do I need to make something useful from this graphic? 2. How do I see my graphics after I've made something useful from them? -.pak file basics part 2 * D. How can I use multiple player skins in one game? * E. How are QuakeWorld skins different? F. How can other people see my neato work? II. Level textures A. How do the textures work in Quake levels? B. How can I make my own textures to use in the new Quake map that I am building? * 1. Do they have to be a certain size? 2. What about the palette? 3. How do water and sky textures work? 4."How do I make the textures line up right when they tile? C. How do I make the textures usable for my Quake map? * III. Miscellaneous Chapter I. SKINS A. "What is a skin?" A "skin" is a 2d graphic that is wrapped around one of the 3d models in Quake in a process referred to as texture mapping. All of the objects in Quake, including all of the monsters, the player, the weapons, the ammo, and the power-ups, are all 3d models. Each one of these has an .mdl file. This file contains the data for the 3d model, all of the animation for that model, and a 2d graphic which has the textures that are seen on this object in the game. With a special utility this 2d graphic, or "skin", can be extracted from the .mdl file and modified and then put back to give this object a new look. B. "How do I create or edit a skin?" The first step in creating or editing a skin is to extract the original skin from the .mdl file of the object that you wish to modify. "But I don't see any .mdl files anywhere in my Quake directory!?" .pak file basics part 1 There are two .pak files in your Quake\id1\ directory. These are pak0.pak and pak1.pak. These files contain all of the resources that Quake uses. The .pak files can be "unpacked" using various available .pak file utilities. When upacked, there will be some subdirectories under your quake\id1\ directory. One of these subdirectories will be titled "progs". In your progs subdirectory are all of the .mdl files. "Okay, but the .mdl file won't load up in my graphics editor!?" Extracting the skin Before you can edit the skin, you must extract the bitmap from the .mdl file. You can use a utility such as QuakeME, MeDLe, or AdQuEdit to extract the skin. This will result in a .pcx or .bmp format bitmap. It doesn't matter what format it is. You will be able to change the format easily. 2. "What kind of graphics editor do I need?" If you don't have an exspensive graphics application such as Corel Photopaint or Photoshop or any of those other incredibly exspensive behemoth programs, don't fret. You don't need them. I have them and I don't use them. "Can I use Windows Paint?" Nope. The only thing you need for all of your Quake graphics needs is the Shareware version of Paintshop Pro. You can find this all over the internet for free. It is a simple to learn graphics application that just happens to have everything needed for Quake graphics. Specifically, Paintshop Pro has features for using specific color palettes, which is an absolute necessity and the most complicated aspect of doing Quake graphics. That is why you can't use Windows Paint. For our discussion, we will use Paintshop Pro. 3. "What can or can't I do with the skin?" We will use the player skin from the player.mdl as our example, because it is the most commonly modified skin. You will notice that the skin has a front and a back view of the player, with the rest of the background a solid color such as black. The colored portions are the parts that get mapped onto the model. You might notice that the image seems distorted in areas. This is normal. This flat image has to wrap around a 3d model. There is a 3d wireframe of the model that fits over the image. The color pixels that lie within each triangle of the wireframe are the ones that get mapped onto that facet of the 3d model. Those pixels will get stretched to fit various sizes and shapes as the model animates. You can see this wireframe overlay with utilities such as QuakeME or MeDLe. Drawing outside of this wireframe will not affect anything. Failing to fill up the wireframe will result in nasty "seams" where the front and back portions meet. Drawing horns on the head outside of the wireframe will NOT add horns to the player. The skin must remain the same size as the original skin that you extracted, and the colored portions must remain in their original postions to work correctly. 4. "What colors can I use?" -or- "What is the Quake palette?" Quake uses a 256 color palette for all graphics. It is NOT the standard 8-bit 256 color palette that most graphics applications and other games use. Instead, it is a special palette of 256 colors from the range of 24-bit colors. This allows Quake graphics to have more interesting and subtle colors that look like they could be 24-bit (16.7 million colors) but aren't. This also makes for some limitations. You MUST use the Quake palette on all of your Quake graphics. (unless you're doing a Total Conversion and intend to change the palette and every single graphic that is going to be use is in this new palette- it's safe to say that you're probably not going to do that) "How do I get the Quake palette?" Load up an original graphic or unaltered screenshot in Paintshop Pro and then use the feature to extract the palette. You will end up with a .pal format file. Name this "quake.pal". Paintshop Pro will allow you to load this palette onto any graphic that you please. Paintshop Pro will convert any color to the closes color in the Quake palette. "Okay, I did that and some of the colors do some really funky stuff." There is a problem with just using any color in the Quake palette. The last two rows of the palette are the "full bright" colors. These always appear at full brightness in the game. This means that even if the object is in a dark shadow in the game and the rest of the model is completely black, any full bright pixels will appear to glow like a light. This can be very bad, but it can also be used for the forces of good. If you want to have something light up on your model, you can use these colors just for that effect. For example, if you wish to have glowing eyes, you could use these colors to make them. If you stood in the dark, you would be completely invisible except for your glowing eyes. If you are skinning a model such as the player.mdl that can change colors in the game, this can be an additional problem. There are two rows in the Quake palette that correspond to the player's shirt and pants colors. If you use any of these colors on a player skin on accident, you will have a surprise when you see the skin in the game, and speckles of your brown hair are turning blue to match your pants color. Like the full bright colors, this can be used to your advantage if you wish to make items on the player change color. You could, for example, use the colors from one of these rows to make a t-shirt for your player, and then you could select the color of your t-shirt in the game. The second row from the top of the palette are the yellow/brown colors that correspond to the player's shirt color. Also, note that the darkest of the brown colors on the sixth line from the bottom is the same color (same RGB values) as the darkest shirt color, so you may wish to avoid using it. The seventh line in the palette from the top are the orange-pink/orange-yellow colors that correspond to the player pants color. Here is what the Quake palette looks like: (viewed in palette order) There are 16 rows of 16 colors each. Each row is defined (here) by a letter. |---------------------------------| | a*a a a a a a a a a a a a a a a | | b#b b b b b b b b b b b b b b b |} This is the player top (shirt) color row | c c c c c c c c c c c c c c c c | (yellow\brown) | d d d d d d d d d d d d d d d d | | e e e e e e e e e e e e e e e e | | f f f f f f f f f f f f f f f f | | g g g g g g g g g g g g g g g g |} This is the player bottom (pants) colors | h h h h h h h h h h h h h h h h | (orange/pink) | i i i i i i i i i i i i i i i i | | j j j j j j j j j j j j j j j j | | k k k k k k k k k k k k k k k k#| | l l l l l l l l l l l l l l l l | | m m m m m m m m m m m m m m m m | | n n n n n n n n n n n n n n n n | These are the fullbright color | o o o o o o o o o o o o o o o o |} the "o" row is the fire colors, | p p p p p p p p p p p p p p p p |} the "p" row is the yellow, blue, and |---------------------------------| red light colors note: a* (top left) is black RGB 0,0,0 note: k# is the same color as b# (darkest top/shirt color), so be aware of it C. "How do I see the skin in Quake?" When you are done editing the bitmap, you must put it back into the .mdl file that it was designed for in order to see your work in the game. 1. "What utilities do I need to make something useful from this graphic?" You can use the same utility that you used to extract the skin to import your new skin to the .mdl file. (ie. QuakeME, MeDLe, or AdQuEdit - see Sec. I, part B about .pak file basics and extracting the skin) 2. "How do I see my graphics after I've made something useful from them?" .pak file basics part 2 and "game" directories Now that you've imported your new graphics into your .mdl file, there are two methods of using this newly modified .mdl file in the game. The first method involves replacing the original .mdl with your new .mdl file in an "unpacked" copy of Quake. If you have Quake unpacked, you can simply copy the new .mdl file into the quake\id1\progs\ directory with the rest of the .mdl files. Then, if you delete or rename the .pak files in the quake\id1\ directory, Quake will use the unpacked resources instead of the resources that are in the .pak files when you run the game. "I did what you said and I still see the old graphics!" You fogot to delete or rename the .pak files. "Doh! Oh, sorry." There is another method that doesn't involve bothering with an unpacked copy of Quake. You can make a "game" directory under your Quake directory. For example, make a directory called "myskin" under your Quake directory. ( ie. c:\quake\myskin\) In this directory, create a "progs" subdirectory. (ie. c:\quake\myskin\progs) This must be called "progs". Put any modified .mdl files in the progs directory. If you run the command line parameter "quake -game myskin", quake will use the .mdl files in your "game" directory instead of the ones in the .pak files. "Okay, but I made a player skin, and I don't know how to see the player in the game!" You mean you've been playing SINGLE player this whole time? Sheesh. Get on the net and into a deathmatch game and you'll see lots of players, all of which will be wearing your skin. "Okay, I got a life and started playing deathmatch on the internet, or at least with my pals on a LAN, but I'm sick of seeing the same skins of every player!" Well, there are popular modifications floating around the internet called Multiskin and Multiskin Pro that have a player.mdl with multiple skins so different people can choose different skins. D. Using Mutliple player skins in a game One of the most commonly asked questions that I get lately has been "How can I have different skins on different players in deathmatch games?" I'll tell you how it can be done. First of all, let me try to explain something: Quake was not designed for this. Quake was not even designed to have the skins modified in the first place, much rather have a number of different skins on the same model. Secondly, you have to understand that graphics are not transmitted back and forth during multiplayer games. Coordinates and vector information for all of the entities (the players and monsters and power-ups, etc) are transmitted, and each client-side computer builds the "world" based on this information, using the resources (including graphic resources) on that individual computer. If the graphics were transmitted, the lag would we worse than you could ever possibly imagine with the current state of communications technology. So, if you alter the graphic resources on your system, (changing the skin on your player.mdl for example) then that modification would only be apparent on your system. When your system renders all of the players, they would all use the graphics that your system has on it for the player, so they would all look the same. "Great, so how do I get around this?" Well, as mentioned earlier, the first way is with a multiple-skinned player.mdl mod such as Multiskin or Multiskin Pro. These work by having a player.mdl with multiple skins on it, (around 20 different skins) ie. skin #0, skin #1, skin #2, etc. There is also some simple Quake-c code to make the skin number selectable by each player, and to have spawning and obitiuary messages that are unique to each skin, ie. when the Terminator dies, he says "I'll be back". You can use QuakeME or MeDLe (QuakeME has excellent multiple skin support) to import new skins over the old ones in a Multiskin player.mdl or to make your own multiple skinned .mdl from scratch. If you simply copy new skins over the old ones in the player.mdl that comes with a Multiskin mod, and you don't change the number of skins that are there, you can copy that new player.mdl onto all of the systems on your LAN and everybody will be able to use the multiple skins without any further modifications. The text messages will all be wrong, but this can be easily fixed. Two Quake-c .qc files should come with the Multiskin mod that you get. These are client.qc and weapons.qc. You can edit them with any text editor, and locate the Multiskin section (clearly labeled and obvious) and change the text messges. If you alter the # of skins, you would also have to modify the looping code that says when a certain # skin is reached to go back to skin #0. If you re-compile a new progs.dat with these modified .qc files, you can run the new progs.dat on the server of your LAN games. With the advent of QuakeWorld, skin support has finally been built into Quake. By creating a "skins" directory under your quake\qw\ directory, and placing all of the QuakeWorld skin set skins (available on many Quake web sites such as QuakeWorld Central) into that directory, and set up your player configuration with QSpy to use a certain skin, or type "name " at the console in a QuakeWorld game, you will wear that skin in your QuakeWorld game. Everybody who is also set up for skins (seems to be about 40% of the players) will see you wearing your skin, and you will see them wearing theirs. Note that everybody still has to have a copy of that skin on their own system to see it. You can put new skins in your quake\qw\skins\ directory, and you will see it, but others won't unless they get a copy of it somehow. Future versions of QuakeWorld are supposed to support dynamic downloading of skins. E. "How are QuakeWorld skins different?" QuakeWorld skins must be in a certain format. The correct format is .pcx (version 5 by the way) 320x200 pixels and in the Quake palette. The placement of the skin parts is exactly the same as the regular Quake format (296x194 pixels) relative to the top left. (pixel 0,0) The way to change formats from regular Quake to QuakeWorld is to copy your skin and paste it on to a 320x200 image with the Quake palette already on it, and line it up in the top left corner. To check, I remember that the very top left 2 pixels on the player's head (front side) are (86,3) and (87,3). With the extra room on the bottom and right borders, you can put your name or clan logo on your skin. F. "How can everybody else see my neato work?" So you've made this really great skin, and you want to show it off to people around the world? Upload it to the internet. For starters, try ftp.cdrom.com. They have a directory for incoming quake add-ons. Also, try sending it to the webmaster of your favorite Quake website such as sCary's Sugar Shack or Blue's News. sCary put up one of my skins once and it is the only skin I've ever seen him post. Do you think yours is good enough? It wouldn't hurt to try. At least you could read sCary's stories while you wait for a response. Oh yeah, and if people actually like it, be prepared to get lots of email praising your masterful artwork and asking "How do I make skins?" and "Will you make me a skin?". If you play QuakeWorld, then format your skin in QuakeWorld format (see E. above) and email it to "qwskins@idsoftware.com" to submit it for the QuakeWorld skin sets, which are released every few months. Chapter II. Level Textures A. "How do the textures work in Quake levels?" Quake levels, or maps as they are most commonly knowns, are .bsp files. The .bsp contains the data for the map itself and the wall and ceiling and floor textures that are used in the map. When the .bsp file is generated, it references a .wad file. This .wad file has all of the textures. B. "How can I make my own textures to use in the new Quake map that I am building?" You can make textures using the same methods as for creating skins. See the above sections on skin creation. 1. "Do they have to be a certain size?" Textures should be square, and have dimensions that are multiples of 16, ie. 16x16, 32x32, 64x64, or 128x128. Different sizes can be used, such 24x24, or other funky sizes I have heard of, but stick to multiples of 16 to be safe. 2. "What about the palette?" As is the case with creating skins, map textures must also use the Quake palette. See the above section (Section I, part B #4) for information about the Quake palette. With map textures, the player pants and shirt colors are not a concern. You may use these colors with no problem. The full bright colors still work correctly, so only use these colors if you intend to make lights or glowing things. 3. "How do water and sky textures work?" Water textures are simply 64x64 pixel textures. To make them animate in the game, you have to name them with an "*" at the start in the .wad file Note: it doesn't matter what you name the bitmap file itself, just what you name the texture within the .wad file. (ie. *water) Sky textures are actually two 128x128 textures side by side, making up a 256x128 texture. The right half if the background, and the left half is the foreground texture. The foreground texture must have transparent portions to see through to the background as it moves. This require that the sky texture have an altered palette. Load up the quake.pal, and edit it. Select the black color (top left corner of the palette) and edit it so that the RGB values are 4,4, and 4 instead of 0,0, and 0. Save this palette as a different name such as "quakesky.pal" and load this palette onto your sky texture. Use the new black color for the transparent portions on the left side foreground texture. You must name the texture within the .wad file starting with sky, such as sky1, or sky2, etc. 4. "How do I make the textures line up right when they tile?" Ah, now that is the real trick to making good map textures. It is not very hard once you understand how it works. What you must do is create a base texture, perhaps from a scan, first. Then, start with the right side. Select the first two or three vertical rows of pixels on the far right. Copy this selection, paste it on the very left, and then mirror it. Now, the pixes on the right edge will match the ones on the left edge. Now do the same for the top and bottom rows of the texture. Finally, blend the insides all together, but don't alter the outer most rows of pixels much. If this is done well, your texture will tile seamlessly. C. "How do I make the textures usable for my Quake map?" To use these new textures, you must create a .wad file. We will use Pcx2wad.exe as our .wad file utility example. Assemble all of the textures that you wish to use in an entire map in one directory. Place pcx2wad.exe in this directory. Extract the palette.lmp from the .pak files that came with Quake. Put the palette.lmp in the directory with your textures. Now you must write a script file. Make a new text file called "script.txt". This text file is nothing but a list of all of the .pcx format textures that you wish to use, followed by a few spaces and the name of the texture as you wish it to appear in the .wad file. (ie. daysky.pcx sky1) At the top of the list you must list the palette.lmp. (ie. palette.lmp palette) Use pcx2wad to compile the .wad file once you have all of this done, and then use the .wad with your favorite Quake map editor. Chapter III. Miscellaneous "Do you have any tips?" Yeah. Avoid the brighter shades of colors. Even though they aren't the full bright colors, some still appear to be bright in the dark, and really bright in the light. As a general rule, make your Quake graphics darker and they will look better in the game. Remember, it doesn't hurt to go outside the lines on skins. Even if you fill everything out to the wireframes, sometimes you will still get a black seam where the two halves of the skin meet. Just continue the color outside the wireframe a pixel or two to correct the problem. A useful trick I have found for dealing with the Quake palette is to make alternate versions of the palette without certain colors that you wish to avoid. I have palettes without the full bright colors, without the player colors, and without both. I also have palettes with just the player top colors, and just the player bottom colors. You can use these to work in 24bit-color and then load on one of these palettes without ending up with colors that you don't want. When you're done, just load the Quake palette back on and you should have no problems. You can use Paintshop Pro to edit the Quake palette yourself, by loading the palette and then choosing "edit palette" under the "color" menu. The easiest way is to simply copy black (RGB 0,0,0) over the colors that you don't want such as the fullbrights, and then saving the new palette with a different name. "How come so many skins don't work right, especially a lot of the ones in the QuakeWorld skin sets?" Remember that for QuakeWorld format, your skins MUST be in the Quake palette, and .pcx format, and lined up correctly, and 320x200 in size. There are currently hundreds of skins in the QuakeWorld skin sets, and unfortunately a very large number of them have failed in one of these respects, rendering the skin useless. Also, it is very common for people to have used the Quake palette without regard to the player top/bottom colors or especially the fullbrights (I've seen some skins that are almost entirely fullbright colors- bow will they glow!) and so they look horrible in the game. "How come my clam logo comes out backwards in the game?" Another very common mistake that many skin designers over look is the fact that the backside of the player skin is reversed. Notice that the gun is in the right hand of the front view, and the left hand of the back view. Any text or asymetrical garb must be reversed left/right for it to appear correctly in the game. "Who the hell are you anyway, and where do you get off telling us this stuff?" Hi. I'm Dan. I started working on Quake graphics back in Febuary '96 When the Quake Deathmatch test was released. I did some of the very first Player skins, such as my original Boba Fett skin and my Terminator skin. Since then, I've done dozens of skins (and got a lot better at it, boy I think my older skins suck now) and become well known for it. Several internet sites have my skins on them, and my skins have been featured in both Multiskin, and Multiskin Pro. I currently have over 30 skins in the QuakeWorld skin sets. I have done clan skins for number of clans, and have even been paid to do so. (I charge $50 US for a custom clan skin) I recently learned that my old Star Wars player skins are selling in Germany for $15. (too bad I don't see any of that) I also was working with the Quake Command guys (you know, the incredible team who brought us such neat mods as the aircraft and throwing axe) until they were both hired at Valve Software and no longer could pursue any further Quake Command projects. (too bad this company doesn't need a graphics guy) I am not a professional graphic artist. I am a college student (biology major), and just do this stuff for a hobby and a little money on the side. I get a lot of email about my skins, and I wrote this FAQ because I got really tired of answering "How do you make Quake graphics?". "Are you gonna keep this FAQ up to date?" Yeah. I plan to add to it as time passes. I want to familiarize myself with the various editing utilities that are available, and possibly present those in this FAQ. (hasn't happened yet, and frankly I don't think it really matters anymore. One utility or other, it doesn't really matter. I think I'd rather try to be a bit utility unspecific) Yeah, I just did revise the FAQ. Sorry it took 5 months. I've been busy making skins. "Uh, I read this whole thing, and I still can't get it right. Can I email you with questions?" Yeah sure. danbickell@loop.com. At least I won't have to explain everything from the beginning. It would actually be kind of nice. Credits: id software, inc. www.idsoftware.com Paintshop Pro Shareware v.4.1 JASC Inc. QuakeME v.2.3 Rene Post renep@xs4all.nl MeDLe v.1.7 Brian Martin brian@phyast.pitt.edu Pcx2wad.exe ac447@rgfn.epcc.edu AdQuEdit.exe Cable Hicks hicks@goldrush.com