Author: LieutenantMarky
Last changed: 25.11.2014 18:40
Completion: Alpha (playable)
Date of publication: Scheibchenweise
User niveau: Excellent
Translate to english
Um was geht's?
Mit RPG Library soll man mit relativ wenig Aufwand RPGs für Clonk Rage erstellen können. Ähnlich wie bei Ritter, Western, etc. gibt es ein Grundpack, welches die ganze Infrastruktur enthält. Wer ein RPG erstellt braucht sich dann nicht mehr darum kümmern, solche Sachen wie Skills, Levelanstiege, Quest- und Dialogsysteme zu programmieren, sondern baut auf dem Objektpaket auf und personalisiert es.

Aber man kann es doch nicht jedem Recht machen!
Stimmt. Deshalb ist das Grundpaket recht offen. Es stellt die Grundfunktionalität für gängige RPG-Konzepte zur Verfügung:
Beispielsweise ein Skill steht für einen Wert, der gesteigert werden kann. Im Script geht man mit allen Scripts gleich um - man kann sie abfragen und verändern. Welche Skills es geben soll ist erstmal egal - jedes Szenario kann eigene Skills haben, die durch ein simples Array definiert werden.

Was kann RPG Library bis jetzt?
Eine kleine Aufzählung der Features.

Dialoge

- Es gibt ein dynamisches System für Dialoge. Anstelle von mehreren Funktionen und Menus schreibt man ein Array, welches den Dialogbaum darstellt und ist fertig.
- Dialogoptionen können problemlos auch das Inventar des Spielers verändern oder nur unter bestimmten Voraussetzungen verfügbar werden.

Quests

- Quests können kooperativ gelöst werden.
- Quests haben verschiedene Stufen, die als Array dargestellt werden, ähnlich wie bei den Dialogen.
- Quests werden in ein Questlog geschrieben. Der Programmierer kann selbst einstellen, was er in das Log schreibt.
- Mehrspielerunterstützung: Quests können entweder kooperativ gelöst werden, oder jeweils nur von bestimmten Spielern. Der Fortschritt wird je Spieler separat verfolgt.  

Filmsequenzen

Filmsequenzen sind möglich und benötigen nicht einmal einen eigenen Mechanismus: Sie fügen sich ganz einfach in das Quest-System ein.

Tagesabläufe

Spätestens seit Gothic gehören Tagesabläufe für NPCs zum guten Ton bei RPGs. Sowas darf natürlich auch in Clonk nicht fehlen.
- Tagesabläufe können als Funktion definiert werden. Diese werden an NPCs angehängt und können auch von mehreren NPCs benutzt werden


Geplante Features
Diese Dinge sind geplant, aber noch nicht umgesetzt.
NPC-Missionen

Zur KI gehört das System Tagesablauf-Mission-Aufgabe: Jeder NPC kann einen Tagesablauf haben. Dieser wird überschrieben durch Missionen, die wiederum durch Aufgaben überschrieben werden.
NPCs können miteinander interagieren, indem sie Aufgaben oder Missionen tauschen.

Dokumentation

RPG Library benötigt eine Doku und einige Tutorials, damit das Objektpaket leicht zugänglich ist.

Dekoration

Es gibt viele gute Deko-Objekte aus bestehenden RPGs und Adventures. Diese werden in der RPG Library enthalten sein, um die Objekte nicht immer wieder kopieren zu müssen.


Gibt es auch was zu sehen?
Ja. Einfach so Funktionen bereitstellen ist langweilig, deshalb gibt es parallel zu RPG Library noch ein Szenario :)

Wie kann ich helfen?
Momentan brauche ich Feedback zur aktuellen Version. Ich denke, dass mir klarer ist, wie man am besten damit entwickelt.

Was wird gerade bearbeitet?
Aktuell wird gearbeitet an:
- Verhalten, mit welchen die KI Randrians Deko-Objekte als Teil des Tagesablaufs benutzen kann.

In Release v0.1.5 ist enthalten:
- Umstrukturierung des Objektordners. Die Objekte werden nach Teilsystemen sortiert, sodass Abhängigkeiten besser erkennbar sind.
- Mehr Deko-Objekte und einheitlicheres Script für selbige.
- Schalter und abschließbare Objekte.
News
26.11.2014
* Beschreibung angepasst.
25.11.2014
* Release mit Verzögerung
27.07.2014
* Projektvorstellung
01.09.2014
* Dokumentation angefangen

Downloads
02.01.2015 20:20, ClonkAvenger voted +, Influence 1
Sieht sehr vielversprechend aus, da ich sowas total cool finde bin ich sehr gespannt. :D
16.12.2014 18:15, EnsignMax Payne voted +, Influence 1
Sehr tolles Projekt was wahrscheinlich in unserem Projekt Verwendung finden wird :)

Klares +.
14.12.2014 01:24, MajorWipfmagus voted +, Influence 1
Verallgemeinerte Bibliotheken sind toll. RPGs in Clonk sind toll. Von beidem sollte es mehr geben. Und die Featureliste sieht auch überzeugend aus.
13.08.2014 18:37, Lieutenantala voted +, Influence 1
Auja!

Find die Idee sowieso gut Ressourcen verschiedener Pakete mal zu sammeln und leicht zugeaenglich zu machen. Mit allem was es in Clonk Rage gibt kann man naemlich locker 10 verschiedene Adventures fuellen.
05.08.2014 20:51, LieutenantDeep voted +, Influence 1
Vielleicht ist es zu früh eine Bewertung mit einfließen zu lassen und es kann wahrscheinlich auch zu Änderungen kommen, je nach dem ob sich das ganze zum schlechten oder besseren entwickelt.

Abgesehen davon dass ich hier nur einige Informationen von dieser Seite weiß und ich auch nicht wissen kann ob es mit der Aktivität klappen wird schließe ich das erst ein mal aus und bewerte lediglich die genannten Konzepte / Ideen, die denke ich mal einfach zu RPGs in Clonk nicht fehlen dürfen. Bestimmt gibt es in dieser Richtung noch vieles mit einzuplanen was jedoch ein + Vote keinen Abbruch macht. Mal schauen ob es was wird.
29.07.2014 13:41, Lieutenant Colonelconstantin voted +, Influence 1
So etwas habe ich mir schon immer gewünscht und finde es klasse, dass es gemacht wird.
Die Frage die sich mir noch stellt ist, ob ein Kampfsystem integriert ist und wie es mit der Kleidung aussieht.



Showing 1-5 comments out of 22

30.12.2014 16:50 from LieutenantSven2  
Ich habe das RPG-Pack nun mal ausprobiert und im Weihnachtsszenario hier benutzt: https://ccan.de/cgi-bin/ccan/ccan-view.pl?a=view&i=6226 (Feeback
basiert jetzt noch auf v0.1; vielleicht sind schon einige Dinge geaendert.)

Einige der Hilfsfunktionen waren sehr praktisch. Wobei mir die komplexeren Teile der AP gar nicht gefallen haben: Die Methode, alle Scripte auf Dialogen, Quests und Cutscenes in Arrays zu haben, klingt vielleicht erstmal cool. Es wird aber unpraktisch, sobald man komplexere Dinge bauen will, die von Laufzeitvariablen abhaengen.

Zum Beispiel: Ich will im Text eine persoenliche Begruessung haben. Oder Laufzeitvariablen ("Es fehlen noch X Christbaumkugeln"). Geht nicht, weil der Text ja schon vorher festgelegt wird. Das gilt in vielen Texten; auch zum Beispiel in gefragten Optionen. Selbst, das, was dynamisch geht, muss immer kompliziert mit Format() zusammen gebaut werden. Variablen sind auch ziemlich umstaendlich. Oder ich wollte eine versteckte Option haben, die erst nach einer Weile erscheint. Das ging ueberhaupt nicht.

Selbst wenn das System jetzt erweitert wird mit allen moeglichen Optionen, wird im Endeffekt ja nur alles nachgebaut, was es in einer ganz einfachen Scriptengine schon gibt! Man muss dann eine komplett neue Sprache lernen nur um etwas zu tun, was man einfach schon kann. Fuer ein Dialogsystem reichen doch Hilfsfunktionen wie MessageBox/AddOption/etc.

Was mir in solchen Funktionen fehlte sind stattdessen z.B. einfache Moeglichkeiten, dass eine Option nur einmal erscheint - wahlweise nur einmal pro Dialogsession, einmal pro Spieler oder einmal im ganzen Spiel. Zum Beispiel, indem man einen Stirng uebergibt. Ein Beispiel wie es aussehen kann:

Code:
func DlgHannesA()
{
  DlgMsg("Was willst du?", npc);DlgHannesOptions();
}

func DlgHannesOptions()
{
  DlgOption("Wie geht es dir?", "HowIsItGoing", DLG_OncePerSession); // kommt wieder, wenn man neu anspricht
  DlgOption("Ich brauche eine Flagge", "Flag", DLG_OncePerPlayer); // fuer jeden Spieler einmal auswaehlbar
  DlgOption("Gib mir all dein Geld!", "Money", DLG_OncePerGame); // nur einmal insgesamt auswaehlbar
  DlgOptionAbort();
}

func DlgHannesHowIsItGoing()
{
  DlgMsg("Mir gehts gut!", npc);
  DlgHannesOptions();
}


