Kwasowa Grota Heroes VIIMight & Magic XHeroes III - Board GameHorn of the AbyssHistoria Światów MMSkarbiecCzat
Cmentarz jest opustoszały
Witaj Nieznajomy!
zaloguj się    załóż konto
Niebiańska Kuźnia  (WoG, HotA, VCMI)temat: [WoG 3.58f, 3.59] Poradnik ERM, Alpha 3.59, kod źródłowy
komnata: Niebiańska Kuźnia (WoG, HotA, VCMI)

AzethM PW
17 lipca 2020, 19:32
ERM dla opornych + mała geneza
Yo, jestem programistą który rok temu postanowił nauczyć się skryptów ERM. Wyszło na tyle dobrze, że stworzyłem całkiem sporego moda dla 3.58f. Ostatecznie postanowiłem go skasować i przepisać na innym silniku, pokłosiem jest jednak Polski poradnik ERM, mocno bazowany na ERM for Dummies, stąd nazwa. Chylę czoła przed piórem Quirqirish Dragona.

Dla ciekawskich, większość ficzerów porzuconego moda dla 3.58f.

Nie lubię wychwalać swoich własnych prac, ale coś wypada napisać. Poradnik jest krótki (17 stron) zawiera kilka mniej i bardziej zaawansowanych przykładów wyjaśnionych linijka po linijce, oraz pełne wyjaśnienie składni. Jako jedyny znany mi poradnik uczy też jak korzystać z ERM Help. Celowany dla wersji 3.58f, może posłużyć też jako wstęp do ERY.

Link: Czytaj ERM dla opornych

A teraz do głównego tematu:


WoG 3.59 nadal ma wielki potencjał
Może to kontrowersyjna opinia, lecz dokładnie tak uważam i z tego powodu postanowiłem kontynuować pracę nad projektem 3.59, na bazie kodu wypuszczonego przez GrayFace.

Kod został puszczony wiele lat temu i trudno mi uwierzyć że przeszedł bez echa. Tutaj dokument w którym wyjaśniam najważniejsze wprowadzane przez niego funkcji. Skrótowo:
- Wsparcie dla zewnętrznych modów, bez konieczności modyfikowania plików H3
- Porządna implementacja skryptów Lua (to ZNACZNIE więcej niż wrapper dla ERM!)
- Silnik okien dialogowych oparty na Lua, nieporównywalnie bardziej rozbudowany niż !!DL.
- Wsparcie dla nowych kampanii. Tak, mowa o przyciskach w menu, można ich zrobić 500.
- Ładowanie zewnętrznych plików LOD
- Masa nowych poleceń ERM, w tym trigger !?AI do współpracy z algorytmem SI.

Wielkim nieobecnym jest wsparcie nowych miast. Skrypt za to odpowiadający ma 30 KB i póki co jest poza zasięgiem mojego umysłu, ale to kwestia czasu. Pewnego dnia, mi lub komuś innemu, uda się go dokończyć.

Chciałem przy tym zaznaczyć że wydana przez GrayFace wersja Alpha 8.0 jest całkiem stabilna. Nie jest to "niegrywalny szrot" jak niektórzy twierdzą. Sama Alpha wprowadza również moda Base, który zawiera:
- przyśpieszenie animacji w trakcie walki
- przyśpieszenie animacji na mapie przygody (1.2 ładnie upłynnia animacje)
- blending przy wchodzeniu do miasta czy ekranu walki
Oczywiście oprócz tego w pakiecie jest mod WoG 3.58f z dodatkowymi, nieukończonymi skryptami oryginalnego WoG Team. Każdemu fanowi H3 polecam się zapoznać, chociaż by poznać to kuriozum.
Link: Pobierz WoG 3.59 Alpha 8.0


Instalacja Alpha 3.59
To alpha, więc nie ma instalatora. Trzeba to zrobić ręcznie, na szczęście nie jest trudno.
- Zainstaluj WoG 3.58f (link)
- Pobierz archiwum z alphą 3.59
- Rozpakuj w katalogu głównym heroes 3, nadpisując pliki jeśli trzeba.
- Do uruchomienia używaj WogT1.exe


