piątek, 17 listopada 2017

Problem z inflacją

W Token Battle zaczął występować problem którego od dłuższego czasu nie zauważałam - inflacja statystyk. W skrócie pisząc jest to sytuacja, w której ogólny poziom liczb na kartach stopniowo zwiększa się w czasie.

Czym to było spowodowane?

Otóż wypuszczając nowe karty musiałem tworzyć je na tyle silne, aby były w stanie rywalizować z innymi kartami. Czasami się zdarzało, że nowe karty były nieznacznie silniejsze od poprzednich. Była to różnica niezauważalna, ale jeśli w każdej aktualizacji pojawiałyby się nieznacznie lepsze karty, to z czasem suma tych różnic byłaby zauważalna i po jakimś czasie mogłaby wynieść przykładowo 25%. Jeśli więc jakaś jedna z pierwszych kart oferowała zagranie warte 4 punkty, to musiałaby rywalizować z zagraniami wartymi 5 punktów, czyli byłaby zdecydowanie zbyt słaba. Teoretycznie taką kartę można wzmocnić o 1, ale wtedy najsłabsza karta byłaby warta np. 4,03 punkty i też wymagałaby wzmocnienia i powstałaby taka nieskończona pętla.

Na początku problem był większy, ponieważ każda nowa karta znacząco zwiększała różnorodność gry. Jeśli wychodziła jakaś karta która nie posiadała kontr-strategii, to musiała wychodzić słabsza niż gdyby tą kontr-strategię posiadała. Prędzej czy później musiała też wyjść jakaś karta która tą strategię kontruje, co osłabia pozycję starej karty. Przykładem tutaj mogą być żetony zwiększające przyrost punktacji pobliskich żetonów - gdy pojawiły się żetony podmieniające typy żetonów lub przejmujące wrogie żetony, siła żetonów z aurami spadła i zaczęły wymagać wzmocnienia. To z kolei sprawiło, że żetony te były mocne przeciwko innym zagraniom i czasami wymuszały wzmacnianie innych zagrań.

Przyczyną problemu były także synergie między kartami (sytuacji w których wspołpraca kart sprawia że są mocniejsze niż zagrywane osobno). Jeśli tworząc jakąś kartę równoważyłem ją biorąc pod uwagę wystąpienie tylko istniejących strategii, to po pojawieniu się nowych synergii automatycznie stawała się jeszcze lepsza - nie na tyle lepsza by ją osłabić, ale na tyle lepsza by niektóre z konkurencyjnych kart stały się zbyt słabe na tle reszty. W takich sytuacjach lepszym rozwiązaniem wydawało się wzmocnienie karty bardzo słabej na tle reszty, niż osłabienie karty troszkę lepszej od pozostałych.

Jakie były tego konsekwencje?

Przede wszyskim ogólna siła kart ciągle rosła - powoli, ale rosła. Miało to negatywny wpływ chociażby na przewagę pierwszego gracza. Dlaczego? Drugi gracz zaczyna grę z żetonem o wartości 2, a więc różnica przyrostu punktacji dla pierwszego gracza wynosi -2. Jeśli pierwszy gracz wykona zagranie warte 4 punkty, to bilnas wzrośnie z -2 do 2 (bo -2 + 4 = 2). W następnej turze drugi gracz prawdopodobnie też wykona zagranie warte 4 punkty, redukując bilans z 2 do -2 i sytuacja zapętlałaby się do momentu aż któryś z graczy popełni błąd. W takiej sytuacji średnia różnica między punktacją graczy będzie wynosiła 0 (bo (-2) + 2 + (-2) + 2 + (...) = 0). A jak wyglądałaby sytuacja, gdyby w każdej turze gracze wykonywali zagranie warte 5 punktów? Wtedy bilans skakałby między wartościami -2 a 3, czyli średnia wynosiłaby połowę punktu, co na przestrzeni 50 tur mogłoby dać graczowi 25 punktów przewagi. Takie punkty powinny raczej wynikać z błędów popełnianych przez przeciwnika, a nie cechy gry.

Teoretycznie problem pierwszego gracza można by próbować naprawić poprzez wzmocnienie przewagi startowej 2-go gracza. Niestety gra nie przewiduje istnienia żetonów o wartości 2 i pół, bo nie ma tu połówek, ale można by rozwiązać ten problem stosując jakiś żeton specjalny. Z drugiej strony rozwiązanie te promowałoby karty które potrafiłyby dobrze wykorzystać cechę tego żetonu specjalnego, co niekoniecznie mogłoby mieć dobry wpływ na rozgrywkę.

Z drugiej strony inflacja statystyk ma jedną zaletę - jeśli liczby są większe, to łatwiej jest zrównoważyć grę, ponieważ można precyzyjniej dopasowywać wartości kart. Przykładowo czasem żeton o wartości 2 jest zbyt słaby, a żeton o wartości 3 jest już zbyt silny czyli niemożliwe jest odpowiednie zrównoważenie tego żetonu. Gdyby wszystkie wartości były 2x większe, to zamiast wyobru między wartościami 2 i 3 mielibyśmy wybór między wartościami 4, 5 i 6, a wtedy mogłoby się okazać, że taka 5 będąca odpowiednikiem 2 i pół byłaby idealnym rozwiązaniem.

W grze pojawiłby się także inny problem - rozrzut statystyk. Jeśli typowe wartości żetonów wahają się między 1 a 4, to znacznie łatwiej jest utrzymywać między nimi zależności niż gdyby ich wartość wahała się między 1 a 8. Gdzie ma to znaczenie? Otóż w przypadku umiejętności które działają na najsłabsze/najmocniejsze żetony w obszarze. Gdyby żetony miały 2x większe wartości, to zamiast żetonów o wartości 2 i 2 moglibyśmy mieć przykładowo żetony o wartości 4 i 5, z powodu sytuacji którą opisałem w poprzednim przykładzie. Gdybyśmy więc chcieli użyć umiejętności niszczącej najsłabsze żetony, okazałaby się ona w tym przypadku słabsza, bo działałaby tylko na 1 żeton (zamiast 2). Właściwie cały jej całokształt byłby słabszy, bo rzadko zdarzałyby się sytuacje, w których 2 żetony mają taką samą wartość. Z drugiej strony jeśli jakaś umiejętność działa tylko na 1 najsłabszy żeton, to byłaby mocniejsza niż obecnie, ponieważ nie byłaby blokowana przez sytuacje w których 2 żetony mają tą samą wartość. Tak więc po jakimś czasie konieczne byłoby wzmocnienie/osłabienie tego typu umiejętności tylko dlatego, że trudniej/łatwiej jest je aktywować, a zmiany jednych kart często ciągną za sobą zmiany innych kart.

Jak rozwiążę ten problem?

W następnej aktualizacji mnóstwo kart zostanie osłabionych, aby średnia siła kart spadła mniej więcej do początkowych wartości. Obecnie w grze pula kart jest znacznie większa niż początkowo, więc wprowadzanie nowych kart i synergii nie będzie miało tak dużego wpływu na siłę starych kart. Dodatkowo gra oferuje teraz mnóstwo różnych kontr-zagrań - jeśli jakieś zagranie zacznie stawać się silniejsze, będzie można sobie z nim radzić stosując odpowiednią kontr-taktykę, co kiedyś nie zawsze było możliwe. Skoro siła kart będzie mogła zależeć od samych graczy, rzadziej będzie konieczne ingerowanie w ich siłę przez twórcę gry.

Dodatkowo w następnej aktualizacji niektóre umiejętności zostaną zmienione tak, aby można było częściej je wykorzystywać, bo przykładowo zyskają alternatywną strategię. Jeśli niektóre karty staną się bardziej wszechstronne, to nie będą już tak podatne na sytuacje, które dotychczas skreślały je z gry.

piątek, 10 listopada 2017

Plany na przyszłość

Token Battle ciągle się rozwija. Tempo tego rozwoju jest raczej nierównomierne, ale cały czas wykonywane są mniejsze lub większe kroczki do przodu. Oto co zostanie wprowadzone w przyszłości:

Nowe tryby gry


Wyzwania - wyzwania będą puzzlami w których gracz staje przed planszą przypominającą środek meczu, choć nie zawsze możliwe byłoby uzyskanie takiego stanu planszy w normalnej grze. Gracz ma do dyspozycji od 1 do 4 kart których może użyć w dowolnej kolejności, a każdą kartę może użyć maksymalnie raz. Przeciwnik nie wykonuje ruchów. Zadaniem gracza jest wygrać z przeciwnikiem poprzez jak najsprytniejsze wykorzystanie swoich kart. Wyzwania będą krótkie, ale będą świetnymi łamigłówkami wprowadzającymi graczy w różnorodne strategie w tej grze.

Zwykłe AI z wyborem poziomu trudności - będzie to AI które znamy obecnie, z tym że zamiast łatwego i normalnego AI będziemy mieli możliwość wybrania AI o jednym z 5 poziomów trudności. Im słabsze AI, tym większa szansa na przegapienie korzystnego ruchu lub popełnienie błędu.

