PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verwaltung von Daten in Computerspielen - Verwendung von Datenbankmanagementsystemen?


Gast
2007-09-30, 07:13:15
Sind komplexe DBMS wie MySQL & Co eigentlich für Computerspiele geeignet oder wie verwaltet man in Computerspielen komplexe Daten am besten?

Welche typischen Vorgehensmethode verwendet man hier zum Verwalten von Spieldaten in Computerspielen.


Um mal ein Beispiel Computerspiel zu nennen, bei dem ich mich schon immer gefragt habe, wie dort die Daten intern verwaltet werden, wäre hier das Weltraumhandelsspiel X3 Reunion zu nennen.

Das Spiel hat z.b. ein komplexes Wirtschaftssystem mit Fabriken, Handelsposten, Sektoren, Waren und deren Preise, welche sich darüberhinaus auch noch nach Angebot und Nachfrage richten.
All diese Daten müssen intern irgendwie verwaltet werden
und zwar für das gesamte X3 Universum.

Die zu verwaltenen Daten beschränken sich also nicht nur auf einen einzelnen Sektor in dem man gerade herumfliegt sondern gelten Universumweit, so weit das X3 Universum halt reicht.
Ganz im Gegensatz z.b. zu einem Spiel wie GTA SA, in dem man sich in einer temporären Blase befindet, bei dem die Autos, die gerade auf einem zukommen verschwinden, wenn man eine 360 ° Drehung macht.

Bei X3 gilt hier im Gegenzug, daß die AI Flieger ebenfalls Universumweit wirken
und entsprechend fortfährend verwaltet werden müssen, was DB Verwaltungstechnisch sicher recht aufwendig ist, wenn die Performance nicht in die Knie gehen soll.


Also, wie ist die typische elegante Vorgehensweise bei Computerspielen um Daten zu verwalten.
Verwendet man da ernsthaft SQL DBMS?

The_Invisible
2007-09-30, 09:26:04
mysql, postgres oder oracle wird man wohl kaum verwenden da ein extra serverthread laufen müsste.

ich schätze mal es dürfte auf sowas ähnliches wie SQLite hinauslaufen (http://www.sqlite.org/), was ich von meiner seite sehr empfehlen kann.

mfg

Gast
2007-09-30, 09:33:27
Ein DBMS ist mit Sicherheit viel zu lahm oder zu umständlich um die paar Daten dynamisch rauszuholen.
Wenn das alles in den Speicher geladen ist, dann wird das denk ich mal keine Performance-Frage sein. Wie und woher man das bekommt ist dann eher egal, aber wie kommst du auf ein DBMS, man könnte die Daten genau so gut packen. Wie bei X3 die Vorgehensweise ist, weiß ich nicht, aber ich kenne Spiele die Textdateien bzw. XML-Dateien (zum modden) z.B. beim "laden" bzw. beim Start in den Speicher holen.
Die Informationen, wie das Wirtschaftssystem und die Welt aufgebaut sind, die bei X3 abgerufen werden, sind ja nicht besonders umfangreich, ich denke da gehts eher um die Grafiken, die für die Performance entscheidend sind, und wie die verwaltet werden ist sicher eine andere Geschichte...

Monger
2007-09-30, 10:50:17
Afaik ist das sehr unterschiedlich, je nachdem was man gerade braucht.

Wenn Kompatibilität zu alten (oder schlicht: anderen) Spielständen eine Rolle spielt, bieten sich Datenbanken schon an. Ich hab gehört, dass Sims 2 intern auf eine Datenbank setzt - und die allermeisten Bugs bzw. Anomalien beruhen darauf, dass irgendeine Query nicht rechtzeitig zurückkommt und in einen TimeOut läuft.

Das klassische Verfahren sind aber sicherlich Binärdaten: einfach das nehmen was gerade im Speicher an spielrelevanten Daten steht, und rausserialisieren. Eine zusätzliche Speicherverwaltung wird damit unnötig.

tokugawa
2007-09-30, 14:46:47
"Man" verwendet das was "man" verwendet.

Da gibt's keine Standardlösung. Ich kann mir vorstellen dass manche durchaus ein DBMS verwenden, wenn auch nicht unbedingt eins das sonst verfügbar ist, sondern was selbstgestricktes.

Aber das kommt wirklich auf jedes einzelne Spiel an. Ich glaube dass die Daten meistens trotzdem so überschaubar sind, dass man mit einfachem selbstgestricktem auskommt, das kein vollständiges DBMS ist (vielleicht ein bisschen Hashing noch, und gut).

Coda
2007-09-30, 15:09:58
Das Dateisystem reicht normal völlig als Datenbank für ein Spiel aus, weil man ja nicht nach irgendwas suchen muss.

Gast
2007-09-30, 18:35:05
Ich habe mal gehört, daß Microsoft für ihren Flight Simulator auf eine abgespeckte Version von MS SQL zugreifen will.
Sprich für den MS Flight Simulator ein DBMS verwendet.

Gast
2007-10-01, 08:12:00
mysql, postgres oder oracle wird man wohl kaum verwenden da ein extra serverthread laufen müsste.

ich schätze mal es dürfte auf sowas ähnliches wie SQLite hinauslaufen (http://www.sqlite.org/), was ich von meiner seite sehr empfehlen kann. Ack, ich schätze nicht das jemand etwas verwendet, daß über SQLite hinausgeht. Wobei ich mir SQLite für einige Wirtschaftsimulationen u.ä. schon als sinnvoll vorstellen kann - wir haben im Endeffekt meist alles in eine hash_map/unordered_map geschmissen... :redface:

Gast
2007-10-02, 09:33:33
In der GamestarDev steht, dass Sacred 2 Postgres verwendet und ich denke, dass ein paar deren Fussballtrainersimulatoren das ebenfalls so machen, für einen extra Thread sehe ich jedoch keinen Grund.
Ich würde das allerdings auch nicht in Spielen verwenden, eigentlich zuviel des Guten.

Gast
2007-10-02, 09:39:29
Taugt die GamestarDev eigentlich etwas?

Ist es nicht viel besser ein zwei gute Bücher zu dem Thema zu kaufen und den Rest einfach im Internet nachzulesen?


Also ich hatte die GamestarDev zwar noch nie gelesen, geschweige denn in der Hand gehalten, aber viel erwarten tue ich von der nicht.


Da macht der Kauf des z.b. Redbook schon sicher mehr Sinn als ein Abo dieser Zeitung für ein Jahr.

Gast
2007-10-02, 10:34:16
Taugt die GamestarDev eigentlich etwas?

Ist es nicht viel besser ein zwei gute Bücher zu dem Thema zu kaufen und den Rest einfach im Internet nachzulesen?


Also ich hatte die GamestarDev zwar noch nie gelesen, geschweige denn in der Hand gehalten, aber viel erwarten tue ich von der nicht.


Da macht der Kauf des z.b. Redbook schon sicher mehr Sinn als ein Abo dieser Zeitung für ein Jahr.
War wirklich sehr lau, hatte mir mehr erhofft, aber um eine Zugfahrt hinter sich zu bringen ist es gerade so OK. So sind z.B. die Interviews über Projektmanagement von allen in ein paar Sätzen zusammenfasbar:
1. Ja ist wichtig
2. Scrum ist cool, aber wir machen etwas eigenes

So sieht es bei den meisten Artikeln auch aus, ich hatte mir wirklich ein wenig mehr Tiefe erhofft, aber die Zielgruppe sind wohl eher Spiele-"Fanboys" die von sowas eher fasziniert, denn informiert werden sollen. Was ich hier nicht beleidigend oder abwertend verstanden haben will.

tokugawa
2007-10-02, 19:31:28
Taugt die GamestarDev eigentlich etwas?

Ist es nicht viel besser ein zwei gute Bücher zu dem Thema zu kaufen und den Rest einfach im Internet nachzulesen?


Also ich hatte die GamestarDev zwar noch nie gelesen, geschweige denn in der Hand gehalten, aber viel erwarten tue ich von der nicht.

Da macht der Kauf des z.b. Redbook schon sicher mehr Sinn als ein Abo dieser Zeitung für ein Jahr.

Das kann ich bestätigen. Es gab zwar schon ein, zwei recht gute Artikel, aber insgesamt ist die Zeitschrift eher Geldverschwendung.

Da geht die GameDeveloper Magazine eher in die Tiefe, mal abgesehen davon dass die GameDeveloper-Artikel auch vollständig von wirklichen Entwicklern geschrieben werden und nicht von unterbeschäftigten Gamestar-Redakteuren (es zeigt sich schon sehr dass der Verlag der GameDeveloper auch der Veranstalter der GameDevelopers Conference und Betreiber von Gamasutra ist). Die GameDeveloper ist allerdings um einiges dünner (und nicht billig), übertrifft die Gamestar//dev aber um einiges; auch wenn die GameDeveloper auch nicht immer in die Tiefe geht.

War wirklich sehr lau, hatte mir mehr erhofft, aber um eine Zugfahrt hinter sich zu bringen ist es gerade so OK. So sind z.B. die Interviews über Projektmanagement von allen in ein paar Sätzen zusammenfasbar:
1. Ja ist wichtig
2. Scrum ist cool, aber wir machen etwas eigenes


Das ist irgendwie auch genau unsere Antwort :)


So sieht es bei den meisten Artikeln auch aus, ich hatte mir wirklich ein wenig mehr Tiefe erhofft, aber die Zielgruppe sind wohl eher Spiele-"Fanboys" die von sowas eher fasziniert, denn informiert werden sollen.

Das kann ich ebenfalls voll bestätigen.

Lokadamus
2007-10-02, 19:37:25
Sind komplexe DBMS wie MySQL & Co eigentlich für Computerspiele geeignet oder wie verwaltet man in Computerspielen komplexe Daten am besten?

Welche typischen Vorgehensmethode verwendet man hier zum Verwalten von Spieldaten in Computerspielen.mmm...

Nö, MySQL und Co. sind eher nicht für Spiele geeignet.

Arrays und eigene DBs ohne relevante Bezüge (Überprüfung auf 1:1, 1:n usw. dürfte komplett fehlen) dürften bei Spielen wie Baldurs Gate und ähnlichen die Grundlage sein.

darph
2007-10-02, 20:27:05
Ein DBMS ist mit Sicherheit viel zu lahm oder zu umständlich um die paar Daten dynamisch rauszuholen.
Kommt auf die Ansprüche an. eve-online verwendet MS SQL. Ist allerdings auch ein leicht anderes System, als Online-Spiel

Gouvernator
2007-10-02, 21:14:11
mysql, postgres oder oracle wird man wohl kaum verwenden da ein extra serverthread laufen müsste.

ich schätze mal es dürfte auf sowas ähnliches wie SQLite hinauslaufen (http://www.sqlite.org/), was ich von meiner seite sehr empfehlen kann.

mfg
Diese illegalen WoW Emulatoren verwenden ja mysql und apache server.

sth
2007-10-02, 22:10:52
Massive Multiplayer Games verwenden eigentlich durch die Bank weg Datenbanksysteme. Bei Singleplayer-Games ist das meistens nicht nötig oder es wird auf Lösungen wie SQLite zurückgegriffen.

Dark Age of Camelot verwendet übrigens MySQL. Blizzard und co. sehr wahrscheinlich größere Systeme.

Gast
2007-10-03, 00:44:41
Wie würde man denn sinnvollerweise Quests stukturieren?

Also z.b. Quests wie in Gothic.
Gehe da hin, hole dies, sprich aber nicht mit B und geh zu C.
Oder so in der Art.

del_4901
2007-10-03, 01:12:49
Wie würde man denn sinnvollerweise Quests stukturieren?

Also z.b. Quests wie in Gothic.
Gehe da hin, hole dies, sprich aber nicht mit B und geh zu C.
Oder so in der Art.
Component Based Design (Data Driven Architecture) ... und die Komposition(en) irgendwie in XML (natürlich als BiM oder EXI 'vorcompelliert') ablegen (so würde ich das machen)

SgtTynis
2007-10-03, 11:38:00
Neverwinter Nights (zumindest 1. Teil) und damit auch vermutlich alle auf der Auroa-Engine basierende Spiele verwenden Foxpro als DBMS.

Monger
2007-10-03, 11:38:21
Wie würde man denn sinnvollerweise Quests stukturieren?

Also z.b. Quests wie in Gothic.
Gehe da hin, hole dies, sprich aber nicht mit B und geh zu C.
Oder so in der Art.

Dafür haben die jeweiligen Leveleditoren ja ihre eigene Skriptsprache, die dann eben Aktionen an bestimmte Gegenstände bindet. Die passenden Dateien dazu (Untertitel, Sprachausgabe o.ä.) werden dann erstmal als Platzhalter angelegt. Wie dann diese Anweisungen in dem Level abgelegt werden, ist wohl auch Implementierungssache. Wird vermutlich bei jeder Engine anders aussehen.

Datenbanken leuchten mir eigentlich nur ein, wenn die Programmdaten zur Laufzeit extrem flexibel sein müssen. Gerade bei Spielen wie Gothic o.ä. ist die Spielwelt ja aber erstmal sehr statisch. Bei Spielen, wo man im Baukastensystem wirklich alles austauschen kann, und das eine massive Auswirkung auf die Spielwelt hat, wie z.B. in Sims2, macht das schon mehr Sinn.

Lokadamus
2007-10-03, 22:13:35
Wie würde man denn sinnvollerweise Quests stukturieren?

Also z.b. Quests wie in Gothic.
Gehe da hin, hole dies, sprich aber nicht mit B und geh zu C.
Oder so in der Art.mmm...

Bei Baldurs Gate wird das über Variablen ala "ImoenQuest" mit Zahlen gehandhabt.
Im Spiel selber gibt es dann Trigger, die entweder in Gesprächen oder durch bestimmte Aktionen, meistens betreten eines bestimmten Gebietes unter bestimmten Randbedingungen ausgeführt werden (Kapitel muss höher als 1 sein, ImoenQuest muss den Wert XY oder so haben und eine weitere Variable darf noch nicht gesetzt sein).