2012-06-14 13 views
6

Obecnie pracuję nad wdrożeniem 2-osobowej gry karcianej typu draw-and-draw, podobnej do 66 lub Schnapsen. Zasadniczo musisz zbierać punkty, wygrywając lewy i gdy w paczce są karty, obaj gracze dobierają kartę po każdej rundzie.Wyszukiwanie w drzewie Monte Carlo lub inne algorytmy stochastycznej gry karcianej?

Jestem w trakcie programowania dobrej AI dla gry, która nie oszukuje, ale naprawdę oblicza najlepsze ruchy, używając tylko informacji, które ma w danym stanie gry. Utknąłem decydując, który algorytm lub logika będą najlepsze w użyciu. Zdecydowałem się na algorytmy takie jak przycinanie Alpha-Beta, ponieważ na początku gry jest zbyt wiele ukrytych informacji. Przeczytałem wiele interesujących rzeczy o wyszukiwaniu drzewa w Monte Carlo i powiązanym z nim wyszukiwaniu UCT, ale ponieważ gra zawiera elementy stochastyczne, drzewo, które trzeba było przeszukać, w krótkim czasie wzrosłoby ogromnie.

Który algorytm lub metoda będzie najlepsza w użyciu?

Odpowiedz

1

MCTS będzie zdecydowanie lepszy. Bez względu na to, który z nich wybierzesz, będziesz musiał postępować z niepełnymi informacjami, co jest głównym problemem.

1

Here to link do aplikacji UCT do Klondike Solitaire. MCTS idealnie pasuje do problemu, ponieważ radzi sobie dobrze ze stochastycznością.

Możesz zajrzeć do rzadkiej metody opisanej w artykule, aby dowiedzieć się, jak ograniczyć szerokość drzewa.

+0

Dzięki za link, nie wiedziałem o tym dokumencie! Jedyne, co nie jest dla mnie jasne, to jak powinienem obsługiwać obiekt stanu gry. Na początku jest to dość oczywiste, ponieważ obaj gracze mają 5 kart, więc początkujący gracz ma tylko 5 akcji do wyboru. Drugi gracz może odpowiedzieć rozmiarem _deck - 5_ działań. Ale tak naprawdę nie wiem, jak radzić sobie ze stanami po pierwszej rundzie. Jeśli mam rację, po pierwszej rundzie, kiedy obaj gracze wylosowali karty z paczki, zwycięski gracz może zrobić _deck size + 4 wcześniej nieużywane card_ actions. Czy moja postawa jest zła? –

+0

Nie wiem, jak dokładnie idzie ta gra. Ale stan powinien zawierać wszystkie określone informacje. Jeśli masz tylko jeden stos z ukrytymi kartami do wyciągnięcia, stan powinien prawdopodobnie obejmować ręce gracza i odkryte karty (nawet po odrzuceniu). Więc wiesz, które karty są na stosie i mogą zostać narysowane dalej. Akcje to wszystkie możliwe działania. Ale tak jak w gazecie, możesz po prostu napisać symulator do gry (napisany w języku C, Java, ...), który w jakiś sposób tworzy listę możliwych akcji i śledzi stan gry. – ziggystar

Powiązane problemy