GRY-Online.pl --> Archiwum Forum

OBSŁUGA SILNIKA INFINITY ENGINE - omówienie zagadnień cz. II

03.09.2002
09:25
[1]

Aurelinus [ Generaďż˝ ]

OBSŁUGA SILNIKA INFINITY ENGINE - omówienie zagadnień cz. II

Czas na nowy wątek i kontynuację.

Link do cz. I - poniżej.

03.09.2002
09:42
[2]

Aurelinus [ Generaďż˝ ]

Dziś o pisaniu dialogów. Postaram się to skrócić, bo chcę jeszcze zdążyć omówić edycję map. Skrypty zostawię grjgoriemu, choć jest to temat, który w zasadzie należy rozpoznać samemu i co najwyżej zadawać pytania. Akurat w pisaniu dialogów i skryptach występuje całkowita analogia, więc tym lepiej. Krótko mówiąc dialogi mają strukturę skryptów czyli zestawu poleceń do wykonania, których celem jest wyświetlenie tekstu z sensem i po kolei. Skrypty nie są niczym innym, ale ich celem jest dawanie i wykonywanie działań przez postacie, by akcja zachowywała ciągłość lub następowało jej rozwinięcie. Oczywiście wiele poleceń skryptowych jest "przemycanych" w dialogach. Np. w wyniku rozmowy dowiadujemy się o nowym obszarze - polecenie jest skryptowe, ale włożone na koniec dialogu. Zapis poleceń ma charakter umowny - zgodny z techniką programowania czyli z dużej litery - w przypadku mapy RevealAreaOnMap("Obszar - nazwa pliku ARE bez rozszerzenia"). Struktura dialogów jest prosta i przejrzysta. Otwórzcie sobie kilka np. dialog Bently.DLG i obejrzyjcie co się dzieje. Pisanie to rzecz oczywista, ale aby gość mówił z sensem, należy odpowiednio ustawić trzy rzeczy: Triggers - warunki - czyli w jakich okolicznościach przemówi. Warunków jest cała masa, a im nowsza gra tym ich więcej, ale typowe przykłady to: NumTimesTalkedTo(0) - wartość zero oznacza pierwszy raz oraz, że nie powtórzy już tego dialogu, bo zmienna zawarta w warunku automatycznie ustawia się na 1. więc ew. dalsze wypowiedzi muszą mieć nr 1, 2 itd- rzadko spotykane, ponieważ z reguły po pierwszym dialogu pojawia się kilka możliwych opcji w zależności od tego co zrobiła drużyna, a NumTimesTalkedTo umożliwia wyłącznie wypowiedzi po kolei bez powtarzania. Ale jest dialog Ardenor.DLG (ten boss z obozu bandytów), gdzie właśnie tak to wygląda. obejrzyjcie.

03.09.2002
12:32
[3]

Aurelinus [ Generaďż˝ ]

Oto krótkie zastawienie warunków, które nie wymagają zamknięcia pętli >akcją<, czyli pojawiają się tylko raz lub w określonej sytuacji: NumTimesTalkedTo(0) - powszechne przy powitaniu - więcej się nie powtórzy PartyHasItem("nazwa przedmiotu bez rozszerzenia ITM") - gdy mamy coś na co reaguje nasz rozmówca - pojawiać sie będzie tak długo, aż przedmiot zniknie z ekwipunku, z reguły jest to wynik rozmowy - w okienku >akcja< (action) pojawia się DestroyItem("xxxxxxxx") lub TakePartyItem("xxxxxxxx") True() - dialog z takim warunkiem będzie klepany w koło, chyba, że są np. wyżej wymienione warunki, co przerwie powtarzalność. Często w przypadku takiego polecenia inne nie chcą działać, bo True() jest odczytywane zawsze jako pierwsze, więc nie pozostaje nic innego, jak usunąć taki warunek i zmienić pomysł... To polecenie często pojawia się jako initial dialog, ale jest rozróżnienie między True i NumTimes - true pojawia się gdy my musimy zagadnąć postać, a NumTimes gdy ona zagaduje nas. Nie jest to reguła, ale częste zastosowanie. Postać, która "atakuje" nas dialogiem jest sterowana skryptem o nazwie INITDIAL.BCS lub coś około. Skrypt ten nakazuje postaci zacząć z nami rozmowę (najbliższy którego wykryje/widzi) gdy tylko znajdziemy się w polu zasięgu bez żadnych ale.

03.09.2002
13:40
[4]

Aurelinus [ Generaďż˝ ]

Ogólnie tak dialogi, jak i skrypty posługują się >trigger< i >action< co w dowolnym tłumaczeniu oznacza warunki [wstępne] i akcje [efekty, działania]. Czyli JEŻELI cośtamcośtam TO ODPOWIEDŹ #100 - oznacza 100% wykonalności i pewności cośtakiegoatakiego KONIEC Obejrzeć tę konstrukcję można w zdekompilowanym pliku BCS lub w pliku .D po dekompilacji dialogu przy pomocy WEiDU

03.09.2002
13:57
[5]

Aurelinus [ Generaďż˝ ]

Ogólnie rada jest jedna - jeżeli chcecie coś napisać przypimnijcie sobie podobne scenki i otwórzcie odpowiednie dialogi - po obejrzeniu zapiszcie swoje i sprawdźcie jak działają. Dwie istotne sprawy: W dialogach występują linki do istniejących zdań osoby ( ale nie naszej! ) - mogą byc linkowane tylko bloki typu TEXT - option nie, ponieważ to nasze kwestie z reguły do wyboru. Linki wewnątrz tekstu - polecam obejrzenie pliku DRIZZT.DLG są łatwe do ustawienia, ale zewnętrzne - do innej postaci - gorzej bo IDU ma odnośnik do numeru bloku w dialogu innej postaci i nigdy nie wiadomo jak to liczyć.. Tu z pomocą przychodzi WEiDU, które dzięki temu, że ma numarację tych bloków, łatwo jest je odpowiednio ustawić. Obejrzyjcie w szczególności dialogi Romansowe w BG II - powinniście złapać o co biega. Numery można następnie przypisywać albo w IDU, albo w WeiDU. Istotny temat dotyczący skryptów i dialogów. Powinniście zapoznać się ze znaczeniem i sposobem montowania wszystkich Triggerów i actions danej gry - w Opcji TOOLS Near ma możliwość wyswietlenia wszystkich komend. Ich opisy (po angielsku) są na stronie naszego krajana Manveru - link zapewne podrzuci Grjgori, bo ja nie mam teraz czasu szukać...

03.09.2002
14:55
[6]

-grjgori- [ Konsul ]

No tak w co ty mnie pakujesz :P Mogę trochę napisać o skryptyach chociaż większą część już opisałeś. Postaram się trochę napisać o podstawach i takich tam. A oto link.

03.09.2002
14:59
[7]

-grjgori- [ Konsul ]

Sprostowanie domena powinna być COM a nie NET. A co do samej strony to jest tam jedynie opis części(dość dużej) akcji (ACTIONS) są też do tego krótkie opisy i przykłady. Można także znaleźć opis warunków (TRRIGERS) jest on jednak bez przykładów ale moze się przydać. A więc link wygląda tak:

03.09.2002
15:00
[8]

Aurelinus [ Generaďż˝ ]

Ogólnie IDU jest wygodne, bo wymaga tylko pracy z edytorem textu i dorzucania w/w warunków/akcji. WeiDU jest o tyle niewygodne, że pisze się całość czyli włącznie z całą strukturą i bardzo łatwo o błąd, bo jest mnóstwo "tyld", poleceń itp. Ale jako narzędzie wspomagające IDU jest dobre. Przy pracy z IDu pamiętajcie o częstym zapisywaniu, bo lubi się wykaszaniać. Zapisanie jest jednoznaczne z nadpisaniem dialog.tlk. Jeśli sie pomylicie, poprawki nanoście przez TLKedytor. Oprócz tego funkcją >Existing string< można wpisać istniejącą strunę (wejście lub właściwie strref) z pośród innych, znajdujących się w dialog.tlk. W przypadku questów zarówno w dialogach jak i skryptach istotne jest zamykanie pętli. Gry posługują się trzema rodzajami zmiennych określających przebieg akcji w grze. Podstawowa to GLOBAL. Zapis w triggerze jest: [IF] Global("ZaczynamyRozmowę","GLOBAL",0) Postać mówi: <Witaj. Jestem Aurelinus i mam dla ciebie zadanie.> <opcje> Ja: Bujaj się! [THEN] [RESPONSE#100] Enemy() - nasz rozmówca zamienia się we wroga ( w pliku CRE musi mieć status Aligment - NEUTRAL) <opcje> Ja: Słucham cię. Text: Idź zapytaj Mariana co u niego słychać. <opcje> Bujaj się! [THEN] [RESPONSE#100] Enemy() <opcje> <Już się robi!> ----> koniec i tu w akcjach ustawia się SetGlobal("ZaczynamyRozmowę","GLOBAL",1) czyli podnosi się wartość zmiennej GLOBAL od 0 do 1. Zabezpiecza to dialog przed powtórzaniem w kółko tej sekwencji, za każdym podejściem. W końcu zadanie nam dał i czeka teraz na jego efekt.

03.09.2002
15:09
[9]

Aurelinus [ Generaďż˝ ]

znaki [] dotyczą skryptów,w IDU następuje to w programie i nie trzeba tego wpisywać. W skryptach oczywiście Bloki IF -THEN- END trzeba wpisywać w całości, ale nie ma tam żadnych spraw dialogowych. Tylko warunki i akcje, jakie następują w wyniku spełnienia tych warunków. Najlepszy przykład działania skryptów, to postacie, ktore pojawiają się po spełnieniu określonego warunku. NP. w BG I w Naskel pojawia się niejaki Nimbul, który nas atakuje. Ale pojawia się dopiero po przejściu kopalni, bo taki jest warunek, a akcja znana z CLUAconsole CreateCreature("NIMBUL") - w sprawie nazw w cudzysłowiu mam wątpliwości po dziś dzień czy chodzi o nazwę pliku CRE czy o Death Variable, dlatego polecam spójność w tym wypdku CRE=Death Variable. We wszystkich akcjach bywa różnie. Akurat CreateCreature korzysta z nazwy CRE. Grjgori ---------------> jeśli masz uwagi lub inne mądre pomysły - mile widziane.

03.09.2002
15:41
[10]

-grjgori- [ Konsul ]

No coż nie wiem czy jest tu wiele do dodania. Jedyne co mi przychodzi na myśl w tej chwili to zachowanie pewnych zasad. Jeśli używacie jakiejś dlugiej akcji w dialogu lub skrypcie i znajduje sie tam akcjia SetGlobal() to pamiętajcie aby była ona zawsze na samej górze. Tutaj przykład: POPRAWNE: .SetGlobal("global_name","GLOBAL",1) .CreateVisualEffect("FIRE_2",[x.y]) .CreateVisualEffect("FIRE_2",[x.y]) BŁĘDNE: .CreateVisualEffect("FIRE_2",[x.y]) .CreateVisualEffect("FIRE_2",[x.y]) .SetGlobal("global_name","GLOBAL",1) Jak widać jest drobna różnica. Dla nie wtajemniczonych/początkujących może to nie miec wielkiego znaczenia. Jest to jednak podstawowy błąd, który czesto doprowadza do problemów z akcjia SetGlobal(). Wszystkie akcje są bowiem wykonywane w kolejności w jakiej zostały napisane. jesli więc zdarzy się, ze z jakiegoś powodu nie wystartuje akcja CreateVisualEffect() akcja SetGlobal() nie zostanie wykonana, co może doprowadzić do błędów w quescie, nie pojawienie się kogoś nie rozpoczecie się odpowiedniej osoby, itp.

03.09.2002
16:03
[11]

Aurelinus [ Generaďż˝ ]

Prawda jest taka, że o ile z dialogami dośc łatwo się zaprzyjaźnić, o tyle skrypty potrafią przestraszyć na dzień dobry. Jedyną radę jaką mam to czytać wszelkie możliwe tutoriale na Teambg.com i próbować samemu wg zasady: Chciałbym zrobić coś takiego... aha widziałem podobna rzecz tu i tu... i otwieramy po kolei plike CRE, skrypty do CRE, skrypty do obszaru na którym jest CRE i wreszcie dialogi. Gdyby była lepsza metoda podałbym ją.

03.09.2002
16:05
[12]

Aurelinus [ Generaďż˝ ]

Oczywiście o ile będę na sieci, zawsze możecie liczyć na moją pomoc. Pamiętajcie tylko o podawaniu szczegółów problemów - screeny mile widziane.

04.09.2002
16:02
[13]

Aurelinus [ Generaďż˝ ]

Skoro nie ma pytań odnośnie dialogów i skryptów nadszedł czas na finał. 1. Animacje. Gra korzysta z "ruchomych animacji" trójwymiarowych, ale tylko w przypadku postaci w grze, które reprezentowane są przez tzw. avatary - czyli to, co widzicie na ekranie + ruchy ludzików. Uzbrojenie (zmiana wyglądu po przebraniu zbroi), ruchy broni, animacje czarów i itemów są z reguły osobne i jeśli są połączone, to dotyczą avatarów wrogów np. Drizzta, który ma stałą animację z dwoma sejmitarami. Oznacza to, że jak wsunie mu się jego oryginalne sejmitary, to Drizzt ma ich.. po dwa w każdej dłoni. Animacje avatarów zawarte są w BGMain.exe i ich ilość jest raczej nie do ruszenia - trzeba sie znać na kodzie źródłowym gry - nawet na teambg nie ma takich speców (no, może kilku). To, co można powalczyć to animacje czarów, itemów (nie wszystkie) i tzw. paperdolle małe czyli obrazki przedmiotów w ekwipunku. Pliki animacji mają rozszerzenie BAM.

05.09.2002
11:01
[14]

Aurelinus [ Generaďż˝ ]

Najlepsza, żmudna, ale fajna jest zabawa w budowanie lub przerabianie map czyli planszy po których wędrujemy. Program do obsługi tych map nazywa się IETME v. 2.2.1 (chyba najnowsza) i jest bardzo kompleksowy, łączniez tym, że zamiast w Near Inf. postacie można wstawiać tutaj co ma tę zaletę, że nie trzeba już poprawiać żadnych zmiennych/stałych w pliku >ARE. Mapy korzystają z następujących plików: ARE - omawiany wcześniej WED - zawiera informacje o bliżej mi nie znanych pierdołach, aktualizowany zawsze, przy zapisie zmian w pliku ARE automatycznie, TIS - mapa bitowa w zapisie wewnętrznym gry i podzielona na sektory - błąd w jej sektorach powoduje, że na mapie można oglądać "wystrój" taki jak pokazywała Ayertienna w screenshotach. MOS - zapis bitowy minimapy trzy BPM - z końcowymi oznaczeniami (przed Rozszerzeniem): SR - tzw search mapa - mapa z zaznaczonymi przeszkodami, czyli murkami, drzewami itp. HT - hight mapa - zaznaczone są obszary wyżej i niżej - powoduje, że np. postacie "podskakują" na kamykach i nierównym terenie LT - zawiera obszary, gdzie cienie powodują częściowe zacienienie postaci, gdy znajdzie się w nim.

05.09.2002
14:48
[15]

Aurelinus [ Generaďż˝ ]

Program aktualnie ma bardzo dobry tutorial (po angielsku), ale pokrótce opowiem co tam można znależć i wykorzystać. Metody są dwie: 1. łatwa, ale nie bardzo łatwa - przerabianie istniejących obszarów - przykłady znajdziecie w moim dodatku 2. tworzenie map od podstaw - trudne i ten program do tego się nie nadaje. Mapę w zasadzie należy przygotować na innym programie np. AchiCADzie lub 3DSmax. W obu przypadkach pracujemy na płaskim rysunku zwanym dalej mapą, i tylko pewne metody zaznaczania przeszkód, cieni, ścian, które nas zakrywają powodują, że odnosimy wrażenie w grze, że jest to trójwymiar - no może przesadziłem - rzut izometryczny udający trójwymiar. Program pracuje w dwóch trybach: - płaskiej mapy BMP - mapy izometrycznej do której przechodzimy przyciskiem CreateNew/Discardcośtam... przycisk poniżej ma ten sam cel, ale usuwa istniejącą bitmapę bo czeka na wgranie nowej do obróbki, więc unikajcie wciskania go. U góry zobaczycie kilka okienek, które można odchaczyć. Obejrzyjcie co się stanie po odchaczeniu - pojawią się zazanaczone różne rzeczy typu actors, entrances, spawnpoints itp. Każdyz nich można wyedytować i zmienić. Trzeba ylko umiejętnie najechać na oznaczenie, by podświetliło się na pomarańcz i kliknąć prawym myszem by otworzyło się okienko.

05.09.2002
15:11
[16]

Regis [ ]

Pisze tylko zeby zameldowac ze jestem i czytam. Niestety z braku czasu nie moge sie bawic w IE i pozostaje tylko teoria :\ Mlyn totalny przez ta szkole mi sie zrobil :)

06.09.2002
08:31
[17]

Aurelinus [ Generaďż˝ ]

Regis---------> cieszę się, bo wyglądało, że już nikt tego nie czyta... Ale postaram się dokończyć wykłady. Niewiele zostało.

06.09.2002
14:07
[18]

Dwalin [ Reggae ]

Ja też daje znak że jestem chodź muszę chodzić do szkoły i nie mam czasu bawić się teraz w tworzenie modów :(

06.09.2002
14:19
[19]

Attyla [ Legend ]

Aurelinus - albo mi cos umknelo albo nie pisales jak robic takie cuda jak +5 przeciwko zmiennoksztaltnym. Mozesz slowko na ten temat?

06.09.2002
15:01
[20]

Aurelinus [ Generaďż˝ ]

Mnie się o tworzeniu przedmiotów i czarów nie chce mówić, bo to jest proste. Wystarczy wyedytować istniejącą broń lub czar w IEEPro lub Near Infinity, by zapoznać się ze strukturą plików SPL i ITM, a po tygodniu będziecie trzaskać taką broń, jaka wam się marzy. Po prostu zgłaszajcie problemy tutaj, a ja wam pomogę. Jeśli natomiast chodzi o broń specyficzną, typu przeciwkomuśtam to jest to tylko jedna zmienna do poprawki w Near Infinity - mianowicie "effect" z nr kodu. Zajrzycie na np. Krondara czy jak mu tam i zobaczycie co powoduje że jest zabójczy dla zmiennokształtnych. To samo dotyczy np. Croma Fyera - zabija golemy lub Fali - przeciw salamandrom itd.

18.09.2002
11:33
[21]

Earina [ Konsul ]

Ja to czytam i czekam na chwilę, kiedy będę mogła wreszcie wykorzystać. Aurelinus ------> gdzie jesteś?

© 2000-2024 GRY-OnLine S.A.