ResGen

Od HLDS.pl
Skocz do: nawigacji, wyszukiwania

Spis treści

Opis

ResGen to program do tworzenia plików .res, które są wykorzystywane w HLDS.

Pliki .res zawierają listę zasobów potrzebnych do prawidłowego odpalenia mapki przez serwer jak i klienta. Jest to w rzeczywistości plik tekstowy, można go edytować notepadem albo stworzyć od zera innym edytorem tekstu. Jednak po co się męczyć - do tworzenia plików .res stosujemy program resgen, który za nas odwali kawał roboty.

Linki

Kompilacja ze źródeł

Dostępne są żródła, szczególnie pomocne jak mamy linuksa z nowym gcc a nie jakieś archaizmy z 2003 roku.

Pod linuksem dla potrzeb nowego gcc-4.3 trzeba zmienic troche makefile, zmienić CFLAGS oraz LDFLAGS

  • z CFLAGs usuwamy -m486
  • do LDFLAGS dodajemy -lstdc++ aby dodac standardowe biblioteki c++
#full optimization
CFLAGS=$(BASE_CFLAGS) -w -s  -O2 \
        -ffast-math -funroll-loops \
        -fexpensive-optimizations -malign-loops=2 \
        -malign-jumps=2 -malign-functions=2

LDFLAGS=-lstdc++

do tego trzeba zmienic vstring.h - zastapnic VString::InstrRev na InstrRev

// int VString::InstrRev(char *search, int start);
int InstrRev(char *search, int start);

Tworzymy jeszcze katalog obj/ Po tych zmianach makefile powinen nie zgłaszać błędów.

Pod windows powinno działać bez zmian, no chyba, że mamy gcc-4.3 - nie testowałem.

Komendy

Podstawowa komenda i słownik angielskiego podają nam informacje jak używać aplikacji (z konsoli)

resgen --help

(tłumaczenie)

RESGen version 2.0 BETA 2, Copyright (C) 2000-2003 Jeroen Bogers
RESGen comes with ABSOLUTELY NO WARRANTY; for details
use the command line switch '-w'.  This is free software,
and you are welcome to redistribute it under certain
conditions; see the 'gpl.txt' file for details.

Parametry:
-h           wyświetla help (po angielsku)
-c           wyświetla listę autorów
-w           pokazuje rozszerzony ekran z prawami autorskimi
-v           uruchamia tzw. silent mode czyli bardzo mało wyników na ekranie się będzie pojawiać
-s           nie wyświetla linii statusu
-i           nie wyświetla aktualnego folderu podczas poszukiwania plików z mapami
-j           nie wyświetla listy znalezionych zasobów podczas przetwarzania mapy
-d [folder]  przetwarzaj cały folder (z mapami)
-r [folder]  tak jak -d, ale schodzi do podkatalogów (np przy generowaniu plików .res dla wszystkich map wszystkich modów)
-f [nazwa]   przetwarzaj mapę o nazwie 'nazwa'
[map]        tak samo jak -f
-x [nazwa]   nie przetwarzaj mapy o nazwie 'nazwa', użyteczne przy parametrach -d i -r
-o           nadpisz istniejące pliki .res
-a [rfafile] dodaj zawartość pliku .rfa o pliku .res (przy dodawaniu np dźwięków multikill)
-l           nie przetwarzaj nazw plików na małe litery (teoretycznie ważne na linuksie szczególnie przy użyciu sv_dowloadurl, ale aktualnie naprawione)
-e [modpath] sprawdź ścieżkę 'modpath' w poszukiwaniu zasobów
-p           nie szukaj zasobów w plikach .pak (z czasów cs 1.5)
-t           ignoruj linki symboliczne podczas szukania zasobów (linux only)

Przykład:
   resgen -f boot_camp -d . -r ../mappack -e hlds_l/cstrike

Przed uruchomieniem pliku resgen z mapami najlepiej jeśli zrobicie sobie gdzieś kopie plików .res (np w podkatalogu maps/bak)

Najlepiej program resgen umieścić w katalogu cstrike i uruchamiamy z konsoli.

resgen -t -d maps -o -e

Wtedy przemieli wszystkie mapki i stworzy dla każdej plik .res, Uwaga ten proces może być czasochłonny!

Dlatego lepiej dla jednej mapy wpisać:

resgen -t -f nazwa_mapy -o -e

Dla naszej mapki de_biochem komenda wiec będzie wyglądać tak:

resgen -t -f maps/de_biochem -o -e

Wtedy pojawi się na ekranie cos w rodzaju poniższego tekstu:

Added "maps/de_biochem.bsp" to map list