func DlgHannesHowIsItFlag()
{
  DlgMsg("Hier ist dieine persoenliche Flagge", npc);
  player->CreateContents(FLAG);
  DlgHannesOptions();
}


func DlgHannesMoney()
{
  DlgMsg("Hier hast du all mein Geld.", npc);
  DoWealth(GetController(player), 1000);
  player->Sound("Cash");
  DlgHannesOptions();
}


Das ist zwar etwas mehr Schreibarbeit, wenn man einen Dialog ohne viel dynamisches Zeug hat. Aber sobald es dynamisch wird, wird das jetzige System einfach grauenhaft. Alles ist voll Format/riesigen Scriptstrings. In den Strings geht kein Syntax Highlighting und Scriptfehler sieht man erst zur Laufzeit. Man muss andauernd Conditions doppelt, dreifach und fuenffach schreiben, weil mehrere Optionen davon abhaengen. Man kann es auch nicht in Eclipse mit Remote Debugger debuggen, Breakpoints setzen, etc. Davon abgesehen ist eval() natuerlich viel, viel langsamer als direkt Ausfuehrung, was besonders relevant wird, wenn man viele Quests mit Bedingungen hat.

Wenn du das Arraysystem unbedingt behalten willst, sollte es zumindest fuer Profis auch die manuelle Dialog- und Questdefinition als Satz von Funktionen geben. Siehe z.B. Dialoge aus OpenClonk (https://git.openclonk.org/openclonk.git/blob/HEAD:/planet/Missions.ocf/Raid.ocs/System.ocg/DlgPyrit.c).

Bei Cutscenes habe ich es gleich aufgegeben, sie ueber Quests zu realisieren. Ich habe es nicht geschafft, eine Cutscene erst dann fortzusetzen, wenn der Spieler einen Dialog mit Weiter bestaetigt hat. Da ist das System mit einer Funktion pro Etappe der Szene einfach viel praktischer. Quests habe ich fuer das einfache Szenario nicht gebraucht. Aber ich denke auch, dass man dort eine Methode nit Etappen in Funktionen besser gebrauchen koennte als Etappen als Arrayelemente.

Etwas anderes: Das Speicher/Ladesystem aus Harkon, das FogOfWar-System, automatischer Relaunch, etc., sind praktische Funktionen. Aber sie sollten optional und z.B. per Spielregel aktivierbar sein. In meinem Szenario wollte ich einfach Respawn an einem Ort ohne Nachladen haben (weil das Laden im Multiplayer nicht so toll ist). Der FogOfWar-Range wurde ueberall im verstreut gesetzt ohne weitere Abfragen. Ich wuerde mir wuenschen, dass das ueber eine Regel eingestellt wird und dass ich als Scripter Einfluss auf die Sichtweite habe.

Ich finde, wenn man ein Pack einfach nur aktiviert, sollte sich erst einmal nichts im Szenario aendern. Genau wie bei anderen Packs (Ritter, Fantasy, etc.) auch. Vielleicht will ich einfach nur paar Dekoobjekte benutzen. Wenn ich dann mehr will - Respawn, Speichern, Dialoge, Quests, KI-Gegner, etc. - dann sollte das einzeln ueber Regeln oder entsprechende Aufrufe benutzbar sein, und nicht immer gleich alles auf einmal kommen.

Die groesste Hilfe durch das Pack waren im Grunde die Hilfsfunktionen wie StartFilm, Talker, Unverwundbarkeit, etc. Die haben die Entwicklung schon etwas beschleunigt. Der komplexere Kram hat mich in der jetzigen Version dagegen eher behindert; das muesste noch etwas ausgereift werden.

19.12.2014 05:37 from LieutenantMarky  
Mehr als hin- und her laufen können sie leider noch nicht :) Freut mich, dass du etwas damit bauen willst!

18.12.2014 22:55 from LieutenantSven2  
Okay sieht gut aus. Mal schauen, ob ich bis Weihnachten eine Kleinigkeit gebaut kriege :-)

Fuer KI-Gegner ist leider nichts dabei?

18.12.2014 22:40 from LieutenantSven2  
Okay, ich habe es geloest: War der Zone Identifier, der die heruntergeladene Datei vor dem Ausfuehren geschuetzt hat.

18.12.2014 22:23 from LieutenantMarky  
Komisch, dass du die Doku nicht öffnen kannst. Die erste Seite ist bei mir auch leer, aber sobald ich in den Index clicke, wird eine Seite angezeigt.

Ja, ein Demo-Szenario gibt es noch nicht. In Version 0.2.0 ist das Szenario, welches man im Tutorial erstellt, enthalten. Die gibt es aber noch nicht. Ein komplettes Szenario, welches alle Funktionen benutzt, wird es wahrscheinlich erst in 1.0.0 geben
Last change: 18.12.2014 22:24