Strona główna
Witaj, nieznajomy!

GTA 2 - Tworzenie map - Podstawy

Tworzenie nowych map jest niestety procesem dość pracochłonnym i wymagającym czasu. Dodatkowo bez rozumienia chociaż podstaw programowania trudno będzie zrozumieć w jaki sposób działa skrypt (ale żadnego języka programowania na szczeście znać nie trzeba). Dzięki tym wszystkim utrudnieniom mamy większą satysfakcję z nowej mapki :)

Aby zrobić mapkę potrzeba:

  • GTA2 Map Editor - program w którym modelujemy samo miasto.
  • GTA2 mis pad - program w którym nauczymy się, napiszemy i skompilujemy skrypt.
  • GTA2 Zone Editor - Tu stworzymy dzielnice i strefy na mapie.
  • GMP Optimizer - Skurczy nasze mapki z ponad 6mb do kilkudziesięciu kilobajtów - nieobowiązkowe.
  • GTA2 GXT editor - napiszemy teksty, gdy zabierzemy się za misje.


Wszystkie programy dostępne w dziale "Download"!

Tworzenie mapy


Przygotowanie
OK, pora odpalić GTA2 Map Editor. klikamy przycisk "nowy" i od razu trzeba wybrać plik grafik, który będziemy używali (wil.sty - pierwsze miasto, ste.sty - drugie, bil.sty - trzecie, fstyle.sty - nie dotykać...). Polecam ste.sty ze względu, że znajdziemy tu po trochu tekstur każdego typu. Teraz sugeruje ulatwić sobie życie i powłączać użyteczne paski narzędzi - view> block, camera i mode tools. Dodatkowo gdy będą potrzebne odpalamy "block info" (ctrl+b) i "tile selector" (ctrl+t). Przy okazji przełączmy się w tryb 3d (view>3d).

Zaczynamy!
Budowę mapki sugeruję zacząć od środka - będzie łatwiej wprowadzać późniejsze zminay (nie ogranicza nas z żadnej strony "koniec mapy") - ctrl+b i na minimapce klikamy gdzieś po środku. Ctrl+t i widzimy przybornik tekstur (jeśli mamy XP, to tylko z jedną texturą - aby zobaczyć pozostałe trzeba na nie klikać). Odszukaj tekstury 811 i 818. Teraz spróbuj na ziemi narysować kawałek drogi naprzemian bez i z linią. (podpowiedź - pod przybornikiem tekstur masz narzędia do obracania tekstury). Możesz ją "upiększyć" o studzienki, przejścia dla pieszych itd (elementy między teksturą 800, a 831). Zrób też zakręt - użyj tekstur 806, 809 i 818. W ten sposób tworzymy "płaskie" obiekty. Tekstury są zazwyczaj w grupach co ułatwia nam pozbycie się nieprzyjemnego "znikania tekstur" tzn. Jeśli budujemy drogę to odkrywamy "grupe" tekstur za pomocą strzałek w dół. Mamy teraz cały panel w teksturach. "Znikające tekstury" nie są dużym utrudnieniem.

Przechodzimy w trzeci wymiar
Wybierz z paska narzędzi ikonkę "myszki" - zaznaczanie. Kliknij gdziekolwiek na terenie budowy. Trzymając shift+strzałki powiększamy zaznaczenie, ctrl+strzałki przesuwamy samo zaznaczenie, alt+strzałki przesuwamy zaznaczenie wraz z zawartością, ctrl+shift+strzałki - pomniejszamy zaznaczenie. Te same kombinacje, tylko gdy zamiast strzałek naciskamy "q" i "a" dadzą nam operacje w górę i w dół. (same naciskanie "q" i "a" służy do chwilowego odkrywania i nakładania kolejnych poziomów, gdy np chcemy coś narysować pod mostem). Po "zaznaczeniu" można rysować, dzięki czemu możemy stworzyć obiekty nad ziemią. Warto też wiedzieć, że skróty ctrl+c (kopiuj), ctrl+x (wytnij) i ctrl+v (wklej) działają i świetnie się spisują, gdy np trzeba przedłużyć drogę, czy skopiować budynek.

Sterujemy kamerą
Aby łatwiej się pracowało trzeba nauczyć się sterować kamerą. Uwaga! Podczas pierwszego uruchomienia przyciski sterowania kamerą często są zablokowane. Wystarczy zapisać mapkę, zrestartować edytor i otworzyć ponownie mapkę. Po kolei co jest co:
-pierwszy przycisk od lewej - "reset" kamery - z góry pionowo w dół.
-drugi - obracanie
-trzeci - przesuwanie na boki (zbędne, od tego są strzałki...)
-czwarty - przesuwanie punktu na który patrzy kamera w górę i w dół - czasem, przy rzutach prawie poziomych się przydaje
-piąty - zbliżanie i oddalanie kamery
Do sterowania kamerą używa się prawego przycisku myszki.

Tworzenie pochyłości
Aby zrobić pochyłą drogę musisz w menu ctrl+b kliknąć "slopes", następnie zaznaczasz fragment mapy, który ma zostać zmieniony, typ pochyłości, długość pochyłości (tylko dla tych najprostszych pochyłości) i następnie kierunek. Z bardziej skomplikowanymi kształtami są problemy, trzeba sobie pomóc malowaniem ścianek w okienku "krzyżyku" w menu ctrl+b. W okienku slope mamy podane wartości "1" "2" i "8". Wartości te informują nas ile zajmie "kratek" tekstur pochyłość. Załóżmy, że robimy zwykły podjazd i zaznaczymy 1. Efekt? Żeby podjechać autem trzeba jechać ze spacją. Zaznaczamy 2. Efekt? Nasz podjazd zajmuje więcej miejsca. WAŻNE! Na początek namaluj taką ilość tekstur na jaką chcesz wartość ustawić slope'a.

Słówko o "przezroczystości"
Wszystko, co na teksturach jest idealnie czarne można zamienić w przezroczystość (np. na teksturze 678). Aby to zrobić zaznaczamy naszą namalowaną już teksturę, otwieramy ctrl+b, na tym "krzyżyku" z tekstur klikamy nasz element do nałożenia przezroczystości (ale uwaga! nie kursorem-ołówkiem, bo namalujemy teksturę!), na dole zaznaczamy "flat" i dadam - przezroczyste! Przydatne podczas robienia barierek,

Drogi, chodniki...
To, że narysowaliśmy drogę, chodnik, czy kawałek zieleni nie oznacza, że gra od razu sama zrozumie co jest co. Domyślnie caa mapa jest ustawiona jako chodnik, zaś wszystkie dodane przez nas rzeczy to... powietrze! Na górze masz ikonki odpowiadające poszczególnym przeznaczeniom:
-pavement - chodnik - wiadomo co to jest :)
-road - droga - po niej jeżdżą wozy, ale o tym dalej
-field - pole - czyli wszystko po czym nie powinny jeździć wozy, ani łązić ludzie - trawniki, dachy domów itd
-air - powietrze - własciwie służy tylko do kasowania tekstur...
-building - szybkie wypełnianie zaznaczenia teksturami - potem można je przemalować. Dach ma atrybut "air", więc można w niego "wpaść"
Wystarczy zaznaczyć fragment powierzchni i nadać jej żądany atrybut. Z drogami jest jeszcze trochę zachodu, bo po nałożeniu atrybutu trzeba jeszcze dokonać korekt w trasach samochodów. kliknij "2" i jeśli na drogach (czarne) widzisz zielone strzałki, to jest super. Ctrl+b i tam masz okienko "arrows". Zaznaczasz np fragment drogi i zmieniasz strzałki by droga była jednokierunkowa. Z zakrętami jest trochę zachodu, na pewno będziesz musiał się namęczyć by działały jak należy...

I w ten sposób tworzysz całą mapkę :) Dodam, że na początek warto zrobić coś prostego nie wymagające dużej znajomości edytora itd. Warto tak zacząć by nabrać wprawy i podstawpwych umiejętności.


Dodawanie Stref


Skoro odwaliliśmy już większość roboty z modelowaniem mapy możemy zabrać się za "uzdatnianie" jej do użytku. Odpalamy GTA2 Zone Editor i otwieramy naszą mapkę. Warto zaznaczyć, że mapka do działania potrzebuje minimalnie jednej strefy restartu - jednak warto dodać przynajmniej kilka restartów i arrest restartów. Warto w tle otworzyć sobie w edytorze naszą mapkę - by łatwiej było odnajdywać miejsca na mini-mapce w zone edytorze. Znajdź na mapie miejsce, które nadaje się na "szpital" (miejsce, gdzie się będziesz odradzać), Sprawdź jakie koordynaty ma lewy gorny róg przyszłego "szpitala" i zapamiętaj tą wartość (znajdziesz je w map editorze na dolnym pasku). Teraz wróć do Zone Editora i kliknij "add". Wpisz koordynaty, w "width" wpisz na ile pól na prawo ma się ta strefa rozciągać i analogicznie height, tyle, że tutaj do dołu. Nazwę strefy wpisz dowolną, a typ to "restart". Klikasz "OK" i masz pierwszą strefę restartu. Dodaj tak kilka stref (chyba, że chcesz, by gracze odradzali się w jednym miejscu) i w analogiczny sposób dodaj kilka stref "arrest restart" (te muszą być umieszczone na ulicy, w końcu gliny po aresztowaniu wyrzucają nas z samochodu).

Za pomocą tego samego programu można dodawać strefy odpowiedzialne za funkcjonowanie pociągu, gangów, czy wyświetlanych na górze ekranu nazw, lecz z powodu, że można by o tym napisać oddzielną książkę pozostawiam ten temat do własnych dociekań (polecam przestudiowanie stref na oryginalnych mapkach z gry)

Pisanie Skryptu


Skrypt, skrypt... Tak ważna część, a większość ją ignoruje - to właściwie tutaj umieszczone są wszystkie informacje o tym co się będzie działo podczas gry, za pomocą samych komend można nawet wymodelować mapkę od zera! (ciekawe ile czasu by się wtedy gra odpalała :) ), no, ale to jest dość ekstremalny przykład :) Nas interesuje najprostszy możliwy skrypt skłądający się z określenia pozycji startowych, zaparkowanych wozów, leżących broni i generatorów broni. Owszem, pomijam 99% rzeczy jakie można za pomocą skryptu zrobić, no ale dziekuje, jeżeli sama lista komend z krótkimi opisami autorom GTA2 zajeła blisko 50 stron A4... To ile musiałbym ja napisać, by omówić każdy detal i niunans każdej komendy... Ale... Zaczynajmy!:

Podstawy
Zacznijmy od tego, że skrypt można napisać nawet w notatniku - trzeba go tylko później skompilować do postaci zrozumiałej dla GTA2. My jednak uprościmy sobie życie i użyjemy GTA2 MIS Pad'a.
Każdy skrypt jest podzielony na 2 części - deklarowane przed odpaleniem mapy i dziejące się już po tym jak gracz pojawi się na planszy (w skrypcie między znacznikami "levelstart" i "levelend"). Właściwie rzecz biorąc najlepiej jest wszystko umieścić przed znacznikiem "levelstart", jednak nie wszystkie komendy mogą być tam umieszczone (jak również na odwrót - jest naprawdę sporo rzeczy, które nie mogą się odbyć po "levelstarcie").
Sam MIS PAD zawiera w sobie plik z opisanymi komendami (wszystko po angielsku), w Program>Instructions. No, ale zacznijmy pisanie skryptu.

Yey! Gracz na mapie!
Klikamy "new" i od razu radzę napisać sobie 2 linijki - "levelstart" i "levelend". Teraz umieśćmy gracza. Służy do tego komenda CREATE_PLAYER, (umieszczamy je przed "LEVELSTART"), a wygląda ona tak:

Kod:
PLAYER_PED nazwa_w_skrypcie = CREATE_PLAYER ( pozycja X , pozycja Y , pozycja Z ) KOLOR KĄT 


nazwa_w_skrypcie - tu wpisz dowolną nazwę (bez spacji), jaką będziesz używał do nazwania gracza w skrypcie (np gracz_1)
( pozycja X , pozycja Y , pozycja Z ) - dokładna pozycja na mapie - np ( 123.0 , 182.5 , 2.0 ) - X to odległość od góry, Y od lewej, zaś Z to wysokość (Jeśli Edytor pokazuje nam 1.0 zawsze dajemy wartość większą o jeden czyli 2.0) - Uwaga! Nawet, jeśli mamy równą wartość, trzeba pisać zero po KROPCE (przecinki oddzielają wartości, kropki to ułamki)
KOLOR - kolor, a właściwie skóra gracza podana w postaci numerka. Lista, który numerek, to która "skóra" znajdziemy gdzieś na końcu "instrukcji" jako "Character remap list"
KĄT - od 0 do 359 - po prostu kąt w którą stronę będzie zwrócony gracz na starcie. 0 stopni jest do dołu i rośnie odwrotnie do ruchu wskazówek zegara.
Oczywiście, jeśli mapka jest dla wielu graczy można umieścic maksymalnie sześć róznych komend CREATE_PLAYER.

Bronie i powerupy
Wszystkie znajdźki można podzielić na 2 typy - jednorazowe, bądź odnawiające sie co pewien czas. Aby je ułożyć należy użyć dwóch zupełnie różnych komend. Umieszczamy je przed "LEVELSTART". Zacznijmy od nieodnawiających się (dobre do gry singleplayer):

Kod:
OBJ_DATA nazwa = ( pozycja X , pozycja Y , pozycja Z ) KĄT TYP ILOŚĆ


nazwa - dowolna, np "bazooka_na_schodach"
( pozycja X , pozycja Y , pozycja Z ) - jak przy graczach
KĄT - jak wyżej, przy broniach najlepiej zostawić 0
TYP - co to za broń. Lista znajduje się na końcu "instrukcji" w "object types" (wszystkie "collect_xx")
ILOŚĆ - ilość amunicji. Jeśli pominiemy to pole, to przydzielona zostanie standardowa ilość amunicji (np 5 bazook)

Dla odnawiających się znajdziek:

Kod:
GENERATOR nazwa = ( pozycja X , pozycja Y , pozycja Z ) KĄT TYP MIN.CZAS MAX.CZAS ILOSĆ 


nazwa, pozycja, kąt, typ i ilość - jak wyżej
MIN.CZAS i MAX.CZAS - są to czasy liczone chyba w 1/30 sekundy po jakich broń ma się odnowić. Najlepiej dawać jednakowy czas minimalny i maksymalny, gdyż ulatwia to "planowanie" gry podczas zabawy z wieloma graczami.

Żeby broń się odnawiała (GENERATOR) po LEVELSTARCIE trzeba wpisać
Kod:
SWITCH_GENERATOR ( nazwa , ON )

nazwa nazwa musi być taka sama jaką podałeś przed LEVELSTART. Skrypt musi być logiczny.

Zaparkowane wozy
Przed LEVELSTART.

Kod:
CAR_DATA nazwa = ( pozycja X , pozycja Y , pozycja Z ) kolor kąt model


Objaśnienia wymagają:
Kolor - w postaci liczby. W instrukcji w dziale "car remaps"
model - nazwa, ale TA ZE SKRYPTU. Do odnalezienia w instrukcji, dział "car types" (trzeba zgadywać który to który...)

Inne, przydatne komendy
Kod:
SET_AMBIENT_LEVEL ( wartość , czas )
- ustawia jasność mapy w trybie nocy. Wartość musi być w formie xx.x, czas to czas ściemniania się, najlepiej dać 0. Odpowiednia jasność to od 5.0 w górę (10.0 to dzień). musi być umieszczona PO LEVELSTART.
Kod:
DECLARE_POLICELEVEL ( wartość )
- max policji na mapie - od 0 do 6.
Kod:
DISPLAY_BRIEF ( numer z pliku GXT )
- wyświetla text, który jest umieszczony pod konkretnym numerem w pliku GXT.

Odpalanie mapy!
Kiedy już mamy skrypt nasz gracz ma dobre wartości xyz wstawiliśmy auto a nasza mapa ma field zamiast air w teksturach i mamy zrobiony restart zone możemy się zabrać za odpalenie mapy. MIS pad daje nam super możliwość testowania skryptu na mapce. Za pomocą komendy "RUN" możemy zobaczyć jak nasza mapa ma się ze skryptem. Krtótkie objaśnienie: W lewej kolumnie mamy opcje dodatkowe dostępne również w power menegere zaś po prawej kolumnie mamy tą najważniejszą część. GMP- nasz plik z mapą. Uwaga trzeba tam wpisać nazwa.gmp gdzie nazwa to twoja mapka, STY- nazywam to "paletą" tekstur jakie wykorzystaliśmy w naszym edytorze, SCR- po zapisaniu skryptu i skompilowaniu trzymujemy plik nazwa.scr, wpisujemy wszędzie nazwy naszej mapki i palety, z której krzystaliśmy i zaznaczamy jeszcze "Use These" poczym klikamy RUN. Jeśli mapka się nam odpaliła to super. Jednak to nie koniec. Należy się przejechać po mapce przejść, zobaczyć czy coś nie zostało pomnięte albo czy jakaś tekstura ma wartość "air" zamiast field albo road. Po tych oględzinach i uznaniu, że nasza mapa jest OK należy zapisać wszystko i już 3/4 sukcesu. Teraz, żeby Mapa była dostępna Multiplayer trzeba stworzyć Plik .mmp
Przykład pliku mmp na mapce ga_spar 3 players
Kod:

[MapFiles]
GMPFile = ga_spar.gmp
STYFile = bil.sty
SCRFile = ga_spar.scr
Description = ga_spar 3p
PlayerCount = 3

Wiele nie trzeba tłumaczyć. Każdy pack z mapą zawiera plik gmp, scr i odpowiednią ilość plików mmp. Ilość ta zależy od ilości graczy jaką ustaliłeś/aś w skrypcie. Maksymalnie jest 6 graczy. Czyli- Do każdego trybu 1player 2 players 3players itd. muszą być pliki mmp! Teraz wystarczy znaleść jakiś betatesterów i robić testy mapy. Jeśli znajdziecie jakiś bug to po prstu to popraw i wyślij jeszcze raz do betatesterów i tak do bólu aż uznacie, że mapa jest zarombista i nie ma bugów. Wracając do plików z packa mapy. Edytor tworzy wiele plików pod nazwami nazwa.001, nazwa.002 etc. Te pliki są zbędne i nie należy ich pakować. Tylko GMP SCR i x*mmp.

Odnawiające się auta po zniszczeniu!
PRZED
Kod:
LEVELSTART
car_data X
COUNTER gameloop = 1
PO LEVELSTARCIE
X = CREATE_CAR ( 102.0, 138.0, 5.0 ) 2 90 FIRETRUK END
WHILE ( gameloop = 1 )
if ( is_car_wrecked ( X ))
X = CREATE_CAR ( 102.0, 138.0, 5.0 ) 2 90 FIRETRUK END
endif
ENDWHILE

Gdzie X to nazwa auta. Żeby to zrobić nie piszemy CREATE_CAR z nazwą samochodu, który ma się odnawiać.


PORADNIK by MIBARS & KEMPAS
zaczerpnięty z gta2.info
za zgodą autora.
Dodane przez: Razor
Created & Powered by MakG
Wszelkie prawa zastrzeżone