Creating .res file for maps/de_biochem.bsp [1/1]:
halflife.wad
decals.wad
gfx/env/dashdesert256_up.tga
gfx/env/dashdesert256_dn.tga
gfx/env/dashdesert256_lf.tga
gfx/env/dashdesert256_rt.tga
gfx/env/dashdesert256_ft.tga
gfx/env/dashdesert256_bk.tga
models/tnt.mdl
maps/de_biochem.txt


Done creating res file(s)! 1 file(s) were generated.

W efekcie powinien powstać plik maps/de_biochem.res o poniższej zawartości

// de_biochem.res - created with RESGen v2.0 BETA 2.
// RESGen is made by Jeroen "ShadowLord" Bogers.
// For more info go to http://resgen.hltools.com
// or E-mail me at resgen@hltools.com.

// .res entries (10):
halflife.wad
decals.wad
gfx/env/dashdesert256_up.tga
gfx/env/dashdesert256_dn.tga
gfx/env/dashdesert256_lf.tga
gfx/env/dashdesert256_rt.tga
gfx/env/dashdesert256_ft.tga
gfx/env/dashdesert256_bk.tga
models/tnt.mdl
maps/de_biochem.txt

Jeśli mamy dźwięki w katalogu sound/misc/ multikill, hedshot i chcemy aby były ściągane przez graczy na przykład:

sound/misc/headshot.wav
sound/misc/holyshit.wav

oraz widok mapy z góry:

overviews/de_biochem.txt
overviews/de_biochem.bmp

to możemy do tego pliku je dodać ręcznie, uzyskując w efekcie końcowym taki plik:

// de_biochem.res - created with RESGen v2.0 BETA 2.
// RESGen is made by Jeroen "ShadowLord" Bogers.
// For more info go to http://resgen.hltools.com
// or E-mail me at resgen@hltools.com.

// .res entries (10):
halflife.wad
decals.wad
gfx/env/dashdesert256_up.tga
gfx/env/dashdesert256_dn.tga
gfx/env/dashdesert256_lf.tga
gfx/env/dashdesert256_rt.tga
gfx/env/dashdesert256_ft.tga
gfx/env/dashdesert256_bk.tga
models/tnt.mdl
maps/de_biochem.txt

sound/misc/headshot.wav
sound/misc/holyshit.wav

overviews/de_biochem.txt
overviews/de_biochem.bmp


Uwaga, nie należy dodawać za dużo dźwięków, bo może się nie załadować mapka - serwer się wyłoży, szczególnie jest to zauważalne przy mapach typu de_aztec, de_oimec i innych, gdzie jest dużo ekstra modeli, tekstur, efektów itp, i wtedy limit 512 obiektów jest przekraczany i serwer się wykłada. Wtedy trzeba ręcznie usunąć nadmiarową ilość wpisów z pliku .res i spróbować załadować mapkę jeszce raz.

NIE NALEŻY dodawać plików .wav typu multikill i headshot, jeśli używamy pluginów do AMX Mod czy AMX Mod X, które robią to za nas, np sank sounds, czy psycho sounds i temu podobne.

Dodawanie masowe plików

Masowe dodawanie plików .wav do zassania. Czyli mamy własne dźwięki i chcemy dodać do wszelkich map na jakich gramy aby na pewno były ściągalne.

Dodajemy listę plików do pliku lista.rfa na przykład

sound/misc/dominating.wav
sound/misc/firstblood.wav
sound/misc/headshot.wav
sound/misc/holyshit.wav
sound/misc/holyshit_q3.wav
sound/misc/humiliation.wav

Odpalamy resgen z dodatkowym parametrem -a lista.rfa, aby stworzyć pliki .res oraz aby zawierały naszą listę dodatkowych zasobów:

resgen -t -d maps -o -e -a lista.rfa

Od tego momentu wszelkie pliki .res powinny mieć dodatkowo nasze dźwięki (i inne rzeczy) dodane, i powinnny się ściągać z serwera, jeśli klient na to pozwala.

Problemy

Resgen nie dodaje overview Wiem, że poprzednie wersje resgen'a mialy błąd i w ogóle nie dodawały plików overview, wtedy trzeba dorwać nowsza wersje resgen'a, albo obejść problem - można overview dodać ręczne, nie mówiąc o tym ze najpierw trzeba dostać/zrobić pliki overview, ale i tak z tego trybu pewnie korzysta maks 5% graczy i to tylko wtedy gdy widok mapki nie jest zablokowany.

Skrypt multiRes (win)

Przy 20 mapach utworzenie ręcznie plików resource troszkę czasu zajmuje, ale jest to osiągalne, ale w przypadku 100, 200 lub ~1700 map jest to awykonalne. Poniżej prezentuje dwa proste skrypty do utworzenia plików resource (res), także plików konfiguracji mapconfig, dla wszystkich posiadanych map, włączenie z overviews. Pliki należy zapisać/utworzyć w wraz z programem ResGen.exe w katalogu cstrike. Działanie jest proste: 1.cmd tworzy listę map z katalogu /maps zapisuje je odpowiednio przetworzone w pliku 2.cmd res.cmd tworzy pliki resource (.res), AMXModX mapconfig dla pluginów (.ini) oraz AMXModX mapconfig dla cvarów (.cfg), sprawdza czy istnieją podglądy mapy w katalogu overviews


