TreasureIsland

Nach langer Zeit habe ich wieder ein kleines Programmierprojekt gestartet.
Ich bin faziniert vom Brettspiel Cryptid .
Und was soll ich sagen, ich wollte es gerne versuchen nach zu programmieren inkl eigener KI, damit ich alleine spielen kann, Zufallslevels und Zufallsregeln, um schier unendliche Levels und Lösungen zu generieren.

Aktuell bin ich noch am programmieren und würde den Thread gerne wieder als kleinen Entwicklungsblog nehmen.

Aktueller Stand:

  • Erstellung eineindeutiger Levels inkl Zufallsregeln ist erledigt
  • erstes Menu erstellt

Was folgt als nächstes:

  • Eigentliche Spielreihenfolge umsetzen
  • KI für Gegner
  • ggf Netzwerkunterstützung

Aktuelle Screenshots:
ingame:

menu:

Lösungslayer an

1 Like

Das sieht schon mal spannend aus!

Jetzt ist das eigentliche Spiel soweit wirklich gespielt zu werden, inkl. aller Regeln.
Ich habe das UI etwas angepasst. Perfekt zufrieden bin ich noch nicht, aber es wird immer besser. =)

Als nächstes starte ich mal mit der Gegner KI, sollte auch schnell zu machen sein.

Wo hast du schon wieder die Assets her? :smiley:

Ich habe über die Jahre viele Assets auf humble bundle gekauft.
Die hier verwendeten sechseckigen Tiles kommen aus einem Card package
image

und die Piratengui aus
image

Habe ich bis jetzt viel zu selten genutzt. Ich habe da noch viel mehr erstanden und da sind schon tolle Sachen dabei. Ein weiterer Pile of shame (diesmal für Assets) arbeite ich dann mal MINIMAL ab. :smiley:

Worum geht es eigentlich im dem Spiel?

Eine Piratenbande hat einen Schatz gefunden, aber JEDER möchte ihn nur für sich behalten. Deshalb hat der Käptain festgelegt:

  • jeder bekommt einen Hinweis, wo der Schatz sein könnte
    • jeder Hinweis alleine ist nicht eineindeutig und beinhaltet viele Felder die es sein könnten
    • aber die Hinweise aller Piraten zusammen ergeben genau ein Feld, wo der Schatz liegen kann
    • jeder behält seinen Hinweis für sich, nur durch die Befragung können die anderen später sich logisch erschließen, welchen Hinweis wer hat
  • der erste der ihn findet, darf ihn behalten
  • jeder ist nacheinander dran und darf einen anderen Piraten fragen, ob auf einem Feld ein Schatz liegen kann oder nicht
    • Falls dort der Schatz liegen kann, muss der Pirat das sagen, ist der nächste Pirat dran
    • ansonsten muss der fragende Pirat außerdem einen Hinweis geben, wo der Schatz nicht sein kann und dann ist erst der nächste Pirat dran
  • wenn ein Pirat denkt zu wissen, wo der Schatz ist, kann er versuchen zu lösen
    • wenn die Vermutung falsch ist, dann kann er den Schatz nicht mehr finden und muss nur noch wahrheitsgemäß antworten, wenn er gefragt wird, ABER er kann selber nicht mehr fragen.
    • wenn die Vermutung richtig ist, behält er den Schatz

Folgende Hinweistypen gibt es

  • der Schatz ist auf einem der folgenden Untergründe (z.B. Sand und Wasser → damit fallen alle andere Untergründe schon einmal heraus)

  • der Schatz liegt in einem Umkreis von 1 Feld zu einem Untergrund → das bedeutet, wenn der Untergrund Wasser ist, kann der Schatz entweder im Wasser sein, oder in einem angrenzenden Feld am Wasser

  • Der Schatz liegt in einem Umkreis von 2 Feldern zu einem Objekt → auf der Karte gibt es Objekte wie Münzen, Schwerter etc. Es gibt mehrere Objekte die gleich sind und sich nur durch die Farbe unterscheiden. Das bedeutet für diesen Hinweis, Farbe egal, nur Objekt zählt → sieht Screenshot

  • Der Schatz liegt in einem Umkreis von 2 Feldern zu einem Habitat, also entweder vom roten Panda oder von Bären entfernt → auf der können rote Pandas und Bären auf unterschiedlichen Untergründen sein → sieht Screenshot

  • Der Schatz liegt in einem Umkreis von 3 Feldern zu einer Farbe → jedes Objekt besitzt eine Farbe. Beispiel siehe Screenshot

