2048

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
Dadido3
Beiträge: 103
Registriert: 24.02.2007 22:15
Kontaktdaten:

2048

Beitrag von Dadido3 »

Hallo,

Hier mal was kleines für zwischendurch.
Mein Klon des Spiels 2048.

Da das reine Spielen aber ziemlich schnell langweilig wird, hab ich mir mal die Aufgabe gemacht eine KI zu entwickeln.
Leider ist diese nicht sehr weit fortgeschritten, und kommt meist nur bis zum 1024 Kästchen und selten zur 2048.

Jetzt kommt ihr ins Spiel: Versucht doch einfach mal selbst eine KI zu erstellen.
Es ist der komplette Quellcode des Spiels enthalten, und auch ein Beispiel-Include einer sehr einfachen "KI",
welche nämlich nur Zufallsbewegungen ausführt.
Das Include braucht ihr nur zu kopieren, umzubenennen und im Hauptprogramm zu includieren.
Anschließend setzt ihr euren Hirnschmalz ein und könnt dann die Ergebnisse hier veröffentlichen.

Bild

Links Viel Spaß damit!
Zuletzt geändert von Dadido3 am 02.07.2016 14:00, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: 2048

Beitrag von Kiffi »

hier ein (wie ich finde nicht unwichtiger) Link zum Thema:

http://de.wikipedia.org/wiki/2048_(Computerspiel)

(ich musste nämlich erst einmal nachschauen, um was es bei diesem Spiel geht ;-))

Grüße ... Kiffi
Hygge
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: 2048

Beitrag von NicTheQuick »

Schade, jetzt wollte ich mich ran machen und dann sind da überall Windows-APIs eingebaut. :( Wird es auch noch eine Cross-Platform-Version geben?

Edit:
Ich hab mal einfach alles mögliche weg kommentiert, was unter Linux nicht geht. Das Programm läuft trotzdem. Dann kann ich ja mal probieren. :D

Edit2:
Es wäre praktisch, wenn es schon eine einzelne Funktion gäbe, die das komplette Feld und eine Richtung übergeben bekommt und dann diesen Zug auf dem Feld ausführt. Das ist für iterative KIs dann recht praktisch.
Bild
Benutzeravatar
Takutuka
Beiträge: 10
Registriert: 05.02.2015 15:42

Re: 2048

Beitrag von Takutuka »

Ohh das Original habe ich ne ganze Zeit rauf und runter gespielt. Klignt nach ner interessanten Herausforderung. Hat sich tatsächlich jemand außer dir selbst rangewagt?
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: 2048

Beitrag von DarkSoul »

Ist ja schon älter. Ich habe dennoch mal angetestet und folgende Anregungen:

- Gib dem Spiel ein App-Icon. :)
- Das Spiel hat (zumindest bei mir) eine wahnsinnig lange Startzeit. Also die Zeit zwischen EXE starten und das Spiel erscheint. Vielleicht ein Lade-Fensterchen vorweg mit "Spiel wird geladen... bitte warten... -> 0%, 10%, 20%...". Oder besser noch: Optimieren. Was macht er da so lange? Ich habe an einen havarierten Rohrkrepierer geglaubt und wollte das Programm schon per Taskmanager abbrechen. Dann kam es im letzten Moment doch noch.
- Ich habe nur einen 2er Spielstein am Beginn gehabt. 2048 beginnt mit aber mit 2.
- Bug: Unpassende Spielsteine werden manchmal zusammengezogen werden (z.B. 2 und 8 vereinen sich zur 4). Insbesondere in der oberen linken Ecke
- Bug: Wenn ich Buchstaben in das Seed-Feld eingebe, erhalte ich immer dieselbe Ausgangssituation - nämlich die von 0. Val(seed.s) ohne Abfrage, ob die Eingabe korrekt ist?
- Bug: Die Game-Over-Erkennung scheint lückenhaft zu sein: https://postimg.org/image/sv93vul0x/ (Ich hätte trotz Game-Over noch einen Zug gehabt - Wieder die obere linke Ecke :wink: )
- Bug: Manchmal beginnt das Spiel mit einer 4


Ansonsten gelungene Implementierung
Bild
Benutzeravatar
Dadido3
Beiträge: 103
Registriert: 24.02.2007 22:15
Kontaktdaten:

Re: 2048

Beitrag von Dadido3 »

