|
|
|
|
Witaj Nieznajomy!
|
temat: H3Landscape - dodatek do HoMM3 HD+komnata: Niebiańska Kuźnia (WoG, HotA, VCMI) |
wróć do komnaty
|
| strona: 1 - 2 - 3 | |
![]() Paracelsus
|
Przygotowałem kolejne wydanie H3Landscape - wersja 0.1.0. -> Pobieranie instalatora H3Landscape v0.1.0: <ModDB> <GitHub> Główne ulepszenie: Zmiana wyglądu niektórych obiektów położonych na śniegu (na mapach w wersjach RoE, AB, SOD) na ich śnieżne odpowiedniki, które istnieją w HotA / ERA. Algorytm podmiany wyglądu nie stara się być mądrzejszy od autora mapy i nie zmienia obiektów, które w danej wersji gry miały już śnieżne odpowiedniki, ale nie zostały użyte na mapie. Np. zwykły Trading Post położony na śniegu jest zamieniany na śnieżny odpowiednik tylko na mapach w wersji RoE, ponieważ w Armaggedon's Blade autor mapy miał już do dyspozycji śnieżną wersję tego budynku (jeśli jej nie użył, to trzeba założyć, że świadomie).
|
![]() VIP
|
Fajna sprawa :). Rozumiem, że modele z HotA podmieniane są ich wersje na terenie śniegu SoD/AB/RoE? Nie zaglądałem, ale ładujesz w kodzie podmienione zasoby ze swojego .lod? |
![]() Paracelsus
|
Na mapie w formacie AB lub SoD, uruchomionej w HotA, podmieniane są następujące obiekty na śniegu: - HILL_FORT -> "AVXhilS0.def" - IDOL_OF_FORTUNE -> "AVSidlS0.def" - LIBRARY_OF_ENL... -> "AVSlibS0.def" - TAVERN -> "AVXtvrS0.def" - DEN_OF_THIEVES -> "AvXDenS0.def" - LEARNING_STONE -> "AVSgzbS0.def" - TREE_OF_KNOWLEDGE -> "AVXtrkS0.def" - SUBTERRANEAN_GATE -> "AvTCave2.def" - WITCH_HUT -> "AVSwtcS0.def" Wszystkie wymienione pliki .DEF są częścią HotA (nie są w H3Landscape). H3Landscape ładuje pewne zasoby ze swojego archiwum Landscape.lod, ale w obecnej wersji (0.1.0) nie są to żadne obiekty na mapie (jedynie pliki .PCX z tłami pól bitew i pliki .DEF z grafikami przeszkód na polach bitew). Kolejna wersja będzie posiadała własny zbiór grafik obiektów na mapie przygody. W obecnej wersji celowo nie dołączałem tych grafik, ponieważ takie proste rozszerzenie ich zbioru - poza to, co posiada HotA / ERA - rodzi pewne kompilacje (np. po wyłączeniu H3Landscape nie dałoby się odtworzyć zapisu gry rozpoczętej przy włączonym H3Landscape), ale już pracuję nad rozwiązaniem. |
![]() VIP
|
Aaa bo to mówisz o HotA, a w Complete brak tej funkcji podmiany? |
![]() Paracelsus
|
Funkcja podmiany wyglądu obiektów działa w Shadow of Death / Complete, ale w ograniczonym zakresie, ponieważ H3Landscape w wersji 0.1.0 bazuje tylko na grafikach obiektów, które są w oryginalnych zasobach gry. Jeśli w Heroes III Complete rozpoczniemy nową grę na mapie z Restoration of Erathia, podmianie będą podlegać: - Trading Post na śniegu -> na śnieżną wersję z Armageddon's Blade, - Abandoned Mine na śniegu/lawie/w podziemiach -> na odpowiednią wersję z Armageddon's Blade. Gdy już zaimplementuję funkcje, zapewniające podmianę grafik bez utraty zgodności zapisu gry z oryginalnym H3, to zbiór alternatywnych obiektów dla różnych typów terenu będzie znacząco poszerzony, a plik Landscape.lod będzie zawierał własne grafiki obiektów na mapie. |
![]() VIP
|
Aha, kiedyś myślałem nad API pod zapis, ale stwierdziłem, że nie będzie dla mnie praktyczne przy wyłączeniu wtyczki. W Twoim przypadku podmieniasz nazwy zasobów .def? Pewnie można do save zapisywać oryginalnej nazwy - bezpieczniej. A Twoja wtyczka i tak załaduje/podmienia na 'inne' przy wczytaniu? |
![]() Paracelsus
|
Można tak powiedzieć, że "podmieniam" nazwy plików .DEF, ale to jest prawda tylko w dużym uproszczeniu. Mówiąc dokładniej: H3Landscape - w trakcie wczytywania mapy - dodaje nowe wpisy do tablicy typów obiektów użytych na mapie. Te nowe wpisy są prawie kopiami oryginalnych elementów wczytanych z pliku .H3M, ale mają podmieniony sprite (mam na myśli załadowany obraz, a nie nazwę pliku .DEF) i czasem także wysokość (bo zastępcze grafiki czasem różnią się wysokością od oryginalnych). I to w zasadzie by wystarczyło, żeby zmienić wygląd obiektów na mapie po wystartowaniu nowej gry. Ale żeby gra - po zapisaniu stanu i wczytaniu z zapisu - trzymała się nowego wyglądu, muszę też zmieniać nazwy plików .DEF w tablicy obiektów. I to właśnie rodzi problem, że gdybym wpisał tam nazwy grafik, których oryginalna gra nie umie sama wczytać, to zapis gry byłby możliwy do odtworzenia tylko przy włączonym H3Landscape. Plan na rozwiązanie tego problemu wygląda tak (jak zasugerowałeś), że dla podmienionych obiektów, których grafiki nie znajdują się w oryginalnych zasobach gry, nie będę zmieniał nazw plików .DEF. Zamiast tego zmodyfikuję procedurę odtwarzania stanu gry z zapisu w taki sposób, aby dla takich obiektów była ładowana inne grafika, niż ta zapisana w pliku .GM*. Ponieważ podczas wczytywania gry chciałbym uniknąć ponownego wyszukiwania/obliczania którą grafikę przypisać do danego obiektu (co już zostało zrobione przy tworzeniu nowej gry, podczas pierwszego wczytywania mapy), zamierzam upchnąć w zapisie gry (gdzieś na nieużywanych bitach) informacje, które pomogą szybko ustalić właściwą grafikę (bez naruszenia formatu zapisu gry i kompatybilności z SoD/HotA/ERA). Kod źródłowy procedur obsługujących zamianę grafik na mapie przygody jest w pliku: Landscape/game_mod/adv_map.cpp |
![]() VIP
|
Tak, tylko trzeba uważać gdzie dane dodasz w zapisie (inna wtyczka też może z nich korzystać). Jest pewnie jeszcze opcja trzymania we wtyczce dla aktualnej mapki, ale jeśli dobrze pamiętam niektóre wczytania zapisu nie czyściły danych i był jakiś problem - nie pamiętam co wtedy robiłem. A i trzeba też sprawdzić zapisy mapek kampanii |
![]() Paracelsus
|
Udało mi się już rozwiązać ten problem. W skrócie: zapisuję dodatkowe nazwy spritów zaraz oryginalnymi nazwami - dla każdego obiektu na mapie - w pliku GM*. Nie będę tutaj zanudzał szczegółami technicznymi. Za jakiś czas nowy kod pojawi się na GitHubie. Zatem w wydaniu 0.1.1 będzie można się cieszyć znacznie większą liczbą alternatywnych wersji obiektów, wykraczającą poza zbiór HotA i ERA - również grając w oryginalny SoD. |
| strona: 1 - 2 - 3 | |
| temat: H3Landscape - dodatek do HoMM3 HD+ |
wróć do komnaty
|
powered by phpQui
beware of the two-headed weasel