| Autor |
Beitrag |
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Mo 03.10.11 13:02
Hi,
ich arbeite schon länger an einem Pokerspiel, was mir imho ganz gut gelungen ist.
Ich bin jedoch nicht der einzige der mitgeholfen hat, die KIs hat wer anders programmiert.
Wir haben das vor gut einem Jahr angefangen und immer mal wieder Hobby-mäßig dran gearbeitet und so kam es, dass wir ohne Ahnung von irgendwas einfach quick n' dirty was zusammengepuzzelt haben.
Jetzt haben wir über 4k if-Anweisungen für die KIs - die Züge lassen sich leider nicht so einfach berechnen.
Bevor wir das veröffentlichen würden wir das gerne alles in eine Datenbank auslagern, die dann auch der jeweilige User verändern kann.
Dann zur eigentlichen Frage:
Welcher Datenbanktyp?
Es muss definitiv was Performantes sein, denn bei jedem Zug wird dann einiges abgeglichen.
Ich dachte an Sql, wollte aber euch mal fragen was am geeignetsten ist oder ob es zu den Datenbanken vielleicht eine bessere Alternative gibt.
Wenn ich das mache müsste ich auch eine Art Konvertierer bauen, per Hand mach ich das nicht
Dürfte das machbar sein, der andere Programmierer hat da teilweise komplexe Klammerungen hinterlassen.
Danke für die Hilfe,
lg
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 03.10.11 15:48
Datenbanken gibt es derzeit genügend auf dem Markt.
Ich nehme mal an, dass da nur ein paar 1000 Datensätze erzeugt würden. Über Performanzproblem würde ich mir da keine Gedanken machen.
Erstmal müssten andere Fragen geklärt werden:
1. Soll die DB kostenlos sein?
2. Soll übers Netzwerk mit gespielt werden?
2.1 Falls ja, soll bei allen Spielern die selbe KI (also auch die selbe DB) genutzt werden?
3. Oder ist eine Embedded-Datenbank vielleicht die bessere Lösung?
Wie aufwändig eine Konvertierung ist, oder ob das überhaupt realisierbar ist, kann man (zumindest ich) nicht ohne Source beurteilen.
Vielleicht lohnt sich der Einsatz einer DB auch gar nicht. Du könntest die Sourcen der KI auch offenlegen. Dann kann jeder selbst daran basteln, wenn er möchte.
|
|
HenryHux 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Mo 03.10.11 15:57
1. Jup.
2. Nein. Zumindest noch nicht.
3. Naja, eigentlich wäre es extern schon ganz angenehm.
Normalerweise hätte ich gedacht schön machen wir ne Tabelle, jede Variable bekommt ne Spalte.
Wär recht schnell konvertiert gewesen und genau das was ich wollte.
Aber wie gesagt die ganzen Anweisungen sehen leider nicht nur so
if (bd1) and (bd2) and (bd3) then ... aus sondern auch
if (bd1) and ((bd2) or (bd3)) then ... so.
Das machts natürlich zu einem Problem, ich denke nicht, dass das mit Tabellen so einfach geht.
Am liebsten wäre mir halt einfach eine externe Quelle, die ich nicht kompilieren muss (dh auch nicht korrigieren)
und bei der ich auch schnell mal was verändern kann.
Danke, lg
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 03.10.11 16:45
HenryHux hat folgendes geschrieben : | if (bd1) and ((bd2) or (bd3)) then ... so.
Das machts natürlich zu einem Problem, ich denke nicht, dass das mit Tabellen so einfach geht. |
Doch, das kann schon gehen, aber einfach ist es wohl nicht das performant hinzubekommen.
Als Datenbank würde ich jedenfalls Firebird nehmen. Das DBMS lässt sich leicht zwischen Embedded und Server umschalten und ab XE 2010 sind auch direkte Anbindungen in Delphi möglich (vorher aber auch, nur nicht ganz so direkt).
Zuletzt bearbeitet von jaenicke am Di 04.10.11 08:52, insgesamt 3-mal bearbeitet
|
|
HenryHux 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Mo 03.10.11 17:13
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 03.10.11 17:17
Ohne mehr Details zu dem was da bei diesen Abfragen abläuft lässt sich dazu nicht viel sagen. 
|
|
HenryHux 
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Mo 03.10.11 17:28
Um das zu vereinfachen :
Ich hab nen paar Variablen für die dealt cards die ich überprüfe.
if (card[1] = 4) and (card[2] = 3) and ((card[3] > 2) or (card[4] < 9)) then Q.E.D 
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 04.10.11 06:53
Ich würde auch zu Firebird raten. Scheint am besten zu passen.
jaenicke hat den wesentlichen Vorteil schon genannt. Der Wechsel zwischen embedded und server ist relativ einfach.
Wie du deine Abfragen realisierst kann ich dir so nicht sagen.
Ich würde evtl. über Stored Procedures gehen, da die SQL-Abfragen vermutlich nicht von der ganz einfachen Sorte sein werden, soweit ich das jetzt abschätzen kann.
Zuletzt bearbeitet von jasocul am Di 04.10.11 07:29, insgesamt 1-mal bearbeitet
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 04.10.11 07:09
jaenicke hat folgendes geschrieben : | | Das DBMS lässt sich leicht zwischen Embedded und Server umschalten und ab XE sind auch direkte Anbindungen in Delphi möglich (vorher aber auch, nur nicht ganz so direkt). |
Würdest Du das bitte erläutern, was Du damit meinst? Danke!
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 04.10.11 07:32
Bei Delphi XE (oder vielleicht auch 2010 schon?) ist ein direkter dbExpress Treiber enthalten. So kann ich einfach im Datenbankexplorer den Knoten Firebird auswählen und die Datenbank angeben. Dann ziehe ich die Tabelle einfach auf das Formular oder Datenmodul.
In den Versionen vorher musste man da einen Fremdtreiber benutzen. Wie das in der IDE aussah weiß ich nicht.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 04.10.11 07:35
Ah, ok. Ich hatte mich gewundert, dass Du schriebst "ab XE". Ist nämlich in der Tat schon seit 2010 enthalten.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|