Hi,
DarkSoul hat geschrieben:- Gib dem Spiel ein App-Icon. :)
- Ich habe nur einen 2er Spielstein am Beginn gehabt. 2048 beginnt mit aber mit 2.
- Bug: Wenn ich Buchstaben in das Seed-Feld eingebe, erhalte ich immer dieselbe Ausgangssituation - nämlich die von 0. Val(seed.s) ohne Abfrage, ob die Eingabe korrekt ist?
Ich hab mal nen Icon hinzugefügt und das verhalten an das Original angepasst.
Außerdem kann man jetzt beliebige Zeichen beim Seed eingeben. (Die alten seeds führen aber trotzdem noch zum selben Ergebnis)
DarkSoul hat geschrieben:- Das Spiel hat (zumindest bei mir) eine wahnsinnig lange Startzeit. Also die Zeit zwischen EXE starten und das Spiel erscheint. Vielleicht ein Lade-Fensterchen vorweg mit "Spiel wird geladen... bitte warten... -> 0%, 10%, 20%...". Oder besser noch: Optimieren. Was macht er da so lange? Ich habe an einen havarierten Rohrkrepierer geglaubt und wollte das Programm schon per Taskmanager abbrechen. Dann kam es im letzten Moment doch noch.
Leider kann ich nicht sagen woran es liegt. Beim Starten werden nur die Einstellungen und Icons geladen, und es wird ein Thread erstellt. Ich kann mir nur vostellen, dass ein Antivirenprogramm das Programm überprüft, hochlädt oder sonst etwas damit macht.
DarkSoul hat geschrieben:- Bug: Unpassende Spielsteine werden manchmal zusammengezogen werden (z.B. 2 und 8 vereinen sich zur 4). Insbesondere in der oberen linken Ecke
- Bug: Die Game-Over-Erkennung scheint lückenhaft zu sein: https://postimg.org/image/sv93vul0x/ (Ich hätte trotz Game-Over noch einen Zug gehabt - Wieder die obere linke Ecke :wink: )
Kann ich leider nicht nachvollziehen. Selbst wenn ich deine Konstellation aus dem Bildschirmfoto übernehme kommt keine "Game over" Meldung. Auch ist es mir noch nicht passiert, dass zwei unpassende Kacheln zusammengefügt wurden. Es könnte sein, dass die Kacheln und deren Animation bei dir nicht richtig dargestellt und geupdated werden. Ich wüsste aber nicht warum.
DarkSoul hat geschrieben:- Bug: Manchmal beginnt das Spiel mit einer 4
Das entspricht dem Original, mit einer bestimmten Wahrscheinlichkeit wird eine 4 anstatt eine 2 generiert.
NicTheQuick hat geschrieben:Schade, jetzt wollte ich mich ran machen und dann sind da überall Windows-APIs eingebaut. :( Wird es auch noch eine Cross-Platform-Version geben?
Ich hab mal einfach alles mögliche weg kommentiert, was unter Linux nicht geht. Das Programm läuft trotzdem. Dann kann ich ja mal probieren.
Es sollte jetzt auch auf macOS und Linux laufen, die WinAPI wurde nur genutzt um den entsprechenden Ort zum speichern der Konfigurationen zu ermitteln.
NicTheQuick hat geschrieben:Es wäre praktisch, wenn es schon eine einzelne Funktion gäbe, die das komplette Feld und eine Richtung übergeben bekommt und dann diesen Zug auf dem Feld ausführt. Das ist für iterative KIs dann recht praktisch.
In AI_Simple.pbi gibt es die Funktion AI_Simple_Move(Array Field.i(2), Direction). Die kann man einfach kopieren und verwenden.

Falls jemand eine AI schreiben will:
Ein Minimalbeispiel für eine AI ist in AI_Random.pbi
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: 2048

Beitrag von DarkSoul »

Leider kann ich nicht sagen woran es liegt. Beim Starten werden nur die Einstellungen und Icons geladen, und es wird ein Thread erstellt. Ich kann mir nur vostellen, dass ein Antivirenprogramm das Programm überprüft, hochlädt oder sonst etwas damit macht.
Dies ist nicht der Fall. Der Prozess ist gestartet und es dauert dann ewig, bis dann das Spiel erscheint. :wink:

Habe mal debuggt und er hält sich an

758 : LockMutex(AI_Main\Mutex_ID)

sehr sehr lange auf. Den Thread, der diese Mutex so lange in Beschlag nimmt, habe ich auf die Schnelle nicht finden können.
Kann ich leider nicht nachvollziehen. Selbst wenn ich deine Konstellation aus dem Bildschirmfoto übernehme kommt keine "Game over" Meldung. Auch ist es mir noch nicht passiert, dass zwei unpassende Kacheln zusammengefügt wurden. Es könnte sein, dass die Kacheln und deren Animation bei dir nicht richtig dargestellt und geupdated werden. Ich wüsste aber nicht warum.
Es handelt sich nicht um einen Grafikfehler, da man mit den ungültigen Spielzügen weiterspielen kann. und man nach der Game-Over Meldung nicht mehr weiterspielen kann <). Ein Fehler in der Darstellung würde lediglich zur falschen Anzeige führen. Aber die fehlerhaften Spielzustände sind "echt".

PS: Warum ist im Source hinterlegt, dass mit PB 5.3 Beta 1 compiliert werden soll? Wir sind bei 5.42 :twisted: :mrgreen:
Bild
Benutzeravatar
Dadido3
Beiträge: 103
Registriert: 24.02.2007 22:15
Kontaktdaten:

Re: 2048

Beitrag von Dadido3 »

Danke für die Rückmeldung.

Der Mutex wird nur (immer kurz) von dem Thread gesperrt, wenn die KI läuft. Beim Starten wird er aber nicht gesperrt. Ich tippe immernoch auf eine Antivirensoftware, welche den Programmablauf blockiert und dann irgendwas scannt. Falls du eine laufen hast, könntest du sie mal kurz aktivieren.

Und wenn du lust hast, könntest du ja mal dokumentieren wie man zu dem "Game over" oder dem anderen Bug kommt. Also die Seed und die nötigen Schritte, eventuell ein Video. Am besten mit der neusten Version. Sonst kann ich es hier einfach nicht reproduzieren.
DarkSoul hat geschrieben:Wir sind bei 5.42 :twisted: :mrgreen:
Hättest du mir das nicht vor zwei Jahren sagen können? :P
Antworten