Pré-requisito: o leitor já deve saber instalar e rodar mods, conversões, etc.
Convenção: Durante todo o texto, o diretório de instalação do Quake será chamado de \QUAKE.
Você deve saber que todos os arquivos de dados originais do Quake (mapas, sons, modelos, demos, painéis, telas, etc.) estão no diretório \QUAKE\ID1. Todos estes arquivos de dados estão dentro dos arquivos PAK.
Arquivos PAK são como arquivos 'ZIP', só que sem compactação nenhuma... Quando você lista o conteúdo do diretório ID1, você enxerga:
id1\pak0.pak
id1\pak1.pak
Se você extrair o conteúdo dos arquivos PAK, os seguintes arquivos e diretórios serão criados:
| id1\end1.bin id1\end2.bin id1\default.cfg id1\progs.dat id1\demo2.dem id1\demo1.dem id1\demo3.dem id1\quake.rc id1\gfx.wad id1\gfx\box_bl.lmp id1\gfx\box_br.lmp id1\gfx\box_ml.lmp id1\gfx\box_mr.lmp id1\gfx\box_tl.lmp id1\gfx\box_tr.lmp id1\gfx\box_bm.lmp id1\gfx\box_mm.lmp id1\gfx\box_mm2.lmp id1\gfx\box_tm.lmp id1\gfx\pop.lmp id1\gfx\menudot1.lmp id1\gfx\menudot2.lmp id1\gfx\menudot3.lmp id1\gfx\menudot4.lmp id1\gfx\menudot5.lmp id1\gfx\menudot6.lmp id1\gfx\palette.lmp id1\gfx\p_save.lmp id1\gfx\ttl_main.lmp id1\gfx\p_load.lmp id1\gfx\menuplyr.lmp id1\gfx\pause.lmp id1\gfx\ttl_sgl.lmp id1\gfx\dim_drct.lmp id1\gfx\dim_ipx.lmp id1\gfx\dim_modm.lmp id1\gfx\dim_mult.lmp id1\gfx\dim_tcp.lmp id1\gfx\netmen1.lmp id1\gfx\netmen2.lmp id1\gfx\netmen3.lmp id1\gfx\netmen4.lmp id1\gfx\netmen5.lmp id1\gfx\loading.lmp id1\gfx\p_option.lmp id1\gfx\ranking.lmp id1\gfx\ttl_cstm.lmp id1\gfx\complete.lmp id1\gfx\qplaque.lmp id1\gfx\bigbox.lmp id1\gfx\p_multi.lmp id1\gfx\vidmodes.lmp id1\gfx\finale.lmp id1\gfx\mp_menu.lmp id1\gfx\sp_menu.lmp id1\gfx\colormap.lmp id1\gfx\inter.lmp id1\gfx\mainmenu.lmp id1\gfx\conback.lmp id1\gfx\help0.lmp id1\gfx\help1.lmp id1\gfx\help2.lmp id1\gfx\help3.lmp id1\gfx\help4.lmp id1\gfx\help5.lmp id1\gfx\sell.lmp id1\maps\b_rock1.bsp id1\maps\b_rock0.bsp id1\maps\b_bh10.bsp id1\maps\b_batt1.bsp id1\maps\b_exbox2.bsp id1\maps\b_batt0.bsp id1\maps\b_nail0.bsp id1\maps\b_nail1.bsp id1\maps\b_shell0.bsp id1\maps\b_shell1.bsp id1\maps\b_bh100.bsp id1\maps\b_bh25.bsp id1\maps\b_explob.bsp id1\maps\dm4.bsp id1\maps\dm6.bsp id1\maps\end.bsp id1\maps\dm5.bsp id1\maps\dm1.bsp id1\maps\e1m7.bsp id1\maps\dm2.bsp id1\maps\e1m8.bsp id1\maps\dm3.bsp id1\maps\e3m3.bsp id1\maps\e3m2.bsp id1\maps\e1m6.bsp id1\maps\e3m7.bsp id1\maps\e4m8.bsp id1\maps\e4m2.bsp id1\maps\e4m6.bsp id1\maps\e2m6.bsp id1\maps\e1m3.bsp id1\maps\e2m4.bsp id1\maps\e2m2.bsp id1\maps\e4m5.bsp id1\maps\e4m4.bsp id1\maps\e1m5.bsp id1\maps\e4m3.bsp id1\maps\e2m3.bsp id1\maps\e1m2.bsp id1\maps\e3m1.bsp | id1\maps\e4m1.bsp id1\maps\e1m1.bsp id1\maps\e2m5.bsp id1\maps\e3m4.bsp id1\maps\e2m7.bsp id1\maps\e3m6.bsp id1\maps\e2m1.bsp id1\maps\e1m4.bsp id1\maps\start.bsp id1\maps\e3m5.bsp id1\maps\e4m7.bsp id1\progs\spike.mdl id1\progs\s_spike.mdl id1\progs\grenade.mdl id1\progs\eyes.mdl id1\progs\h_zombie.mdl id1\progs\h_guard.mdl id1\progs\b_g_key.mdl id1\progs\b_s_key.mdl id1\progs\gib1.mdl id1\progs\invisibl.mdl id1\progs\h_knight.mdl id1\progs\w_g_key.mdl id1\progs\w_s_key.mdl id1\progs\lavaball.mdl id1\progs\zom_gib.mdl id1\progs\laser.mdl id1\progs\h_mega.mdl id1\progs\bolt2.mdl id1\progs\bolt3.mdl id1\progs\m_g_key.mdl id1\progs\m_s_key.mdl id1\progs\teleport.mdl id1\progs\v_spike.mdl id1\progs\w_spike.mdl id1\progs\h_player.mdl id1\progs\h_wizard.mdl id1\progs\h_ogre.mdl id1\progs\gib2.mdl id1\progs\h_hellkn.mdl id1\progs\k_spike.mdl id1\progs\backpack.mdl id1\progs\end3.mdl id1\progs\bolt.mdl id1\progs\end1.mdl id1\progs\gib3.mdl id1\progs\invulner.mdl id1\progs\h_dog.mdl id1\progs\end4.mdl id1\progs\s_light.mdl id1\progs\h_shal.mdl id1\progs\g_nail2.mdl id1\progs\g_shot.mdl id1\progs\g_nail.mdl id1\progs\h_demon.mdl id1\progs\h_shams.mdl id1\progs\quaddama.mdl id1\progs\g_rock2.mdl id1\progs\end2.mdl id1\progs\v_shot.mdl id1\progs\armor.mdl id1\progs\flame.mdl id1\progs\g_rock.mdl id1\progs\g_light.mdl id1\progs\v_shot2.mdl id1\progs\suit.mdl id1\progs\v_nail.mdl id1\progs\v_light.mdl id1\progs\missile.mdl id1\progs\v_axe.mdl id1\progs\v_rock2.mdl id1\progs\v_rock.mdl id1\progs\wizard.mdl id1\progs\flame2.mdl id1\progs\v_nail2.mdl id1\progs\shalrath.mdl id1\progs\fish.mdl id1\progs\tarbaby.mdl id1\progs\shambler.mdl id1\progs\knight.mdl id1\progs\demon.mdl id1\progs\oldone.mdl id1\progs\dog.mdl id1\progs\soldier.mdl id1\progs\enforcer.mdl id1\progs\ogre.mdl id1\progs\zombie.mdl id1\progs\player.mdl id1\progs\boss.mdl id1\progs\hknight.mdl id1\progs\s_bubble.spr id1\progs\s_light.spr id1\progs\s_explod.spr id1\sound\ambience\drone6.wav id1\sound\ambience\windfly.wav id1\sound\ambience\fire1.wav id1\sound\ambience\wind2.wav id1\sound\ambience\buzz1.wav id1\sound\ambience\hum1.wav id1\sound\ambience\thunder1.wav id1\sound\ambience\fl_hum1.wav id1\sound\ambience\water1.wav id1\sound\ambience\comp1.wav id1\sound\ambience\swamp1.wav id1\sound\ambience\swamp2.wav id1\sound\ambience\suck1.wav | id1\sound\ambience\drip1.wav id1\sound\blob\sight1.wav id1\sound\blob\land1.wav id1\sound\blob\hit1.wav id1\sound\blob\death1.wav id1\sound\boss1\throw.wav id1\sound\boss1\pain.wav id1\sound\boss1\sight1.wav id1\sound\boss1\death.wav id1\sound\boss1\out1.wav id1\sound\boss2\idle.wav id1\sound\boss2\pop2.wav id1\sound\boss2\sight.wav id1\sound\boss2\death.wav id1\sound\buttons\switch04.wav id1\sound\buttons\switch02.wav id1\sound\buttons\switch21.wav id1\sound\buttons\airbut1.wav id1\sound\demon\dland2.wav id1\sound\demon\dpain1.wav id1\sound\demon\dhit2.wav id1\sound\demon\djump.wav id1\sound\demon\sight2.wav id1\sound\demon\idle1.wav id1\sound\demon\ddeath.wav id1\sound\dog\dsight.wav id1\sound\dog\idle.wav id1\sound\dog\dpain1.wav id1\sound\dog\dattack1.wav id1\sound\dog\ddeath.wav id1\sound\doors\ddoor2.wav id1\sound\doors\latch2.wav id1\sound\doors\ddoor1.wav id1\sound\doors\medtry.wav id1\sound\doors\airdoor2.wav id1\sound\doors\basesec2.wav id1\sound\doors\basetry.wav id1\sound\doors\hydro2.wav id1\sound\doors\meduse.wav id1\sound\doors\hydro1.wav id1\sound\doors\stndr2.wav id1\sound\doors\stndr1.wav id1\sound\doors\drclos4.wav id1\sound\doors\runetry.wav id1\sound\doors\airdoor1.wav id1\sound\doors\basesec1.wav id1\sound\doors\doormv1.wav id1\sound\doors\winch2.wav id1\sound\doors\baseuse.wav id1\sound\doors\runeuse.wav id1\sound\enforcer\enfstop.wav id1\sound\enforcer\pain2.wav id1\sound\enforcer\sight4.wav id1\sound\enforcer\pain1.wav id1\sound\enforcer\sight1.wav id1\sound\enforcer\sight3.wav id1\sound\enforcer\sight2.wav id1\sound\enforcer\enfire.wav id1\sound\enforcer\death1.wav id1\sound\enforcer\idle1.wav id1\sound\fish\bite.wav id1\sound\fish\death.wav id1\sound\fish\idle.wav id1\sound\hknight\slash1.wav id1\sound\hknight\grunt.wav id1\sound\hknight\idle.wav id1\sound\hknight\hit.wav id1\sound\hknight\pain1.wav id1\sound\hknight\death1.wav id1\sound\hknight\attack1.wav id1\sound\hknight\sight1.wav id1\sound\items\r_item1.wav id1\sound\items\r_item2.wav id1\sound\items\armor1.wav id1\sound\items\health1.wav id1\sound\items\itembk2.wav id1\sound\items\damage3.wav id1\sound\items\inv1.wav id1\sound\items\suit.wav id1\sound\items\protect.wav id1\sound\items\protect3.wav id1\sound\items\damage.wav id1\sound\items\damage2.wav id1\sound\items\inv2.wav id1\sound\items\suit2.wav id1\sound\items\inv3.wav id1\sound\items\protect2.wav id1\sound\knight\sword1.wav id1\sound\knight\sword2.wav id1\sound\knight\khurt.wav id1\sound\knight\kdeath.wav id1\sound\knight\idle.wav id1\sound\knight\ksight.wav id1\sound\misc\null.wav id1\sound\misc\talk.wav id1\sound\misc\menu3.wav id1\sound\misc\water2.wav id1\sound\misc\water1.wav id1\sound\misc\outwater.wav id1\sound\misc\menu1.wav id1\sound\misc\basekey.wav id1\sound\misc\secret.wav id1\sound\misc\r_tele1.wav id1\sound\misc\r_tele4.wav id1\sound\misc\medkey.wav id1\sound\misc\menu2.wav | id1\sound\misc\h2ohit1.wav id1\sound\misc\runekey.wav id1\sound\misc\r_tele2.wav id1\sound\misc\r_tele3.wav id1\sound\misc\power.wav id1\sound\misc\trigger1.wav id1\sound\misc\r_tele5.wav id1\sound\ogre\ogpain1.wav id1\sound\ogre\ogidle2.wav id1\sound\ogre\ogdrag.wav id1\sound\ogre\ogidle.wav id1\sound\ogre\ogdth.wav id1\sound\ogre\ogsawatk.wav id1\sound\ogre\ogwake.wav id1\sound\plats\train2.wav id1\sound\plats\medplat2.wav id1\sound\plats\plat2.wav id1\sound\plats\medplat1.wav id1\sound\plats\plat1.wav id1\sound\plats\train1.wav id1\sound\player\axhit2.wav id1\sound\player\land.wav id1\sound\player\pain2.wav id1\sound\player\drown2.wav id1\sound\player\pain1.wav id1\sound\player\plyrjmp8.wav id1\sound\player\pain4.wav id1\sound\player\pain3.wav id1\sound\player\pain6.wav id1\sound\player\lburn2.wav id1\sound\player\land2.wav id1\sound\player\lburn1.wav id1\sound\player\axhit1.wav id1\sound\player\tornoff2.wav id1\sound\player\pain5.wav id1\sound\player\death2.wav id1\sound\player\gasp1.wav id1\sound\player\drown1.wav id1\sound\player\death1.wav id1\sound\player\death3.wav id1\sound\player\inlava.wav id1\sound\player\inh2o.wav id1\sound\player\h2ojump.wav id1\sound\player\slimbrn2.wav id1\sound\player\gasp2.wav id1\sound\player\death4.wav id1\sound\player\teledth1.wav id1\sound\player\gib.wav id1\sound\player\death5.wav id1\sound\player\udeath.wav id1\sound\player\h2odeath.wav id1\sound\shalrath\pain.wav id1\sound\shalrath\death.wav id1\sound\shalrath\attack2.wav id1\sound\shalrath\idle.wav id1\sound\shalrath\attack.wav id1\sound\shalrath\sight.wav id1\sound\shambler\shurt2.wav id1\sound\shambler\melee1.wav id1\sound\shambler\smack.wav id1\sound\shambler\sidle.wav id1\sound\shambler\melee2.wav id1\sound\shambler\sattck1.wav id1\sound\shambler\sboom.wav id1\sound\shambler\ssight.wav id1\sound\shambler\sdeath.wav id1\sound\soldier\pain1.wav id1\sound\soldier\pain2.wav id1\sound\soldier\death1.wav id1\sound\soldier\idle.wav id1\sound\soldier\sight1.wav id1\sound\soldier\sattck1.wav id1\sound\weapons\tink1.wav id1\sound\weapons\ax1.wav id1\sound\weapons\lock4.wav id1\sound\weapons\ric1.wav id1\sound\weapons\pkup.wav id1\sound\weapons\bounce.wav id1\sound\weapons\grenade.wav id1\sound\weapons\shotgn2.wav id1\sound\weapons\rocket1i.wav id1\sound\weapons\ric2.wav id1\sound\weapons\ric3.wav id1\sound\weapons\spike2.wav id1\sound\weapons\guncock.wav id1\sound\weapons\r_exp3.wav id1\sound\weapons\sgun1.wav id1\sound\weapons\lhit.wav id1\sound\weapons\lstart.wav id1\sound\wizard\hit.wav id1\sound\wizard\wpain.wav id1\sound\wizard\wsight.wav id1\sound\wizard\widle1.wav id1\sound\wizard\wdeath.wav id1\sound\wizard\widle2.wav id1\sound\wizard\wattack.wav id1\sound\zombie\z_fall.wav id1\sound\zombie\z_shot1.wav id1\sound\zombie\z_hit.wav id1\sound\zombie\z_miss.wav id1\sound\zombie\z_pain.wav id1\sound\zombie\z_idle1.wav id1\sound\zombie\z_pain1.wav id1\sound\zombie\z_gib.wav id1\sound\zombie\z_idle.wav id1\sound\zombie\idle_w2.wav |
52 megabytes de gráficos, sons e outras coisas... Se você extraísse todos estes arquivos e deletasse os arquivos PAK, o Quake continuaria funcionando. Mas não faça isso, pois você pode acabar estragando a sua cópia do Quake e tendo que reinstalar o jogo!
Os arquivos estão separados nestes diretórios:
id1\ - programa (PROGS.DAT), demos (*.DEM) e outros
id1\gfx\ - gráficos de letras, menus, telas, console, barra de status, etc. (*.LMP)
id1\maps\ - mapas do jogo (*.BSP)
id1\progs\ - modelos 3D (*.MDL)
id1\sound\ - sons (*.WAV)
Os sons ainda estão separados em outros subdiretórios:
id1\sound\ambience\ - sons ambientais
id1\sound\blob\ - monstro Spawn
id1\sound\boss1\ - Chthon, boss do primeiro episódio
id1\sound\boss2\ - Shub Niggurath, boss do jogo
id1\sound\buttons\ - botões
id1\sound\demon\ - mostro Fiend
id1\sound\dog\ - mostro Rottweiler
id1\sound\doors\ - portas
id1\sound\enforcer\ - monstro Enforcer
id1\sound\fish\ - monstro Fish
id1\sound\hknight\ - mostro Hell Knight
id1\sound\items\ - itens, armas...
id1\sound\knight\ - mostro Knight
id1\sound\misc\ - água, teleporters e outros
id1\sound\ogre\ - monstro Ogre
id1\sound\plats\ - plataformas, trens...
id1\sound\player\ - sons do jogador
id1\sound\shalrath\ - monstro Vore
id1\sound\shambler\ - monstro Shambler
id1\sound\soldier\ - monstro Soldier
id1\sound\weapons\ - sons das armas do jogador
id1\sound\wizard\ - monstro Wizard
id1\sound\zombie\ - monstro Zombie
Note que todas as conversões que você usa são instaladas em um novo diretório abaixo do diretório \QUAKE, ex:
\quake\modif1
\quake\modif2
\quake\modif3
...
Caso você queira jogar o mod instalado no diretório \QUAKE\MODIF1, você roda o Quake com o comando 'QUAKE -game modif1', certo? Isso faz com que o Quake procure primeiro por arquivos de dados neste diretório, e adicione-os aos arquivos que já estão no diretório \QUAKE\ID1.
É só isso... quando você não usa o parâmetro game, o Quake utiliza apenas os arquivos de dados do diretório original \QUAKE\ID1.
Mas, o que acontece se um arquivo do diretório adicional possuir um nome igual à outro no diretório ID1?? Ahá! Neste caso, o arquivo original é substituído pelo arquivo novo! Desta forma, podemos trocar todos os mapas, sons, modelos, etc. do jogo, apenas criando alguns diretórios e copiando os arquivos a serem usados para os locais corretos!
Exemplo: o arquivo \quake\id1\sound\weapons\guncock.wav (ele está emPAKotado, não se esqueça! :) é o som do tiro da espingarda (Shotgun). Como fazer para substituí-lo por outro, fazendo com que a Shotgun tenha um som melhor do que aquele 'peidinho' original?
É muito simples! Siga estes passos para fazer a substituição:
No final você irá ficar com dois arquivos guncock.wav:
\quake\id1\sound\weapons\guncock.wav (som original)
\quake\testesom\sound\weapons\guncock.wav (som novo)
Pronto! Agora, inicie o Quake com 'QUAKE -game testesom' e dê uns tiros com a Shotgun para ouvir a diferença!
Que barbada, hein? Você pode substituir TODOS os sons do jogo dessa maneira!
Recomendo que você pegue um utilitário de extração de arquivos PAK, que pode ser encontrado na Warlock's Games Files. Assim você pode extrair e tocar todos os sons do jogo para ver o quê cada um é, e depois substituí-los.
Você deve estar se perguntando: mas, e se eu criar um som com um nome novo? Como o Quake vai usá-lo? Por exemplo, um som socorro.wav que deve ser usado quando o jogador aperta uma certa tecla? E se eu tiver um modelo 3D de um monstro novo feioso.mdl, como faço para colocá-lo em ação??
Estas perguntas serão respondidas na próxima parte desta série, quando iremos dar uma olhada mais de perto no arquivo PROGS.DAT...
Mande sua opinião sobre este tutorial para mim! Obrigado!
-Spinal