JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=cd5f646501e061c80bf22fdd04782b2eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

RPG "Message-/Talk System"

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 23.01.2004, 16:43    Titel: RPG "Message-/Talk System" Antworten mit Zitat

Hi!

Ich wollte mal fragen, ob ihr Boards/Seiten kennt die sich unteranderem damit beschäftigen wie man am geschicktesten das Message-/Talk System aufbaut. Damit meine ich die Dialoge in den RPGs, bei denen Dialoge auch nur nach bestimmten Ereignissen stattfinden und auch mit Ja, Nein antworten und anderen Antwortmöglichkeiten.

Das ist natürlich ein komplexes System (wenn man es perfekt machen will Wink) und da wollte ich mir erst mal ansehen wie das andere machen. Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 23.01.2004, 16:52    Titel: Antworten mit Zitat

Ich weiß zwar kein Board aber du kannst dir ja mal Dink Smallwood anschauen, das ist inzwischen Open Source.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 23.01.2004, 16:55    Titel: Antworten mit Zitat

ist es das?

http://sourceforge.net/projects/dink
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 23.01.2004, 17:28    Titel: Antworten mit Zitat

Bei NWN und anderen Bioware spielen wird LUA dazu verwendet. Meiner Meinung nach ist die Lösung damit super.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 23.01.2004, 18:41    Titel: Antworten mit Zitat

Millie: yup, macht auch Spass, das Game. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 24.01.2004, 11:23    Titel: Antworten mit Zitat

FallenAngel84 hat Folgendes geschrieben:
Bei NWN und anderen Bioware spielen wird LUA dazu verwendet. Meiner Meinung nach ist die Lösung damit super.

Euhm...ich glaube LUA ist so ne Art Scriptsprache und keine "RPG-Engine"...oder?
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 24.01.2004, 12:20    Titel: Antworten mit Zitat

Ja, Lua ist eine Scriptsprache aber wer verbietet dir sie zum Scripten von Dialogen einzusetzen? ;) Das könnte z.B. so aussehen:

Code:

dialogue_id = CreateDialogue("Ismar", "Was wollen Sie von mir?")

AddAnswer(dialogue_id, "Schönes Wetter heute.", ... )
AddAnswer(dialogue_id, "Wo ist euer Dorfoberhaupt?", ... )
AddAnswer(dialogue_id, "Nixschongut", ...)


Das ist frei erfunden... keine Ahnung wie NWN das macht.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 24.01.2004, 15:44    Titel: Antworten mit Zitat

Mir kommt es im Moment eher auf eine fehlerfreie Programmierung an, indem ich jedem NPC Dialog-"Bäume" zuweisen kann. Manche Dialoge sollen natürlich erst zu sehen sein, wenn bestimmte Aktionen durchgeführt worden sind. Es wäre ja Unsinn, wenn der Dialog z.B. vorhanden wäre, dass man die Stadt vor Dämonen befreit hat und man nun ein sehr sehr mächtiges Amulett bekommt. Ich wollte mir anschauen wie das andere machen...

Beispiel:

NPC "Luthos": Was sucht ihr hier?
1.Erzählt mir über die Stadt, die von Dämonen befallen ist!!!
2.Ich suche...
2.1 Ausrüstung
2.1.1 Ich habe nur ein Schwert (paar Informationen)...wollt ihr es haben? (...Geld)
2.1.1.1 Ja (kaufen)
2.1.1.2 Nein, danke.

2.2 eine Arbeit als...
2.2.1 Freibeuter
if(skill groß):
2.2.1.1 so seht ihr aus
if(skill klein):
2.2.1.2. als freibeuter? haha......
if(...)
2.2.1.3...

2.2.2. Bauersgehilfe
2.2.3. Lehrling des Magiers
2.2.4 ...

also dabei soll man unendliche (soweit die Systemressourcen das zulassen) Unterpunkte für Antworten geben. Es soll je nachdem wie die Situation gerade ist, andere Antworten bzw. Antwortmöglichkeiten geben, welche vllt nicht anwählbar, wenn man z.B. das Geld oder Erfahrung nicht hat. Die if-Abfragen sollen natürlich getrennt von den Dialogen stehen. Ich lese die Dialoge dann aus einer Datei aus. Kann ja nicht mehr als 10MB Text in die Exe packen Wink

Habt ihr dazu Vorschläge. Wäre echt super Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 25.01.2004, 08:14    Titel: Antworten mit Zitat

Hab mich jetzt schon etwas dran gesetzt...

Mein größtes Problem ist im Moment die Realisierung, wie ich das am "programmierfreundlichsten" implementiere, dass die Vorraussetzungen dass man die Messages sieht bzw. anwählen kann, auch bei den Messages steht.

aber so was geht nicht?

msg_system npc1;

npc1.add_messagetree("Ich will euch zum Kampf herausfordern!");

npc1.add_reply_message("Ihr seid zur schwach...VERSCHWINDET!!");
npc1.add_if
{
if(player.skill < 40)
}


npc1.add_reply_message("Ihr traut euch jetzt schon gegen MICH anzutreten?");
npc1.add_if
{
if(player.skill > 50 && player.skill < 80)
}



npc1.add_reply_message("Lasst uns kämpfen...");
npc1.add_if
{
if(player.skill >= 80)
}



Natürlich werde ich wohl dann dazu sowas wie LUA benutzen. Und in der Spieleschleife könnte man das dann so abfragen (nicht performanceoptimiert!!):

for(int i=0;i<npc1.get_max_msg_num();i++)
npc1.exec_if(i);

Gibt es so eine ähnliche Variante in C++?

Das oben war von mir natürlich nur ausgedacht, was aber super wäre, wenn das ginge Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 25.01.2004, 08:54    Titel: Antworten mit Zitat

Ja, soetwas ist durchaus möglich, aber du müsstest dein add_if etwas abändern, in etwa so:

Code:

add_if(COMPARE comp, int l, int r)
{
...
}

// COMPARE:
enum
{
   EQUAL,
   BIGGER_THAN
   SMALLER_THAN
   ...
}


Der Inhalt der add_if Funktion ist dann einfach... je nach COMPARE verzweigst du zu der entsprechenden if-Abfrage. l und r sind der linke bzw. der rechte Wert.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 25.01.2004, 09:08    Titel: Antworten mit Zitat

Danke für deine Hilfsbereitschaft!! Very Happy
Sowas hab ich mir auch gedacht...aber:
Variablen ändern sich...Sad
und dann würde die Funktion mit alten Werten arbeiten...
außer wenn ich...naja template zeiger hätte...dann müsste es reintheoretisch doch gehen, oder? Geht das aber, dass Funktionen von Klassen als Funktionsparameter template zeiger haben dürfen? Hab fast keine Ahnung von templates...Sad
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 25.01.2004, 09:32    Titel: Antworten mit Zitat

Du kannst doch auch Zeiger benutzen und diese speichern, dann hat die Funktion immer die aktuellsten Werte.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum