Adventure-Aufbau / Datenspeicherung

Der Anlaufpunkt für alle, die selbst ein Adventure programmieren wollen.
Antworten
Nembutal
Frischling
Frischling
Beiträge: 4
Registriert: 24.09.2007, 23:09

Adventure-Aufbau / Datenspeicherung

Beitrag von Nembutal »

Hallo Forum!

Ich entwickle seit kurzer Zeit für ein Projekt an einer 'Adventure'-Engine. Eigtl. etwas vielschichtiger, aber es läuft darauf hinaus.

Ich wollte fragen, wie ihr das bei euren Adventures gemacht habt, wenn es um das Thema der Klassen geht.

Sprich, wie deifniere ich, wann die Szene 1 mit Objekt A, B & C, Charakter XYZ an Position XY angezeigt wird?

Das ist eigtl. noch relativ simpel, da man diese Daten in einer eigenen Datei z.B. speichern kann.
EIne Szene (für mich ein Raum) kann aber auch Veränderungen beinhalten, sprich, im Verlauf des Spiels ist plötzlich eine Figur weg, da man sie weggeschickt hat irgendwie.

Wie bewerkstelligt ihr solche Events/Aktionen? Eigene Skriptsprache?
Das Ganze sollte möglichst dynamisch sein. Ich gedenke evtl. eine kleine Skriptsprache zu entwickeln, die das Nötigste so abdecken kann.
die ganzen Daten werden normalisiert in einer relationalen Datenbank (SQLite) gespeichert, jede DB ist ein eigenes Game-Set/Spiel.

Z.B. hat's die Tabellen Options, Types, Actors, Objects, Scenes, Chapters. Würdet ihr so auf Aufreihung sals sinnvoll erachten?

Evtl. noch eine Tabelle Conditions/Bedingungen, die man verknüpft mit den anderen Tabellen um eben Abhängigkeiten zu schaffen um andere Szenen zu erschaffen?

Vorallem muss das Spiel ja einen gewissen Ablauf haben, soll aber nicht bloss linear sein, man darf die Locations wechseln. Sollte man sowas in Chaptern unterbringen und z.B. wenn man in Chapter 2 kommt und denselben Raum betritt wie in Chapter 1 einfach eine Kopie dieser Raum-Instanz anlegen und diese entsprechend ändern?

Bin dankbar für Anregungen! Möchte mich entscheiden, bevor ich das alles halbwegs eincodiert habe.

So long,
Micha
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Muss es denn eine eigene Engine sein?
Sonst hätte ich gesagt, warum das Rad neu erfinden, wenn draußen so viele Fertige rumrollen.
Use gopher repellent on funny little man
Benutzeravatar
john_doe
Logik-Lord
Logik-Lord
Beiträge: 1302
Registriert: 06.05.2001, 20:58

Beitrag von john_doe »

So überkompliziert würde ich das nicht machen.

Ich würde die Chapters weglassen, das ist ja nicht wirklich eine tatsächliche hierarchische Einstufung, sondern mehr oberflächlich, dann hast du das Problem mit den mehrfachen Räumen nicht (und wenn du schon so ein OO-Design hast, wäre Copy&Paste ziemlich böse :))

Was sind Options und Types?

Actors, Objects, Scenes würden sich gut als Objekte abbilden lassen. Eine Scene hätte dann verschiedene Events, wie z.B. "OnEnter" usw., die von der Engine zum jeweiligen Zeitpunkt ausgeführt werden. Ähnlich bei den Objects, jedes hätte für entsprechende Verben einen Event, z.B. "OnLook" usw.

Eine Scriptsprache selbst zu programmieren halte ich für zu komplex, wenn das nicht dein eigentliches Ziel ist. Ich würde auf eine bestehende Scriptsprache zurückgreifen, z.B. Lua, Squirrel oder Io.
Die Zusammenstellung einer Scene kann dann durch Scriptcode erfolgen, von dort aus kannst du dann auch auf bestehende Objekte zugreifen und sie so verändern.

Das aktuelle Kapitel würde ich in einer globalen Variable speichern, die dann einfach beim Erstellen einer Szene abgefragt wird, die dementsprechend anders aufgebaut wird.

Edit: Zu lange getippt :)
KhrisMUC stellt die wichtigste Frage: Willst du hauptsächlich ein Adventure machen, oder eine Engine programmieren? Beides gleichzeitig ist ziemlich langwierig.
Save the Cheerleader, save the World!
Benutzeravatar
Jonas
Süßwasserpirat
Süßwasserpirat
Beiträge: 291
Registriert: 10.05.2002, 16:23
Kontaktdaten:

Beitrag von Jonas »

Hallo Nembutal,

ich empfehle dir zunächst mal einen Blick auf etablierte Adventureengines (mein Favorit: AGAST, schau dir den Guide an) zu werfen, und dann festzustellen, dass eine eigene Engine nicht notwendig ist. Spart Zeit ;)
Ich glaube du bist mit dem PaC-DK am besten beraten.

Was deine Fragen angeht: wenn dein Adventure ordentlich werden soll und du die Spiellogik unbedingt extern haben möchtest, wirst du um eine Scriptsprache nicht drum rumkommen. Die ganzen Spieldaten in eine relationale DB abzulegen ist in diesem Fall auch etwas ungünstig.

Greetz
[x] - nail here for a new monitor
Antworten