Pokazywanie postów oznaczonych etykietą paragrafowe. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą paragrafowe. Pokaż wszystkie posty

12 lutego 2018

Wojownik Autostrady Piekło na Autostradzie

Dzisiaj mamy niezbyt okrągłą rocznicę urodzin Joe Devera (dokładnie  62 rocznicę). Pisarza znanego
w Polsce głównie z cyklu gier paragrafowych opisujących losy Cala Phoenixa czyli Wojownika Autostrady. Dever ma na koncie dużo więcej gier paragrafowych z czego kilka jest o wiele bardziej rozbudowanych fabularnie niż przygody Cala. Więcej informacji znajdziecie na angielskiej wersji wiki dotyczącej Joe Devera.

Ale nie o  tym miało być.

Z dniem dzisiejszym ogłaszam zakończenie prac nad większymi elementami silnika paragrafowego utrzymującego interaktywną wersję Wojownika Autostrady.  Przy okazji usunąłem ekran witający informacją o beta testach. W pełni uruchomiłem wszystkie przewidziane w projekcie funkcjonalności i oddaję teraz tę grę w wasze ręce. Mam nadzieję, że przechodzenie jej dostarczy wam tyle samo radości jak mi przerobienie jej w wersję on-line.
Droga do zakończenia projektu była dłuższa niż się spodziewałem, ale cieszę się, że podjąłem się tego zadania.
Wiec jeśli tu jesteś to zmierz się z przeciwnościami losu jakie czekają każdego kto chce przekroczyć spalone słońcem i zniszczone wojną bezdroża Teksasu jako:



interaktywna paragrafówka on-line


p.s.
Wszelkie uwagi nadal są miło widziane. Drobne poprawki będę wprowadzał na bieżąco.
Gra zostanie na podanym adresie do końca świata i jeden dzień dłużej , czyli do momentu w którym będę płacił za domenę :)  .



11 lutego 2018

Angular Freeway Warrior Highway Holocaust

Droga dobiega końca. Angularowy Wojownik Autostrady właśnie otrzymał ostatni dodatek, który wymieniłem we wpisie z września zeszłego roku. W tej chwili jestem w trakcie szlifowania rozwiązania związanego z przełączaniem języków.

Nie sądziłem, że napisanie tej paragrafówki, zajmie mi tyle czasu. Gdyby ktoś, we wrześniu, powiedział mi, że na efekt końcowy będę musiał czekać tak długo i że  będzie mnie to kosztowało tyle pracy to prawdopodobnie nie podjąłbym się tego zadania. Może to i lepiej. Udało się i jestem z siebie zadowolony. Sporo w tym czasie nauczyłem się - tak na temat angulara jak i samej pracy nad organizowaniem swojego wolnego czasu. Niemal przestałem grać na kompie  (sądzę że spokojnie 5x mnie gram w gry niż jeszcze pół roku temu), oglądać głupoty w necie czy cokolwiek robi się przy kompie, aby zmaksymalizować marnowanie wolnego czasu.

Ostatni miesiąc był mega trudny - widziałem już koniec prac, ale cel nie przybliżał się gdyż nie poświęciłem mu wystarczająco wiele uwagi. Po prostu przemęczyłem się pisaniem gry, nauką i pracą w efekcie szybkość pracy spadła dramatycznie.

Nie można jednak poddawać się u kresu drogi! Jeszcze kilka, kilkanaście linii kodu przede mną.

Poniżej zrzuty ekranowe z wersji polsko-angielskiej. Możliwe jest przełączanie się na bieżąco między językami. Nie wszystko jest przetłumaczone (np. nie tłumaczyłem opisów efektów ataków), ale to co jest spokojnie wystarcza, aby osoba anglojęzyczna mogła się spokojnie pobawić. Dorzucę jeszcze tłumaczenia nazw przedmiotów (tego brakuje), wyczyszczę angielską wersję i będzie koniec!



Dla próby już  wrzuciłem tę wersję na serwer, ale wymaga kilku poprawek. Może jakimś cudem zdążę (przed 12.02) wrzucić wszystko w ostatecznej wersji na serwer ale grać oczywiście można:

08 lutego 2018

Dead line się zbliża

Już niedługo (12.02) założony termin zakończenia prac i ostatecznej prezentacji gry, a ja siedzę i dorabiam polsko-angielskie etykiety.

I jeszcze sporo przede mną. Mam nadzieję, że wyrobię się do poniedziałku .





25 stycznia 2018

Wojownik Autostrady beta testy

Beta test Wojownika trwa od kilku dni i, co mnie niezmiernie cieszy, kilka osób poza zwyczajnym otworzeniem strony zgłosiło uwagi. Niewiele tych uwag (w sumie na dzisiaj 13), ale taki feedback także jest dla mnie ważny - ktoś poświęcił czas, aby przejrzeć to co napisałem. Kilka zgłoszeń zostało opatrzonych zrzutami ekranowymi, kilka propozycjami zmian.
Najciekawsze zgłoszenie dotyczyło ... utrudnionego korzystania z paragrafówki przez osobę niewidomą ponieważ większa część rysunków nie posiadała cechy alt lub tilte co powodowało, że gra stawała się niegrywalna dla osoby używającej ekranowego readera.

Większość uwaga poprawiłem i zostały wrzucone do gry. Jednakże nie tylko o tym chciałem pisać. Na szersze podsumowanie przyjdzie jeszcze czas.

W międzyczasie wykonałem pierwsze podejście do tłumaczenia paragrafów i samej gry na angielski. Tekst paragrafów będzie pochodził ze strony projektu aon, o czym wcześniej wspominałem. Muszę dopisać angielskie testy wyświetlanych graczowi powiadomień związanych bezpośrednio z działaniem gry. Na tę chwile mały zrzut poniżej, na razie zmiana obejmuje tylko dialog ustawień.



Druga - równie ważna rzecz. Już niemal działa podsumowanie postępów w grze. W momencie śmierci wyświetlany jest okno dialogowe opisujące dokonania gracza. Poniżej zrzut.


Dodatkowo postęp w czytaniu paragrafu można obejrzeć na grafie paragrafów. I tu też, poniżej zrzut.

Kropka zielona (z lewej na górze) to paragraf 1, kropki czerwone - paragrafy, które gracz minął w grze, zaś kropka czarna (na dole na środku) to miejsce śmierci gracza.

Rozwiązanie muszę doszlifować (np. postęp powinien być zapisywany w momencie zapisu postaci czy wyświetlany na koniec gry), ale już teraz posiada 90% założonej funkcjonalności.

p.s.
To są ostatnie rzeczy jakie chce dodać do gry! No chyba, że dorzucę jeszcze dźwięki :P

17 stycznia 2018

Wojownik Autostrady, beta on-line



To ten dzień!
Dzisiaj po raz pierwszy mój silnik napędzający paragrafówkę ujrzał światło dzienne, a tak po prawdzie został wystawiony w internecie.


Na podanym poniżej adresie możecie zanurzyć się w niebezpieczny świat postapokaliptycznej Ameryki. Paragrafowej Ameryki :D

Wojownik Autostrady (beta)


Przypominam, że jest to wersja beta i ew błędy oraz uwagi możecie zgłaszać pod podanym niżej adresem:
Zapraszam do zabawy!

p.s.
Bądźcie wyrozumiali :)

p.s.2
Część zabezpieczeń anty-oszukańczych została wyłączona (np. odświeżenie strony ładuje generowanego w tle bohatera). Docelowo silni nie będzie tak działać .

07 stycznia 2018

Wojownik Autostrady dead line

W jednym z komentarzy na moim blogu Borejko zasugerował, aby grę wypuścić na rocznicę urodzin Joe Devera, czyli 12 lutego. Taki typowy deadline wydania. I chyba tak też się stanie.

Ale zanim to nastąpi postaram się uruchomić beta-testy. Przygotowuję samą grę jak i ... uwaga, domenę w sieci, w której gra wyląduje! Domena nie będzie bezpośrednio nawiązywała do nazwy gry, ale będzie to moje małe miejsce w Internecie. Docelowo trafi tam także Sladum.

Walka z prostymi opisami efektów obrażeń.
Postaram się włączyć w stronę system zgłaszania błędów, ale jeśli mi się to nie uda to poproszę ew. klikających o wrzucanie błędów tu, na bloga. Tak czy inaczej następne tygodnie zapowiadają się na ciekawe.

A w samej grze, z dużych rzeczy, brakuje już tylko możliwości przełączenia się na wersję angielską. Dodałem wspominany we wcześniejszych wpisach opisowy tryb walki, w którym przy okazji obrażeń dodawane są proste, jednozdaniowe efekty ciosów. Gra dostaje lekko rpgowy szlif i gdyby mieć nielimitowaną ilość czasu (lub wsparcie) można by ten element dopieścić (np. uzależnić opisy obrażeń od typu używanej broni). Ale naprawdę nie mam już na to czasu. I siły i chęci. Tak czy inaczej działa i urozmaica walkę.

Ten element jak i wykonane ostatnio poprawki skłoniły mnie do pewnego przemyślenia. Dlaczego napisanie, wydawałoby się, prostej gry zajęło tyle czasu i powstało tak dużo kodu? Przecież to zwykła gra tekstowa z jednym bohaterem. Nawet nie ma sensownej grafiki. Skąd ten narzut czasowy?
Na spokojnie oceniając prace nad grą doszedłem do następujących wniosków:
  • pierwszy raz zrobiłem grę od 0 do (właściwie) końca, i to końcówka, która już zajęła ponad miesiąc czasu, zburzyła kilka wcześnie zaimplementowanych mechanizmów,  w efekcie trzeba było je przepisać lub poprawić
  • źle oceniłem poziom komplikacji części elementów np.  wykonanie mapy zajęło mi tak ze 3x więcej czasu niż przewidywałem  (i spokojnie jeszcze można nad nią posiedzieć), podobnie obsługa kostki czy menu postaci
  • obsługa zasad gry, nawet tak prostych jak w paragrafówce, może być niesamowicie skomplikowana (szczególnie jeśli ich twórca sam się do nich nie stosuje)
  •  przerobienie tak dużej ilości paragrafów do formy czytelnej dla silnika gry (350 sztuk!) to po prostu masakra i nie sądzę abym jeszcze raz miał na to ochotę
  • nocne pisanie skutkuje duplikowaniem kodu i przedłużeniem pracy nad, wydawałoby się, prostymi rzeczami
  • przydałaby się pomoc innej osoby w pisaniu gry, zawsze to ktoś z odmiennym podejściem do rzeczywistości i nowe pomysły. Część stworzonych rzeczy (np. zapis na local Storage) pojawiło się dzięki podszeptom osób, którym powiedziałem o projekcie lub pokazywałem działające elementy.

Oczywiście jest też jeden wielki plus, którym jest wyrobienie nawyku programowania w domu. Wieczorami nie marnowałem czasu na głupoty, a na naukę i pisanie gry. Pomoże to przy kolejnych projektach.

Jak tylko zakończę ten jeden :)

28 grudnia 2017

Angularowy Wojownik Autostrady: MAPA!

Wreszcie znalazłem czas, aby dokończyć mapę gry.
Teraz dokładnie wiadomo jak dużą odległość pokonaliśmy w drodze z McKinney do Big Spring wraz z postępem w grze i przeczytanymi paragrafami. Wykonanie tego elementu zajęło mi mniej czasu niż się spodziewałem! Pozostaje tylko się cieszyć.

Cóż, bez zbędnego pisania, poniżej zrzut ekranowy prezentujący efekt.