HD Mod
Generalnie wsparcia dla HD Moda nie ma, mimo to można spróbować grać. Na niektórych komputerach działa to dobrze, na innych kiepsko, nie wiem od czego to zależy. W każdym wypadku należy:
- Wyłączyć HD+
- Uruchomić grę na fullscreen
- Unikać plikania prawym przyciskiem myszy na elementy interfejsu, które dodaje HD Mod (a najlepiej na wszystkie)
- W ustawieniach modów wyłączyć niektóre opcje: blending, nowa siatka i cień na ekranie bitwy.
Docelowo planuję albo zapewnić pełne wsparcie dla HD Moda, albo go zreplikować - na otwartym kodzie. Do tego jednak brak mi - póki co - umiejętności.


Mój wkład
Skoro ficzery i grywalny build już za nami, czas opisać co sam wniosłem do projektu 3.59. Jeśli chodzi o robienie modów, zeszło póki co na dalszy plan. Silnik 3.59 był słabo udokumentowany i praca z nim byłaby trudna, więc na poprawienia tego stanu rzeczy się skupiłem. Oto efekty

ERM/Lua Help
Dokumentacja języka ERM oraz Lua, stworzona na podstawie change-logów, testów i własnych spostrzeżeń. Poza językami skryptowymi pokrywa również opis struktury modów i narzędzi Lua (hakowanie, asembler, te sprawy) oraz systemu dialogów - choć tego ostatniego dokumentacja póki co kuleje.

Jak budować kod źródłowy?
Kompilacja projektu WoGa - stworzonego dla Visuala 2005 (!) - nie jest Plug&Play, zwłaszcza dla ludzi którzy jak ja od zawsze pisali na Linuksie, w kolorowanych notatnikach. Powyższy poradnik rozwiązuje ten problem; z jego pomocą nawet znajomy z humana dał radę :)

Dokumentacja ERM Parsera vol.1
czyli jak dodawać nowe triggery, receivery, obsługiwać błędy itd. Nie wchodziłem jeszcze jak w środku działa parser, to będzie w osobnym dokumencie, zakładając że go zrobię bo nie jest niezbędny do rozwoju projektu.

Map objects, game memory
pokrywające w bardzo dużym stopniu sposób modyfikowania obiektów na mapie przez skrypty oraz podstawy reverse-engineeringu Heroes 3.

Oprócz tego opracowałem przytoczone już ficzery 3.59. Spora część postępów jest też, póki co, jedynie w mojej głowie. Ogarniam ogólne działanie ERM Parsera (triggerów i receiverów), dodawanie przycisków w grze (nie tylko kampanii, nie tylko w menu głównym) Ponadto rozpocząłem już prace nad portem mojego moda z 3.58f, kilkanaście mniejszych i większych skryptów jest już gotowa, ruszyłem też tryb Dominacji która nareszcie ma szanse działać w pełni poprawnie. (dla niewtajemniczonych, dokumentacja dla wersji 3.58f)


Coś więcej o kodzie WoGa 3.59
Dostępny na Githubie w dwóch smakach: moim oraz GrayFace. Póki co moja wersja jest mniej stabilna przez nieznajomość kodu C/C++ - wkrótce przywracamy go do oryginalnego kodu GrayFace, od tej pory będę go modyfikował ostrożniej.

Dla przypomnienia: kod był, jest i będzie na licencji Free & Open Source. Dopóki non-profit, róbcie z nim co chcecie.

Kod WoGa obecnie składa się na:
- C/C++ ze wstawkami w asemblerze. Część kompilowana, znajdują się w katalogu T1 na gicie. Cały kod znany z 3.58f znajduje się tutaj, razem z parserem ERM, a także wsparciem dla Lua.
- Wewnętrzne skrypty Lua. Tego się nie kompiluje, znajdują się w katalogu Lua na gicie. Gra ładuje je automatycznie przy starcie. Znajduje się w nich: wsparcie dla modów, nowych kampanii, nowych miast (nieukończone) czy system dialogów. Wewnętrzne skrypty stanowią więc rozszerzenie dla execa i pozwalają na wszystko to, na co pozwala kod C/C++.
- Mody, zewnętrzne skrypty, w tym WoG 3.58f. Znajdują się w katalogu Mods na gicie, zawierają m.in. skrypty wogifikacji.


Kontakt, pomoc
Nie mogę obiecać że będę tutaj jakoś często zaglądać. Jeżeli chcecie się ze mną skontaktować, zapraszam na moją grupę na discordzie albo na grupę na discordzie ERY. Na obu występuję pod nickiem AzethM (#5100)

Z chęcią odpowiem na dowolne pytania dotyczące projektu czy ERM. bardzo chętnie przyjmę również wszelką pomocą. Nie ważne czy jesteś programistą, artystą, twórcą map czy testerem. Jeśli chcesz i czujesz się w stanie pomóc - zapraszam!


Too long, didn't read?
Załączam jeszcze raz linki do wszystkich opracowanych przeze mnie materiałów. Polecam poczytać choć wybrane. WoG 3.59 to kawał solidnego projektu którym wciąż warto się zainteresować. Nie ma dużo zawartości dla graczy, ale nazywanie go "niegrywalnym" czy "bardzo niestabilnym" to ZNACZNA przesada.


Linki dla każdego
ERM dla opornych: klik
Silnik 3.59 - nowości dla modderów: klik
Kanał discord (póki nic się tu nie dzieje): klik
Całkiem stabilna alpha 8.0: klik


Linki dla wtajemniczonych
Jak budować kod źródłowy: klik
Projekt na Github: klik
ERM/Lua Help, dokumentacja narzędzi: klik

fisat PW
17 lipca 2020, 23:23
Sam mam lekką nostalgię do WoG-a, ale rzeczywistość jest taka, że nikogo ten mod już nie grzeje, a cyferka 3.59 ostatnio podniecała ludzi jakieś piętnaście lat temu. Generalnie wszystko, co nie jest Hotą, przechodzi bez echa, jest martwe już na starcie i nie ma ŻADNEGO potencjału. Sorry, ale takie są fakty, to już nie te czasy.

Wyjątkowo PW
20 lipca 2020, 15:07
Znowu ścinanie czegoś zanim powstanie. Nie przejmuj sie. To nie jest dobre miejsce dla tych ktorzy cos robia. Juz wiele pomyslow tu utrącili. HotA jest tylko do pobrania i grania totez masy glownie Rosjan robia tam tłok. I niech robia. HotA jest dobra. Co nie znaczy ze mamy nic nie robic i tylko oni niech robią.
Oczywiscie swietnie byloby WoG rozbudowac. Nie jest przeciez skonczony. Z tym ze raczej to by trzeba zrobic na Erę bo tam jest duzo modów. Robienie teraz odnogi i kolejnej platformy nie mialo by sensu. Chyba ze byla by jakos genialnie prosta i swietnie dzialajaca. Bo WoG jak wiemy dziala kiepsko. Super byloby miec calkowicie orginalne Herosy z prosta mozliwoscia dodawania nowej zawartosci bez utraty stabilnosci.
Kazdy informatyk mile widziany bo raczej grafikow to mamy sporo gorzej z programowaniem. Zatem nie przejmuj sie powodzenia. Zobaczymy co wyjdzie. Modowanie jest fajniejsze niz granie.

Andruids PW
21 lipca 2020, 04:07
Baronus:
Znowu ścinanie czegoś zanim powstanie.
Dosadne pisanie prawdy nie różni się niczym od owijania w bawełnę, skoro z Twojego posta wynika ten sam wniosek:

Baronus:
Oczywiscie swietnie byloby WoG rozbudowac. Nie jest przeciez skonczony. Z tym ze raczej to by trzeba zrobic na Erę bo tam jest duzo modów. Robienie teraz odnogi i kolejnej platformy nie mialo by sensu.
I jest to absolutnie zasadna myśl. Sam WoG ani mnie ziębi, ani grzeje, ale moim zdaniem, przyszłość moddingu H3, pod względem możliwości tworzenia map (czyli czegoś, o co powinien opierać się modding) tkwi obecnie w ERZE. I jeśli kiedyś zapragnę czegoś bardziej ambitnego od VCMI, to zwrócę swój wzrok właśnie na poradnik Azetha, bo to kawał dobrej lektury.

J. M. Sower PW
21 lipca 2020, 08:48
Brzmi ciekawie. Niestety właśnie problemem WoGa była niestabilność, przeładowanie niepotrzebnym śmieciem i ograniczenia, jednak jeśli powstałaby w końcu taka użyteczna wersja, pozwalająca bez ograniczeń dodawać nową zawartość, w tym miasta, to ja takiemu projektowi kibicuję. Nie słuchaj narzekań typu "HoTA jest, daj se pan spokój". HoTA to inny projekt. Ona jest dla graczy, a ty robisz przy otwartej platformie dla moderów. Jeśli bazą są prace GrayFace'a i jest możliwość używania skryptów Lua (co znam z modowania na MMExtension) to myślę że to nie byle co i projekt może mieć spory potencjał. Ciekaw jestem jak GrayFace do tego podchodzi, czy porzucił projekt, czy może nie całkiem. Obecnie jest trochę aktywny w temacie MMExtension. Gdybyś szukał z nim kontaktu to tu go znajdziesz:
https://www.celestialheavens.com/forum/10/10423?start=540

AzethM PW
21 lipca 2020, 10:39
Dlaczego 3.59, nie Era:
- 3.59 ma już wprowadzone - i bardzo rozbudowane - wsparcie dla Lua i modów opartych o Lua
- system dialogów oparty o Lua, którego brak w ERZE
- Kod ery jest w Pascalu, którego nie chcę się uczyć, wolę C/C++/ASM
- Era whakowuje się w plik wykonywalny starej wersji 3.59, co oznacza że modyfikowanie kodu oryginalnego woga odbywa się tak samo jak SoDa - wsteczna inżynieria. Berserker uznał że tak będzie łatwiej, ja mam inne podejście. Natomiast sam Bersy powiedział że "3.59 nadal ma swój potencjał"
- Wiele triggerów i poleceń ERM których w erze brakuje i które trudno dodać bo nie ma prostego dostępu do parsera.

Generalnie w 3.59 mnóstwo jest narzędzi, które działają lepiej niż w Era lub których ERA nie ma w ogóle. Wydaje mi się też (choć mie mam na to dowodów) że 3.59 jest najbliżej dodania nowego miasta (po vcmi i hota rzecz jasna)

Nie zamierzam przestawać więc bez obaw. Post wysmarzyłem głównie by praca nie została "w szufladzie", ale i tak dzięmi za feedback.

Miałem przyjemność rozmowy z GrayFacem, pomógł troche przy budowaniu projektu. Natomiast nie chcę go męczyć ciągłymi pytaniami.

Jeszcze co do niestabilności: tak, crashe występują. Postaram się poprawiać błędy jak tylko będę w stanie, + zawsze mam dostep do kodu Ery i mogę wprowadzać poprawki na jej podstawie.

Generalnie z chłopakami ze środowiska Ery zdarza mi się współpracować, złoci ludzie. W sierpniu będę im pomagać z ogarnianiem strony dla projektu Ery, jak ktoś chętny do pomocy to też zapraszam :)

