Modelowanie
Autor: Ernie (korekta: Valique)
Data publikacji: 23-08-2001
Sprite to nic innego, jak tekstura, kt≤ra istnieje tylko w postaci 2D. W Half-Life (jak i oczywi╢cie w Counter Strike) sprite'ami s▒: tryskaj▒ca krew (heh), dym, wszystko, co iskrzy, wybucha, do tego jeszcze dochodzi ca│y HUD czyli info o health, armor i broni na ekranie. Wszystkie sprajty w Half-Life maj▒ rozszerzenie: "spr" i znajduj▒ siΩ w pliku valve\pak0.pak w katalogu paka \sprites.
W prosty spos≤b mo┐esz znacznie zmieniµ wygl▒d gry. Wystarczy mieµ:
- SprView -
http://www.planethalflife.com/mach3
- SprWizard
[pobierz plik] -
http://www.planethalflife.com/wavelength/2dart
- PakExplorer/PakScape (albo inny program kt≤ry rozpakowywuje *.pak). Przydatny mo┐e byµ r≤wnie┐ Wally.
Czasami warto przy okazji przegl▒dania paka zmieniµ np. krew pojawiaj▒ c▒ siΩ na ╢cianach, albo dziury po kulach. Wystarczy potraktowaµ wallym plik decals.wad.
OK, co mo┐na z tym zrobiµ...?
Prosty ale sprytny programik. Nie bΩdΩ przecie┐ go opisywaµ !! Zwr≤cΩ uwagΩ na dwie rzeczy: "Save sequence" - tak nale┐y zapisaµ sprite'y animowane. Opr≤cz tego program pyta nas, czy tworzyµ skrypt do tego. Je╢li mamy zamiar u┐ywaµ SprWizarda to nie musimy go tworzyµ. I druga bardzo wa┐na rzecz to "Sprite Information" w menu "View". Podaje nam maxymaln▒ wielko╢µ jak▒ mo┐e mieµ sprite, ilo╢µ klatek i rodzaj u┐ytej przezroczysto╢ci - "Transparency mode", informacje te s▒ nam potrzebne do dalszej obr≤bki. Je┐eli mamy ju┐ sprite'y zapisane w bitmapie to mo┐na i╢µ dalej.
Jeszcze raz zapraszam do http://www.planethalflife.com/wavelength. ªwietna stronka ze ╢wietnymi programikami dla tych, kt≤rym nie wystarczy samo granie po sieci. Jednym z produkt≤w Wavelenght jest wspomniany Sprite Wizard. To jest wrΩcz co╢ wspania│ego, nie trzeba nawet mΩczyµ siΩ ze skryptami. Ale do rzeczy! Przypuszczam, ┐e u┐yjesz do edycji twojego sprite'u w formacie BMP Photoshopa albo czego╢ podobnego (wiem, ┐e siΩ powtarzam ale: mo┐na u┐yµ Wally'ego!). Zawsze ale to zawsze nale┐y pamiΩtaµ o podstawowych zasadach:
- wielko╢µ sprite'≤w musi byµ wielokrotno╢ci▒ 8 czyli np.8x8, 16x16 , 32x32 itd.
- paleta kolor≤w musi byµ 8 bitowa (256 kolor≤w), wiΩc je┐eli u┐ywasz np. Paint Shop'a to pod koniec nie zapomnij zmniejszyµ palety z 16 mln do 256.
- je┐eli sprite sk│ada siΩ z wielu klatek, to ka┐da musi byµ zrobiona w identycznej palecie kolor≤w.
- s▒ cztery rodzaje tryb≤w wy╢wietlania sprite'a (ang. Transparency Mode) i trzeba wiedzieµ kt≤ry typ reprezentuje dany sprite aby potem dzia│a│ poprawnie.
A wiΩc wyr≤┐niamy: additive, alphatest, indexalpha, i normal. Najlepiej w SprView zobaczyµ jaki rodzaj reprezentuje dany sprite i tak go p≤┐niej zapisaµ.
Pierwszy tryb - additive - jest najczΩsciej wystΩpuj▒cym: u┐ywa palety 256 kolor≤w ale ostatni z nich jest kolorem t│a (przezroczysty):
Ten w niebieskim k≤│ku jest oczywi╢cie t│em i pozostaje niewidoczny w grze.
NastΩpny rodzaj to alphatest. Zasada jest taka sama tylko, ┐e w additive t│o jest zmieszane z kolorem sprite'u (to nie jest precyzyjne okre╢lenie ale sp≤jrz wy┐ej na paletΩ gdzie zielony przechodzi stopniowo w czarny) a w alphatest kolorem t│a jest jakikolwiek inny (ostatni w palecie). Do alphatest nale┐y np. crosshairs.spr - podstawowe celowniki.
Indexalpha - wszystkie te sprite'y s▒ w skali szaro╢ci. Zasady s▒ takie same jak przy teksturach "decals" (np. plama krwi, po otwarciu pliku decals.wad, jest czarno bia│a - im ciemniejszy kolor tym bardziej czerwony). I tu uwaga: ostatni kolor jest kolorem rzeczywistym (tzn. np. dla krwi bΩdzie to czerwony).
Normal - nie posiada t│a. Jedynym sprite'em typu normal jest lgtning.spr. W praktyce normal jest taki sam jak additive, ale przypuszczam, ┐e nie bΩdzie nikt tego u┐ywa│.
Masz ju┐ gotowe pliki BMP?. Uruchom SprWiz.exe. Obs│uga programu jest banalnie prosta: za│aduj obrazek, zobacz czy wszystkie klatki (je┐eli jest ich wiΩcej ni┐ 1) s▒ ustawione w dobrej kolejno╢ci, wybierz rodzaj przezroczysto╢ci i,
je┐el wszystko jest OK, kliknij FINISH !!!.
Skopiuj zapisany plik (pamiΩtaj o zachowaniu tej samej nazwy, co orygina│, je╢li podmieniasz sprite'a) do cstrike/sprites
(), jak potrzeba to zast▒p stary nowym (zr≤b back-up). Dalej wiesz, co robiµ.
Co w przypadku, gdy zrobili╢my nowy model broni do CS'a i chcemy/musimy zrobiµ do niego hud'a?
Po pierwsze robimy odpowiedniego sprajta (wszystkie hud'y s▒ typu additive):
A teraz musimy odpowiednio zedytowaµ plik *.txt. Je┐eli zrobili╢my model dla m249 to otwieramy plik weapon_m249.txt. Wygl▒da to tak:
10
weapon 320 320hud1 160 0 80 20
weapon_s 320 320hud1 160 20 80 20
ammo 320 640hud7 0 96 24 24
crosshair 320 crosshairs 24 0 24 24
autoaim 320 crosshairs 0 72 24 24
weapon 640 640hud3 0 0 170 45
weapon_s 640 640hud6 0 0 170 45
ammo 640 640hud7 0 96 24 24
crosshair 640 crosshairs 24 0 24 24
autoaim 640 crosshairs 0 72 24 24
Je┐eli nzwali╢my naszego sprajta "w_m249" to zawarto╢µ pliku powinna wygl▒daµ tak:
10
// 640x480+ res filename x-pos y-pos x-size y-size
weapon 640 w_m249 0 0 170 45
weapon_s 640 w_m249 0 45 170 45
ammo 640 w_m249 0 146 24 24
crosshair 640 crosshairs 24 0 24 24
autoaim 640 crosshairs 0 72 24 24
// 320x240 res filename x-pos y-pos x-size y-size
weapon 320 w_m249 0 90 80 20
weapon_s 320 w_m249 0 110 80 20
ammo 320 w_m249 0 146 24 24
crosshair 320 crosshairs 24 0 24 24
autoaim 320 crosshairs 0 72 24 24
Gdzie:
- ta dziesi▒tka u g≤ry to liczba wierszy
- "res" oznacza rozdzielczo╢µ
- "filename" nazwa naszego sprajtu
- dalej mamy wsp≤│rzΩdne x, y odpowiedniego obiektu (punkt pocz▒tkowy) i pozycjΩ ko±cow▒ x, y.
Je╢li ╝le podamy te wsp≤│rzΩdne to bΩdzie wy╢wietlany inny obszar ni┐ potrzebny.
|