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

ThomasS

Frischling

  • »ThomasS« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Landshut

Beruf: Student

  • Private Nachricht senden

1

06.10.2008, 20:18

Idee: Ein Textadventure auf der Basis von Raycasting?

Hallo,
was haltet ihr von der folgenden Idee:

Die Raumbeschreibungen in einem Textadventure werden nicht vorgefertigt gespeichert, sondern dynamisch auf Basis einer 3D-Szene generiert. Objekte müssen dazu in dieser Szene nicht genau repräsentiert werden, für die meisten dürften einfache Quader reichen, und der Boden wird auch nur durch eine Ebene repräsentiert. Alle Objekte verfügen jedoch über eine Beschreibung von sich selbst in Textform.

Um die Szenenbeschreibung zu generieren, werden von der Position des Spielers aus in alle Richtungen Raycasts durchgeführt (sich auf die Blickrichtung des Spielers zu beschränken, könnte das ganze unspielbar machen) und die getroffenen Objekte gespeichert. Die durch das Raycasting gesammelten Sinneseindrücke werden zusammengefasst (viele gesehene Bäume werden z.B. zu einem Wald) und geordnet (statische Umgebungen zuerst, bewegliche Objekte danach), bevor sie schließlich angezeigt werden.

Die Bewegung der Objekte wird außerdem mithilfe einer Physikengine simuliert und diese Bewegungen in die Beschreibungstexte eingebaut. So kann z.B. ein Reagenzglas vom Tisch rollen und zerbrechen, oder etwas sich nur kurz im Blickfeld des Spielers befinden, was dieser dann nur schemenhaft wahrnimmt.

Der Sinn des ganzen: eine lebendige, dynamische Welt zu erschaffen.
So werden z.B. die Aktionen des Spielers auf realistische Weise ausgeführt: wenn der Spieler mit "wirf Fackel auf Bücherregal" daneben trifft, könnte die Fackel das entzünden, was sich eben neben dem Regal befindet, weil die Physikengine den Wurf tatsächlich simuliert. Oder der Spieler könnte einen Fels in Bewegung setzen, der daraufhin einen Abhang hinunterrollt.
Gefechte könnten dynamisch und actionreich gestaltet werden:

Quellcode

1
2
3
4
5
Ein Feuerball fliegt direkt auf euch zu. Wie reagiert ihr?
-> nach links in Richtung des Goblins ausweichen
-> nach rechts ausweichen, dabei über den Holzzaun springen
-> ducken
-> andere Aktion ...


Vom Spieltyp her halte ich ein Morrowind / Oblivion - ähnliches RPG für am Besten geeignet.

Die Nachteile des Systems:
- Ist es überhaupt machbar?
- Es dürfte schwierig werden, den erzeugten Texten einen ansprechenden Stil zu verleihen

Quellcode

1
2
"Ihr steht in einem Wald. Westlich von euch wachsen Kräuter. Deren Art könnt ihr aus dieser Entfernung nicht erkennen.
Nördlich von euch seht ihr einen Fels. Vor euch befindet sich ein Oger. Der Oger grunzt: 'Stirb!'"

- Bringt das System wirklich einen merklichen Vorteil gegenüber vorgefertigten Texten, oder ist es den Aufwand nicht wert?

Was meint ihr dazu? Ich plane momentan nicht, die Idee zu implementieren, aber mich interessiert, ob es irgendwann einmal einen Versuch wert wäre.

2

06.10.2008, 20:35

theoretisch ist das von dir beschriebene System sicher irgendwie implementierbar, praktisch wird das ziemlich komplex und aufwändig, insbesondere, wenn dabei ein schöner Textstil rauskommen soll.
der große Vorteil gegenüber vorgefertigten Texten wäre wesentlich mehr flexibilität, und somit auch mehr möglichkeiten für den Spieler.

neido

Treue Seele

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

3

06.10.2008, 20:38

