[ZFX Action] Shovov

Dreizehnte ZFX Action vom 7.4.2017, 19 Uhr bis zum 30.4.2017, 19 Uhr. Thema ist "Brettspiel". Seid kreativ!
Antworten
Benutzeravatar
marcgfx
Establishment
Beiträge: 2113
Registriert: 18.10.2010, 23:26

[ZFX Action] Shovov

Beitrag von marcgfx »

Ich will schon ewig ein Brettspiel bauen... hatte auch schon Ideen die ich aufgeschrieben aber verlegt habe.
Hauptproblem ist bei sowas halt die KI, ohne machts ganz sicher keinen Spass. Bin grad hin und her gerissen, ob ich jetzt einfach mal was mache.
Benutzeravatar
xq
Establishment
Beiträge: 1590
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [ZFX Action] Shovov

Beitrag von xq »

Ja, mach einfach was! Wird sicher was, KI wird bei mir auch erst mal random und danach mit ganz billiger Gewichtungs-Auswahl, sollte aber als Gegner tatsächlich reichen
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
joeydee
Establishment
Beiträge: 1155
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [ZFX Action] Shovov

Beitrag von joeydee »

Fände ich klasse wenn du dabei bist. Fang einfach mit einem lokalen zweiten Spieler an, falls Zufall nichts taugt.
Brettspiel-KI ist auch für mich neu, Rusty Spoon hatte im Terminfindungsthread die Monte-Carlo-KI empfohlen: https://en.wikipedia.org/wiki/Monte_Carlo_tree_search
Ich habe das mal ohne Baum (Hanging-Moss-Prinzip) ausprobiert, dann muss man zwar jede Runde wieder alle Erfahrung verwerfen und neu sammeln, aber es funktioniert trotzdem gut für kleinere Spiele ( d.h. nur wenige mögliche Züge).
Benutzeravatar
marcgfx
Establishment
Beiträge: 2113
Registriert: 18.10.2010, 23:26

Re: [ZFX Action] Shovov

Beitrag von marcgfx »

Danke für den Zuspruch und die Hinweise :)
Ich mache mir das Leben gerne schwer (anscheinend). Ich fand die Idee lustig, dass die Spieler selbst das Spielfeld aufbauen.
Bild

Für den Test bekommen beide Spieler Quadrate mit den Seitenlängen [4,4,3,3]. Die ersten zwei werden sauber mittig platziert. Der Rest wird in jeder Runde ergänzt und muss am bestehenden anschliessen.
(Kann sein, dass das gar keinen Sinn macht, aber ich kanns ja wieder entfernen oder ein fixes Brett definieren. Die Farben spielen keine Rolle, es ist einfach das Spielfeld für mich visualisiert)

Geplante Regeln (werden sicher noch ergänzt/angepasst):
- der Spieler der zuerst zieht hat am Anfang 1 Move
- jede weitere Runde hat jeder Spieler immer 2 Moves
- jeder Spieler hat X Fighter und einen Boss
- der Boss muss in der ersten Runde platziert werden (irgendwo auf einer Fläche, kann auch die des Gegners sein)
- gegenerische Fighter können geschoben werden, wenn man in der Linie gleich viele Fighter hat (oder mehr)
- umschliesst man einen gegnerischen Fighter mit 4 eigenen wird er verprügelt/aus dem Spiel genommen
- schiebt man einen gegnerischen Fighter vom Feld wird er aus dem Spiel genommen (fällt vom Hausdach, oder so)
edit:
- Bewegen geht in jede Richtung ohne Wiederstand soweit man möchte, schieben immer nur 1 Feld
- Boss optional
- Spielfeldteile evtl. bereits mit Fightern drauf -> Es gibt keine Teile die nie benutzt werden, bzw. man muss sie so platzieren dass die Fighter nicht komplett im nirgendwo stehen


Move:
-> Fighter platzieren
-> Fighter oder Gruppe um ein Feld bewegen (horizontal/vertikal)

Gruppe:
- ein volles Rechteck bestehend aus eigenen Fightern (1x1, 3x2, etc..)

Die KI dafür wird sauschwer :D (verdammt viele mögliche Züge und nicht mal klare Spielfiguren)

Shovov kommt von shove off und ich finds noch witzig ;)
Zuletzt geändert von marcgfx am 18.04.2017, 12:29, insgesamt 1-mal geändert.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2113
Registriert: 18.10.2010, 23:26

Re: [ZFX Action] Shovov

Beitrag von marcgfx »

Bild
Schön ausschauen wirds bei mir glaub ich nicht :)
Habe gestern abend noch dran gearbeitet.
Aktuell geht (mit absicherung, aber noch ohne user interaktion):
- platzieren der fighter
- platzieren der spielfeldteile
- fighter/gruppen schieben in alle richtungen
- fighter/gruppen bewegen in alle richtungen
- vom spielfeld fallen/löschen

Ich bin schon am rumhirnen wie ich die KI realisieren soll. Es ist mir wichtiger, dass ich eine KI habe die das Spiel spielen kann, als dass ich selbst spielen kann. Weil ohne KI nutzt mir das selber spielen auch nix :)
Ich würde sehr gerne Deep Learning anwenden, einfach weil das immer wieder rumgeistert und ich mich damit nicht auskenne. Am besten mit einer bestehenden Bibliothek.

Hier ein Artikel zu einer Schach-KI:
https://www.technologyreview.com/s/5412 ... al-master/

Das Hauptproblem scheint zu sein, dass man viele Daten zum trainieren haben muss, die auch bewertet sein sollten. Da ich nicht mal selbst verstehe wie mein Spiel strategisch funktionieren wird, ist das eine weitere Hürde.

Wenn ich einfach alle Möglichkeiten testen will, am besten noch ein paar Züge voraus wirds heftig
- alle möglichen Gruppen identifizieren
- für jede Gruppe alle gültigen Aktionen checken (bewegen ohne wiederstand geht X Felder, schieben immer nur 1)
- Evaluieren des Zustands (evtl. wie viele Fighter sind im nächsten Zug durch den Gegner bedroht, oder einfach wie viele hat man noch)
Benutzeravatar
xq
Establishment
Beiträge: 1590
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [ZFX Action] Shovov

Beitrag von xq »

Klingt auf jeden Fall nach nem interessanten Konzept, viel Erfolg!
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
joeydee
Establishment
Beiträge: 1155
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [ZFX Action] Shovov

Beitrag von joeydee »

Na, sieht schon interessant aus :D Polish ist auch nicht wichtig.
- alle möglichen Gruppen identifizieren
- für jede Gruppe alle gültigen Aktionen checken (bewegen ohne wiederstand geht X Felder, schieben immer nur 1)
- Evaluieren des Zustands (evtl. wie viele Fighter sind im nächsten Zug durch den Gegner bedroht, oder einfach wie viele hat man noch)
Um die ersten beiden kommst du wohl nicht rum. Das Letztere fiele ja weg durch stetiges Ausprobieren der Möglichkeiten und bewerten was passiert ist (Durchführen des Zuges und zählen der eigenen und der Gegnerpunkte - das musst du ja sowieso implementieren). Oder konkret ausgedrückt: wer im nächsten Zug bedroht sein *könnte* interessiert gar nicht, da du noch n mögliche übernächste Züge simulierst und die Spielergebnisse beurteilst, an dieser Stelle werden diese Bedrohungen in tatsächliche Zahlenverhältnisse umgewandelt. Und über-übernächste Spielzüge ebenfalls usw.
Antworten