Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 23.01.2004, 16:43 Titel: RPG "Message-/Talk System" |
|
|
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 ) und da wollte ich mir erst mal ansehen wie das andere machen. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 23.01.2004, 16:52 Titel: |
|
|
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 |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 23.01.2004, 17:28 Titel: |
|
|
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 23.01.2004, 18:41 Titel: |
|
|
Millie: yup, macht auch Spass, das Game. ;) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 24.01.2004, 11:23 Titel: |
|
|
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 24.01.2004, 12:20 Titel: |
|
|
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 |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 24.01.2004, 15:44 Titel: |
|
|
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
Habt ihr dazu Vorschläge. Wäre echt super _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 25.01.2004, 08:14 Titel: |
|
|
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 _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.01.2004, 08:54 Titel: |
|
|
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 |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 25.01.2004, 09:08 Titel: |
|
|
Danke für deine Hilfsbereitschaft!!
Sowas hab ich mir auch gedacht...aber:
Variablen ändern sich...
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... _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.01.2004, 09:32 Titel: |
|
|
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 |
|
|
|