Witam . Od kilku dni pracuję nad swoją pierwszą kampanią - The Elf Wizard. Przystosowałem już plik main.cfg oraz stworzyłem jedną jednostkę, której potrzebowałem. Wszystko to z pomocą "Poradników dla twórców". Niestety z moją kampanią powtórzył się problem, który wystąpił kiedy próbowałem odpalić "campaign_skeleton", który uniemożliwiał uruchomienie dodatku. Zignorowałem go myśląc, że jeżeli dopracuje plik main. na wzór kampanii domyślnych z BfW, zniknie. Niestety problem występuje nadal. Wszystko jest dobrze dopóki nie chcę odpalić kampanii (ikona, opis, wybór poziomu trudności - wszystko działa). Kiedy próbuję zagrać wyświetla się następujący komunikat:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error loading game configuration files. The game will now exit.
Details:
Macro/file '~campaigns/The_Elf_Wizard/maps/The_Elf_Wizard1' is missing
at campaigns\\The_Elf_Wizard\\scenarios\\first.cfg:5
included from campaigns\\The_Elf_Wizard\\_main.cfg:26
included from _main.cfg:24
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Próbowałem na wiele sposobów ale nie mogę znaleźć błędu ani przyczyny problemu. Będę wdzięczny za pomoc
Wyślij. Pliki.
Wtedy będzie można spróbować naprawić, bo to co napisałeś nic nie wyjaśnia.
Witamy na forum Edytowane przez szpiczek dnia 15-07-2016 22:20
Plik przejrzę dopiero rano, ale z komunikatu wynika, że albo mapa ma inną nazwę (sprawdź czy np. nie ma końcówki .map, której w scenariuszu nie wpisałeś), albo ścieżka do niej nie jest zdefiniowana w pliku _main.
Najlepiej będzie jeśli spakujesz i wyślesz caly folder z kampanią.
Edytowane przez Piko dnia 16-07-2016 00:25
Pobrałem jeszcze raz "szkielet kampanii" z poradników i w nim jest dokładnie ten sam błąd. Myślę, że to właśnie z nim jest problem - na jego podstawie robiłem swoją kampanię. Jeżeli moje przypuszczenia są prawdziwe to lepiej naprawić szkielet żeby następni początkujący twórcy nie mieli tego samego problemu. Jeśli możecie, pobierzcie ten szkielet i to sprawdźcie, bo ja tam nie mogę znaleźć błędu lub jakiegoś braku. Jak wam się uda to będę mógł poprawić też swoją kampanię.
A może to wszystko jest po prostu spowodowane tym, że używam najnowszej wersji BfW?
Załączam też pełny plik swojej kampanii. Może znajdziecie jeszcze jakieś błędy. Dziękuję z góry
OK. Jakoś doprowadziłem go do grywalności. Ale łatwo nie było.
Największym błędem było to, że umieściłeś dodatek w folderze campaigns. Otóż jest to folder zarezerwowany dla kampanii defaultowych, a wszystkie dodatki idą do folderu userdata/data/add-ons, który znajduje się albo w folderze z grą, albo w Dokumentach (w zależności od opcji wybranej podczas instalacji gry).
W pliku jednostki miałeś jeden cudzysłów za dużo w opisie. Nie wiem też, co miałeś na myśli z tymi cechami. W obecnej formie jednostka losowała dwie cechy spośród wszystkich dostępnych elfom + tych które wypisałeś niżej. Pozwalało to także na rozpoczęcie z dwoma takimi samymi cechami.
Poprawiłem to, aby dostawał na start dokładnie te 3 cechy, które wypisałeś. Z reguły nie wstawia się tego do definicji typu jednostki, a raczej do scenariusza, ale jeżeli tylko lider będzie z niej korzystał, to można przymrużyć na to oko.
Warto też zamienić miejscami atak błyskawicą i nożem, niepisaną zasadą BfW jest właśnie że w pierwszej kolejności występują ataki wręcz, a dopiero potem dystansowe.
No ale to tyle w kwestii krytyki. Mimo że to dopiero zalążek kampanii, to bardzo mnie zaciekawił. Jednostka jest całkiem fajnie wykonana - zwłaszcza jej animacje. Sama mapa też wygląda interesująco - chociaż nie wiem czemu na południu lasu możemy znaleźć tropikalne drzewa. Z niecierpliwością czekam na więcej - i tutaj dodam, że zamiast korzystać z poradników lepiej jest porównywać kod swojego dodatku z innymi i samemu kombinować. Daje to lepsze i szybsze rezultaty.
Naprawdę wielkie dzięki za pomoc no i oczywiście za krytykę (początkującym ,takim jak ja, się przydaje) oraz za ciepłe słowa . Zabieram się do dalszej pracy. W tym wątku będę zamieszczał dalsze wyniki pracy albo inne pytania/problemy. Powodzenia w Bitwie o Wesnoth!
Witam ponownie! Po wielkiej batalii stoczonej na polu WML, ukończyłem pierwszy scenariusz mojej debiutanckiej kampanii "The Elf Wizard". Specjalnie wymyśliłem go w taki sposób, żeby użyć jak najwięcej funkcji. Kosztowało mnie to dużo zdrowia i nerwów, ale teraz już nic mnie nie zaskoczy (mam nadzieję), więc następne scenariusze będą powstawały szybciej. Chcę wam udostępnić tą wersie demo kampanii. Zawiera jedną jednostkę (póki co, ma tylko jeden poziom rozwoju, ale to się zmieni), kilka grafik no i złożony scenariusz. Zachęcam do przetestowania. Jestem otwarty na krytykę, uwagi, porady itp. Mam nadzieję, że błędy nie wystąpią, ale jeśli coś takiego miałoby miejsce, to niezwłocznie piszcie. Opiszcie też swoje wrażenia związane z warstwą fabularną (starałem się ale powieściopisarzem nie jestem). Zalecam grać na poziomie trudności normalnym, bo nie mam doświadczenia w balansowaniu i granie na "easy" lub "hard", może nie sprawić odpowiedniej przyjemności. Miłej zabawy!
PS: Cała kampania jest napisana po angielsku. Zamierzam dodać tłumaczenia, ale nie mam pojęcia jak je zaprogramować. Jeśli umiesz to zrobić i masz czas to proszę umieść odpowiedni plik w mojej kampanii i wyślij ją z powrotem. Nie potrzebuję całego tłumaczenia, wystarczy aby plik zawierał kilka opcji na których będę mógł się potem wzorować. Z góry dzięki .
No więc: przeszedłem, zapowiada się ciekawie, ale kilka rzeczy trzeba poprawić.
Kod wygląda całkiem dobrze, ale wyłapałem kilka literówek. Między innymi elficki przywódca nie rekrutuje jednostek, gdyż na liście rekrutacji ma wpisane "Elwish" zamiast "Elvish". Wartość agresji też jest nieprawidłowa, poprawny zapis to 0.7 (obecną formę komputer czyta jako 0).
Jeżeli zamysł jest taki, by elfy z wiosek nie mogły się przemieszczać, to musisz ustawić im max_moves na 0. "Moves=1" ustawia im liczbę punktów ruchu na 1, ale tylko na jedną turę. Na chwilę obecną makro VILLAGERS prawie niczym nie różni się od LOYAL_UNIT.
W pewnym miejscu mamy koordynaty wypisane jeden po drugim w takiej formie:
Śmiało można je zamienić na x=11-26, oraz y=10-11. Jeżeli chcesz zdefiniować pojedynczą linię to śmiało możesz ustawić samo y=10 lub y=11, chyba że musi ona przebiegać akurat na granicy dwóch rzędów (gdzie hexy nieparzyste należą do jednego a parzyste do kolejnego, jak w twoim przypadku). Tutaj jednak można napisać nawet y=1-11 i otrzymać bardzo podobny efekt do obecnego, bo (na 99%, lecz mogę się mylić) jednostka i tak zatrzyma się na pierwszym hexie który pasuje do filtra.
To już nie jest błędem, ale zamiast pisania pełnych tagów [message], proponuję użyć makra MESSAGE. Pozwala to zaoszczędzić bardzo dużo miejsca, a także sprawia że kod jest bardziej przejrzysty:
To:
[message]
speaker="Canine"
message=_"Hello master! I will guide you!"
[/message]
Zamieniamy w to:
{MESSAGE "Canine" () () _"Hello master! I will guide you!"}
Skryptując BfW mamy do dyspozycji naprawdę szeroki wachlarz użytecznych makr, a ich listę można znaleźć tutaj: https://www.wesno...ence.xhtml
Mapa wygląda ciekawie i całkiem dobrze. skorygowałbym jednak kilka rzeczy:
- Wioski na 3,17 i 4,16 stykają się ze sobą. Dobrze jest, aby między wioskami była choć jedna kratka przerwy, więc przesunąłbym jedną z nich.
- Na 5,42, 18,43 i 25,38 mamy hexy lasu deszczowego. Czy jest to zamierzone? Proponuję zastąpić go zwykłym lasem.
- Proponuję dorzucić trochę zalesionych wzgórz (wybierasz wzgórza w edytorze i mając wciśnięty klawisz shift przejeżdżasz nimi po lesie), zwłaszcza na południu mapy, aby urozmaicić trochę pościg (na chwilę obecną wszędzie mamy jednolity teren, bo dla elfów koszt poruszania się w lesie wynosi 1)
Dialogi wydają się być w porządku, chociaż jedna sprawa trzyma mnie w niepewności. Jeżeli pytając "Are you the necromacer?" masz na myśli jakiegoś specyficznego nekromantę (na to wskazuje użyty przedimek), to możesz zmienić to na coś w stylu "- So you are the necromancer who is attacking our people lately?!" "- No I'm not, I swear". Jeżeli po prostu pyta się czy jest nekromantą, to użyj "Are you a necromancer?".
Ogółem proponuję trochę rozbudować dialog po przyzwaniu nietoperza. Gandrill za krótko się broni przed oskarżeniami. Z poprzednich dialogów można wywnioskować że nie ma on dużo szacunku wobec pobratymców, ale to i tak nienaturalne, jak szybko pogodził się z koniecznością ucieczki. Dodałbym dialog który pojawia się gdy zaatakuje go jeden z elfów, w którym nasz mag raz jeszcze próbuje wytłumaczyć, że wcale nie jest nekromantą. Nastawienie drugiego z elfów ustal sam. Przydałby się też dialog śmierci przywódcy wrogów, bo gdy testowałem scenariusz, został on pożarty przez wilki.
W kwestii balansowania mogę poradzić ci swoją technikę. Nie jest ona perfekcyjna, bo z czasem dochodzą dodatkowe czynniki których ona nie uwzględnia, ale do pierwszych scenariuszy lub wstępnego balansowania jest ona w sam raz.
Najpierw przygotowuję sobie zapis z początku scenariusza na normalnym poziomie trudności. Nie autozapis tury 1, lecz sam początek. Zawiera on takie informacje jak zachowana ilość złota, jednostki z listy przywołań i doświadczenie lidera, jednak nie sam kod scenariusza - tak więc za każdym razem gdy dokonamy w nim zmian, wczytanie gry z tego zapisu uwzględni owe zmiany.
Zajmujemy się jednak pierwszym scenariuszem kampanii, do którego owego zapisu nie otrzymujemy - więc nie przejmujemy się tym, po prostu odpalamy grę z menu kampanii i jedziemy.
Często twórcy wybierają na oko wartość złota na normalu, a potem mechanicznie dopisują +50 i -50 dla poziomu łatwego i trudnego. Potem testują normal, jeżeli jest to konieczne to zmieniają ilość złota raz jeszcze, a wartości dla easy i harda przesuwają raz jeszcze. Jest to dosyć powolna i mało precyzyjna metoda, więc używam odwrotnej metody.
Otóż wczytując zapis, nie ustawiam trzech wartości złota a jedynie tę na której gram - przykładowo, {GOLD 0 200 0}. Najpierw wybieram ją biorąc pod uwagę harda. Ustawiam więc sobie jak najmniej złota, a przeciwnikom jak najwięcej. Dokładam też na mapę dodatkowe jednostki wroga, bądź daję im wyższy poziom. Testuję wszystko i dostosowuję wartości w zależności od pożądanego efektu - jeżeli chcę żeby poziom trudny był zarezerwowany dla prawdziwych wyjadaczy, to wzmacniam przeciwników tak długo, aż wygranie scenariusza staje się dla mnie skrajnie trudne i przechodzę go "na styk". Jeżeli jednak stworzenie ze scenariusza prawdziwej mordęgi nie jest moim celem, to trochę odpuszczam i zostawiam to na takiej wartości, na której gra stanowi wyzwanie. Gdy już osiągnę odpowiedni poziom, wstawiam # przed wszystkie dodane do harda jednostki (w ten sposób ustawia się także komentarze w wesnothu, dzięki czemu gra nie będzie tych jednostek uwzględniać; wrócimy do tego później), po czym przepisuję wszystkie wartości do poziomu trudnego. Tym razem będę szukał odpowiedniej wartości złota dla poziomu łatwego, więc znowu wybieram przykładową ilość złota, np. {GOLD 0 100 250}. Testuję tak długo, aż scenariusz będzie na tyle łatwy, że gracz nie napotyka wielkich kłopotów, ale jednocześnie wystarczająco trudny, by nie przechodził się sam. Gdy już znajdę tę wartość, przepisuję ją do wartości easy, a na normala wybieram coś pomiędzy tymi dwoma. Efekt końcowy to wtedy np. {GOLD 75 150 250}
Szukam więc jednostek które wcześniej wykluczyłem za pomocą #. Tutaj korzystam z #ifdefów i #endifów. Są one bardzo przydatne, bo kod zamknięty między nimi zostaje wykorzystany tylko jeżeli jest spełniony dany warunek. Więc jeżeli wsadzimy te jednostki do #ifdef HARD, pojawią się one tylko na poziomie trudnym. Analogicznie, wsadzenie czegoś do #ifndef HARD sprawia, że pojawia się to na każdym poziomie za wyjątkiem trudnego. Do #ifdefów można wsadzać jednostki, dialogi, a nawet całe eventy. Poniżej daję przykład zastosowania owych ifdefów:
Wspomnę też dwa słowa o balansie jednostek. Bo o ile w kampaniach nie jest to tak ważna sprawa jak w erach i można przymknąć na to oko, o tyle elficki adept jest na chwilę obecną strasznie przekokszony. Patrząc na statystyki, na pierwszym poziomie jest on tak silny, jak elfy drugiego poziomu - a ponadto ma wiele przydatnych umiejętności. Poniżej masz dla porównania listę jednostek defaulta, w której szczególną uwagę warto zwrócić na czarodziejkę i łowcę. http://units.wesn....html#Elfy
Dla pierwszego poziomu elfa proponuję więc zmniejszyć mu hp do 30, atak wręcz do 6-2, a na dystans do 10-2. Na drugim poziomie chyba może mieć swoje obecne statystyki, lub trochę obniżone. Nie wiem jednak dlaczego ma on dostęp do umiejętności pierwszy cios, z której korzysta prawie wyłącznie piechota z długą bronią drzewcową.
Tworzenie tłumaczeń mimo pozorów nie jest zbyt trudne, potrzebujesz tylko odpowiednich programów. Jeden do wyciągnięcia fraz do tłumaczenia z plików, gdzie zbawienny okazuje się być pogram wespo, autorstwa jednego z użytkowników międzynarodowego forum. Osobiście mogę potwierdzić że jest on bezpieczny. Druga rzecz której potrzebujesz to program do obróbki i skompilowania pliku, tutaj bardzo przydatny okazuje się program Poedit. Obydwa programy są intuicyjne w obsłudze więc nie będę wyjaśniał jak działają. Musisz tylko pamiętać, że każda fraza do przetłumaczenia musi być poprzedzona znakiem "_". W twoim scenariuszu brakuje go w kilku dialogach.
Gotowy plik .mo (czyli ten skompilowany) musisz umieścić w folderze translations/pl/LC_MESSAGES i nazwać go tak, jak w #textdomain (w twoim przypadku wesnoth-tew). Dla wygody polecam jednak trzymać plik .po w pobliżu, bo z czasem będziesz musiał owe tłumaczenie aktualizował.
No ale dobra, to by chyba było tyle. Sorry za ścianę tekstu, może z mojego bełkotu wyciągniesz coś konstruktywnego. Na koniec dodam tylko, że z niecierpliwością czekam na kolejne scenariusze. Miło się patrzy, że nasza strona wciąż przyciąga nowych, uzdolnionych użytkowników, którzy są zdolni na coś więcej niż tylko słomiany zapał.
Pozdrawiam.
Edytowane przez Piko dnia 21-07-2016 13:34
Ta "ściana tekstu" będzie naprawdę przydatna. Wielkie dzięki za pomoc. Poprawię scenariusz zgodnie z twoimi uwagami. No, może poza wprowadzeniem makra dialogów - w tym scenariuszu zostawię jak jest*, ale w następnych będę go używał (każdy bit na wagę złota!). Chciałem udostępnić resztę kampanii w całości, ale możliwe że podam jeszcze jakieś scenariusze do testu Zaglądajcie tu czasem - możliwe, że gdzieś utknę albo będę potrzebował pomocy.
Dziękuję za opinię postaram się to wszystko poprawić. Jeżeli chodzi o modyfikator doświadczenia - nastawiłem 200% celowo. Ma to uniemożliwić awans elfa w pierwszym scenariuszu, jednocześnie pozwalając mu na małe "expienie". Wszystko z powodów fabularnych. Co do angielskiego, nigdy nie pisałem opowiadań w języku obcym. Kiedy napiszę polskie tłumaczenia będzie się się to czytało przyjemniej. Błędów gramatycznych i językowych nie powinno być - przed udostępnieniem poziomu dałem cały tekst do sprawdzenia znajomemu po filologii angielskiej. Jeżeli rzeczywiście występują, to proszę pokażcie które, lub poprawcie je w pliku gry i wyślijcie mi. Niestety gdybym pisał kampanię po polsku od początku musiałbym to robić bez polskich znaków, a to byłoby chyba jeszcze gorsze. Nie przewidziałem ukończenia poziomu jaki opisałeś, poprawię to tak aby obie postacie musiały dotrzeć na miejsce (w tym scenariuszu walka, tylko utrudnia sprawę, należy znaleźć bezpieczną drogę ucieczki). Co do tej nekromancji to trochę się czepiasz zdecydowana większość nekromantów używa w sowich armiach tego typu nietoperzy (wydaję mi się że nie używa ich nikt inny), więc elfy wzięły Gandrilla za jednego z nich, a że przywódca osady widział w jego czarach zagrożenie, postanowił wykorzystać ten incydent aby się go pozbyć. Zauważ, że bohater próbuje się bronić (mógłby właśnie powiedzieć to co ty zauważyłeś), ale Carad nie pozwala mu dojść do słowa. Ten dialog jeszcze dopracuję zgodnie z poradami Piko. Nie zamierzam też porzucić wątku o tajemniczym zwoju, nie znalazł się tam przecież przypadkiem "bo tak" - wszystko zostanie wyjaśnione w następnych scenariuszach. Pozdrawiam Edytowane przez Tojatim dnia 24-07-2016 15:14