AI z zestawem kontrującym - AI będzie starało się złożyć swój zestaw kart żetonów w taki sposób, aby był jak najbardziej skuteczny przeciwko zestawowi gracza. Można więc powiedzieć, że to AI na swój sposób oszukuje, ponieważ wie z czego korzysta jego przeciwnik, ale wiedzę tą będzie wykorzystywało tylko przy tworzeniu talii - w trakcie gry będzie grało tak jak zwykłe AI. AI to powinno być dla graczy większym wyzwaniem niż zwykłe AI, o ile faktycznie będzie ono składało dobre talie.

Bossy - bossy będą grami z AI na nowych zasadach. Każdy boss będzie oferował inną premię która będzie przyznawana obu graczom lub tylko bossowi. W pierwszym przypadku gracz będzie musiał starać się wykorzystać obustronny bonus tak, aby dawał przewagę głównie jemu. W drugim przypadku gracz będzie musiał skontrować strategię przeciwnika tak aby wygrać mimo bonusu bossa. Bossy będą posiadały zestawy żetonów dopasowane do bonusu.

Co prócz tego?

Gra będzie cały czas poprawiana wizualnie. Za jakiś czas ujrzymy trójwymiarowe plansze do gry czy zaprojektowane od nowa menu.

Coraz więcej poprawek UI. Przykładem jest tu wprowadzenie opcji włączającej wyświetlania ostatnio zagranej karty przez przeciwnika. Opcja taka będzie dla nowych graczy wygodniejsza niż ciągłe zaglądanie do historii ruchów by sprawdzić kartę której nie znają. Poprawek UI będzie wiele.

Samouczek. Oczywiście do gry potrzebny jest porządny samouczek, ale wolę poczekać z jego stworzeniem do czasu aż wygląd wizualny gry się ustabilizuje.

Oczywiście więcej kart, żetonów i umiejętności, a także zmiany w balansie w elementach które tego potrzebują.

Wybór wersji językowych. Trochę to głupio wygląda, gdy polska gra nie posiada polskiej wersji językowej. Z czasem dodam możliwość wyboru między angielską, a polską wersją językową.

No i oczywiście ciągłe poprawki błędów. Wszystkie błędy będą z czasem usunięte.

I jeszcze parę słow:

Token Battle programuję sam, a prócz tego mam na głowie studia i praktyki, dlatego praca nad grą przebiega dosyć wolno. Jeśli jednak będziecie cierpliwi, to w końcu zobaczymy jak gra ta staje dojdzie do pełni swoich sił.

Aktualizacja 0.17.0

Nową wersję gry można pobrać pod tym adresem:
https://drive.google.com/open?id=0B_YKEPym2wKDVGJKZk9Vb0pPVk0

Zasady gry można znaleźć pod adresem:
http://tokenbattle.blogspot.com/2016/07/zasady-gry.html

Naprawione błędy:

- Od teraz ruchy graczy kończące grę są poprawnie wyświetlane bez względu na to który gracz wykonuje kończący ruch, a bonusowe tury także nie mają teraz na to wpływu.

UI

- Od teraz licznik tur będzie się zapełniać żółtym kolorem wraz z upływem turn. Ma to na celu przypominanie graczom, że liczba tur także ma wpływ na koniec gry.

Zmiany w AI

- Od teraz AI będzie słabiej oceniało efekt redukcji wartości następnego żetonu, jeśli gracz objęty efektem często korzysta z żetonów o niskiej wartości, lub używa Płonących Żetonów które niszczą się automatycznie lub Zdradzieckich Żetonów które generują punkty przeciwnikowi.

Nowe karty




Umiejętność ta za każdy wrogi żeton będący celem zwiększa wartość zagrywanego żetonu o 1, oraz zmniejsza wartość następnego zagranego żetonu tego gracza o 1. Taka pożyczka. Umiejętność ta pozwala graczowi zyskać drobną tymczasową przewagę, a także pozwala graczowi określić jak silny żeton chce postawić - jeśli przeciwnik posiada wiele sposób na pozbycie się mocnych żetonów, gracz może zdecydować się na nieaktywowanie tej umiejętności, jeśli zaś uzna, że przeciwnik nie stanowi zagrożenia dla mocnych żetonów, może zaryzykować. Im wzmocnienie większe, tym większe będzie osłabienie następnego żetonu, ale jeśli następny żeton będzie posiadał niską bazową wartość, to efekt uboczny będzie mniej odczuwalny. Dodatkowo gracz może wykorzystać tą umiejętność do przyspieszania aktywacji niektórych żetonów, lub niszczenia stawianych Zdradzieckich Żetonów.

Umiejętność ta daje graczowi status kontr-ataku jeśli co najmniej 2 wrogów jest objętych obszarem umiejętności. Status kontr-ataku sprawia, że po turach przeciwnika gracz zyska dodatkową turę. Innymi słowy jest to dodatkowa tura z opóźnieniem, która daje przeciwnikowi tymczasową przewagę oraz szansę na przygotowanie się. Gdy zaś nadejdzie nasza kolej, mamy łącznie 2 tury na działanie, co możemy wykorzystać zagrywając zgrywającą się sekwencję żetonów, albo zagrywając żetony które przynoszą korzyść po naszych turach. Jeśli jakaś strategia wydawała nam się dotychczas zbyt ryzykowna, być może stanie się świetna po skorzystaniu z tej umiejętności.

piątek, 27 października 2017

Aktualizacja 0.16.0

Nową wersję gry można pobrać pod tym adresem:
https://drive.google.com/open?id=0B_YKEPym2wKDVGJKZk9Vb0pPVk0

Zasady gry można znaleźć pod adresem:
http://tokenbattle.blogspot.com/2016/07/zasady-gry.html

AI teraz 2x słabiej ocenia interakcje pomiędzy specjalnymi żetonami

Dotychczas logika była prosta: synergie pomiędzy żetonami były uwzględniane przy liczeniu siły każdego żetonu z osobna. Przykładowo jeśli żeton wzmacniał przyrost punktacji sąsiednich żetonów o 1, a sąsiedni żeton miał wzmocniony przyrost punktacji o 1, to premia naliczana przez AI w ostatnim patchu dublowała się. Było to przyzwoite gdy AI sprawdzało tylko stawiane/modyfikowane żetony, czyli tylko niektóre z nich (a więc rzadko dublowano premię). Gdy w ostatnim patchu AI zaczęło analizować całą planszę, podwojenie zawsze występowało dwukrotnie,.

Naprawione błędy

- Naprawiono błąd który sprawiał, że w trakcie gry podgląd zestawu kart żetonów pokazywał liczbę kart równą liczbie kart przeciwnika. Jeśli przeciwnik miał mniej kart, część naszych kart była niewidoczna, a jeśli przeciwnik miał ich więcej, były wyświetlane jedynie puste schematy kart.

Znane błędy

- Ruch kończący rozgrywkę może nie być wyświetlany, ale punktacja jest naliczana i mecz zostaje rozstrzygnięty.

Zmiany w balansie


Karta ta była bardzo mocna, szczególnie w połączeniu z żetonami manipulującymi pozycją, które ostatnio pojawiały się w różnych formach. Teraz karta będzie pozostawiała za sobą żeton dający punkt przeciwnikowi, który zdecydowanie działa na naszą niekorzyść, ale mamy spore prawdopodobieństwo że z czasem zostanie usunięty tą samą kartą.




Żeton ten sam w sobie nie był silny, a po wprowadzeniu wielu nowych sposobów na radzenie sobie z żetonami specjalnymi osłabł jeszcze bardziej. Zwiększenie jego siły pozwoli mu nieco dopasować się do obecnej sytuacji.


Odkąd wprowadzono dodatkowy warunek wygranej (maksymalnie 50 tur) rozgrywki stały się krótsze. Było to szczególnie widoczne wtedy, gdy gracze nastawieni byli na niszczenie sobie żetonów, a laserki właśnie taki typ gry wspierały. Dotychczas poleganie na tych żetonach przypominało długotrwałe oblężenia, a te niestety nie przynoszą już rezultatów gdy mecze są krótsze.

Nowe karty




Umiejętność ta przejmuje kontrolę nad najsłabszym żetonem będącym celem umiejętności, ale co najmniej 2 żetony muszą być obrane za cel.

poniedziałek, 16 października 2017

Hotfix 0.15.1

Nową wersję gry można pobrać pod tym adresem:
https://drive.google.com/open?id=0B_YKEPym2wKDVGJKZk9Vb0pPVk0

Naprawiono błąd który sprawiał, że niektóre elementy kart wyświetlanych w edytorze zestawów kart żetonów nie znikały gdy zniknąć miała cała karta.

piątek, 13 października 2017

Aktualizacja 0.15.0

Nową wersję gry można pobrać pod tym adresem:
https://drive.google.com/open?id=0B_YKEPym2wKDVGJKZk9Vb0pPVk0

Zasady gry można znaleźć pod adresem:
http://tokenbattle.blogspot.com/2016/07/zasady-gry.html

Nowości:
- Od teraz gra zostaje rozstrzygnięta także po rozegraniu 50 tur. Dotychczas rozgrywka potrafiła trwać naprawdę długo, jeśli strategia obu graczy opierała się na niszczeniu wrogich żetonów. Token Battle jest grą która opiera się między innymi na zakakiwaniu przeciwnika, a jeśli rozgrywka trwała długo, to gracze często wykonywali te same ruchy, a więc rozgrywka stawała się monotonna i przewidywalna. Ruchy graczy często zdawały się zapętlać, co samo w sobie przypominało raczej drugą identyczną grę, niż jej kontynuację. Ustalenie limitu tur na 50 sprawia, że rozgrywka stanie się krótsza i bardziej emocjonująca.
- Od teraz punktacja graczy jest wyświetlana na górze ekranu. Wraz ze zdobywaniem punktów paski graczy zapełniają się. Pozwala to graczom intuicyjnie stwierdzić jaki limit punktów może być warunkiem zwycięstwa.
- Pomiędzy punktacją graczy znajduje się licznik tur, po najechaniu na niego myszką można zobaczyć warunki rozstrzygnięcia gry. Od 46 tury licznik tur zaczyna coraz intensywniej pulsować czerwonym kolorem, co przypomina graczom o zbliżającym się rozstrzygnięciu meczu.
- Od teraz po rozstrzygnięciu gry pojawia się także informacja o warunku rozstrzygnięcia gry (osiągnięcie 1000 punktów; pełna plansza; upłynięcie 50 tur).




Zmiany w AI:
Dotychczas AI podczas ocenania siły ruchy sprawdzało jak umiejętność wpłynie na efektywność poszczególnych żetonów, ale każdy zmodyfikowany żeton był oceniany z osobna z perspektywy obecnego stanu planszy. Sprawiało to, że AI nie było w stanie przewidzieć jak ruch wpłynie na zależności pomiędzy zmodyfikowanymi żetonami. Przykładowo jeśli używaliśmy umiejętność tworzącą żetony na pustej planszy, podczas obliczeń każdy żeton był traktowany jak żeton postawiony na pustej planszy, choć w rzeczywistości znajdował się w pobliżu innego/ych żetonu/ów. Jak wiadomo żetony otoczone pustymi polami łatwiej objąć za cel, a puste pola otoczone żetonami są świetnym miejscem na postawienie żetonu z karty z umiejętnością obszarową, czyli ocena AI była niezgodna z założeniami ryzyka.

Od teraz AI przed każdym ruchem wykonuje mini-symulację planszy która powstałaby po wykonaniu ruchu. Zwiększa to narzut obliczeniowy, ale znacząco poprawia ocenę ryzyka ruchów w niektórych sytuacjach. Dodatkowo zmniejsza to narzut pracy związany z programowaniem nowych umiejętności oraz zmniejsza ryzyko występowania błędów. W następnych aktualizacjach postaram się zoptymalizować nowy algorytm oraz dostosować do niego niektóre fragmenty AI.

Zmiany:
- Dodano nazwy umiejętnościom które były dodane w poprzedniej aktualizacji bez nazw.
- Od teraz opis umiejętności tworzącej Zdradzieckie Żetony uwzględnia informacjęo tym, że generują one punkty dla przeciwnika.

- Naprawiono błąd który sprawiał, że przyciski w menu ustawień były w nieodpowiednim miejscu.
- Naprawiono błąd który sprawiał, że po wybraniu nieprawidłowego zestawu kart żetonów do gry powodowało zniknięcie menu.
- Naprawiono błąd który sprawiał, że Uparte Żetony nie zawsze poprawnie naliczały punkt po stronie serwera.
- Naprawiono błąd który sprawiał, że tooltipy kolidowały z obiektami jeśli znajdowały się obok nich. Utrudniało to wyjście m.in. z biblioteki.
- Naprawiono błąd który sprawiał, że podgląd zestawu kart żetonów w trybie hotseat pokazywał zestaw kart żetonów tylko jednego gracza.

Nowe karty:


Umiejętność ta sprawia, że typ zagrywanego żetonu zostaje zamieniony z typem najsłabszego żetonu będącego celem. Dzięki tej umiejętności możemy przenosić cenne dla nas typy żetonu w inne miejsce planszy, co w wielu przypadkach pozwala lepiej spożytkować ich cechy. Możemy też odebrać przeciwnikowi cenne typy żetonów lub przekazać mu typ żetonu który zadziała na jego niekorzyść.

wtorek, 3 października 2017

Zmiana częstotliwości aktualizacji

W związku ze zmniejszeniem się mojego czasu wolnego przez dłuższy czas aktualizacje będą się pojawiać 2x wolniej, czyli co 2 tygodnie.