Jeszcze nie wiem czy w jakichś sposób wyróżniać punkty np. w zależności od typu. Tak czy inaczej  jest to jedno z ostatnich dużych ulepszeń gry jakie przewidziałem jeszcze przed napisaniem pierwszej linii kodu.
Zakończenie prac już blisko...

24 grudnia 2017

Angularowy Wojownik beta testy ?

Pojawił się propozycja od osób, które widziały grę w aktualnej wersji, aby wystawić ją  do testów.  Takie typowe beta-testy przed ostatecznym wdrożeniem i zanim program zdobędzie wszystkie założone możliwości.

Po rozważeniu pomysłu powoli skłaniam się ku tej propozycji.  Jedyna trudność to postawienie gry w miejscu, do którego miałbym łatwy dostęp czyli serwer z ftp i zarejestrowana domena. A takowego miejsca w tej chwili nie mam :D  (co, patrząc na to co robię na co dzień, jest dziwne :) ) .

W najbliższych dniach zamierzam więc wykupić domenę oraz jakąś lokalizację w sieci, w której będę mógł zająć trochę miejsca. Przy okazji wystawię jakiegoś redmina czy inną jire / bugzille (heheheh)  na potrzeby samego procesu zgłaszania błędów przez zainteresowanych użyszkodników :).

A paragrafówka spytacie...
Poprawiam różne drobne błędy. To tu to tam czasem coś się przewróci. Dorobiłem kilka prostych ekranów powitalno - wprowadzających, wyciąłem sporo zbędnego kodu (mój kod nie przeszedł mojego code-review :D) i jeszcze drugie tyle muszę wyciąć, zmieniłem trochę wygląd menu postaci (teraz prawie mi się podoba) i dodałem rysunki.
Przez chwilę korciło mnie, aby całe menu postaci zrobić na html-owych canvas, ale na szczęście powstrzymałem swoje absurdalne zapędy. Patrząc na moją prędkość nocnego pisania kodu wydłużyłoby to proces powstawania gry o kolejny miesiąc :D

Pisanie kodu w nocy idzie mi dużo, dużo wolniej niż w dzień. Nie przeskoczę jednak tego problemu pracując na pełny etat. Koniec marudzenia, niedokończone rozwiązania wołają!

I randomowy zrzut :), przecież notka bez tego to jak brak notki.
Menu postaci wygląda już trochę inaczej ale co tam:)



26 listopada 2017

Angularowy Wojownik Autostrady cd...

Sporo kodu upłynęło od ostatniego wpisu. A co się w tym czasie wydarzyło?

Najważniejsza rzecz - silnik umożliwia przejście od pierwszego do ostatniego paragrafu  z uwzględnieniem zaimplementowanych reguł gry. Dostępne jest klikalne menu bohatera. Można zmienić kilka z ustawień gry, zapisać i wczytać postać. 
Pojawiło się trochę ikonek i różnych powiadomień zgodnych z treścią paragrafów czy związanych ze stanem postaci. W tej chwili zajmuję się dodatkami oraz dopieszczeniem istniejących mechanizmów. Jeszcze trochę i będę mógł zaprezentować wam efekt prac.

Poniżej kilka zrzutów ekranowych, ale nie przyzwyczajajcie się do nich zbytnio. Wygląd jeszcze ulegnie zmianie.

Ekran startowy. Link Graf przenosi do grafu paragrafów, a Edytor do edytora paragrafów.

A tu ekran startowy gdy mamy zapisaną postać

Efekt tworzenia nowego bohatera.

A tu widać menu ustawień podczas zapisu postaci.

28 września 2017

Angularowy Wojownik Autostrady

Powoli ruszyłem z pracami nad mechaniką tworzenia postaci.
Jeśli ten element wykonam prawidłowo reszta pójdzie z górki. W tej chwili stworzyłem dwa nowe ekrany - losowania umiejętności oraz wyboru podstawowego ekwipunku.
Zrzuty poniżej

Wybór ekwipunku

Wybór umiejętności

19 września 2017

Interaktywny Wojownik Autostrady

Powoli przygotowuję kolejny paragrafowy projekt. Tym razem na stół wziąłem znaną wszystkim fanom paragrafówek grę Wojownik Autostrady. Stwierdziłem, że zmierzę się z kultowym produktem i jednocześnie trudniejszą mechaniką.
O ile niemal od ręki przeniosłem definicje paragrafów do formatu identycznego z tym jaki zaprojektowałem dla Przygody barbardzyńcy Sladuma tak przygotowanie mechaniki gry nie jest  łatwym zadaniem. Muszę dopisać mechanizm tworzenia postaci, specyficznych testów opartych o umiejętności, szeroką obsługę ekwipunku... W efekcie dojdzie kilka dodatkowych ekranów i sporo kodu.
Tekst gry będzie w dwóch wersjach językowych - polskiej oraz angielskiej.

Jak szaleć to dla szerokiego grona!

03 września 2017

Paragrafówka przygoda w Angularze cz5 - KONIEC PRAC

Udało się! Paragrafówkowy silnik (o tyle o ile może to powiedzieć autor jakiegokolwiek programu) ukończony. Możecie się z nim zapoznać grając pod tym linkiem:


Życzę powodzenia w odkrywaniu sekretów świątyni Seta.

p.s.
W razie uwag, błędów cóż - piszcie :P

19 sierpnia 2017

Paragrafówka przygoda w Angularze cz4

Prawie koniec !
Pojawiła się obsługa przedmiotów posiadanych w ekwipunku oraz przełączanie aktywnej broni. Właściwi są to ostanie elementy, które chciałem dodać. Na razie ekwipunek nie jest ładowany jako modalne okienko bo w końcu dałem sobie spokój z tym rozwiązaniem
Poniżej efekt 'live', menu bohatera. Dostępne jest po prostu pod przyciskiem i ładuje się nad paragrafem. Tak prezentuje się charakterystyka postaci:
Jak widać można - w przypadku zbyt małej ŻYW użyć mikstur leczenia. Efektem leczenia jest wzrost ŻYW i zniknięcie mikstury z listy:
Przełączenie broni i leczenie dostępne jest tylko poza walką
A tu widać że Sladum zdobył dwuręczny miecz, którego użyje w walce jeśli klikniemy klawisz 'Użyj'.
Użycie przekłada się na walkę. Zgodnie z definicją broni + 2 kostki do ataku:
Iiii.... zostały poprawki błędów i jakiś refaktor. Niedługo będziecie mogli zagrać sami!

17 sierpnia 2017

Paragrafówka przygoda w Angularze cz3

Powoli pracę nad angularowa paragrafówką dobiegają końca. Od ostatniego wpisu poprawiłem wiele niedoróbek, dodałem obsługę warunkowego wyłączania wyjść/wejść do paragrafów dzięki czemu np. nie da się dwa razy przeszukać pomieszczenia czy dwukrotnie wejść w tryb walki z raz pokonanym przeciwnikiem.
Po drodze powstała obsługa pułapek i kilka mechanicznych elementów gry. Niewiele zostało do dopisania (min.: wliczanie bonusów z przedmiotów w walce czy leczenie się).
Nadal nie ma modalnego okienka ekwipunku postaci! Nie udało mi się pokonać problemów z wyświetleniem głupiego modalnego diva ze wsparciem Angulara. W sieci znalazłem co najmniej kilkanaście przykładów opisujących jak to zrobić, ale żaden te z tych, które użyłem nie zadziałał. W końcu i to zaziała ale sądziłem że jest to rozwiązanie przysłowiowo dostępne prosto z pudełka.
Fajnie działa opcja sprawdzenia czy dane wyjście z paragrafu jest dostępne lub niedostępne. Efekt jest lepszy niż sobie obiecywałem po tym rozwiązaniu. Pokaże to na przykładzie działających paragrafów.
W ramach oryginalnego paragrafu 27 definicja była następująca:
Widać, że ilość obsługiwanych opcji jest duża i ew. gracz może po prostu ominąć te, które są dla niego niewygodne.
Dzięki wprowadzeniu kilku mechanizmów obsługiwanych z poziomy angulara pierwsze podejście do paragrafu wygląda następująco:
Co się stało? Otóż pojawiły się następujące rzeczy:
  • Sprawdzane jest czy postać posiada w ekwipunku klucz do drzwi
  • Jeśli go nie posiada, blokowane są wyjścia odpowiadające za obsługę klucza
A teraz chwilę pozwiedzaliśmy dostępne paragrafy (i nie wyważyliśmy drzwi) i mamy w ręce klucz pasujący do drzwi. Dostępne wyjścia prezentują się następująco:
jednocześnie dzieje się coś dodatkowego. Bez klucza (lub wyważenia drzwi) nie można było wejść do świątyni, ale i przejście ze środka świątyni na dziedziniec było zablokowane! (paragraf 11)
jednak w momencie gdy trafimy do paragrafu 11 z kluczem zdobytym na dziedzińcu (lub też wyważyliśmy drzwi) zmienia się ilość dostępnych możliwości:
Efekt jest przyjemny i intuicyjny. Chciałbym już oddać to co napisałem, ale jeszcze muszę się powstrzymać. Nie wszystko działa tak jak trzeba.

01 sierpnia 2017

Paragrafowa przygoda w Angularze cz2

Wbrew pozorom prace nad angularowym silnikiem gry paragrafowej trwają dalej. W tej chwili dotarłem do momentu, w którym kod idzie w logikę obsługi  działania paragrafów niż naukę Angulara. Oczywiście staram się jak mogę wprowadzać rozwiązania angularowe, ale nie oszukując - nie da się wszystkiego napisać tak, aby powstało tylko na angularowy sposób.
W tej chwili próbuje nauczyć się jak wygenerować modalne okienko potrzebne do wyświetlania  stanu ekwipunku postaci. Już sprawiło mi to sporo kłopotów i ...  nadal nie działa.
Kolejny element framweworka jaki chce zastosować to fabryki do tworzenia źródła danych (teraz tworzonego statycznie w jednym z plików) oraz niemal najważniejszy element Angulara czyli dyrektywy. Tylko co ja tą dyrektywą będę robił to nie wiem :).

Takie podejście to trochę przerost formy nad treścią jednak bez użyci możliwie dużej ilości wbudowanych elementów frameworka nie da się go nauczyć na trochę bardziej niż podstawowym poziomie.

 Sam silnik w międzyczasie od ostatniego wpisu otrzymał kilka nowych funkcjonalności. W tym:
  • testy warunkowe
  • testy kumulatywne
  • zbieranie przedmiotów po testach i po walce (przykład na zrzutach)
    Przed walką
    Po walce
  • sprawdzenie czy postać posiada przedmiot potrzebny do przejścia paragrafu
  • zapis historii poruszania się po paragrafach
  • kilka poprawek blokujących wyświetlanie paragrafów
  • dużo innych drobnych poprawek

Pojawił się już efekt kuli śnieżnej - drobna zmiana w miejscu X powoduje ZŹŻ zmian w 3 innych miejscach. Powoduje to standardowe zamieszanie - rzeczy które działały tydzień wcześniej nie działają dzisiaj.

Poważnie rozrosła się definicja pojedynczego paragrafu. Pierwotnie był tekst paragrafu plus linki przekierowań. Wraz z dodawaniem nowych funkcjonalności poziom komplikacji zmienił się i trzeba pamiętać o nowo dodanych rzeczach oraz o tym jak wpłyną na to co już jest napisane.

Poniżej przykłady jak wygląda definicja paragrafu w zależności od tego jak dużo operacji udostępnia.

Definicja zwykłego paragrafu z jednym przekierowaniem
new Paragraf({
    number: 2,
    text: '<p>Zajmujesz miejsce woźnicy. Brama otwiera się jak tyko do niej podjeżdżasz</p>',
    exits: [new Redirect({
        target: 30,
        text: '<p><a  class="more-link"  href="#/paragraf/30">Na dziedzińcu strażnicy podchodzą do Ciebie</a></p>'
    })],
    enemy: [],
    tests: [],
    treasure: []
}),


A tutaj mamy definicję paragrafu z wrogiem i możliwością zdobycia - po walce - przedmiotu, miecza do rąk dwóch. Oczywiście obiekt mieczDwureczny jest odpowiednio budowany wcześniej:
new Paragraf({
        number: 142,
        text: '<p>Paragraf na potrzeby podniesienia przedmiotu po walce</p>',
        exits: [
            new Redirect({
                target: 144,
                text: '<p><a  class="more-link" href="#/paragraf/144">Pokonałeś wroga</a></p>',
                type: FIGHT_WON
            }),
            new Redirect({
                target: 144,
                text: '<p><a  class="more-link" href="#/paragraf/144">Poległeś</a></p>',
                type: FIGHT_FAILED
            })
        ],
        enemy: [new Enemy({name: 'Czarodziej', hp: 1, deffence: 1, proffesion: MAGE, special: [], status: 1})],
        tests: [],
        treasure: [mieczDwureczny]
    }),


O i definicja miecza:
var mieczDwureczny =  new Treasure({
    id: 2,
    name:'Miecz dwuręczny',
    bonus:2,
    bonusType:'SF',
    diceType:'DYNAMIC_MD'
});


Tu zaś mamy definicję paragrafu z testem kumulatywnym. Sama definicja testu jest już skomplikowana...
new Paragraf({
        number: 139,
        text: '<img src="img/swiatynia_wejscie.png" style="width: 50%;height: auto;  float: right; margin: 0 0 10px 10px;"/> ' +
        'Test KUMULATYWNY (charyzmy) CH: 4(5)',
        exits: [
            new Redirect({target: 144, text: '<p><a  class="more-link" href="#/paragraf/144">Wyjscie jakie pojawi się ponizej 4 rund UDANE </a></p>'}),
            new Redirect({target: 144, text: '<p><a  class="more-link" href="#/paragraf/144">Wyjscie jakie pojawi się przy 4 rundach UDANE </a></p>'}),
            new Redirect({target: 144, text: '<p><a  class="more-link" href="#/paragraf/144">Wyjscie jakie pojawi się przy 5 próbach UDANE </a></p>'}),
            new Redirect({target: 144, text: '<p><a  class="more-link" href="#/paragraf/144">TEST NIEUDANY PO 5 probach</a></p>'}
            )
        ],
        enemy: [],
        tests: [new Test({parameter: CH, difficulty: 4, success: 5, cumulative: true, conditionalExits: ['WON:LT:4', 'WON:EQ:4', 'WON:GT:4', 'FAILED:GT:5']})],
        treasure: []
    }),


I tak dalej. Możliwości jest sporo w efekcie kod szybko puchnie.

Gdzieś przy okazji napisałem parser w javie, który przeniósł poprzednią wersję paragrafówki do wersji angularowej. Można prowadzić walki, przeprowadzać część testów i poruszać się między paragrafami. Dzięki temu zauważyłem też, że konstrukcja niektórych paragrafów stanowi poważny problem dla aktualnej wersji silnika.
Wygląda tak i jest w pełni grywalna (nie licząc problematycznych paragrafów)


Cyferki na górze ekranu to paragrafy, które minął bohater zanim dotarł do paragrafu 23.

 Tutaj przykład testu kumulatywnego i jego efekt:




i da się dojść do końca gry. Log paragrafów pokazuje co się działo po drodze :)






Mimo wszelkich problemów jadę z kodem dalej.


p.s.
Kod javascript generowany z hilite.me

