# Special procedures to create a pk3?

**URL:** <https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115>\
**Category:** dev\
**Created:** [April 11, 2018, 4:03pm UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115 "2018-04-11T16:03:03Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 11, 2018, 4:03pm UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/1 "2018-04-11T16:03:03Z")

</div>

I want to make a standalone game, and I want to progressively replace the assets from the demo. I tried unpackaging the assets from pak0, and it works fine, but when I repackage them (unmodified) with

```
mkdir pak0
cd pak0
mv pak0.pk3 pak0.backup.zip
unzip pak0.backup.zip
zip pak0.zip pak0/*
mv pak0.zip pak0.pk3

```

, it tells me:

```
$ pwd
(source code of ioquake3)/build/release-darwin-x86_6/
$ ./ioquake3.app/Contents/MacOS/ioquake3
./ioquake3.app/Contents/MacOS/ioquake3
tty console mode disabled
ioquake3 1.36_GIT_d28e667e-2018-03-04 macosx-x86_64 Apr 11 2018
SSE instruction set enabled
----- FS_Startup -----
We are looking in the current search path:
/Users/Famille_Pintado/Library/Application Support/ioquake3/baseq3
./ioquake3.app/Contents/MacOS/baseq3
./baseq3
./baseq3/pak0.pk3 (64 files)

----------------------
64 files in pk3 files
Couldn't load default.cfg

```

What am I doing wrong? Since the initial pak works, it must be that I’m repackaging it wrong, right?

---

<div class="post-metadata">

**Author:** ![Chomenor](https://avatars.discourse-cdn.com/v4/letter/c/6de8d8/32.png) [@Chomenor](https://discourse.ioquake.org/u/Chomenor)\
**Post date:** [April 11, 2018, 11:04pm UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/2 "2018-04-11T23:04:14Z")

</div>

You might need “zip -r” instead of “zip” to zip files in subdirectories.

---

<div class="post-metadata">

**Author:** ![zturtleman](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.ioquake.org/zturtleman/32/718_2.png) [@zturtleman](https://discourse.ioquake.org/u/zturtleman)\
**Post date:** [April 12, 2018, 2:53am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/3 "2018-04-12T02:53:57Z")

</div>

There is probably a top-level `pak0` directory in the pk3 causing default.cfg to be named “pak0/default.cfg” and need zip -r as pointed out by Chomenor to add all files.

```auto
unzip pak0.pk3 -d pak0.pk3dir
cd pak0.pk3dir
zip ../pak0-rebuild.pk3 -r botfiles demos gfx icons levelshots maps menu models music scripts sound sprites textures video vm *.cfg
cd ..

```

For rapid editing and testing of assets it’s more convenient to run with the files unzipped in `baseq3/` or `baseq3/pak0.pk3dir/` and `sv_pure` cvar set to 0. Running the `vid_restart` command will reload updated graphics without having to restart the whole game.

---

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 12, 2018, 10:27am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/4 "2018-04-12T10:27:21Z")

</div>

Since it’s about reloading the default pak, is there a way to set cvars before launch?

---

<div class="post-metadata">

**Author:** ![zturtleman](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.ioquake.org/zturtleman/32/718_2.png) [@zturtleman](https://discourse.ioquake.org/u/zturtleman)\
**Post date:** [April 12, 2018, 10:41am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/5 "2018-04-12T10:41:26Z")

</div>

You can add +coamand to the command line. `ioquake3.x86_64 +set sv_pure 0 +map q3dm1`

---

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 12, 2018, 10:48am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/6 "2018-04-12T10:48:11Z")

</div>

Also, strangely, it didn’t work even with -r.

---

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 12, 2018, 10:53am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/7 "2018-04-12T10:53:12Z")

</div>

It’s becoming even weirder. I tried re-using the original pak0 with

```
cp pak0.backup.zip pak0.pk3

```

and it doesn’t work. “Couldn’t execute autoexec.cfg”, and something about opengl extenstions, while it worked perfectly before. I’m going to try to recompile. Something’s wrong.

---

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 12, 2018, 10:54am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/8 "2018-04-12T10:54:45Z")

</div>

“User interface is version 3, expected 6.”

Any ideas what is happening? I haven’t modified the UI code. I have STANDALONE defined, though.

---

<div class="post-metadata">

**Author:** ![zturtleman](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.ioquake.org/zturtleman/32/718_2.png) [@zturtleman](https://discourse.ioquake.org/u/zturtleman)\
**Post date:** [April 12, 2018, 10:58am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/9 "2018-04-12T10:58:48Z")

</div>

The demo’s qvms are not compatible with quake3 1.32 / ioquake3. You need to use the ones you compile with ioquake3.

---

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 12, 2018, 11:19am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/10 "2018-04-12T11:19:11Z")

</div>

That’s weird, though. It worked before. _Something’s_ happened, but I don’t know what.

---

<div class="post-metadata">

**Author:** ![Algorev](https://avatars.discourse-cdn.com/v4/letter/a/b19c9b/32.png) [@Algorev](https://discourse.ioquake.org/u/Algorev)\
**Post date:** [April 12, 2018, 11:19am UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/11 "2018-04-12T11:19:48Z")

</div>

I guess the final qvms aren’t compatible with the demo, right?

---

<div class="post-metadata">

**Author:** ![zturtleman](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.ioquake.org/zturtleman/32/718_2.png) [@zturtleman](https://discourse.ioquake.org/u/zturtleman)\
**Post date:** [April 12, 2018, 1:07pm UTC](https://discourse.ioquake.org/t/special-procedures-to-create-a-pk3/1115/12 "2018-04-12T13:07:12Z")

</div>

Some files moved. Maybe delete the qvms from the pk3 because it’s taking precedence over qvms in build directory.

It’s not fully compatible but it’s usable if you replace botfiles/inv.h as I [mentioned before](https://discourse.ioquake.org/t/what-does-pak0-contain/1097/5). There is some bot chat issues with demoq3 botfiles so don’t botter trying to order them around in teamplay (though it’s possible to make your own compatible botfiles using the OpenArena botfiles). Some content will be missing as later versions renamed lightning trail and ctf icons and maybe others.