zawartość pliku 1.cmd

@echo off > newfile & setLocal enableDELAYedexpansion 
 
dir maps\*.bsp /B >> 2.cmd
for /f "tokens=* delims= " %%a in ('echo 2.cmd') do ( 
for /f "tokens=* delims= " %%t in (%%a) do ( 
set S=%%t 
 
set S=!S:.bsp =! 
>> newfile echo @call res.cmd !S! 
) 
copy newfile "%%a" > nul 
) 
del newfile

zawartość pliku res.cmd

@echo off > newfile & setLocal enableDELAYedexpansion 
 
IF NOT EXIST maps\%1.bsp (
ECHO [ BLAD ] NIE MA TAKIEJ MAPY LUB UZYJ NAZWY MAPY BEZ ROZSZERZENIA 
GOTO end
)
 
@echo RESOURCE DLA MAPY [ %1.bsp ] >> _lista
@resgen.exe -v -o -f maps\%1.bsp >> _lista
 
cd maps
for /f "tokens=* delims= " %%a in ('echo %1.res') do ( 
for /f "tokens=* delims= " %%t in (%%a) do ( 
set S=%%t 
 
REM nie ma sensu by w pliku resource sprawdzało standardowe pliki tekstur w hl i cs16
 
set S=!S:models/player=//-! 
set S=!S:ajawad.wad=//-! 
set S=!S:cached.wad=//-! 
set S=!S:chateau.wad=//-!
set S=!S:cs_747.wad=//-!
set S=!S:cs_assault.wad=//-!
set S=!S:cs_bdog.wad=//-!
set S=!S:cs_cbble.wad=//-!
set S=!S:cs_dust.wad=//-!
set S=!S:cs_havana.WAD=//-!
set S=!S:cs_office.wad=//-!
set S=!S:cstraining.wad=//-!
set S=!S:cstrike.wad=//-!
set S=!S:de_airstrip.wad=//-!
set S=!S:de_aztec.wad=//-!
set S=!S:de_piranesi.wad=//-!
set S=!S:de_storm.wad=//-!
set S=!S:de_vertigo.wad=//-!
set S=!S:decals.wad=//-!
set S=!S:iga_static.wad=//-!
set S=!S:itsitaly.wad=//-!
set S=!S:n0th1ng.wad=//-!
set S=!S:prodigy.wad=//-!
set S=!S:torntextures.wad=//-!
set S=!S:tswad.wad=//-!
set S=!S:gfx.wad=//-!
set S=!S:halflife.wad=//-!
set S=!S:liquids.wad=//-!
set S=!S:spraypaint.wad=//-!
set S=!S:xeno.wad=//-!
>> newfile echo !S! 
) 
copy newfile "%%a" > nul 
 
) 
 
rem dodawanie widoków
IF EXIST ..\overviews\%1.bmp ECHO overviews/%1.bmp >> %1.res
IF EXIST ..\overviews\%1.tga ECHO overviews/%1.tga >> %1.res
IF EXIST ..\overviews\%1.txt ECHO overviews/%1.txt >> %1.res
 
rem sprawdzanie poprawności oryginalnych plików np smoke
ECHO sprites/gas_puff_01.spr >> %1.res
ECHO sprites/smokepuff.spr >> %1.res
del newfile 
cd ..
del newfile 
 
rem mapconfig pluginy on off
IF NOT EXIST addons\nul md addons\amxmodx\configs\maps\
echo MAPCONFIG [%1.BSP]
cd addons\amxmodx\configs\maps\
echo ;; MAPCONFIG PLUGINS INI [%1.BSP] >> plugins-%1.ini
echo ;; http://wiki.alliedmods.net/Configuring_AMX_Mod_X#Map_Specific_Plugins >> plugins-%1.ini
 
rem mapconfig cvar
echo ;; MAPCONFIG CVAR CFG [%1.BSP] >> %1.cfg
echo ;; http://wiki.alliedmods.net/Configuring_AMX_Mod_X#Map_Config_Files >> %1.cfg
echo amx_restrict on shield >> %1.cfg
echo amx_pausecfg stop M_Antirusher_2.6.amxx >> %1.cfg
cd ..
cd ..
cd ..
cd ..
 
:end 

kolejność uruchamiana: 1.cmd po zakończeniu 2.cmd

dla pojedynczej mapy można użyć polecenia res.cmd <nazwamapy>

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia