Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.07.2015, 14:11

Spiel-Story, wie am besten ins Projekt einbinden?

Hallo zusammen,

leider konnte ich auf Anhieb nichts im Forum dazu finden. Wo und wie speichert ihr eure "Story" ab?

Also mein erster Gedanke, ich arbeite mit Java und möchte auf eine HSQLDB(Standalone) setzen. Das enzige was mich stört, das statische einer DB.

Wenn ich mir jetzt vorstelle ich muss Dialoge in einer DB speichern , dann stellt sich mir immer die Frage wie das am besten umgestezt wird. Wenn ich pro Spalte(Dialog x) einen Dialog pro NPC abspeichere, bräuchte ich für ein Storylastiges Game mit vielen Dialogen, etliche Spalten.
Pro Dialog bräuchte ich eine Spalte, ich habe die Befürchtung das könnte zu unübersichtlich werden, weil ich bisher nicht genau absehen kann wieviel Text es wirklich wird.

ID Dialog1 Dialog2 Dialog3 Dialog4 Dialog5 ...

Die NPCs sollen nicht immer nur Dialog1 nutzen, sondern sollen die Story weiter voran bringen wenn zb ein Event eintritt.

Daher wie setzt man das besser um?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

20.07.2015, 14:18

Dokumente und Hyperlinks. Gekoppelt mit Scripten, die Start-Dialoge basierend auf Character- und NPC-Status ermitteln können.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

20.07.2015, 14:35

Dokumente und Hyperlinks. Gekoppelt mit Scripten, die Start-Dialoge basierend auf Character- und NPC-Status ermitteln können.
Kannst du das vielleicht etwas ausführen? Was meinst du mit Dokumenten? Einfach txt Dokumente/Word?

Wieso eine Scriptsprache?

Was ich mir jetzt vorstelle wäre, wenn ich das Stichwort Hyperlinks lese, die relativen Pfade als Strings in einer DB abzuspeichern, die dann mit den NPCs zu verknüpfen und dann bei Bedarf abzufragen.

Daher wiederholt die Frage, welchen Vorteil bringt eine Scriptsprache gegenüber meiner Idee? Generell bin ich nur mit Python und JS in Kontakt gekommen, wenn es um Web-Programmierung ging, bin daher absoluter Laie was Scriptsprachen angeht.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

4

20.07.2015, 14:49

Willst du das für die Planung oder für die Integration ins Spiel wissen?

Für die Planung gibt es unterschiedliche Tools, die helfen könnten, und bestimmt noch weit mehr unterschiedliche Vorgehensweisen. "articy:draft" habe ich in dem Zusammenhang bereits gehört, allerdings sollten für den Anfang einfachere Tools (wie bspw. untereinander verlinkte Dokumente) völlig ausreichen.

Die Datenbank, die du dir (im Anfangsbeitrag) ausgedacht hast, ist unsinnig, du solltest dich nochmal mit der Normalisierung von Datenbanken auseinandersetzen. Die Dialoge sollten in der "Dialogs"-Tabelle Zeilenweise hinterlegt werden, ggf. mit einer Referenz auf den richtigen NPC, der wiederum in der "NPC"-Tabelle hinterlegt ist.
Aber bevor du dir Gedanken über die Speicherung machst, solltest du dir erst Gedanken darüber machen, wie die Dialoge, usw. gestartet und gesteuert werden sollen. Dafür solltest du auch wissen, was du benötigst.
Und bevor du das machst, wäre es eine gute Vorgehensweise, wenn du auch nur das implementierst, was du auch wirklich benötigst, und weitere Features ergänzt, sobald du diese benötigst. Andernfalls ist es sehr leicht in ein Overengineering zu verfallen.

Bei Spielen sollte man bedenken, dass Dialoge, Texte allgemein und Cutscenes möglichst vermieden werden sollten. Selbst wenn diese hübsch anzusehen sind, brechen sie eher den Spielfluss ab, indem der Spieler die Kontrolle über seinen Charakter gänzlich verliert. Auch sollte möglichst viel dem Spieler mit Hilfe der Mechaniken des Spiels mitgeteilt werden, statt über Text.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

20.07.2015, 15:07

Kannst du das vielleicht etwas ausführen? Was meinst du mit Dokumenten? Einfach txt Dokumente/Word?
Word wäre schlecht, weil Du dann etwas bräuchtest, was Word-Dokumente lesen kann. Sinnvoll wäre wohl etwas HTML/RTF-ähnliches, eben eine Auszeichnungssprache, wo Du Links setzen kannst und was gleichzeitig super einfach zu laden ist.

Wieso eine Scriptsprache? (...) Daher wiederholt die Frage, welchen Vorteil bringt eine Scriptsprache gegenüber meiner Idee? Generell bin ich nur mit Python und JS in Kontakt gekommen, wenn es um Web-Programmierung ging, bin daher absoluter Laie was Scriptsprachen angeht.
Reine Pfade in einer Datenbank haben das Problem, dass sie nicht Kontext-abhängig sind. Was z.B. wenn ein Dialog nur Spielern über einem gewissen Level präsentiert werden soll? Oder Spielern, die ein bestimmtes Item besitzen (was sie z.B. in einem vorherigen Quest bekommen)? Oder Spieler, die einen gewissen Skill gelernt haben, ein bestimmtes Haustier/Minion besitzen, eine bestimmte Menge Monster gekillt haben, etc, etc, etc? Du willst für all diese Bedingungen, die Du am Ende nur einmal für ein ganz spezielles Quest brauchst, keine IDs in einer Datenbank anlegen und dann harten Code dafür schreiben. Da bietet es sich eher an ein Script zu schreiben, was diese Eigenschaften prüft und dann zwischen verschiedenen Dialogen auswählt.

Was ich mir jetzt vorstelle wäre, wenn ich das Stichwort Hyperlinks lese, die relativen Pfade als Strings in einer DB abzuspeichern, die dann mit den NPCs zu verknüpfen und dann bei Bedarf abzufragen.
Relative Pfade zu anderen Dialogen, ja. Allerdings hat da die Datenbank relativ wenig Sinn, bzw. schafft eine zusätzliche Indirektionsebene, die völlig überflüssig und lediglich verwirrend und kompliziert ist. Aus meiner Sicht ist ein Quest-Dialogfluss in einem Spiel erstaunlich ähnlich zu einer Webseite. Man kann gewisse Dinge lesen, man kann an gewisse andere Stellen springen, man kann Buttons anklicken, die dann zu verschiedenen Resultaten führen. Das auch so abzubilden hat mMn ziemlich viele Vorteile. Bei Lineage II wurde das intern z.B. auch genauso umgesetzt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

20.07.2015, 17:39

Erst mal vielen Dank an euch Beiden.

@Sacaldur, die Normaliesierung ist mir schon ein Begriff. Nur wie würdest du es umsetzen, wenn ein NPC meherer Dialoge besitzt?

NPC
ID NPC_ID DialogID
1 6 4

Dialog
ID DialogTEXT1 DialogText2 ...
4 "blabla" "noch mehr blabla"

Zitat

Bei Spielen sollte man bedenken, dass Dialoge, Texte allgemein und
Cutscenes möglichst vermieden werden sollten. Selbst wenn diese hübsch
anzusehen sind, brechen sie eher den Spielfluss ab, indem der Spieler
die Kontrolle über seinen Charakter gänzlich verliert. Auch sollte
möglichst viel dem Spieler mit Hilfe der Mechaniken des Spiels
mitgeteilt werden, statt über Text.
Also den Punkt kann ich absolut nicht nachvollziehen. Ein Storybasiertes Spiel, lebt von seiner Geschichte und die wird am besten ausgedrückt mit Text. Wenn ich mir Spiele wie Final Fantasy anschaue, kann man doch schnell erkennen dass Dialoge/Story sehr wichtig sind. Oder wie meinst du das mit "vermieden" werden.

@BlueCobold

Zitat

Reine Pfade in einer Datenbank haben das Problem, dass sie nicht
Kontext-abhängig sind. Was z.B. wenn ein Dialog nur Spielern über einem
gewissen Level präsentiert werden soll? Oder Spielern, die ein
bestimmtes Item besitzen (was sie z.B. in einem vorherigen Quest
bekommen)? Oder Spieler, die einen gewissen Skill gelernt haben, ein
bestimmtes Haustier/Minion besitzen, eine bestimmte Menge Monster
gekillt haben, etc, etc, etc? Du willst für all diese Bedingungen, die
Du am Ende nur einmal für ein ganz spezielles Quest brauchst, keine IDs
in einer Datenbank anlegen und dann harten Code dafür schreiben. Da
bietet es sich eher an ein Script zu schreiben, was diese Eigenschaften
prüft und dann zwischen verschiedenen Dialogen auswählt.

Also den ersten Teil, bezüglich der Kontext-abhängigkeit kann ich nachvollziehen.
Wenn ich aber jetzt, wie du oben beschreibst auf einfach Dokumente switche, kann ich die Bedingung wann welcher Dialog ausgewählt werden auch mit Java prüfen. Daher stehe ich immer noch komplett auf dem Schlauch warum es sinnvoller ist auf Script zu setzen. Mir fehlt dafür einfach die Erfahrung anscheinend den Unterschied zu sehen. Gibt es zu dem Thema irgend einen Link gerne auch in Englisch der auf das Thema eingeht?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

20.07.2015, 18:11

Datenbank:
Das ist ein einfacher Fall einer "1 zu n"-Beziehung. In deinem Fall würde jeder Dialog eine Referenz auf den jeweiligen NPC zugewiesen bekommen.
Das gleiche trifft dann wieder auf die "Dialogtexte" zu. Jedem Dialogtext wäre auch ein Dialog zugewiesen. (Wahlweise kann man auch den Dialogtexten den jeweiligen NPX zuweisen, so können im gleichen Dialog mehrere NPCs vertreten sein.)

Story:
Das Problem bei vielen ist nur, dass es oft dahin ausartet, dass die gesamte Story über Dialoge (und ggf. Cutscenes) erzählt wird, während das restliche Spiel (das Gameplay bzw. die Mechaniken abseits der Dialoge) sehr generisch ist.
Ein Gegenbeispiel wäre "Brother: A Tale of Two Sons", bei dem kein einziges Wort zwischen den Charakteren ausgetauscht wird, bei dem dem Spieler aber dennoch eine Story "erzählt" wird. Auch können dem Spieler über die Gestaltung der Umgebung, die Mechaniken etc. Teile der Story offenbart werden.
Cutscenes haben das Problem an sich, dass sie nicht interaktiv sind. Der Spieler kann sich zwar ein hübsches Video ansehen, allerdings unterbricht das in den meisten Fällen eher den Spielfluss. Half Life 2 kam bspw. ohne Cutscenes aus (wobei man sich über Anfang und Ende des Spiels streiten kann).
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

8

20.07.2015, 18:23

Danke dir für die Beschreibung der DB. Jetzt habe ich es endlich auch verstanden, habe wieder viel zu umständlich gedacht.

Bezüglich der Story:
Als deine Sichtweise ist aber ein seltenes Stilmittel. Also gerade die Final Fantasy Reihe war mitunter auch so beliebt aufgrund der genialen Cut-Scenen. Ähnlich wie Blizzard.

Half-Life 1 oder 2, fand ich storytechnsich nicht so brilliant wie alle behaupten, da gefiehlen mir im selben Sektor, Deus Ex 1 um Welten mehr.

Ich kann deine Sichtweise verstehen aber teile sie für die meisten Spiele nicht, ich sehe es eher als schöne Abwechslung aber kein Grund Story/Cutscenes zu vermeiden.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

20.07.2015, 18:34

Wenn ich aber jetzt, wie du oben beschreibst auf einfach Dokumente switche, kann ich die Bedingung wann welcher Dialog ausgewählt werden auch mit Java prüfen. Daher stehe ich immer noch komplett auf dem Schlauch warum es sinnvoller ist auf Script zu setzen.
Da würde ich jetzt nur überflüssig alle Vorteile von Scripten gegenüber fest kompiliertem Code aufzählen. Der wichtigste ist mMn allerdings, daher nenne ich ihn jetzt mal separat trotzdem, die Möglichkeit das Script zu ändern und während der Laufzeit des Spiels neu zu laden, ohne es komplett anzuhalten, neu zu bauen und wieder dort einzusteigen, wo man gerade war. Dieser Vorteil ist unschätzbar.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

10

20.07.2015, 20:36

Sacaldur deine Punkte sind sehr interessant und ich stimme dir auch bedingt zu, aber es wäre besser das in einen anderen Thread zu verlegen. Hat nämlich mit der eigentlichen Frage des OP's eigentlich sehr wenig zu tun.
WIP Website: kevinheese.de

Werbeanzeige