Und falls man es schwerer haben möchte, dann kommen noch die NICHT Hinweise dazu. Dazu gibt es die gleichen Hinweise wie vorgestellt nur mit einem NICHT dabei, siehe →

1 Like

So kann ein Spiel aussehen, wenn der Mensch falsch geraten hat [Pirat 1] und die Zufallsbots es nach langer Suche gefunden haben.

  • Ein runder Punkt sagt, dort kann laut dieser Farbe/diesem Pirat der Schatz sein
  • Die Vierecke bedeuten, dort kann laut dieser Farbe kein Schatz sein, dann darf dieses Feld auch nicht mehr befragt werden.

Ist ein bisschen wie Cluedo, oder?

Ja, etwas einfacher aber, da man nur ein bestimmtes Feld sucht. Bei Cluedo muss man ja drei verschiedene Sachen herausfinden.
Aber ich will nicht sagen, dass es einfach zu lösen ist, gerade das Setzen seiner Hinweise kann schon sehr geschickt gewählt werden, damit man so lange wie möglich nicht zu viel verraten muss.

In diesem Spiel ist es wichtig, die möglichen Hinweise zu kennen und gut auszuschließen. Für mich der Vorteil ist, dass dadurch die Runden schneller gehen.

Jetzt läuft das eigentliche Spiel super, der Computer spielt ordentlich mit und es ist immer sichtbar was er tut.
Außerdem kann nun auch die Levelgröße verändert werden.

Was fehlt nun noch?

  • bessere Bots
  • Netzwerkunterstützung
  • Tutorial
  • Hinweisübersicht ingame

Nun gibt es bessere Bots (drei verschiedene - leicht, mittel, schwer) und im Menu kann man aussuchen gegen wen man spielen möchte. Noch gefällt es mir nicht perfekt im Menu, aber noch habe ich keine bessere Idee.

Gegen Mittel macht es schon Spaß und mit etwas Erfahrung auch gut zu schlagen. Schwer ist schon schwer zu schlagen. Aber immerhin kein Bot cheatet, sondern der schwere und nur super logisch unterwegs. =)

Heute habe ich den schweren Bot noch einmal etwas „schwerer“ gemacht.
Bei 5 Piraten und 1000 Spielen kam jetzt folgendes heraus: (der erste war der schwere Bot und die anderen der mittlere Bot)

Auswertung:
Pirat 1: 653
Pirat 2: 73
Pirat 3: 86
Pirat 4: 84
Pirat 5: 105

Ich hatte mich schon gewundert, warum der schwere Bot ab und zu verliert, das liegt aber an den unterschiedlichen Hinweisen. Wenn niemand einen Spieler fragt (z.B. 4) ist es nicht eineindeutig, wo der Schatz ist. Das dauert dann ein paar Runden mehr. Aber der Spieler 4 kennt ja seinen eigenen Hinweis und hat so einen direkten Vorteil und kann es lösen. Hier kann ich also an der Verteilung wann ich wen frage noch etwas basteln.
Das bedeutet, selbst gegen die perfekte KI kann ein Mensch immer gewinnen, wenn es das Level und seine Position hergibt und aber auch gegen eine mittlere KI, die einen etwas mehr Zeit gibt, verlieren, da die KI seit 3 Runden die Lösung kennt, aber durch die Fragen man selber noch keine eineindeutige Lösung hat.
Damit ist es noch wichtiger, wenn man einen eigenen falschen Marker setzen muss, ihn so zu setzten, dass die anderen immer noch keine eineindeutige Lösung haben.

Das klingt jetzt negativer als es gemeint ist, mir war es vorher nur nicht klar wie abhängig das Spiel von den Mitspielern ist, aber das kann man ja auch selber nutzen. Deshalb werde ich weiter versuchen, die Bots zu verbessern (nicht zwangsläufig stärker machen).

Das hört sich doch so an als ob es bald spielbar wäre? :slight_smile:

Das Spiel ist schon sehr gut spielbar, aber ohne kurzes Tutorial und ingame Hilfe würde es jemand ohne das Brettspiel zu kennen, schwer haben. Das will ich erst beheben und dann werde ich es veröffentlichen.

Man kann auch natürlich zoomen, um mehr zu sehen.

Das wäre doch die perfekte Gelegenheit Spieletester zu finden, um dir Feedback zu einem guten Tutorial zu geben … welche Fragen gab es und was hat die UI schon so verraten (ja mir ist langweilig :smiley: )