10 lipca 2017

Paragrafowa przygoda w Angularze cz1

Wspominałem w poprzednim wpisie o pewnej niespodziance przygotowywanej wraz z przygotowaną paragrafową grą Przygoda barbarzyńcy Sladuma. Tydzień temu nie wiedziałem jednak czy będę miał czas i chęci (jakże są ważne), aby zrobić to co miałem na myśli.


Zaczęło się niewinnie. Nie dalej jak dwa tygodnie temu stwierdziłem, że nauczę się AngularJS - webowego frameworka do JavyScript. Umożliwia on - podobnie jak jQuery - na zaawansowaną pracę na poziomie przeglądarki z wyświetlanym kodem HTML. Trochę takie jQuery na sterydach. Jak pewnie podejrzewacie, nauka czegokolwiek związanego z programowanie wiąże się z pisaniem miej lub bardziej skomplikowanych programów pokazujących podstawy języka czy frameworku. I w tym wypadku zacząłem tak samo, ale po przerobieniu tego i owego z książki (zawierającej błędy w napisanym kodzie!)  doszedłem do wniosku, że ten sposób nauki jest, ogólnie rzecz ujmując, mało wydajny i do dupy. Robienie pseudostron z opisanych w książce przykładów czy wyświetlanie przysłowiowego "Hello world" nie jest zbyt rozwijające i bynajmniej nie pozwala na nauczenie się czegokolwiek w sensownym czasie. Trzeba podejść do tematu tak, aby nie znudził po kilku godzinach nauki.

Z tego też powodu wpadłem na pomysł, aby przy nauce Angulara zrobić całkowicie interaktywną grę paragrafową. Połączę dzięki temu przyjemne (robienie gier) z  pożytecznym (nauka frameworku). Częściowo jest to też efekt malkontenckich uwag mojego kolegi, którego mierził obowiązek wyjmowania kości do gry w grę uruchomioną na przeglądarce oraz że jest tak mało interaktywna. 

 W efekcie mam na tapecie paragrafówkę Przygoda Sladuma przerabianą na, ni mniej, ni więcej, grę tekstową, w której interakcja, poza klikaniem na paragrafy i okazyjnie na aktywne przyciski, nie wymaga od grającego więcej wysiłku. Testy i walka rozwiązywane są przez wbudowany silnik gry paragrafowej napisany w javaScript na frameworku Angular.

W tej chwili postęp prac w stworzeniu w pełni interaktywnej paragrafówki oceniam na jakieś 50%. Zbudowałem mechanizm przekierowań między paragrafami (oparty $location), szablonów ekranów (angularowe szablony), prowadzenia walki, testów pojedynczej cechy, losowania kostek (angularowe serwisy), wyświetlanie paragrafów i wstępna obsługa błędów (angularowe kontrolery). Brakuje dobrej obsługi błędów przekierowań i kilku aspektów mechaniki gry paragrafowej. Muszę też popracować nad  wyglądem np. listy wyników rzutów przy walce czy wygląd ekraniku ekwipunku. 

Efekty są zachęcający. Wszystkie działania gracza oraz podjęte akcje trzyma w pamięci przeglądarka, nie trzeba przechodzić między stronami, aby otworzyć kolejny paragraf. Wbudowałem proste zabezpieczenie przed oszukiwaniem poprzez cofanie stron :p. Prace trwają.


Poniżej kilka zrzutów:

Walka:

Przykład walki z dwoma przeciwnikami
Ciąg dalszy walki, dla postaci Sladuma, w zależności od potrzeb, aktywują się umiejętności przydatne w walce. Oczywiście
paski Żywotności zmieniają się dynamicznie.



Wygląd paragrafu przed testem wymagającym jednego rzutu.

Test nieudany + przekierowanie


Test udany + przekierowanie


p.s.
Jeśli zajrzy tu ktoś zainteresowany ja działa Angular użyty do stworzenia gry oczywiście mogę o tym napisać.