J. M. Sower PW
21 lipca 2020, 12:41
Świetnie, dobrze widzieć, że jakiś ogarnięty programista się w Grocie pojawił, bo tu głównie sami graficy. ;D Może dzięki twojej pracy w przyszłości powstanie jakiś kolejny mod, albo sprawny port moda, choćby z VCMI.

Co do Lua, to ja jestem właśnie pod wrażeniem co można tymi skryptami zdziałać w MM6-8 niejako implementując do gry nowe fragmenty kodu, bez grzebania w samym pliku exe i w tamtych grach dało to już naprawdę ogromne pole manewru dla moderów. Także nie wahaj się chwalić dalszym postępem prac. Ciekaw jestem do czego dojdziesz. Bawi mnie trochę, że niedawno w wątku o HoTA napisałem właśnie, że do H3 przydałoby się coś na miarę MMExtension, z ogromnym polem manewru, aby nie było potrzeby pracy z przepisywanym na nowo kodem w VCMI (choć oczywiście tamta platforma też ma potencjał).

Fandor PW
21 lipca 2020, 13:29
Cóż wolałbym, żebyś swoje zdolności zaimplementował w ulepszanie i rozszerzanie VCMI.
Częściowo odpowiedziałeś mi na pytanie które chciałem zadać, ale czy nie można twojego WoGa 3.59 jakoś połączyć z najnowszą ERĄ? Albo jakoś sprawnie przepisać jedną w drugą? Generalnie HotA jest przede wszystkim stabilną platformą do multi, do grania wręcz turniejowego. VCMI to platforma do zabawy, do wprowadzenia do gry olbrzymich ilości zawartości. Natomiast WoG 3.59 i ERA będą mieli tych samych domyślnych odbiorców - osób które chcą dopieszczone różnymi bajerami mapy do ogrania, więc no ogromna szkoda nie da się tego jakoś połączyć.
Chociaż, jeżeli twórcy ERA trzymają się takiego archaicznego urządzenia jak Pascal to nie dziwie się, że ludzie nie chcą tego rozwijać.

AzethM PW
23 lipca 2020, 07:09
Wszystko się da, natomiast moim zdaniem łatwiej przenieść feature'y Ery do 3.59 niż odwrotnie.

Jeśli chodzi o target, to moim osobistym celem jest duży mod w stylu 3.58f czy HotA, nie sama platforma. 3.59 ma mi służyć za edytowalny exec z narzedziami - silnik.

Ppnadto kiedy zaczynałem prace nad 3.59 to Era nie miała jeszcze wsparcia dla Lua. Teraz ponoć ma, ale widziałem składnie lua/erm i to nie to samo, 3.59 ogarnął sprawę dużo lepiej.

Poza tym, nie chce się przerzucać gdy poznałem już tak dużo narzędzi 3.59

AzethM PW
29 lipca 2020, 07:40
Jak już wspomnieliście o grafikach... Są tu jacyś? Przydałyby sie proste animacje (format def) do:
- umierania jednostki ożywionej (rozprysk krwi :3 )
- umierania jednostki nieożywionej
- umierania jednostki nieumarłej
- obiektu na mapie przygody: mgły (półprzeźroczysta, animowania bardzo subtelnie)
I pewnie wiele więcej. Ktoś chętny?

avatar PW
29 lipca 2020, 09:43
Grafikiem nie jestem, ale większość tego co potrzebujesz już istnieje w formacie .def po różnych miejscach. Jeśli nie potrzebujesz 'autorskich', mogę przeszukać dysk :)

AzethM PW
29 lipca 2020, 09:51
Fajnie byłoby złapać grafika, ale nieautorskie też przyjmę. Jak masz to podeślij plz

Wyjątkowo PW
29 lipca 2020, 12:39
Są też banki defów! Bierz smialo! Najpierw zrob dzialajacy mod a potem pomysl o oryginalnych jednostkach. Predzej znajdziesz grafikow jak zobacza ze dziala!

J. M. Sower PW
29 lipca 2020, 17:11
Akurat jedno drugiego nie wyklucza. ;) Tworząc moda jednocześnie możesz rozwijać 3.59 jako platformę. Na podobnej zasadzie jak Rodril rozwija MMExtension na rzecz MM6-8 Merge i jego dokonania można wykorzystać we własnym modzie (jak ja to robię ;) ).

Fandor PW
29 lipca 2020, 17:14
AzethM w takim razie bardzo mocno trzymam kciuki za Ciebie i za WoGa 3.59 i mam nadzieję, że uda Ci się przeciągnąć wszystkich moderów ERY i jak najszybciej ściągnąć do siebie wszystkie bajery z niej, aby każdy był zadowolony. :D

Kuririn PW
29 lipca 2020, 19:39
Fandorek:
aby każdy był zadowolony. :D
Panie, panie, zjedz snickersa :P

AzethM PW
29 lipca 2020, 20:10
Dokładnie taki jest plan: całą zawartość (kontent) robić jako zewnętrzne skrypty - czyli mod - a w silniku poprawiać błędy, dodawać wsparcie dla mechanik które powinny być ogarnięte od strony execa (głównym celem obecnie są powtarzalne walki) oraz narzędzia służące do tworzenia tego moda - rozszerzenia języka ERM. Basically taki 3.58f+

Edit: pierwotnie bylo tu porównanie do ery, ale osobiście uważam je za nietrafiome

avatar PW
29 lipca 2020, 20:18
Kilka defów do sprawdzenia.
A defy mgły albo były w modzie Masters of Puppets, albo w Legend of the Red Dragon.

AzethM PW
1 sierpnia 2020, 20:17
Dzięki wielkie!
Ponadto właśnie skończyłem dokumentacje ERM Parsera od strony użytkownika - czyli jak dodawać nowe triggery, receivery, obsługiwać błędy itd. Nie wchodziłem jeszcze jak w środku działa parser, to będzie w osobnym dokumencie, zakładając że go zrobię bo nie jest niezbędny do rozwoju projektu.
temat: [WoG 3.58f, 3.59] Poradnik ERM, Alpha 3.59, kod źródłowy

powered by phpQui
beware of the two-headed weasel