What is a pk3 ?
Pk3’s are files containing gamedata (textures,scripts,maps…). Main pk3 files are pak0.pk3 – pak8.pk3. The game will
load the data from that files on startup. In this tutorial i am going to explain how to create pk3 files & modify Quake 3 Arena.
Following this easy steps and you can modify any texture of the game with ease. The process is allways the same.
Never drop files in or make any changes to the pak0.pk3 file ! Writing to pak0.pk3 will corrupt that file and your game.
What do i need ?
Quake 3 Arena, Winrar or 7zip and any image editing software that supports jpg/tga
1. Setting up a pk3
Setting up a pk3 file is easy and fast to do. Just copy any thirdparty map PK3 or mod PK3 and change the filename. Since
Quake 3 Arena is loading pk3 files in alphabetical order i suggest you to name the pk3 with a zzz infront of it. So with a zzz in the front
of the name you can be sure your PK3 is the last loaded and may overwrite changes to same shaders or textures.
Don’t get it? : when i have a pk3 file with the name “a…..pk3” and another one with the name “b…..pk3” and i change the same texture in
booth pk3 files the one that ends up visual ingame will allways be the texture in “b…..pk3” because “a…..pk3” load first and then “b….pk3”.
2. Base Textures
In this step we will open the pk3 file with winrar or 7zip and delete it’s content. So we end up with a (nearly) empty pk3 file. Why nearly?
Important here is to not delete all the directorys and files. A pk3 file can never be completly empty or it will just delete itself and disappaer.
(I use the pak2.pk3 to start and what i will leave in is the botfile directory) Now we need textures to work with! We will create a railgun skin
mod, so we need to get the original railgun textures from the pak0.pk3 file. All we need from the pak0.pk3 is the directory models/weapons2/railgun.
Now that we have a (nearly) empty pk3 and our textures to work with, we can move on.
3. Editing the texture
The texture we want to edit is the “railgun1.jpg” texture from the models/weapons2/railgun directory. Now we open any image editing
software. In my case i use a old version of Photoshop. We can now go on and edit our railgun1.jpg texture.
*Editing a texture to something good looking is not easy. In the end it’s all about how creative you are.
Quake 3 doesn’t give you a limit in realizing your imagination.
4. Inserting the texture
What we are going to do now is inserting the edited railgun1.jpg texture into the zzz-MyFirstMod.pk3 file. We have to save
the edited texture in the same directory path where the original texture is located “models/weapons2/railgun”. Now we create the path
in our zzz-MyFirstMod.pk3 file. In the next step we drop our railgun1.jpg file into that path (models/weapons2/railgun). Remember
the botfiles directory? The last thing to do is deleting the botfiles directory from our zzz-MyFirstMod.pk3.
The mod should work on any unpure server. That’s it, we made our first own railgun skin mod 🙂
What is a bsp?
A BSP file is a map file used by games developed with one of the Quake game engines. It contains the layout information, objects, and resources
for a level map. BSP files are used by many games, including Quake, Quake 2, Quake 3, Half-Life, Half-Life 2 and a lot more.
Hex editing a bsp
When we edit a texture from q3dm6 with any editing software and drop it into our pk3 mod (with the correct texture path) it will work. But we will soon
notice that the texture has been changed on other maps too.That’s the case because every q3dm q3tourney q3ctf map will share the same textures from same
texture pool. This is allways the case when a map was created with the gtk radiant and the pak0.pk3 file as the texture pool (ztn3tourney1 for example).
In this tutorial i am going to explain how to change the texture path in the bsp file to make it work without touching other maps.
What do i need ?
Quake 3 Arena, Winrar or 7zip, any image editing software that supports jpg/tga and the XVI32 Hexeditor
1. Editing the bsp file
First of all we are going to open the pak0.pk3 file or any thirdparty map we want to edit. We can find bsp mapfiles in the
…….pk3/maps directory. Extracting the certain file is important so we can save our progress. Now we got our file to work
with, we open the XVI32 hexeditor software. We can now drag and drop the file into the hexeditor window. What we can
see now is cryptic numbers/letters on the left and the texture path on the right.
It’s important to know that a bsp file is written by the gtk radiant software and not by the hexeditor. Changing the wrong things
in the bsp file will destroy it’s structure and corrupt the map so it can’t load up anymore. A save way to change the texture path
is renaming a texture and keeping the size of the name. When i do editing, i allways change just a single letter in the texture name.
For example: In my ztn3tourney1 bsp mod i changed the texture path from “textures/gothic_trim/pitted_rust3” to
“textures/gothic_trim/pitted_rutt3”. I only changed the “s ” to “t”. But before i did that, i had to take a look in the original
pak0.pk3 texture directory “pak0.pk3/textures/gothic_trim/”. So i can be sure that the texture pitted_rutt3 is non existing before.
Allways pick a name that differs from any other texture in the same directory!
2. Texture path
After we have saved the bsp file, we have to create the maps directory on our pk3 mod (zzz-MyFirstMod.pk3 or whatever it is). We will drop our
edited bsp file into that directory. We allready changed the texture name in the bsp file so we have to create that texturepath in our pk3 file. In case of the
pitted_rutt3 texture which is located in texture/gothic_trim, we are creating the same directory in our pk3 file (zzz-MyFirstMod.pk3/textures/gothic_trim).
Now it’s time to get pitted_rust3 texture from the pak0.pk3 file. Drag and drop the file to your desktop and rename it to pitted_rutt3. We can now edit the
file in our image editing software. Last thing to do is to insert the pitted_rutt3 in the gothic_trim directory of our pk3 file. We can now see the change in game.
That’s it. We made our first bsp mod 🙂