02 lipca 2013

Generator postaci

Generator postaci, wersja alfa :)
Ostatnimi dniami poświęciłem kilka(naście) godzin na zrobienie generatora postaci do Kryształów Czasu. Zainspirował mnie stworzony przez Salama generator bestiariusza KC. Napisany w Excelu.
Ja chce osiągnąć coś podobnego, ale głównym założeniem jest użycie czystego JavaScript tak, aby była możliwość uruchomienia generatora w oknie przeglądarki on-line jak i off-line.
Zmęczenie
No i po 2 tygodniach grzebania czuję przesyt :) więc robię przerwę, ale przynajmniej napiszę co zrobiłem i jakie są kłopoty tak, aby miał automotywację,
Głównym problemem jest utworzeniem niezależnej od jakiegoś zewnętrznego źródła, sensownej, bazy danych, zawierającej wszystko potrzebne do stworzenia postaci - od profesji, przyrostów cech po opisy ras, cech, zawodów i ich wpływu na proces generowania. Niestety, robienie tego w pseudoobiektowej JS jest koszmarem.
Żeby przyspieszyć proces muszę zrobić generatory przekształcające żywy, skopiowany z pdf-a tekst, w klasę opisującą strukturę danych.
Kolejny problem to dostęp do danych, ich obróbka, a na koniec wygenerowanie z nich bohatera i prezentacja. Tutaj, w zakresie gui, pomaga JQuery, a ostatnia edycja środowiska NetBeans (7.3.1) daje dobre wsparcie w pozostałych punktach. Czasem tylko łapię się na tym, że zapomniałem niektóre zastosowania użytego języka.
Co już jest
W tej chwili generator jest w stanie stworzyć niepełną postać na 0POZ, jedno lub dwuprofesyjną. Dostępne rasy to człowiek i półelf (kobieta/mężczyzna). Generowane są już cechy i odporności. Wklepane profesje to wojownik, łowca i czarnoksiężnik.
Oczywiście jest dostęp przez przeglądarkę (sprawdzałem w Firefox, Chrome oraz IE), proste gui, bardziej mające na celu weryfikacje generatora niż docelowy wygląd.
Zaimplementowany mechanizm nie uwzględniania jeszcze wpływu na cechy zdolności nadnaturalnych / zawodów / wagi. Więc wiele jeszcze przede mną.
Przewiduję zgranie generatora ze zrobionymi już wcześnie bazami broni oraz zbroi.
Wnioski
JavaScript nie jest zbyt wygodnym językiem do programowania obiektowego takich projektów. Wiedziałem to już przed rozpoczęciem prac. Szczęśliwie wiele czasu oszczędzam dzięki środowisku NetBeans.
Muszę przyznać, że robienie takiego generator to niezłe ćwiczenie koncepcyjne na projektowanie kodu i sensownego sposobu przechowywania danych. W tej chwili osiągnąłem poziom, który nie przytłacza zbytnią komplikacją i stosunkowo łatwo zorientować się co z czego wynika.
Pozostaje kwestia kiedy to skończę i przetestuje. Cóż, nie ma się co oszukiwać, przed końcem wakacji generator nie powstanie.

Wygląd karty z 05.07.2013
Stan aktualny, prace trwają
Aktualizacja 10.07.2013
Udało się! Generator uwzględnia przy losowaniu postaci wybrane POZ profesji! Tak dla jednej jak i dla dwóch. Kod wyszedł prosty i jednocześnie wydajny. Postaram się jeszcze dodać zawody, bo na urlopie to raczej do tego nie zajrzę.
Poza tym uwzględniana jest już waga postaci (i wpływ na cechy), wzrost i pochodzenie społeczne.
Później nadnaturalki, mechanizm sensownego podnoszenia odporności co poziom oraz oczywiście biegłości.
I coś mam wrażenie, że pogodzenie generatora z sensownym gui będzie niezłym wyzwaniem. Chyba czas zacząć je projektować :).
Przyda się też jakaś weryfikacja/podgląd czy cechy zostały wylosowane prawidłowo.

8 komentarzy:

  1. Tak czy owak trzymam kciuki ;)
    Też chciałem podejść do tworzenia postaci ale jakoś onieśmielił mnie generator mastuga i odpuściłem.
    Ja zaś korzystam póki co z luźniejszego czasu i tworzę Księgę Bestii dla KC, właśnie w oparciu o stworzony generator. Pierwsze efekty przedstawiłem na forum. Temat Enklawy póki co nie zaprząta mnie tak bardzo jak kiedyś, spokojnie czeka na podjęcie.

    OdpowiedzUsuń
    Odpowiedzi
    1. Głównym ograniczeniem generatora Mastuga jest to że musisz pobrać aplikacje.
      Tutaj odpalisz przeglądarkę i tyle.

      W tej chwili zrobiłem zrzucanie wyników do czystej karty postaci, przeredagowałem lekko 'bazę' danych, wyrzuciłem trochę zbędnego kodu i wyłapałem ze 2-3 błędy.
      Zauważyłem też, że generator kostek (np dla k100) dostaje czasem czkawki i daje dziwnie zawyżone wyniki, chociaż na dużej próbce rzutów (1tys czy 10tys) rozkład jest standardowy, w granicy 49-51.

      Walczę w każdym bądź razie dalej :)

      Usuń
  2. Ja mam zaś kolejny pomysł, za który po księdze bestii się zabiorę, mianowicie generator walki w KC. Online, mniej więcej mam na to koncepcję, ale póki co zajmuję się bestiariuszem.

    OdpowiedzUsuń
  3. O kućwa, ale plany - czemu do licha nie chcecie o tym gadać u nas na forum. Dwóch tak aktywnych użytkowników, znów kręci na boku - eh Panowie

    OdpowiedzUsuń
    Odpowiedzi
    1. Jak będzie co pokazać - to będziemy pisać. Nie marudź na zapas :)

      Usuń
  4. Jak byś potrzebował upierdliwych testerów to ten.. mogę się poupierdliwiać nad tym.
    ~wasut

    OdpowiedzUsuń
  5. Chwilowo pracę zawiesilem z powodu urlopu

    OdpowiedzUsuń

Tu możesz wstawić swój komentarz