Autor Wątek: Karcianka  (Przeczytany 5665 razy)

Offline dzbanek

  • Użytkownik

# Grudzień 11, 2007, 11:53:57
Witajcie

Po serii gier dla jednego gracza typu "ukladanek" , tj. Mahjong, Sudoku, itp naszla mnie ochota na zrobienie czegos bardziej "ambitnego".
Pomysl
Remake Arcomage - karciana gra z Might and Magic 7+.
Zarys ogolnych zasad gry
104 karty (defensywne i ofensywne), 2 graczy, kazdy z nich posiada 3 rodzaje surowcow, za pomoca ktorych placi za zagranie karty. W kazdej turze gracz ma 5 kart i moze albo zagrac jedna z nich, albo wyrzucic. Mozliwa gra z komputerem i z czlowiekiem przez net.
Wykonanie
Pierwszy raz wzialem sie za multiplayer i AI. Po serii lektur multi 99% ukonczone (brak sprawdzenia warunkow zwyciestwa i zakonczenie gry - drobnostka). AI nietkiete.

Powolutku zabralem sie za czytanie. Przejrzalem pobieznie kilka artykulow o AI, ale znalazlem glownie jakies ogolniki. Moze moglibyscie mi cos doradzic? Na "chlopski rozum" ja widze to tak: kazda z kart ma jakas wage, powiedzmy 1-50. Przy zagrozeniu przegranej komputer zwieksza wagi karty defensywnych (np +200), przy zagrozeniu przegranej gracza zwieksza wagi kart ofensywnych. W pozostalych przypadkach zwieksza wagi kart "neutralnych", ktore np powoduja wzrost surowcow. Wtedy petla po wagach posiadanych kart i zagranie danej karty.

Jak juz sie przyznalem, nie mam bladego pojecia o AI. Moze sa jakies techniki, algorytmy do zaimplementowania czegos takiego? Gra jest w duzej mierze losowa, nie wydaje mi sie, ze sztuczna inteligencja powinna tu blyszczec. Chcialbym sie jedynie ustrzec przed wykonywaniem przez komputer idiotycznych rychow, albo nie zwracania uwagi na zagrozenie, czy tez mozliwosc wygrania. Jak wy byscie to zrobili? O czym powinienem poczytac?

Dziekuje za pomoc i nakierowanie mnie na wlasciwa droge.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline kamykadze

  • Użytkownik

# Grudzień 11, 2007, 12:02:04
Nie znam się na karciankach, ale w dwuosobowych grach turowych (np.szachy) często używa się drzew minimax lub drzew alfa-beta.
Możesz o tym poczytać i sprawdzić, czy będzie pasowało do Twojej gry.

Offline dzbanek

  • Użytkownik

# Grudzień 11, 2007, 12:03:54
Dziekuje, poczytam.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Grudzień 11, 2007, 12:42:36
Do karcianek to z reguły nie pasuje, bo wymaga pełnej wiedzy o możliwościach decyzji w kolejnych ruchach, a tutaj przecież nie wiemy jaką kartę dostaniemy. Jeżeli chodzi o AI, to najpierw radziłbym dopracować samą grę, bo takie karcianki mają tendencję to bycia niewyważonymi, nudnymi, lub sprowadzają się do czekania na konkretną kartę, która wygrywa całą grę. Dlatego preferuję karcianki "kolekcjonerskie", gdzie można samemu skompletować talię z określonych kart (sam takową pisałem - przy okazji po kilku partiach wychodzi, które karty są za mocne, a które beznadziejne). :)

Offline dzbanek

  • Użytkownik

# Grudzień 11, 2007, 12:52:02
Do karcianek to z reguły nie pasuje, bo wymaga pełnej wiedzy o możliwościach decyzji w kolejnych ruchach, a tutaj przecież nie wiemy jaką kartę dostaniemy.

Na to wyglada.

Jeżeli chodzi o AI, to najpierw radziłbym dopracować samą grę, bo takie karcianki mają tendencję to bycia niewyważonymi, nudnymi, lub sprowadzają się do czekania na konkretną kartę, która wygrywa całą grę. Dlatego preferuję karcianki "kolekcjonerskie", gdzie można samemu skompletować talię z określonych kart (sam takową pisałem - przy okazji po kilku partiach wychodzi, które karty są za mocne, a które beznadziejne). :)

Nie wymyslam nic nowego:) To remake, pozmieniana w sumie tylko grafika, cala mechanika jest tak sama. W tamto gralo mi sie wspaniale. 3DO wypuscilo to nawet jako osobna gre, chociaz nie odniosla zadnego sukcesu poza swiatkiem graczy M&M. Mysle, ze jakby dzialala na Win 2k/Xp/Vista, to pewnie bym jej nie pisal;)

Poszukam jeszcze czegos na temat inteligencji w grach karcianych. Z tego, co do tej pory przejrzalem, ludzie do prostych gier polecaja uzycie wag kart, czyli nie bylem daleko.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Grudzień 11, 2007, 16:21:22
Cytuj
Nie wymyslam nic nowego:) To remake, pozmieniana w sumie tylko grafika, cala mechanika jest tak sama.
Aaa, dobra. Nie doczytałem że o Arcomage'a chodzi. :)

Cytuj
Mysle, ze jakby dzialala na Win 2k/Xp/Vista, to pewnie bym jej nie pisal;)
To jak powiem Ci, żeby pogooglać za MultiArcomage'em, to przestaniesz pisać? ;)

Cytuj
Z tego, co do tej pory przejrzalem, ludzie do prostych gier polecaja uzycie wag kart, czyli nie bylem daleko.
Tutaj bym podszedł do tego nieco inaczej, bo pomysł oparty jedynie na wagach raczej się nie sprawdzi. Proponuję raczej stworzyć funkcję oceny stanu gry z naszej perspektywy. Teraz po kolei próbujemy zagrać każdą kartę i sprawdzamy, jak wpłynie to na stan gry. Plusem takiego rozwiązania będzie to, że komputer nie będzie wykonywał głupich ruchów, np. rzucał karty niszczącej mur lub zasoby przeciwnika gdy tego muru/zasobów nie ma, bo w takiej sytuacji zagranie karty nie zmieni stanu.

Z osobistych wrażeń z grania w Arcomage'a powiem tyle, że zwykle opłaca się inwestować w kopalnie i tym podobne jak najszybciej, bo potem nie mamy najmniejszych problemów z zasobami, a w efekcie z pokonaniem przeciwnika (chociaż konkretna strategia może się różnić w zależności od warunków wygranej). Inna kwestia to to, że sama gra nie ma zbyt wiele sensu, jeżeli gracze nie mają możliwości zbudowania swoich talii samemu (grałem w remake'a, gdzie składanie talii było trudne i robiło się to chyba przez jakieś pliki tekstowe). :)

Offline Liosan

  • Moderator

# Grudzień 11, 2007, 16:36:17
A ja bym obstawiał, że żadna funkcja oceny nie wystarczy, a każde minimax czy alfa-beta będzie o wiele za wolne - przecież nie wiadomo, jaka karta zostanie wyciągnięta.

Polecał użycie metody klasy Monte Carlo - jest (na mój gust) nawet prostsza od minimax-a, i - co też ważne - nie wymaga "czucia" gry - piszesz na ślepo, nie potrzebujesz funkcji oceniającej. Jeśli połączy się to z drzewem UCT (chociaż to już trochę skomplikowane), to (w tej klasie gier) można uzyskać dowolną praktycznie potrzebną skuteczność AI. Dorzucić do tego jakieś heurystyki (np. funkcje oceniające właśnie) i będzie git.

Liosan

Offline dzbanek

  • Użytkownik

# Grudzień 11, 2007, 23:05:02
Aaa, dobra. Nie doczytałem że o Arcomage'a chodzi. :)

Nie szkodzi:)

To jak powiem Ci, żeby pogooglać za MultiArcomage'em, to przestaniesz pisać? ;)

Nie, bo nie powiesz mi nic nowego:P Moze niezbyt dokladnie sie wyrazilem. Widzialem ten projekt. Ale czyz nie jest tak, ze jesli zrobimy nawet dokladnie to samo, co zrobil ktos inny, to zrobimy to lepiej, bo zrobilismy to sami?;) Tak na dobra sprawe remake Arcomage to dla mnie wprawka przy okazji robienia cos innego. Przyda mi sie i multi i AI, ktore delikatnie obmacuje po raz pierwszy;) Poza tym wydaje mi sie, ze moja wersja jest "piekniejsza";) Ach ten samozachwyt;P

Tutaj bym podszedł do tego nieco inaczej, bo pomysł oparty jedynie na wagach raczej się nie sprawdzi. Proponuję raczej stworzyć funkcję oceny stanu gry z naszej perspektywy. Teraz po kolei próbujemy zagrać każdą kartę i sprawdzamy, jak wpłynie to na stan gry. Plusem takiego rozwiązania będzie to, że komputer nie będzie wykonywał głupich ruchów, np. rzucał karty niszczącej mur lub zasoby przeciwnika gdy tego muru/zasobów nie ma, bo w takiej sytuacji zagranie karty nie zmieni stanu.

W sprawach AI jestem poczatkujacy, ale na tym etapie wydaje mi sie, ze Twoje argumenty to raptem 2-3 "if" w moim toku myslenia. Jak mowilem, na razie czytam, w trakcie moze wylezc, ze masz racje:)

Z osobistych wrażeń z grania w Arcomage'a powiem tyle, że zwykle opłaca się inwestować w kopalnie i tym podobne jak najszybciej, bo potem nie mamy najmniejszych problemów z zasobami, a w efekcie z pokonaniem przeciwnika (chociaż konkretna strategia może się różnić w zależności od warunków wygranej). Inna kwestia to to, że sama gra nie ma zbyt wiele sensu, jeżeli gracze nie mają możliwości zbudowania swoich talii samemu (grałem w remake'a, gdzie składanie talii było trudne i robiło się to chyba przez jakieś pliki tekstowe). :)

Mam inne zdanie. Wszystko zalezy od warunkow poczatkowych i warunkow zwyciestwa.
Przyklad: tawerna On the House w Harmondale.
Wieze 15, mury 5, kopalnie 2, zasoby 10. Wygrana: Wieza 30, zasoby 100.
Bardzo czesto da sie wygrac zupelnie nie rozbudowujac kopalni, przy takich warunkach jest to duzo bardziej losowe.

Odnosnie sensu gry: przegladajac strony o Arcomage, wiele ich autorow twierdzi to samo:) Gra jest banalna, pozbawiona glebszej strategii, interesuje wlasciwie tylko fanow M&M, ale wlasnie tych wciaga niesamowicie. Nie jestem w stanie stwierdzic, jaka czesc ogolnego czasu spedzonego przy grze strawilem na przenoszeniu sie miedzy krainami i wielokrotnej grze w danej tawernie:)

Poza tym milo mi spotkac osobe, ktora wie, co to Arcomage. Chyle czola, Szanowny Panie;)

Edit:
Przepraszam, moj zamglony umysl nie dojrzal tego: (chociaż konkretna strategia może się różnić w zależności od warunków wygranej).
« Ostatnia zmiana: Grudzień 11, 2007, 23:18:17 wysłana przez dzbanek »

Offline dzbanek

  • Użytkownik

# Grudzień 11, 2007, 23:12:32
A ja bym obstawiał, że żadna funkcja oceny nie wystarczy, a każde minimax czy alfa-beta będzie o wiele za wolne - przecież nie wiadomo, jaka karta zostanie wyciągnięta.

Polecał użycie metody klasy Monte Carlo - jest (na mój gust) nawet prostsza od minimax-a, i - co też ważne - nie wymaga "czucia" gry - piszesz na ślepo, nie potrzebujesz funkcji oceniającej. Jeśli połączy się to z drzewem UCT (chociaż to już trochę skomplikowane), to (w tej klasie gier) można uzyskać dowolną praktycznie potrzebną skuteczność AI. Dorzucić do tego jakieś heurystyki (np. funkcje oceniające właśnie) i będzie git.

Liosan

Na dana chwile Twoj post to dla mnie slownik wyrazow obcych, jedynie z haslami, bez objasnien;) Ale chetnie jutro poszukam tlumaczen. Im wiecej pomyslow, tym latwiej wybrac z nich cos odpowiedniego dla siebie. Dziekuje za odzew i pomysl:)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Grudzień 12, 2007, 00:18:25
Cytuj
Odnosnie sensu gry: przegladajac strony o Arcomage, wiele ich autorow twierdzi to samo:) Gra jest banalna, pozbawiona glebszej strategii, interesuje wlasciwie tylko fanow M&M, ale wlasnie tych wciaga niesamowicie. Nie jestem w stanie stwierdzic, jaka czesc ogolnego czasu spedzonego przy grze strawilem na przenoszeniu sie miedzy krainami i wielokrotnej grze w danej tawernie:)
To jak już będziesz to robił, to koniecznie zrób wygodny interface do tworzenia własnych decków, bo największa część strategii właśnie leży w umiejętnym złożeniu decku, podobnie jak w innych karciankach (łącznie z MtG). :)


A z innych pomysłów: jakbyś kiedyś chciał się pobawić w pisanie na komórki, to Arcomage było by dosyć ciekawym pomsyłem. :)

Offline dzbanek

  • Użytkownik

# Grudzień 12, 2007, 00:42:55
To jak już będziesz to robił, to koniecznie zrób wygodny interface do tworzenia własnych decków, bo największa część strategii właśnie leży w umiejętnym złożeniu decku, podobnie jak w innych karciankach (łącznie z MtG). :)

Arcomage nie jest MtG:) Przyznam, ze nie gralem w MtG, ale obilo mi sie o uszy "skladanie wlasnej talii kart". Tu nic sie nie sklada. Jest talia 104 kart i losowo ciagniemy z niej karty. Ten projekt nie jest proba stworzenia jakiegokolwiek klona tej gry, cala mechanika jest identyczna, jak w pierwowzorze. Ot, 2-tygodniowa wprawka w trakcie czegos innego:)


A z innych pomysłów: jakbyś kiedyś chciał się pobawić w pisanie na komórki, to Arcomage było by dosyć ciekawym pomsyłem. :)

Java? Mam awersje:) Chociaz wlasnie taka gra nadawalaby sie do tego znakomicie.

Lekki OT: moglby mi ktos wskazac dosyc rozbudowana gre stworzona w Javie? Mam nieustanne wrazenie (zapewne spowodowane pobiezna znajomoscia jezyka), ze nadaje sie tylko na drobne przedsiewziecie. Jakis czas temu czytalem wywiad/recenzje ksiazki?/tutorial (nie do konca pamietam) o niewykorzystanych mozliwosciach tego jezyka. Natomiast jedyne co widze, to plytkie, ubogie w grafike wypusty. Ograniczam sie w tym momencie do gier. Jak uwazacie? Czy doczekamy sie za pare miesiecy produkcji w Javie na miare DirectX, itp? Moze trafialem na marnych wykonawcow, ale przy komiksowej grafice (zadnych bajerow) i kilka klatek na sekunde skutecznie mnie odstrasza do zainteresowania sie tym blizej. Natomiast dostepnosc na wiele platform kompletnie mnie nie przekonuje, zeby pisac w tym programy uzytkowe.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Grudzień 12, 2007, 01:09:18
Cytuj
Arcomage nie jest MtG:) Przyznam, ze nie gralem w MtG, ale obilo mi sie o uszy "skladanie wlasnej talii kart". Tu nic sie nie sklada. Jest talia 104 kart i losowo ciagniemy z niej karty.
Przyznam się, że w M&M nie grałem, więc pomyślałem, że jest to wplecione na zasadzie podobnej jak w serii Final Fantasy, gdzie karcianki były kolekcjonerskie i można było wygrywać karty od NPC'ów, żeby potem wymieniać je na rzeczy przydatne w samej grze. Arcomage jako wersja niekolekcjonerska nie ma większego sensu, więc logicznie pomyślałem, że w M&M musiało być to zrobione jako karcianka kolekcjonerska. :)

Cytuj
Lekki OT: moglby mi ktos wskazac dosyc rozbudowana gre stworzona w Javie?
Chrome naszego Techlandu. Użyli Javy jako języka, w którym miało się pisać właściwą grę (żeby się szybciej pisało), a tylko silnik był w C++. W efekcie Chrome działał potwornie wolno z uwagi na ciągłe przechodzenie między C++ a Javą i w kolejnych produkcjach się już z tego ponoć powoli wycofują (chociaż w Call of Juarez też sporo plików javowych widziałem).

Offline dzbanek

  • Użytkownik

# Grudzień 12, 2007, 01:32:23
Przyznam się, że w M&M nie grałem, więc pomyślałem, że jest to wplecione na zasadzie podobnej jak w serii Final Fantasy, gdzie karcianki były kolekcjonerskie i można było wygrywać karty od NPC'ów, żeby potem wymieniać je na rzeczy przydatne w samej grze. Arcomage jako wersja niekolekcjonerska nie ma większego sensu, więc logicznie pomyślałem, że w M&M musiało być to zrobione jako karcianka kolekcjonerska. :)

