Entwickler-Ecke
Datenbanken - Reaktionen in Datenbank speichern
HenryHux - Mo 03.10.11 14:02
Titel: Reaktionen in Datenbank speichern
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 :P
Dürfte das machbar sein, der andere Programmierer hat da teilweise komplexe Klammerungen hinterlassen.
Danke für die Hilfe,
lg
jasocul - Mo 03.10.11 16: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 - Mo 03.10.11 16: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 - Mo 03.10.11 17: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).
jaenicke - Mo 03.10.11 18:17
Ohne mehr Details zu dem was da bei diesen Abfragen abläuft lässt sich dazu nicht viel sagen. :gruebel:
HenryHux - Mo 03.10.11 18: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 :D
jasocul - Di 04.10.11 07: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.
Nersgatt - Di 04.10.11 08: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!
jaenicke - Di 04.10.11 08: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 - Di 04.10.11 08:35
Ah, ok. Ich hatte mich gewundert, dass Du schriebst "ab XE". Ist nämlich in der Tat schon seit 2010 enthalten.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!