Heute habe ich noch den Bot „Logiker“ hinzugefügt. Er agiert noch logischer und besser als der schwere Bot. Bei 1000 Spielen gewinnt der Logiker ~800 gegen den schweren Bot. Und trotzdem ist es möglich, wie in einem Post erwähnt, auch den Logiker zu schlagen, wenn die Mitspieler halbwegs gut für einen fragen.
Außerdem gibt es im Spiel nun eine Regel und Hinweisartenerklärung.

Jetzt folgen noch:

  • Tutorial
  • Netzwerkunterstützung
  • vielleicht noch ein Redesign der ingame Hilfe, mir hilft sie aber jetzt schon, wenn ich überlegen müsste, welche Hinweisarten es gibt.

Extra für dich @TMII habe ich eine erste Version des Spiels hier → pirate hochgeladen. Da das Tutorial noch fehlt, ist es natürlich ohne Gewähr. =)

Kurze Infos:
Wenn das Spiel vorbei ist, kann mit Druck auf die Taste „N“ zum nächsten Spieler gewechselt werden, damit man die anderen Hinweise sehen kann.
Mit der gedrückten rechten Maustaste kann das Level verschoben werden.
Mit dem Mausrad kann gezoomt werden.

Im Spiel selber kann dann noch -
Mit Taste „R“ - gleiches Level aber neue Regeln erstellen und Spiel starten
Mit Taste „T“ - neuer Untergrund und neue Regeln und Spiel starten
Mit Taste „S“ - CHEATEN!!! Es wird auf jedem Untergrund die Zahlen der Spieler geschrieben, wenn sie Teil des Hinweises für diesen Untergrund ist. Das bedeutet bei drei Spielern darf es nur einen Untergrund mit den Zahlen 1, 2, 3 geben und das ist dann die Lösung, bei 5 Spieler halt 1, 2, 3, 4, 5

Okay, ich fand es tatsächlich etwas schwerer als Cluedo, weil man so viele unterschiedliche Regeln beachten muss.

Mein Feedback:
Alles in allem, sehr ausgereift, es gibt ein paar kleine Details die man verbessern kann (unten), hat Spaß gemacht, alles hat funktioniert und ich hab Lust auf eine zweite Runde, nachdem ich jetzt die Taktik im ersten Spiel verstanden habe :slight_smile:

Hier mal meine Notizen mit Erklärung:

Menü, Spielereinstellungen etwas verwirrend
Ich war anfangs etwas irritiert vom Menü und wusste nicht was die Zahlen und das Mittel andeuten soll. Hier wäre es vielleicht gut „Spieler X“ drüber zu schreiben und den Schwierigkeitsgrad darunter oder so?

Scrollen per WASD geht nicht (rechte Maustaste)
Man kann nicht per WASD oder Pfeiltasten scrollen. Rechte Maustaste kannte ich aus anderen spielen, aber ein Hinweis für das Tutorial wäre nicht schlecht.

Piraten befragen nicht rechts möglich
Wenn man ein Feld anklickt, kommt oben das Menü „Welchen Piraten möchtest du befragen“. Ich hatte mehrmals irritiert versucht einen Spieler in der „Spielerübersicht“ auf der rechten Seite anzuklicken. Ich fände es nicht schlecht wenn das auch zusätzlich möglich wäre.

Spiel beendet sich zu leicht (Verwechslung mit Regeln schließen Button)
Ein Druck auf X und man ist wieder im Hauptmenü. Das ist mir 3 mal passiert - frustrierend.
Besonders wenn das „Regeln“ Fenster geöffnet ist, bleibt der rote [X] Button als einziges anderes Menüelement bestehen, was eine sehr einfache Fehlinterpretation ermöglicht, man könne mit dem Button das Fenster wieder schließen. Verstärkt wird der Eindruck dadurch, dass das geöffnete Fenster selbst keinen Schließen Button hat UND der rote [X] Button auch noch genau neben dem Regeln-Öffnen Button liegt - also dort wo die Maus nach dem Öffnen residiert.

dauert zu lange (langsam)
Gut, wahrscheinlich mein ständiges Problem, dass deine Spiele bei mir immer super langsam laufen.

Kann auch der gleiche Hinweis gewusst werden?
Das wird in den Regeln nicht erwähnt, ob 2 Spieler auch den gleichen Hinweis haben können

Farben schlecht sichtbar
Die Farben und Symbole sind allgemein schlecht lesbar auf den Hintergründen. Bei Grün hab ich für die Hälfte des Spiels sogar ein Symbol nicht mal gesehen gehabt und dachte für die zweite Hälfte das sei ein Kreis :smiley:

Mauszeiger sind eine gute Idee
Das find ich echt super. Man sieht sehr gut welche Entscheidung die anderen Spieler treffen.