Wodzil slepy kulawego;) Final Fantasy widzialem jeden jedyny raz u kumpla. Byla to walka na zasadzie podobnej do M&M 5-, tyle ze z latajaca stopa. Jak na fantasy totalnie mnie to zniechecilo, chociaz slyszalem wiele stwierdzen, ze wiele trace. Jak dla mnie, po takim krotkim epizodzie, gra powinna nazywac sie Final Stupid Science Fiction;) Oczywiscie to tylko moje, pobiezne zdanie.

Chrome naszego Techlandu. Użyli Javy jako języka, w którym miało się pisać właściwą grę (żeby się szybciej pisało), a tylko silnik był w C++. W efekcie Chrome działał potwornie wolno z uwagi na ciągłe przechodzenie między C++ a Javą i w kolejnych produkcjach się już z tego ponoć powoli wycofują (chociaż w Call of Juarez też sporo plików javowych widziałem).

Nie znam, ale mialem na mysli kompletna produkcje w Javie. Moze to wiek, ale od dosyc dawna nie widze tej "iskry" w biezacych produkcjach. Niby grafika powala na kolana, ale chyba ostatnia gra, ktora snila mi sie po nocach grania byla bodajze Fallout 2.

I kolejny OT, chociaz wlasciwiec caly post nim jest: dlaczego kolejna czesc gry nie moze byc na dokladnie takim samym enginie i ta sama mechanika, tyle, ze z inna fabula? Pije w tym momencie do Fallouta. Tysiace (miliony?) graczy oczarowanych dwojka. Tactics porazka. Trojka znowu bedzie inna. Milo wygladal Afterfall, chociaz w miare rozwoju chyba przestal mi sie podobac. Jednak starosc, wciaz uwazam, ze do wspanialej gry niepotrzebne jest 3d, efekty, itd.

Offline Liosan

  • Moderator

# Grudzień 12, 2007, 01:36:29
Hm... spróbuję krótko wyjaśnić :)

Generalnie Monte Carlo to klasa algorytmów, które działają probabilistycznie, w miarę szybko ale nie dają zawsze dobrej odpowiedzi... za to dostatecznie często dają dostatecznie dobre :)

W przypadku AI można zastosować szablon: podejmij jakąś decyzję (np. konkretna karta do zagrania) i odpal grę od aktualnego momentu do końca, podejmując losowe albo prawie losowe decyzje dla obu gracz. To się zowie play-out i ma być szybkie :) Jak aktualny gracz wygra play-out, to decyzja dostaje jeden punkt. Wykonaj... hm... 1000 play-outów (liczba z księżyca, do sprawdzenia doświadczalnie) dla każdej decyzji. Ta, która ma najwięcej punktów, wygrywa :)

Zaskakujące jest, jak dobrze to działa :) i jak szybko daje się napisać. Co prawda Java z wydajności nie słynie, ale... może się udać :)

Żeby polepszyć wydajność, możesz jakoś wybierać te decyzje, które opłaca się badać play-outami. Np. Wykonaj po pierwszej 100tce dla każdej decyzji uznaj, że te decyzje które mają poniżej 20 punktów są "fuj" i zajmuj się resztą.

Najbardziej zaawansowaną (znaną mi) formą wyboru jest drzewo UCT - które przeszukuje kilka decyzji wgłąb i wybiera te, które są najlepsze ze wzoru UCB - upper confidence bound. Wzór jest cudownie skuteczny i dwa razy bardziej zagmatwany niż cała reszta rozwiązania razem wzięta :)

Drobnym problemem jest stwierdzenie, kiedy jest "koniec" play-out-a; może dojść do sytuacji patowej, więc może np. po 200 ruchach (czy tam iluś) uznaj, że wygrywa gracz z większym murem albo cokolwiek. Dzięki temu nie będziesz miał bardzo długich a mało informatywnych play-out-ów.

Mam nadzieje że to Ci dało pogląd na sprawę :)

Liosan

Offline dzbanek

  • Użytkownik

# Grudzień 12, 2007, 01:47:40
Hm... spróbuję krótko wyjaśnić :)
<ciach>
Mam nadzieje że to Ci dało pogląd na sprawę :)

Nieco rozswietlilo mozgownice, ale lektury wciaz potrzebuje. Zapowiada sie ciekawy dzien, dziekuje:)

Edit: co do wydajnosci Javy: pisze w Delphi:P