HINWEISE
- Es ist von größter Wichtigkeit Risen nach Möglichkeiten nicht in den normalen Programmen zu installieren. Im Idealfall einfach auf eine eigene Partition oder in einem Ordner wie C:\Games. Der Hintergrund ist denkbar einfach: Im Risen-Verzeichnis werden am laufenden Band Dateien geändert, entweder von irgendwelchen Tools oder Risen selbst. Standardmäßig werden dazu (unter Win7 und höher) Administratoren-Rechte gefordert. Glaubt mir an dieser Stelle: Es ist einfacher das Spiel einmal "richtig" zu installieren, als immer alles als Admin zu starten. Außerdem ist es für uns so einfacher euch zu helfen.
Videos
Einstieg (Kuchenschlachter)
Einem namenlosen NPC einen Namen geben (Kuchenschlachter)
Spacern (Welt befüllen) (Kuchenschlachter)
Moddateien vom Original abgrenzen (Kuchenschlachter)
Levelmesh erweitern (Kuchenschlachter)
Geschriebene Tutorials
Einführung in den Minsky-Mode - nützliche Befehle, Tastenkombinationen und Makros für Modder (Baltram)
Erstellen einer neuen, leeren Welt (Baltram)
Vegetation Painting mit Script_Extensions (Baltram)
Hinzufügen eines Levelmeshs zur Spielwelt (Baltram)
Entities (Objekte) und Welten (JFaron, PDF)
NPCs (JFaron, PDF)
Ein Projekt mit dem RisenSDK erstellen (en) (NicoDE)
(veraltet) (Einstieg ins Risen Modding, JFaron)
Dokumentationen
Script_Extensions (DE) (en) (Baltram)
Anderes
- Grundlagen zu Infos bzw. Dialogen (Shak-otay) – Sicherlich kein Tutorial, und auch nicht so gedacht. Dennoch recht hilfreich, zumindest bis nichts anderes da ist
- Einen NPC erstellen – Routinen (JFaron, ENG) – Behandelt das Erstellen grundlegender Tagesabläufe in Risen; Weiter geht es mit RoutineTasks und Anchors.
Dieser Thread ist gleichermaßen zum Sammeln als auch zum Diskutieren gedacht. Themenspezifische Fragen falls möglich bitte in den entsprechenden Threads, sonst einfach einen erstellen.
Results 1 to 20 of 37
-
Last edited by JFaron; 21.11.2016 at 15:25.
-
Erstellen einer neuen, leeren Welt
Voraussetzungen:1. Vorbereitung
Vorkenntnisse:- Einstieg ins Risen-Modding von JFaron
- Einführung in den Minsky-Mode
- Es kann nicht schaden, die Anleitung zu Script_Extensions gelesen zu haben.
Welche Welt geladen wird, hängt von den Parametern ab, mit denen die Risen.exe gestartet wird. Werden keine Parameter angegeben, so wie es der Fall ist, wenn wir Risen ganz normal starten, dann geht das Spiel von folgenden Standardparametern aus:
Code:-mnt=mountlist_packed.ini -projectfile=Projects.prj -worldfile=World
Code:-mnt=mountlist_packed.ini -projectfile=Projects.prj -worldfile=Epic
Wichtig: Wenn Risen unter C:\Programme oder einem anderen geschützten Ordner installiert ist, dann muss in allen Verknüpfungen zur Risen.exe unter Rechtsklick > Eigenschaften > Kompatibilität noch das Häkchen bei 'Programm als Administrator ausführen' gesetzt werden. (Insbesondere bei der Epic-Verknüpfung.)
Als nächstes entpacken wir mit Risenaut die projects.pak aus Risen/data/common. Den entpackten 'projects'-Ordner benennen wir um in '_projects', damit Risen nicht die hundert Dateien darin lädt. Wir erstellen die beiden leeren Ordner Risen/data/common/meshes und Risen/data/common/projects und kopieren in den projects-Ordner folgende drei Dateien hinein:
- _Intern.lrent (aus _projects/World/_System)
- Projects.prj (aus _projects)
- SysDyn_{C3960F11-2A7F-42BA-B9F6-5D8BFA392E82}.lrent (aus _projects\World)
Bei allen dreien noch den Schreibschutz entfernen, dann kann es losgehen.
2. Die Welt erstellen
Wir starten Risen über die Epic-Verknüpfung und drücken die Tastenkombination Strg+Alt+NumPad0, um den Cheatmodus zu aktivieren. In der Konsole tippen wir World CreateWorld Epic ein und bestätigen mit Enter. Wenn alles geklappt hat, müsste die Ausgabe "Created new world." lauten, die neue Welt ist also bereit - fast.
Erst müssen wir noch einmal zurück in den Explorer wechseln (Risen lassen wir aber laufen!), wo wir feststellen, dass es im projects-Ordner einen neuen Unterordner namens Epic gibt. Eine der Dateien darin hat einen recht langen Dateinamen, den kopieren wir in die Zwischenablage und geben ihn der SysDyn_{C3960F11-2A7F-42BA-B9F6-5D8BFA392E82}.lrent, die wir zuvor nach projects kopiert hatten. (Die Endung .lrent lassen wir aber unverändert.) Die _Intern.lrent benennen wir ebenfalls um, und zwar in _Intern_Epic.lrent.
Nun können wir zurück zur Risen.exe wechseln und ein neues Spiel starten. Sobald die Welt geladen ist, speichern wir sie per World Save. Wenn wir die Maus etwas nach oben bewegen, kommen jede Menge Bäume ins Bild, die sind ein Überrest aus der Originalwelt den wir über die SysDyn_{...}.lrent "eingschleppt" haben. Um die Bäume zu entfernen, öffnen wir wieder die Konsole und führen Editor CreateSpeedTreeBillboards aus. Noch hat sich nichts verändert aber beim nächsten Spielstart ist die unerwünschte Flora dann verschwunden.
Was fehlt ist der Held und der befindet sich in der _Intern_Epic.lrent, die noch nicht Teil der neuen Welt ist. Wir führen also World AddSector _Intern_Epic aus (das erstellt eine _Intern_Epic.sec) und anschließend World AddLayer _Intern_Epic _Intern_Epic, das fügt dem eben erstellten Sektor die .lrent hinzu. Es reicht übrigens, das "_Intern_Epic" nur einmal selbstständig einzutippen, danach kann man die AutoVervollständigung (TAB) nutzen.
Im Großen und Ganzen war's das auch schon, per F12 verlassen wir das Spiel. Die neue Welt ist fertig und ab dem nächsten Programmstart spielbar!
3. Aufräumen
Damit alles schön übersichtlich bleibt, verschieben wir die Sys_Dyn{...}.lrent nach Epic, wo sich auch die Sys_Dyn{...}.sec befindet. Die _Intern_Epic.lrent kommt zusammen mit der gleichnamigen .sec in einen neuen Unterordner: Epic/_System.Last edited by Baltram; 12.05.2015 at 19:40.
-
Vegetation Painting mit Script_Extensions
Vorkenntnisse:- Erstellen einer neuen Welt
- Etwas Erfahrung mit Script_Extensions (Anleitung hier), speziell mit den Entity-Filtern.
Grasbüschel, Blumen, kleine Steinchen und andere Kleinstobjekte die tausendfach in der Welt vorkommen sind keine einzelnen Entities, da das viel zu viel Leistung und Speicherplatz kosten würde. Stattdesen werden von diesen Objekten lediglich die Koordinaten und ein paar wenige Eigenschaften gespeichert und sie werden in einer großen "Sammel"-Entity zusammengefasst. Diesen großen Entities - man kann sie Vegetations-Entities nennen - besitzen ein eCVegetation_PS-PropertySet, das ein unsichtbares Gitter enthält, in dem alle VegetationMeshes (Pflanzen/Steinchen/etc.) ihren Platz haben.
Um VegetationMeshes in diesem Gitter zu setzen, gibt es eine sehr praktische Methode, das Vegetation Painting: Man fährt mit einem sogenannten VegetationBrush (Vegetationspinsel) über die Spielwelt und "malt" die VegetationMeshes auf, so ähnlich wie die Sprühpistole in Paint, nur dreidimensional.
A) Vegetation Painting-Features von Script_Extensions
Templates:
- _VegBrush (dient als Grundlage für eigene Vegetationspinsel-Templates)
- _Vegetation (spawnt man 1x in Vegetations-Layern - das ist die Vegetations-Entity)
Konsolenbefehle:
Code:Editor ExportVegetationMeshes <Dateiname> <Optional: GUID einer Vegetations-Entity oder Name eines Vegetationspinsels>
Code:Editor ImportVegetationMeshes <Dateiname> <Vegetationspinsel>
Vegetation Paint-Modus:
Die Vegetationspinsel-Templates organisiert/ordnet man ganz normal per Entity-Filter. Wählt man im Spawn-Modus ein Vegetationspinsel-Template aus, wird der Vegetation Paint-Modus aktiv:
- Hält man Strg gedrückt, bewegt sich die Kamera nicht mehr, so dass man bequemer den Pinsel bewegen kann
- Per Strg + Mausrad kann man durch die verschiedenen Vegetations-Meshes scrollen, die zum aktuellen Pinsel gehören.
- Per Alt + Mausrad kann man die Pinselgröße ändern.
- Linke Maustaste aktiviert den Pinsel (man kann dann bei gedrückter Maustaste die Vegetation verteilen)
- Linke Maustaste + Alt aktiviert den Lösch-Modus (Radiergummi)
- Rechte Maustaste aktiviert nur das Zentrum des Pinsels
- Rechte Maustaste + Alt aktiviert den "sanften" Lösch-Modus (es können nur VegetationMeshes vom aktuellen Typ entfernt werden)
Außerdem kann man andes als im normalen Spawn-Modus per Leertaste den Eigenschaften-Editor für den Pinsel öffnen und die Variable #e benutzen (sie hält die Pinsel-GUID).
B) Allgemeines
1. Vegetation-Meshes sind in Script-Extensions Zeichenketten dieser Form: Brush_Plant_Grass_02 35.8271 0.1500 1 1
- Name der ._xmsh-Datei in data\common\meshes\Objects_Brushes_01
- Minimaler Abstand in cm zwischen zwei Instanzen von diesem Mesh
- Windstärke zwischen 0 und 1, für feste Objekte wie Steine/Äste immer 0 (tatsächlich gibt es keinen sichtbaren Unterschied zwischen verschiedenen Werten größer 0)
- 0 oder 1, bei 1 werden die Rückseiten der Polygone des Meshs mit dargestellt. 1 macht z.B. Sinn bei Gras, bei einem Stein aber nicht, weil man in dem Fall die rückseitigen Flächen nur sehen könnte, wenn man im Innern des Steins wäre.
- 0 oder 1 (eEVegetationMeshShading_MeshNormal oder eEVegetationMeshShading_EntryOrientation - Auswirkung unbekannt, im Zweifel 1 wählen)
Hier eine vorgefertigte VegetationMesh-Liste für alle, die sich den Aufwand sparen wollen, eine eigene zusammenzustellen:
Spoiler:(zum lesen bitte Text markieren)Code:Brush_Branch_Small_01 60.0 0.5 0 1 Brush_Branch_Small_02 60.0 0.0 0 1 Brush_Forest_Groundstuff_01 50.0 0.5 0 0 Brush_Forest_Groundstuff_02 100.0 0.5 0 1 Brush_Forest_Twigs_01 50.0 0.5 1 1 Brush_GoundIvy_01 80.0 0.5 0 1 Brush_Plant_DungeonGrass_01 20.0 0.5 1 1 Brush_Plant_DungeonGrass_02 20.0 0.5 1 1 Brush_Plant_DungeonGrass_03 30.0 0.5 1 1 Brush_Plant_ForestLeaf_01 12.0 0.5 1 1 Brush_Plant_ForestLeaves_Cluster_01 80.0 0.5 1 1 Brush_Plant_Grass_02 45.0 0.5 1 1 Brush_Plant_Grass_04 45.0 0.5 1 1 Brush_Plant_Grass_05 50.0 0.5 1 1 Brush_Plant_Grass_Green_01 45.0 0.5 1 1 Brush_Plant_Herb_01 35.0 0.5 1 1 Brush_Plant_Herb_02 50.0 0.5 1 1 Brush_Plant_Herb_03 30.0 0.5 1 1 Brush_Plant_Herb_04 30.0 0.5 1 1 Brush_Plant_Herb_05 40.0 0.5 1 1 Brush_Plant_Herb_06 50.0 0.5 1 1 Brush_Plant_Herb_07 40.0 0.5 1 1 Brush_Plant_Herb_08 40.0 0.5 1 1 Brush_Plant_Herb_09 35.0 0.5 1 1 Brush_Plant_Herb_10 30.0 0.5 1 1 Brush_Plant_SmallBushes_01 90.0 0.5 1 1 Brush_Plant_SmallBushes_02 95.0 0.5 1 1 Brush_Plant_SmallBushes_03 110.0 0.5 1 1 Brush_Plant_StrawGrass_01 55.0 0.5 1 1 Brush_Plant_StrawGrass_02 50.0 0.5 1 1 Brush_Plant_Thorns_01 40.0 0.5 1 1 Brush_Plant_Twigs_01 100.0 0.5 1 1 Brush_Plant_White_Flower_01 40.0 0.5 1 1 Brush_Plant_White_Flowers_Cluster_01 45.0 0.5 1 1 Brush_Stone_01 40.0 0.0 0 0 Brush_Stone_02 60.0 0.0 0 0 Brush_Stone_Brick_01 5.0 0.0 0 1 Brush_Stone_Brick_02 7.0 0.0 0 1 Brush_Stone_Brick_03 7.0 0.0 0 1 Brush_Stone_Brick_04 9.0 0.0 0 1
2. Jede Vegetations-Entity (Template: _Vegetation) benötigt einen eigenen Layer (.lrent). Die Position der Vegetations-Entity sollte 0/0/0 sein. Für kleinere Welten ist eine einzige Vegetations-Entity ausreichend.
3. Um im Vegetation Paint-Modus Vegetationsobjete setzen oder löschen zu können, muss der aktuelle Layer (#l) der Vegetations-Layer sein.
4. Per Leertaste lässt sich der aktuellen Pinsel bearbeiten. Die wichtigsten Eigenschaften von eCVegetationBrush_PS:
- Placement: Gibt an was passiert, wenn ein VegetationMesh dort erzeugt wird, wo ein anderes "im Weg" ist. DistanceSelf, DistanceOther, oder RemoveOther möglich.
- Density: Gibt an, wie dicht die Vegetations-Meshes in der Pinselfläche verteilt werden (soweit es der o.g. minimale Abstand zulässt).
- UniformDistribution: Bei 'False' werden bereits gesetzte VegetationMeshes nicht in die Auswertung der "Density" mit einbezogen.
- Probability*: Mit diesen Eigenschaften kann man herumexperimentieren, um möglichst schöne Zufallsverteilungen der VegetationMeshes zu erreichen. Am wichtigsten ist die 'ProbabilityFunction', für die ich PerlinNoise oder PerlinNoise_Improved empfehle.
- MaxScaling und MinScaling: Maximale und minimale Skalierung (Breite; Höhe). Für jedes gespawntes VegetationMesh wird eine zufällige Skalierung zwischen den beiden Grenzen gewählt. Es ist also möglich, gigantische Grasbüschel oder winzig kleine Steine zu setzen.
- AlignRotation: Bestimmt, ob die zufällige Rotation relativ zur Oberfläche sein soll. Für Pflanzen sollte man 'False' nehmen (weil sie immer "nach oben" wachsen), für den Rest 'True'.
- RandomRotation: Ein Winkel im Bogenmaß, der die maximale zufällige Neigung der gespawnten VegetationMeshes angibt.
5. Die zu einem Pinsel zugehörigen VegetationMeshes kann man zwar direkt im Eigenschaften-Editor bearbeiten (eCArea_StringProperty_PS, nach dem Bearbeiten einmal mit gedrücktem Strg das Mausrad bewegen). Aber um neue hinzuzufügen oder bestehende zu löschen, wird der Konsolenbefehl ImportVegetationMeshes benötigt, der die angegebene Textdatei im Ordner %loclappdata%\Risen\Vegetation ausliest und die darin aufgelisteten VegetationMeshes auf den Pinsel anwendet.
C) Mini-Workshop
- Risen starten und alle Vegetationsmeshes die in der Welt benutzt werden ausgeben lassen: Editor ExportVegetationMeshes alle
- Aus der %localappdata%\Risen\Vegetation\alle.txt ein paar Zeilen raussuchen (und evt. nach den eigenen Wünschen bearbeiten), die man für den eigenen Vegetationspinsel verwenden möchte. Die ausgesuchten Zeilen im selben Ordner als meinpinsel.txt speichern. Im Spoiler unten ist ein Beispiel. Warnung: PB hat einige unsinnige VegetationMeshes verwendet, z.B. Äste die sich im Wind verbiegen oder Blumen, bei denen die Rückseite fehlt. Wenn ihr auf Nummer Sicher gehen wollt, könnt ihr anstatt der alle.txt auch die Liste im Spoiler unter Punkt B) verwenden.
- Neuen Sektor und Layer für die Vegetation erstellen.
- Im neuen Layer das Template '_Vegetation' spawnen und im PropertyEditor an die Position [0; 0; 0] verschieben.
- Im Spawnmodus das Template '_VegBrush' auswählen und folgenden Befehl ausführen: Editor ImportVegetationMeshes meinpinsel #t
- Den neuen Pinsel als Pinsel_1.tple speichern: DynEntity ExportAsTemplate #e Pinsel_1
- Einen EntityFilter für die eigenen Pinsel anlegen, z.B. mit den Kriterien "PS_All: eCVegetationBrush_PS" und "PartTemplatePath: Pinsel_".
- Den neuen Filter und das einzige Template darin (Pinsel_1) auswählen.
- Den neuen Vegetations-Layer als aktiven Layer setzen.
- Strg gedrückt halten und losmalen
Spoiler:(zum lesen bitte Text markieren)meinpinsel.txt:Code:Brush_Plant_Grass_02 45.0 0.5 1 1 Brush_Branch_Small_02 60.0 0.0 0 1 Brush_Plant_ForestLeaf_01 12.0 0.5 1 1
Last edited by Baltram; 27.10.2013 at 10:10.
-
Thanks a lot for tutorials
But, is there any plans for english translation?#Stand With Ukraine
-
Not yet, at least not for the tutorials I have written.
-
I would not mind if someone translated my tutorials.
Also, eventually I will do it myself but not now (too less time).
-
Einführung in den Minsky-Mode - nützliche Befehle, Tastenkombinationen und Makros für Modder
Voraussetzungen:
- Script_Extensions.dll (Anleitung hier)
1. Vorbereitung
Öffnet die ConfigUser.xml und fügt den Text für die DebugKeys an der richtigen Stelle ein, wie es hier beschrieben wird. Um Konflikte mit dem Editor zu vermeiden, müssen einige der Tasten geändert werden, schaut euch dazu den ersten Abschnitt in der Script_Extensions-Anleitung an. Stellt außerdem sicher, dass die Script_Extensions.dll in eurem Risen\bin\scripts-Verzeichnis liegt.
2. Nützliche Tastenkombinationen
Per Strg+Alt+NumPad0 wird der Minsky-Mode aktiviert und deaktiviert. Hier eine kleine Auswahl an wichtigen DebugKeys. (Schaut aber auch ab und zu in die volle Liste rein, also der Text, den ihr in die ConfigUser.xml kopiert habt. Die meisten der DebugKeys sind in irgendeiner Situation nützlich!)
F12 Beendet Risen F2 Wechselt zwischen Vollbild und Fenstermodus F7 Belebt den Helden wieder, füllt Mana und Leben auf Strg+Einfg Wechselt zwischen der normalen Kamera und der freien Flugkamera Strg+Entf Teleportiert die Spielfigur an die Kameraposition - in Kombination mit der Flugkamera das wichtigste Fortbewegunsmittel Str+C, Strg+U, Strg+I Besiegt oder tötet NPCs und Monster auf verschiedene Arten
3. Benutzung der Konsole
Mit der Tase '^' (in der Regel liegt sie links neben der '1') öffnet ihr die Konsole. Mit Enter führt ihr die aktuelle Eingabe aus. Mit dem Mausrad kann hoch- und runtergescrollt werden und mit den Pfeiltasten wechselt ihr zwischen den zuletzt eingegebenen Befehlen. Der Befehl 'clear' löscht den Inhalt des Konsolenfensters und der Befehl 'list' gibt eine Liste aller verfügbarer Befehle aus. Korrekte Groß- und Kleinschreibung der Befehle ist entscheidend!
Das wichtigste Prinzip der Konsole ist die AutoVervollständigung, mit der ihr eine große Menge an Zeit und Tipparbeit spart: Mit einem Druck auf die Taste TAB (in der Regel direkt über CapsLock) wird die aktuelle Eingabe automatisch zum alphabetisch nächsten Befehl vervollständigt. Anstatt beispielsweise zu tippen IsoCamera genügt auch is[TAB], anstatt World UpdateProcessingRange reicht w[TAB][TAB] u[TAB]. Für die durch Script_Extensions eingeführten Konsolenbefehle ist auch für die Parameter AutoVervollständigung verfügbar: Mehrmaliges Drücken von TAB wechselt zwischen den zehn zuletzt eingegeben Parametern und Resultaten. Ein Beispiel:
Um den Helden mit einem feurigen Spezialeffekt zu zeigen, müsst ihr zunächst seine eindeutige Kennung, die GUID bestimmen und diese dann dem Befehl DynEntity Show als Parameter übergeben:
Code:DynEntity GetGuid PC_Hero Ergebnis: {C061A561-A862-4092-9D2D-2E55C18627ED} DynEntity Show {C061A561-A862-4092-9D2D-2E55C18627ED}
Also eine Menge Tipparbeit. Mit der Autovervollständigung genügt aber:
Code:dy[TAB] g[TAB] PC_Hero Ergebnis: {C061A561-A862-4092-9D2D-2E55C18627ED} dy[TAB] sh[TAB] [TAB]
Probiert es aus!
4. Nützliche Konsolenbefehle
god Godmode (unbegrenztes Leben) invisible Macht den Helden für NPCs unsichtbar (also greifen z.B. Monster nicht an) give <Item-Template> <Anzahl> Fügt das angegebene Item dem Inventar hinzu, optional kann eine Anzahl angegeben werden
(Beispiel: give It_1H_Club)goto <Entity> Teleportiert die Spielfigur zur nächsten Entity mit dem angegebenen Namen
(Beispiel: goto It_Plant_STR)time <Stunde> <Minute> Setzt die Uhrzeit. (In der Regel möchte man in einer Welt modden, in der es schön hell ist.) timescale <Faktor> Macht das Spielgeschehen schneller oder langsamer (nützlich um sehr schnell zu rennen) Weather Sunny_Full Schönes Wetter. (Wer will schon im Regen modden. ) FreeCamSpeed <Zahl> Setzt die Geschwindigkeit der freien Kamera (standardmäßig 500)
(Beispiel: FreeCamSpeed 4000)
5. Variablen und Makros
Häufig ist man als Risen-Modder in der Situation, dass man bestimmte Werte oder Zeichenketten nicht in jeder Spielsitzung aufs neue in die Konsole eintippen möchte. Nimmt man zum Beispiel häufig irgendwelche Operationen am Helden vor, dann möchte man dessen GUID {C061A561-A862-4092-9D2D-2E55C18627ED} nicht jedes Mal erst über den Befehl DynEntity GetGuid ermitteln oder gar von Hand eintippen.
Aus diesem Grund werden durch Script_Extensions Konsolenvariablen eingeführt, die mit beliebigen Zeichenketten belegt werden können und die auch nach Beenden des Spiels gespeichert bleiben. Es existiert außerdem eine Spezialvariable (#c) mit der direkt auf die Zwischenablage zugegriffen werden kann. Sehr nützlich, wenn man eine GUID aus dem Forum oder einem externen Programm in die Konsole in Risen kopieren möchte.
Darüber hinaus können Variablen sogar ausgeführt werden. Man kann also einen langen Konsolenbefehl inklusive Parametern als Variable speichern und dann diese Variable bei Bedarf ausführen. Es ist möglich, durch das Gruppieren von Variablen mehrere Befehle aneinanderzureihen und nacheinander ausführen zu lassen. Solche in Variablen gespeicherte Befehlketten werden Makros genannt und können mit Tasten auf dem Nummernblock der Tastatur verknüpft werden.
Lest euch dazu die Abschnitte 3 und 4 in der Anleitung zu Script_Extensions durch (betrachtet die beiden Abschnitte als Teil dieses Tutorials )
6. Nützliche Makros
Beendet Risen falls es läuft, öffnet die ConsoleVariables.ini in %localappdadta%\Risen (falls die Datei noch nicht existiert könnt ihr sie einfach ersellen) und kopiert folgenden Text hinein:
Code:1 #start* ! 1a #unstart* ! 2 time 12 2a time 0 3 FreeCamSpeed 4000 3a FreeCamSpeed 500 4 timescale 5 4a timescale 1 start1 god on start2 invisible on start3 Weather Sunny_Full start4 Session SetGameEvent Gamestart unstart1 god off unstart2 invisible off unstart3 Weather Auto
Ihr habt nun folgende Tastenbelegung auf dem Nummernblock der Tastatur:
Mit der Zeit werdet ihr natürlich eigene Ideen für Makros haben und diese hier ersetzen.NumPad1 Godmode wird aktiviert und der Held wird unsichtbar für NPCs. Außerdem wird das Wetter auf volle Sonne gestellt und die GameVariable 'Gamestart' gesetzt. Wenn ihr ein neues Spiel in Risen anfangt und dieses Makro schon im Ladebildschirm ausführt, dann wird der Spielstart übersprungen (also das Aufrappeln des Heldes: "Wo zum Gyrger bin ich hier?") Alt+NumPad1 Godmode wird deaktiviert, der Held wird wieder sichtbar für NPCs und das Wetter wird auf automatisch gestellt. NumPad2 Zeit wird auf 12 Uhr Mittags gestellt Alt+NumPad2 Zeit wird auf 12 Uhr Mitternacht gestellt NumPad3 Hohe Geschwindigkeit der Flugkamera Alt+NumPad3 Normale Geschwindigkeit der Flugkamera NumPad4 Spielgeschehen läuft 5x so schnell wie normal ab Alt+NumPad4 Spielgeschehen läuft normal schnell ab Last edited by Baltram; 06.09.2014 at 21:42.
-
Ja, sehr hilfreich. Ich werde mir das heute genauer ansehen.
Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:ODYSSEE - IM AUFTRAG DES KÖNIGS
-
Ich habe das jetzt mal versucht, doch habe ich den Eindruck, dass der neue Name nicht gespeichert wird. Zumindest wird unter PropertySets immer noch PropertySets (3) angegeben, obwohl ich das mit "Levelmesh_Test._xmsh überschrieben hatte.
Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:ODYSSEE - IM AUFTRAG DES KÖNIGS
-
-
Ich betrachte das mal als Feedback. Ich schreibe eine neue, hoffentlich besser zu verstehende Version. Ich sag' Bescheid, wenn die fertig ist.
edit: Neue Version ist oben. Pirate, kannst du mir kurz sagen, ob das Ganze jetzt nun klarer oder noch verwirrender ist? Würdest du dir noch etwas in diesem Kontext wünschen, was ggf. zu kurz kommt?
-
Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:ODYSSEE - IM AUFTRAG DES KÖNIGS
-
@JFaron
Habe dein neues Tut erst gerade eben bemerkt. Gefällt mir sehr gut, danke für die Mühe! (Hab's einmal zügig durchgelesen.)
Wenn mir ein Verbesserungsvorschlag einfallen sollte, sag ich Bescheid.
-
Hinzufügen eines Levelmeshs zur Spielwelt
Voraussetzungen:
Vorkenntnisse:- Einführung in den Minsky-Mode
- Einstieg ins Risen-Modding von JFaron
- Zum Nachschlagen von Konsolenbefehlen: Script_Extensions-Dokumentation
Zu einem Levelmesh gehört neben dem rein visuellen Mesh (._xmsh) auch ein unsichtbares Kollisionsmesh (._xcom), das die Kollision von NPCs/Monster/Spielfigur mit der Spielwelt regelt und den Sound bestimmt, der beim "Drüberlaufen" entsteht. Beides kann in einem 3D-Programm wie Blender oder GMax erstellt und mithilfe von Rimy3D in das entsprechende Dateiformat umgewandelt werden. Für dieses Tutorial bedienen wir uns der Originaldaten: MiniLocation_Bridge_01_L01._xmsh für das Aussehen und MiniLocation_Bridge_01_L01_COL._xcom für die Kollision.
1. Vorbereitung
Wir entpacken (falls noch nicht geschehen) die meshes.pak, physics.pak und projects.pak in Risen\data\common und benennen die entstehenden Ordner um in _meshes, _physics bzw. _projects, so dass Risen nicht sämtliche darin enthaltenen Dateien beim Spielstart ein zweites Mal lädt - sie sind schließlich schon in den drei PAKs vorhanden. Dann erstellen wir im selben Verzeichnis die vier leeren Ordner meshes, physics, projects und templates.
Aus Risen\data\common\_projects\World kopieren wir die beiden Dateien World.wrl und World.wrldatasc nach Risen\data\common\projects\World und entfernen - wichtig! - den Schreibschutz. (Falls ihr in einer anderen Welt als der originalen Spielwelt ein Levelmesh einfügen wollt, sind die entsprechenden Weltdateien vermutlich bereits im projects-Ordner vorhanden, etwa Epic.wrl und Epic.wrldatasc, wenn ihr diesem Tutorial gefolgt seid.)
Aus Risen\data\common\_meshes kopieren wir die compiled_meshes.bin und die MiniLocation_Bridge_01_L01._xmsh (im Unterordner Levelmesh_MiniLocations) nach Risen\data\common\meshes und entfernen auch hier den Schreibschutz. Von Risen\data\common\_physics nach Risen\data\common\physics kopieren wir die MiniLocation_Bridge_01_L01_COL._xcom.
Schließlich entpacken wir noch diese drei .tple-Dateien nach Risen\data\common\templates.
2. Layer und Sektor für die Levelmesh-Entitiy erstellen
Wir starten Risen, beginnen ein neues Spiel, aktivieren per Strg+Alt+NumPad0 den Minsky-Mode und öffnen die Konsole, um folgende zwei Befehle auszuführen:
Code:World AddSector Levelmeshes_Tut World AddLayer Levelmeshes_Tut Levelmeshes_Tut (AutoVervollständigung nicht vergessen - ihr müsst den Namen 'Levelmeshes_Tut' nicht selbst ein zweites und drittes Mal eintippen!)
(Der Name des Sektors/Layers spielt keine Rolle, wir könnten uns anstatt 'Levelmeshes_Tut' auch für 'PattyIstDoof99' entscheiden oder komplett auf das Erstellen eines eigenen Sektors/Layers verzichten und im nächsten Schritt die Levelmesh-Entity in einen bereits vorhandenen Layer wie z.B. Gyrger_Island_NPC_01.lrent stecken - für die Übersichtlichkeit wäre das aber nicht die beste Wahl. )
3. Die Levelmesh-Entity erstellen
Wir steigen zur besseren Aussicht im Spiel auf irgendeinen hohen Felsen, spawnen eine Levelmesh-Entity und betrachten sie im PropertyEditor:
Code:DynEntity Spawn _Level_Col DynEntity Edit #r1
Dann navigieren wir zu der Eigenschaft PropertySets > Mesh > MeshFileName und tippen in das Feld den Dateinamen des visuellen Meshs ein: MiniLocation_Bridge_01_L01._xmsh
Auch hier bestätigen wir die Eingabe mit Enter und sehen, dass die Grasfläche durch eine Brücke ersetzt wurde. (Hinweis: Für einige andere ._xmsh-Dateien ist noch ein DynEntity Update #r1 nötig, bevor die Änderung sichtbar wird.) Es fehlt allerdings noch das Kollisionsmesh:
Code:ColShape AddMesh #r1 MiniLocation_Bridge_01_L01_COL._xcom
Code:DynEntity SetLayer #r1 Levelmeshes_Tut World SaveLayer Levelmeshes_Tut
Ein Levelmesh bei laufendem Spiel bearbeiten
Beim Erstellen/Bearbeiten eines Levelmeshes in einem 3D-Programm ist es hilfreich, das Gebaute ab und zu im Spiel zu betrachten, etwa um Größenverhältnisse zu überprüfen oder Texturübergänge zu testen. Das Tolle: Es muss dazu nicht jedes Mal das Spiel neu gestartet werden. Mithilfe von Makros genügt sogar ein einziger Tastendruck, um das visuelle Mesh (._xmsh) sowie das Kollisionsmesh (._xcom) neu zu laden und im Spiel zu updaten.
Als Vorbereitung beenden wir Risen (wichtig) und fügen in einem Texteditor folgenden Text am Ende der %localappdata%\Risen\ConsoleVariables.ini ein:
Code:9 #updatemesh* ! updatemesh1 Editor UpdateCompiledResourceFile Mesh 0 updatemesh2 Editor UpdateCompiledResourceFile CollisionMesh 0 updatemesh3 DynEntity GetGuid #mesh_entity updatemesh4 ColShape RemoveShapeAt #r1 -1 updatemesh5 ColShape AddMesh #r1 #colmesh_file updatemesh6 World SaveLayer #mesh_layer
Code:#mesh_entity = Levelmesh_Tut_1 (Name der Levelmesh-Entity) #colmesh_file = MiniLocation_Bridge_01_L01_COL._xcom (Dateiname des Kollisionsmeshes) #mesh_layer = Levelmeshes_Tut (Name des Layers zu dem die Levelmesh-Entity gehört)
Last edited by Baltram; 09.09.2016 at 16:51.
-
Die Pdf Dateien sind nicht aufrufbar.
-
Es hat wohl ein Problem bei meinem Webspace-Anbieter gegeben. Sollte im Augenblick wieder funktionieren, scheint aber ein immer wieder kurz auftretendes Problem zu sein. Die Links im Eingangspost habe ich erstmal durch Dropbox-Links ersetzt
-
Wo ist nochmal das Video, das erklärt wie man die Vobs einfügt? Bin heute irgendwie blind.
Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:ODYSSEE - IM AUFTRAG DES KÖNIGS
-
Meinst du das? Da wird aber nix erklärt, das Video habe ich nur zu Demonstrationszwecken aufgenommen.
Das was eingefügt wird sind übrigens Entities.
-
Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:ODYSSEE - IM AUFTRAG DES KÖNIGS
-
- Join Date
- Oct 2015
- Posts
- 3
Hey Leute erstmal will ich mich für die tollen Tutorials bedanken.
Hätte aber eine Frage: Könnte mir vieleicht jemand einen Link zu Rimy 3D schicken oder mir sagen wo ich es finden kann.
PS:Habe wirklich das ganze Forum durchsucht und nichts gefunden