Tutorial nicht nötig
War gar nicht nötig. Die Regeln (unten rechts) haben das Spiel kurz und gut erklärt.

1 Like

Vielen lieben Dank @TMII für das Testen und das ausführliche Feedback! :heart_eyes:

Bin absolut deiner Meinung. Mir ist nur gerade noch nichts besseres eingefallen ohne zu viel Platz zu verschenken. Auch aus diesem Grund habe ich die MouseOver Texte bei einigen Buttons eingefügt, damit der Spieler etwas mehr Context hat.

Eine wunderbare Idee! Werde ich in den nächsten Tagen mit einbauen!

Auf diese Idee bin ich gar nicht gekommen, wenn ich ehrlich bin, aber kann ich natürlich noch mit einbauen.

Oh vollkommen richtig. Das X werde ich bei offenen Regeln ausblenden und wenn man während des Spiels ist und auf X kommt ein Dialog anzeigen mit der Frage, ob man wirklich ins Menu zurück möchte.

Das ist mit am meisten ärgerlich. Wirklich zeichenintensiv ist das Spiel nicht und sollte auch im Browser dadurch schnell laufen. Ich nutze die aktuelle libgdx Version, vielleicht kann ich da noch irgendwas einstellen.

Ich hatte überlegt wie ich es mache, aber jeder Hinweis darf nur einmal vorkommen. Da ich mir leicht veralbert vorkommen würde, wenn bei 5 Spielern 4 den gleichen Hinweis haben.

ABSOLUT valider Punkt. Ein grünes Viereck oder ein grüner Kreis auf einem Wald sieht man einfach nicht. Ich bin mit den Kreisen und Vierecken generell noch nicht zufrieden (die habe ich aktuell durch die Brettspielvorlage drin). Rein farblich ändere ich das so ab, dass alle Formen noch eine dunkle Umrandung bekommen und somit vom Untergrund sich besser abheben.
Aber ich hatte überlegt so ein „Kreuz, wo der Schatz liegen könnte“ zu nehmen für einen korrekten Hinweis und in der Farbe dann. Aber ein X steht auch für falsch, sodass ich die Idee erst einmal verworfen habe.
Wenn jemanden aber etwas einfällt, wie man es besser darstellen kann, gerne mit Bildern, Formen oder sonst etwas, dann gerne her damit.
Also wir haben ein Sechseck und würden da im Notfall 5 mal korrekt oder 4 mal korrekt und 1 mal falsch gerne anzeigen.

Spielt man das Brettspiel eigentlich auch mit Notizen wie bei Cluedo, oder macht man das alles im Kopf? Ich hab das erste Spiel im Kopf gemacht, fand das aber schon schwer alles im Kopf zu behalten wer jetzt wie wo logisch betrachtet schon die Hinweise ausgeschlossen werden können und hab jetzt im zweiten Spiel mal Notizen nebenher geführt.

Grundsätzlich darf natürlich jeder so spielen wie er möchte. Wir hatten es ohne Zettel gespielt. Aber in der Brettspielvariante hat man ein Heft zur Hand, wo die Hinweisarten aufgeschrieben sind und somit immer vor dem Auge. Mit etwas Übung (also ein paar Runden gespielt) klappt es aber, die 21 anderen Hinweise in leicht gut auseinander halten zu können. Für schwer (und damit insgesamt 43 verschiedenen Hinweisen) kriege ich es noch nicht so gut hin. Da wäre ein Zettel und Stift besser.

Ich habe bis auf das Menu alle deine Vorschläge umgesetzt. Gerade die anderen Farben mit Umrandung machen echt viel aus und auch das Scrollen mit den Pfeiltasten/WASD … ich wusste nicht, dass ich das vermisse. :smiley:
Deshalb ist die Anzeige der Zahlen auf „C“ gewandert.

Auf meinen Rechner zu Hause läuft es „rasend“ schnell, auch im Browser. Auf meinem Arbeitsrechner war es mit eingeschalteten Hinweisen brutal langsam. Aktuell weiß ich noch nicht was ich da machen kann. Etwas nerven tut mich das schon.

Die aktuellste Version ist wie bekannt hier zu finden: pirate

image

Hast du die Animationen und Timer abhängig von der Spielschleifengeschwindigkeit gemacht?

Ich weiss nicht wie LibGDX funktioniert, aber wenn ich an meinem Spiel programmiere läuft das in etwa so ab (vereinfacht)

fun loop(time: int) {
     position.x += velocity * time
}

suboptimal wäre es wenn es so programmiert ist:

fun loop() {
     position.x += step
}

Weil dann ist es abhängig von der Geschwindigkeit des Rechners. :slight_smile: