Dziś jest: Niedziela, 15 września 2019, godzina 10:11
zaloguj się :
FORUM Battlenet.pl FORUM Forum WarCraft III Edytor Map PORADNIK: dla początkujacych w tworzeniu TD


Odpowiedź

Temat: PORADNIK: dla początkujacych w tworzeniu TD

torpida
Wiadomość [#1]: 26.01.2007 o 20:08

Konto skasowane





Witam!
Postanowiłem napisać poradnik dla początkujących - wprawdzie stworzyłem mapę, ale opisalem to i owo ( mam nadzieje, że można go uznać poradnikiem :P ), w którym to: powinniście się dowiedzieć (do początkujących ), jak stworzyć najprostszą mapę typu TD (Tower Defense). W celu sprawdzenia jak wszystko działa: OTWÓRZCIE mapę edytorem, jest tam praktycznie wszystko opisane, uruchamiając grę zobaczycie jedynie jak wszystko działa.

Oto widok z góry tej mapki:


Z kolei ten obrazek przedstawia regiony z których będą wychodzić jednostki (łatwo zauwazyć skąd będą wychodzić [koło wież]), oraz cel jednostek wroga (środek), ponadto przedstawia dodatki - blokady ścieżek (naziemne)



Wszystko zawarte jest w tej mapie do której dołaczam linka do pobrania. Postarałem się tam wszystko opisać, co jest najprawdopodobniej potrzebne do stworzenia prostej TD.
Mam nadzieje, że komuś pomoże :P

Zajmuje ona jedynie 34KB


Klikniej, aby pobrać. Skorzystaj z opcji: Free nastepnie trzeba chwile odczekać



Wybaczcie za zły wyglad obrazków, ale dopiero się zczaiłem, że tak paskudnie wyglądają :]
W razie pytań: PYTAĆ :P i mam nadzieje, że rozumiecie co tam napisałem i jakoś z tego skorzystacie :P


TUTORIAL - wyzwalacze, cos dla poczaktujacych
Teraz zabierzemy się za to, co sprawi, że nasze mapy "ożyją" - czyli za wyzwalacze. Jednak niemalże żaden wyzwalacz nie zadziała bez wsparcia regionów, a żaden cinematic nie zadziała bez kamer(dziwne, nie?). Zajmiemy się też tworzeniem prostych i tych troche bardziej skomplokowanych triggersów. Mianowicie zabierzemy się za questy, podstawy cinematiców a także rzecz najważniejszą - czyli warunkowanie. Po opanowaniu wszystkiego ujętego w tym texcie stworzysz już prawdziwą, rozbudowaną RPGówkę(z questami, cinematicami i wogóle z 3mającą się qpy FABUŁĄ! - btw. zabierając się za wyzwalacze, najlepiej jeśli masz już jakąś mniej więcej ukształtowaną mapkę, ale jeśli nie masz albo po prostu nie chce ci się robić to spox, można trenowac "na sucho" [tworzysz mapke tiny, stawiasz start locations dla 2 playerów i jazda]) Jeśli chodzi o same regiony, to sprawa jest baaardzo prosta. Po prostu korzystając z "region palette" umieszczamy na mapie regiony - czyli wyznaczone obszary, a później nadajemy im odpowiednią nazwę. I tutaj ważne jest żeby nazwa regionu od razu mówiła ci o które miejsce chodzi, gdyż przy dużych mapach zachodzi potrzeba stworzenia duzej ilosci regionów, a sprawdzanie za kazdym razem, który region jest nam aktualnie potrzebny nie wydaje się być tym, na czym chcielibyśmy spędzac czas pracując w edytorze. Zastosowanie regionów jest wielorakie. Używamy ich do uruchamiania triggersów, jako punkty odniesienia dla niektórych akcji np. move instantly, także do umieszczenia efektów pogodowych... i napewno jest jeszcze dużo zastosowań tychże, zle nie chce mi się zastanawiać smiley.gif Nieco inaczej sytuacja wygląda z kamerami. Używamy ich tylko do kinematików smiley.gif Tworzymy je korzystając z "camera palette". Wybieramy widok, jaki ma pokazywać dana kamera i wciskamy "Create Camera". Wybór odpowiedniego widoku to połowa sukcesu. Najłatwiej możemy tego dokonać, trzymając wciśnięty prawy CTRL i za pomocą myszki ustawić właściwy widok(możemy też skorzystać z kursorów). Jeżeli po wciśnięciu CTRL nie możesz ustawiać dowolnego widoku, w zakładce "view" wyłącz opcję "lock to game camera". Podobnie jak w przypadku regionów, tak i przy kamerach, bardzo istotna jest nazwa. Musi ona być kluczowa i łatwo "przypominająca" o która kamerę chodzi, zwłaszcza gdy jest ich np. ok 100 smiley.gif np. Kamera ukazująca wejście do miasta od północy -> city_entry_from_north. proste? i zarazem skuteczne! To by było na tyle! Czas przejśc do sedna sprawy. Odpalmy więc trigger editor. Widoczny po lewej folder o nazwie "initialization" jest przeznaczony dla tych triggersów, które mają zostać uruchomione przy wczytywaniu mapy. Pierwszym bardzo ważnym wyzwalaczem jest Meele initialization. Tu zawieramy ustawienia graczy, zasobów, ustawiamy wszelkie współczynniki. Wiecie już(mam nadzieję), do czego służą wyzwalacze zaczynające się od Meele game. Tych używa się TYLKO raz w MEELE INITIALIZATION, z tym, że gdy tworzymy mapę RPG, nie wszystkie są nam potrzebne, a czasami nawet żaden. W tym triggersie możemy ustawić ustawienia czasu [Game - Set time of day to xxx] i [Game - set time of day speed] w rpg najlepiej zmniejszyć szybkość. Tu ustawimy też wygląd nieba(widoczne tylko w cinematicach) poprzez [Environment - Set Sky to xxx]. Ustawimy też ilosc zasobów i kilka innych właściwości dla poszczególnych graczy stosując [Player - set property]. Możemy też wyłączyć jakieś technologie. poprzez [Player - Set Training/Construction Availability of Unit]. Sprawimy też, aby niektóre elementy na mapie stały się niezniszczalne - dla doodadsów [Destructible Doodad - Make invulnerable/vulnerable], dla jednostek [Unit - make Invulnerable/Vulnerable]. Stosuje się je (jak wszystkie akcje) bardzo prosto. Po wybraniu typu akcji zobaczysz napis: Make (Triggering unit) Invulnerable. (Triggering Unit) oraz Invulnerable są podkreślone, co oznacza, że można tę właściwość zmienić. Klikamy więc na (Triggering Unit). I tu mamy do wyboru: preset (bardzo rzadko używane), Variable (czyli zmienna, jednostkom żadko nadaje się zmienne, zazwyczaj korzystamy po prostu z przycisku "Select a Unit" i wybieramy jednostkę, o którą nam chodzi, jednakże w wypadku RPGówek gdzie głównym bohaterem jest 1 bohater (hehe) warto nadać mu zmienną. O tym jak to zrobić, za chwilę.), oraz Function. (to jest bardzo przydatne, nie będę jednak opisywał każdej z funkcji, jak potrenujecie, sami dojdziecie co dają poszczególne z nich. Na uwagę zasługuje "Event Response - Triggering Unit" ta funkcja oznacza jednostkę, która uruchomi dany wyzwalacz.). W Meele initialization można umieścić jeszcze dużo innych rzeczy, ale to te najwazniejsze. W folderze "Initialization" dla każdego questa stworzymy po nowym triggersie, który go zainicjuje. Ten sposób wydaje się być najlepszy - stworzenie wszystkich questów jako "undiscovered" (nieodkryte) zaraz przy wczytywaniu mapy, a odkrywać je wtedy, kiedy potrzeba. Stwórzmy więc w katalogu initialization wyzwalacz o nazwie [nazwa_questa_initialization]. Wybierz u góry "New Event" i dodaj wydarzenie "map initialization". Conditions zostaw puste, ponieważ trigger będzie uruchamiany bez żadnych warunków - czyli zawsze i wszędzie. Możesz wprowadzić ewentualnie ograniczenie, które sprawi, że quest będzie widoczny TYLKO dla gracza sterowanego przez usera. W tym celu wybierz "new condition" i wybierz [Player Controller Comparision] ustaw odpowiedniego playera(tego, którym będzie grał żywy gracz) i ok. Zwróć uwagę na "equal to" - oznacza to mniej więcej "równe"; w tej opcji masz jeszcze do wyboru "not equal to" czyli "różne od". A więc całość wygląda tak: controller gracza x jest Userem. A teraz czas stworzyć questa. Wybierz "new action" i znajdź [Quest - Create Quest]. Pjawi się długi, kolorowy (niebieski-wartość, która możesz zmieniać, czerwony-oznacza wartość, którą musisz ustalić) napis: "Create a Required(ustal, czy quest ma byc obowiazkowy czy opcjonalny i wybierz "Requiered,undiscovered" lub "Optional,undiscovered") quest titled TITLE(tu nadaj tytuł swojemu questowi np. Nawiedzony cmentarz smiley.gif)))))))) with the description DESCRIPTION (tu nadaj opis, który będzie widoczny po odkryciu questa w okienku zadań), using icon path BLABLABLA(tu jest ścieżka ikony, która jest widoczna obok questa w okienku zadań. Nie będe podawał ściezek wszystkich buttonów. Zostaw to standardowo. Jeśli jednak ktoś jest zainteresowany kompletnym spisem ikonek, dajcie znać!) po usawieniu wszystkich właściwości kliknij OK. Quest już jest. ...:::WAŻNE!!!!:::... Ale teraz należy nadać mu zmienną. Jest to bardzo ważne, gdyż gdy występuje kilka questów(i nie tylko questów, zmienne nadaje się niemal wszystkiemu), musimy się jakoś do nich odwoływać. Jeżeli dobrze poszukasz, to zobaczysz, że gdy chcemy się odwołać do jakiegoś questa, do wyboru masz tylko jedną funkcję "Last Created Quest". Dlatego musimy korzystać z zmiennych! Z pomocą przychodzi nam akcja [Set Variable]. Modyfikujemy czerwone "Variable". Otwieramy edytor zmiennych i wybieramy "New Variable". Jak zwykle nazwa zmiennej musi być kluczowa. W przypadku questów np. Nawiedzony_cmentarz smiley.gif Wybieramy typ zmiennej - w tym wypadku "Quest". Zamykamy edytor zmiennych. Z menu rozwijanego wybieramy stworzoną zmienną. Klikamy OK. A z "Value" wybieramy funkcję "Last Created Quest". W ten sposób teraz, chcąc odwołać się do odpowiedniego questa, korzystamy z wyznaczonej zmiennej. Zapewne zauważyliście, że normalnie quest nie składa się tylko z nazwy i opisu. Brakuje Requierments'ów czyli wymaganych kolejnych kroków w danym zadaniu. Skorzystajmy więc z akcji [Quest - Create a Quest Requirement]. Widzimy "Create a Quest Reqirement for (i tu możemy odwołać do zmiennej dotyczącej questa, do którego chcemy dodać np. wybieramy z variable Nawiedzony_cmentarz), with the description (i tu treść requirements'a)" Teraz musimy oczywiście przyporządkowac zmienną. I tak za każdym razem gdy tworzymy np. requirements'y dajemy im odpowiednią zmienną (już powinniście umieć to zrobić!!!). Np. Znajdź nawiedzony cmentarz etc... W ten sposób tworzymy kompletne questy. OK. Teraz czas je uaktywnić w grze! A to wiąże się z cinematicami. Mamy więc chłopka, który da nam dane zadanie. Tworzymy więc region, w centrum którego on stoi. Nazywamy go "nazwa_questa_quest_give" albo jakos inaczej, ale kluczowo. Tworzymy też ze 2 kamery, która ładnie panoramicznie ukazuja chłopka z różnych ujęć. )Przy okazji, w initialization danego questa mozna tez umiescic akcję [Special Effect - Create Special Effect on Unit] dzieki której dodamy wykrzyknik nad głową wybranego chłopka Oczywiście ustawiamy mu zmienną!!! Tworzymy więc nowy folder najlepiej o nazwie questa i tworzymy nowego triggersa najlepiej o nazwie "nazwa_questa_quest_give". Jako Event ustaw [Unit - unit enters region(odpowiedni region)]. W warunkach ustaw aby trigger mógł być uruchamiany przez konkretnego gracza(czyli tego którym ma sie rozgrywać misję) korzystając z [Player Comparision] Ustaw (Owner of (Triggering Unit)) Equal to (odpowiedni player) i OK. Teraz czas na akcje czyli na cinematica, który odkryje też odpowiedniego questa. Pierwszą akcją powinno być [Cinematic - Turn on letterbox mode (hide interface) for (All players): fade out over (njlepiej 0) seconds] - schowa to interfejs; nastepna akcja to [Cinematic - Turn cinematic mode On for (najlepsza opcja to "(All allies of (Owner of (Triggering unit)))"). Włączy to tryb filmu (nie będzie fog of war, będzie widoczne niebo). Następnie użyj [Special Effect - Destroy Special Effect] aby zniszczyc wykrzyknik nad głową "rozmówcy". Następna akcja to [Cinematic - disable user control (for (all players)). Jak nazwa wskazuje zabierze to kontrolę nad jednostkami. Możesz też użyć [Unit - Pause/Unpause all units] żeby zastopować wszystkie jednostki, co by nie latały po ekranie jak szalone biggrin.gif. Żeby było ładnie i przejżyście użyj [Wait] ze 2 sekundy. Teraz czas na kamery [Camera - Apply Camera Object (timed)]. Zrób to tak: "Apply (pierwsza kamera- oczywiście odpowiednia nazwa) for (Owner of (Triggering Unit)) over (czas - im większy, tym dłużej obraz będzie przechodził ze standardowej kamery do widoku przedstawionego w danej kamerze) seconds". Następne [Cinematic - Transmission from unit]. A wyglądać to będzie tak: "Send Transmission to (All Allies of (Owner of (Triggering Unit))) from (i tu wybieram chłopka, który ma gadać) named (jego imie/nazwa albo cos w tym stylu - to jest wyswietlane nad textem, który będzie wyświetlony): Play (mozna, ale narazie damy sobie spokój, wstawić jakiś dźwiek towarzyszący wypowiedzi) and display (text wypowiedzi). Modify Duration: (np. Set to) (czas trwania - musi byc odpowiedni do dlugosci wypowiedzi) seconds and (Wait)." Wiadomo aby to ładnie wyglądało to lepiej stworzyć kilka wypowiedzi, a krótszych(później koniecznie przetestuj, czy jesteś w stanie je przeczytać, czy jest za mało czasu!!!). W między czasie możesz użyć drugiego [Camera - Apply Camera Object (Timed)] żeby zmusić kamerę do ruchu poprzez ustawienie widoku na widok z drugiej kamery smiley.gif. Jak już się skończą wszystkie transmission to wtedy [Camera - Reset Game Camera] -> "Reset camera for (Owner of (triggering unit)) to standard game-view over (czas) seconds". Teraz czas na akcje związane z zadaniem. Pierwsze [Quest - Flash the quest button Dialog]. nastepne [Quest - Mark Quest As Discovered] - stosując odpowiednią zmienną uaktywniamy dane zadanie. Kolejne to [Quest - Quest Message] -> Display to (player group - gracz rozgrywający) the (rodzaj wiadomosci, rózne rodzaje dają tylko różne dźwięki w momencie pojawiania się message'a) message: (treść ). Teraz wyłączamy włączone wcześniej opcje czyli kolejno [Unit - Unpause all units], [Cinematic - Enable User Control for all players], [Cinematic - turn cinematic mode off] i [Cinematic - Turn off letterbox mode] (nie zapominajcie właściwie ustawić wszystkich współczynników - powinniście już wiedzieć co znaczy - właściwie biggrin.gif). Na końcu umieszczamy kluczowe akcje np otworzyc jakas brame albo cos [Destructible Doodad - Open/Close/Destroy Gate]. I na końcu umieszczamy [Trigger - turn off (this trigger)]. Zapobiegnie to wielokrotnemu uruchamianiu danego wyzwalacza. A teraz przetestuj ten trigger. Zaznacz kilka jednostek i każ im wejść na obszar regionu. Co zauważyłeś? Przynajmniej powinieneś zauważyć, że gdy każda kolejna jednostka wchodzi na obszar regionu trigger odpala sie od nowa. I tu z pomocą przychodzi nam warunkowanie. Jako pierwszą akcje w danym triggersie wstaw [set variable], otwórz edytor zmiennych i stwórz zmienną o nazwie "nazwa_questa_quest_gained" typu boolean (przyjmuje wartosc TRUE/FALSE) o wartosci poczatkowej FALSE; i ustaw w akcji set nazwa_questa_quest_gained = true. A w conditions dodaj [Boolean Comparision] -> nazwa_questa_quest_gained Equal to false. I w ten oto prosty sposób trigger jest gotowy. Dalsza czesc jeśli chodzi o questy prezentuje się nastepująco: przy tworzeniu nastepnego triggersa (dla tego samego questa) robimy w events standardowo "entering region", w conditions dodajemy nazwa_questa_quest_gained equal to true i akcje - takie jakie potrzebujemy - zauwazyliscie zapewne akcje [Quest - Mark Quest Requirements As Completed] uzywamy ich by "odchaczac" kolejne requirements'y. Po odchaczeniu powinnismy tesh wstawic [Quest - quest message] informujacy o odchaczeniu requirements'a (btw: dla kazdego stwórz zmienną typu boolean; jeśli requirement mówi "znajdź cmentarz" stwórz zmienną "graveyard_founded" oczywiscie o wartosci poczatkowej FALSE, i w triggersie który zostanie uruchomiony przy wejściu na cmentarz ustawiasz oczywiscie [set variable] i ustawiasz dana zmienna na TRUE (wiem, że trochę to skomplikowane, ale na tym mniej więcej polega istota warunkowania - i tu jak wszędzie, trening czyni mistrza biggrin.gif). Dla kazdego questa stwórz trigger "nazwa_questa_completed". W Events ustaw [Time - Periodic Event] np. co 5 sekund. W conditions ustawiasz tyle [boolean comparision] ile requirementsów stworzyłeś i oczywiście wszystkie equal to TRUE. A w akcjach [Quest - Mark Quest As Completed] dla danego questa, odpowiedni quest message i KONIECZNIE [Trigger - Turn of] - Turn off (this trigger). W podobny sposób ustawiasz warunki zwycięstwa - wtedy dla każdego questa tworzysz zmienną typu boolean która oznacza, czy quest został wypełniony czy nie. W akcjach ustawiasz [Game - Victory] - "Victory - (odpowiedni gracz - czyli user smiley.gif) Show dialogs, show scores" I w ten oto prosty smiley.gif))) sposób mozecie tworzyc mapki z wyzwalaczami! Wiem że to co tu napisałem to zaledwie skrawek wiedzy o triggersach, ale gdyby chcieć napisać wszystko na ich temat, byłoby tego setki stron....a wujek torpida nie ma tak wielkiej wiedzy... :P niemniej jednak uwazam iż z pomocą tego tutoriala powinniście zajarzyć o co w tych wyzwalaczach chodzi. Apel do was: experymentujcie, kombinujcie i testujcie!!! a na pewno odkryjecie mnóstwo przydatnych funkcji, które niosa ze sobą wyzwalacze. Przyjemnej pracy z edytorem!!!! Mam nadzieje, że komuś pomogłem angel2.gif








[Edycja - torpida w 27-01-2007 o 19:46]

DaNoN3
Wiadomość [#2]: 27.01.2007 o 18:43

Konto skasowane





Poradnik świetny. Brawa dla twórcy. biggrin.gif
Ale jedna uwaga mógłbys te obrazki zapisać jako .jpg i wrzucić jeszcze raz na serwer bo .png zajmuje 10x więcej miejsca i po prostu dlużej sie te obrazki wczytują. biggthumpup.gif
No i w koncu mógłby ktoś to przykleić ten poradnik bo wielu osobom może sie on przydać biggthumpup.gif

Azuriel
Wiadomość [#3]: 01.06.2009 o 19:29

Konto skasowane





Taki wielkkiiii blok tekstu bardzo źle się czyta... rozczłonkuj to może na akapity bo to jest naprawdę "oczoje*@&" ... za przeproszeniem.



"Ludzie którzy mają wersje gry inna niż najnowsza i obowiązująca na b.necie - nie pisać na gg..."
Even in death, I serve. -|- I'm back again, and again. -|- Our faith is our shield -|- The order of Malius has sent us to aid you -|-
For the greater good -|- Whatever the greater good demands -|- You can't kill what you can't see -|-
Chaos is the only true answer -|- Do you hear the voices too? -|- For Chaos! -|- Do not theaten with me, worm -|-
New corp sir! -|- For the Imperial! -|- Basilisk artillery ready -|- There are too many! We can't hold 'em! -|-
Kill the Mutant, Burn the Heretic, Pure the Unclean


Moje poradniki:
Kopiowanie zaklęć z innych map
Porady dla początkujących i zaawansowanych
PanebOgnik
Wiadomość [#4]: 18.06.2011 o 16:29

Konto skasowane





Ja poproszę o re-upload mapki



Lowca
[img]http://aikayasou.269g.net/image/aikayasou-2005-09-18T20:41:55-1.jpg[/img]
uncc
Wiadomość [#5]: 18.06.2011 o 20:40

Konto skasowane





Raczej wątpie byś to uzyskał bo autor ostatni raz logował się 3 lata temu.



potluczony.gif
sangelrg
Wiadomość [#6]: 20.06.2011 o 00:38

Konto skasowane





Właściwie to ta mapka to nic wielkiego. 1000 takich mapek z najdziesz na hive lub epic coś tam. lol.gif cool.gif

REKLAMA
Strona 1 z 1.
Idź do strony :

Odpowiedź

Skocz do :