Die Idee ist durchaus interessant, allerdings müsstest du dazu zumindest einen 3D-Editor schreiben für die Erstellung der Welt/Questen etc sonst wäre das für die weltdesigner die Hölle. Und du wirst ein Team brauchen wenn du das in 1-2 Jahren schaffen willst. Außerdem ist es nicht einfach, was hast du denn vorher schon programmiert?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

06.10.2008, 21:05

Wirklich eine interessante Idee. Das Schwierigste dürfte wohl in der Tat sein, die Szene sprachlich so zu beschreiben, dass man beim Lesen nicht dauernd denkt "Welcher Depp hat das geschrieben?!" ;)

ThomasS

Frischling

  • »ThomasS« ist der Autor dieses Themas

Beiträge: 50

Wohnort: Landshut

Beruf: Student

  • Private Nachricht senden

5

06.10.2008, 21:17

Bei der Erstellung der Welt gibt es auch noch die Möglichkeit der zufälligen Generierung. Dann kann man sich den Welteditor sparen, muss aber in Kauf nehmen, dass solche Dinge wie Quests aus immer gleichen Stücken zusammengebastelt werden, die sich oft wiederholen. Die Faszination des Spiels dürfte aber sowieso weniger von der Story herrühren als von der Vielfalt der Handlungsmöglichkeiten. Bei Morrowind / Oblivion kann man ja seine Zeit z.B. auch damit zubringen, einfach nur die Welt zu erforschen und die Quests ganz außer Acht zu lassen.

Wie man die sprachliche Beschreibung am Besten hinkriegt, habe ich mir ehrlich gesagt auch noch nicht überlegt ;)

Zitat

Außerdem ist es nicht einfach, was hast du denn vorher schon programmiert?

Ich bin immer noch (und sicherlich noch auf längere Zeit) hiermit beschäftigt.
Deswegen werde ich die Idee auch vorerst nicht umsetzen. Da mir aber auch das Entwerfen von Spielen Spaß macht, würde ich trotzdem gern eure Meinung dazu hören ;)

Was mir grade noch einfällt:
Konventionelle Textadventures sind in Räume eingeteilt. Bei meinem System stellt sich die Frage, ob so eine Einteilung ebenfalls Sinn macht. Einerseits widerspricht es dem Grundgedanken, eine künstliche Aufteilung zu schaffen, andererseits hat die Aufteilung auch Vorteile. Wenn der Spieler sich bei meinem System z.B. zweimal am selben Ort befindet, die Positionen sich jedoch um ein kleines Stück unterscheiden, könnte eine komplett andere Beschreibung der Welt generiert werden. Eventuell erkennt der Spieler gar nicht, dass er sich am selben Ort befindet. Hier könnten Ortsnamen Abhilfe schaffen. Wenn aber jeder Quadratmeter individuell benannt wird, geht der Effekt auch wieder verloren ;)

neido

Treue Seele

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

6

06.10.2008, 21:27

Zitat von »"ThomasS"«


Ich bin immer noch (und sicherlich noch auf längere Zeit) hiermit beschäftigt.


OK, dann bist du eh schon weiter als ich :D. Da mach ich mir keine sorgen.

Anmerkung: folgender text wurde mehrfach editiert

Wegen der textumsetzung:

Zitat

"Ihr steht in einem Wald.


C-/C++-Quelltext

1
2
3
4
5
6
string s ("Im Nirvana");
if (AnzahlBäumeInRadius(10) > 10){
s = "in einem Wald";
}
... // andere orte

cout << "Ihr steht " << s <<endl;


Zitat

Westlich von euch wachsen Kräuter. Deren Art könnt ihr aus dieser Entfernung nicht erkennen.

C-/C++-Quelltext

1
2
3
4
5
6
CObjekt O;
while (ObjektErkannt(&O)){
 cout << O.Direction() << "von Euch" << O.Description();
 if (O.Distance() > 100 )
   cout << "Genaueres könnt ihr nicht erkennen";
}

Zitat


Nördlich von euch seht ihr einen Fels. Vor euch befindet sich ein Oger. Der Oger grunzt: 'Stirb!'"

Wieder so ähnlich :)

Mal ein Ansatz weil mich das interessiert hat :)

7

06.10.2008, 22:02

Berzüglich der Textumsetzung könnte man ja synonyme Textbausteine speichern, die dann entsprechend ihrer Bestimmung genutzt werden. Wenn dort jetzt z.B. ein dicker kleiner Oger steht könnte das ganze so aussehen:

Gespeichert sind :
"Ihr seht", "Dort steht"
"klein", "hässlich", "dick"
"Oger" (am besten noch Genus mitspeichern ;))
"Wald"

Dann müssten für die einzelnden Worte noch grammatikalische Konstruktionen gespeichert werden. Für klein wäre es z.B. "klein" "kleiner" "kleinen" "kleines" und bestimmte Satzteile müssten noch Attribute bekommen, die bestimmen, welche grammatikalische Konstruktion folgt. Man könnte auch einige Adjektive als unwichtig deklarieren und sie zufällig weglassen. (Oder Sachen, die nicht sofort auffallen)

"Oger" hätte z.B. noch maskulin als Attribut und "Ihr seht" hätte Dativ (bitte nicht schlagen, ich weiß es ist falsch^^) und in der Liste zu klein ständ unter Dativ maskulin dann "einen kleinen". Daraus würde dann einer der beiden Sätze entstehen:
Ihr seht einen kleinen hässlichen Oger im Wald.
Dort steht ein hässlicher fetter Oger im Wald.

Das ganze grammatikalisch korrekt zu implementieren wäre eine höllische Schreibarbeit, aber ich denke schon, dass sich das lohnt. Allein schon die Möglichkeiten. Man könnte das Projekt auch zu ner Engine für Textadventures machen und die eigentliche Story anderen Leuten überlassen, aber das musst du dann entscheiden. ;)

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

8

07.10.2008, 08:48

ach, warum muss alle Welt die gleichen Ideen wie ich haben, einige Monate nachdem ich sie hatte aber lange bevor ich Sie umgesetzt habe? :p :roll:

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

9

07.10.2008, 09:24

Zitat von »"neido"«


C-/C++-Quelltext

1
2
3
4
5
6
CObjekt O;
while (ObjektErkannt(&O)){
 cout << O.Direction() << "von Euch" << O.Description();
 if (O.Distance() > 100 )
   cout << "Genaueres könnt ihr nicht erkennen";
}

Zitat


Nördlich von euch seht ihr einen Fels. Vor euch befindet sich ein Oger. Der Oger grunzt: 'Stirb!'"





Wohl eher so ;) :

Zitat

Nördlich von Euch Fels.
Genaueres könnt ihr nicht erkennen.
Genaueres könnt ihr nicht erkennen.
Genaueres könnt ihr nicht erkennen.
Südlich von euch *Unbekanntes Objekt*
Genaueres könnt ihr nicht erkennen.
Genaueres könnt ihr nicht erkennen.



Ne jetzt mal im Ernst 8) :

Also ich muss mich den anderen anschließen, die Idee ist recht interessant
und es sollte auch nicht so leicht zu implementieren sein...

Nur du meintest es soll actionreich sein... aber wie ?
Wenn man immer wieder die Fragen beantworten muss, dann is
das doch keine Action.. oder hab ich das falsch verstanden und du möchtest
die Fragen so alle 3sec wieder auf die neue Situation im Spiel anpassen ?

Und wiso den Aufwand machen.. irgendwelche Texte zu generiern ?
Machs wie in anderen Spielen.. Fakel in die Hand nehmen -> Auf bücherregal zielen -> werfentaste -> wurf
->ups daneben -> Mülleimer mit Feuerwerkskörpern, der neben dem Bücherregal stand fängt an zu brennen... fertig :badgrin: :D

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

10

07.10.2008, 09:27

Zitat von »"DataByte"«

Und wiso den Aufwand machen.. irgendwelche Texte zu generiern ?


Textadventures sind noch aus alten zeiten wo die grafikkarten noch mechanisch waren :D.
Databyte, das ist einfach retro, das lässt man so, sonst geht die atmosphäre flöten! immer diese Grafikverwöhnten Kinder :badgrin:

Werbeanzeige