Witam serdecznie!
Jako zapalony, choć cichy fan HoM&M3 postanowiłem wykorzystać moje czarnoksięskie moce programistyczne dla dobra społeczności, pokoju na świecie, powszechnego szczęścia... cóż, chyba się zagalopowałem ;-)
Jakiś czas temu znów zainstalowałem sobie Shadow of Death i z zaciekawieniem śledziłem wyniki działania losowego generatora map. I tutaj naszła mnie pewna wątpliwość: Heroes jest cyklem, który swą potęgę zbudował na warstwie fabularnej. To nie warstwa strategiczna uczyniła z nich najlepszą grę w historii: wręcz przeciwnie, to fakt że nasz bohater zbrojny ramię w ramię z wielką armią, ruszający na terytorium obcej nacji mógł spotkać po drodze zakochaną parę błękitnych smoków sprawiał, że warto było toczyć wciągające rozgrywki. Że już nie wspomnę o Heroes Chronicles, który fabułę dopieścił niesamowicie. Rozumiecie więc, że czegoś mi brakuje w Generatorze losowym map: utworzone mapy nie mają żadnej, ale to absolutnie żadnej głębi.
Tak to, jakiś czas temu ulęgł się w mojej głowie pomysł napisania losowego generatora scenariuszy: programiku napisanego w C + + który oprócz tworzenia losowego terenu (to potrafi każdy program, w tym ten wbudowany w grę) wymyślałby także warstwę fabularną. Jako doświadczony develeoper nie zrobiłem podstawowego błędu i nie rzuciłem się do pisania kodu (pewnie projekt nie przetrwałby nawet jednego dnia), tylko spokojnie i metodycznie zacząłem rozpisywać założenia i algorytmy, którymi go miałem zrealizować.
Potem, gdy zacząłem implementować pierwszą warstwę abstrakcyjną programu, pojawił się poważny problem: nie miałem żadnych, absolutnie żadnych informacji na temat tego w jaki sposób Heroes zapisuje swoje mapy. No dobrze, skłamałem: miałem jedną informację. Wiedziałem że mapy są kompresowane gzipem. Już się przeraziłem że przede mną długie tygodnie z hexedytorem (WoG Teamu nie śmiałem prosić, bo w zasadzie nie miałem im co pokazać, a ja rzadko idę z pustymi rękami do ludzi - no dobra, ten post to wyjątek ;-) ), gdy niejaki CrackedMind, Rosjanin udostępnił mi opis formatu h3m i to jeszcze w bardzo wygodnej dla mnie postaci 010 binary template. Tak więc projekt mógł ruszyć dalej
Mniej więcej cztery dni temu zacząłem się bawić w implementację faktycznego generatora mapy i ukończyłem parę podstawowych metod w klasie ją opisującą (jak również stworzyłem ponad 300 stałych i flag). Jest tego dość żeby stworzyć kompletnie losową mapę (przez losową mam na myśli że każde pole ma inny typ terenu, nie ma bohaterów, miast, ani nic innego, ale są parametry mapy takie jak opis czy informacje o graczach).
Jak "Tawerna Bohaterów" ma wyglądać? W założeniu ma to być konsolowy program napisany w C + + z graficzną nakładką napisaną w C#. Zaletą z takiego rozwiązania jest łatwa konwersja na inne platformy (m.in. na Linuxa). Nie wiem co prawda jak wygląda wsparcie dla Heroes pod egzotycznymi systemami, ale najwyżej ten feature pozostanie niewykorzystany ;-)
Jako że już wcześniej pisałem - nie lubię przychodzić do ludzi z pustymi rękami (zwłaszcza, że to mój pierwszy post tutaj) zaprezentuję może coś, co nigdy miało nie opuścić zacisza mojego folderu z Visual Expressem. Panie i panowie, oto wczesna wersja alfa mojego generatora:
http://dl.getdropbox.com/u/82366/TavernOfHeroes-alpha.rar
Czekam na wszystkie opinie odnośnie pomysłu (bo programu nie ma na razie co komentować, jest tu tylko jako ciekawostka ;-) ). Zarówno krytyczne jak i nie, jestem ciekaw jakie jest wasze zdanie w tej kwestii. Faktem jest że ilość pracy przede mną lekko mnie przeraża i jeżeli okaże się, że program jest zupełnie nietrafiony w swoją niszę (bo np. fani Heroesów to stratedzy, dla których fabuła ma drugorzędne znaczenie), zajmę się pewnie czymś ciekawszym :-)
Chyba nie umiem kończyć postów :-P
Jeszcze jedno - zrozumiałe jest że będziecie zainteresowani czy na taki projekt porywa się amator, czy też mam już jakieś portfolio. Powiem może tak: bardzo lubię inną starą grę, Drakana z 99 roku. Tak bardzo, że pobawiłem się hexedytorem, zdeasemblowałem kod i napisałem do niej patcha (robota podobna do tego co robił Slava z Hereosami, tylko że my [bo robiłem to ze znajomym] pisaliśmy patcha który miał rozwiązać konkretny problem). Zainteresowanych odsyłam tutaj:
http://dl.getdropbox.com/u/82366/drakan_patch_445%2B.exe
Oprócz tego część moich projektów jest na mojej, niestety długo nieaktualizowanej, stronce:
www.piotr-kosek.com