Dies ist das offizielle Handbuch des Barotrauma-Entwicklerteams zum Erstellen eigener Charaktere mit dem Charakter-Editor im Spiel. Das Handbuch ist nicht umfassend, geht aber auf einige technische Details ein. Ein Video-Tutorial soll später folgen, aber ich finde, dass einige Dinge besser im Textformat erklärt werden.
Andere Barotrauma-Guides:
- Reactor Guide.
- Führer der heimlichen Verräter.
- Grundlagen des U-Boot-Editors.
- U-Boot-Bauanleitung.
- Der Leitfaden für Ärzte.
Einführung
Diese Anleitung bezieht sich auf eine (bald!) kommende Version des Editors, nicht auf die aktuell erschienene, sollte aber an vielen Stellen auch für die aktuelle Version von Nutzen sein. Darüber hinaus ist der Charakter-Editor selbst noch sehr in Arbeit. Viele Dinge werden sich ändern und es gibt viel Raum für Verbesserungen. Beachten Sie auch, dass das Erstellen von Charakteren derzeit ein wenig technische Zauberei erfordert und es nicht ratsam ist, sich darauf einzulassen, wenn Sie Angst vor der Bearbeitung von .xml haben.
Dies ist das offizielle Handbuch des Barotrauma-Entwicklerteams zum Erstellen eigener Charaktere mit dem Charakter-Editor im Spiel. Das Handbuch ist nicht umfassend, geht aber auf einige technische Details ein. Ein Video-Tutorial soll später folgen, aber ich denke, dass einige Dinge im Textformat besser erklärt werden.
Alle Charaktere in Barotrauma bestehen einerseits aus einem Ragdoll-'Skelett' und den dazugehörigen Animationen mit diesem Charakter auf der anderen Seite. Im Charakter-Editor können Sie beides bearbeiten. Eine Ragdoll entsteht aus Gliedmaßen, die mit Gelenken verbunden sind. Die Animationen sind im Grunde Definitionen über die Bewegung der Ragdoll. Im Folgenden finden Sie detailliertere Anweisungen für jeden dieser Schritte sowie einige Informationen zur Bearbeitung von .xml.
Tipp: Verwenden Sie die Tasten [1], [2] und [3] auf Ihrer Tastatur, um schnell zwischen den Bearbeitungsmodi für Gliedmaßen, Gelenke und Animationen zu wechseln.
Einen neuen Charakter erstellen
Es ist derzeit am einfachsten, fisch- oder wurmähnliche Kreaturen zu erschaffen – alles, was läuft, ist derzeit etwas kniffliger. Versuche es also idealerweise nicht mit einer Krabbe mit 10 Beinen als erstem Charakter.
Um einen neuen Charakter zu erstellen, klicken Sie im Bereich „Dateien“ auf die Schaltfläche „Neuen Charakter erstellen“. Die folgende Ansicht fragt nach grundlegenden Informationen über den Charakter, den Sie erstellen möchten. Die Pfade zur Konfigurationsdatei und zum Texturpfad sind beide relativ zum Barotrauma-Projektordner.
Eine Sache, die Sie an dieser Stelle zur Hand haben sollten, ist eine Textur für den Charakter. In Barotrauma bestehen alle Charaktere aus Gliedmaßen mit Sprites. In der Praxis benötigen Sie ein Sprite-Sheet, in dem die Sprites für alle Gliedmaßen Ihres Charakters zu finden sind. Schreiben Sie den Pfad zur Texturdatei in das Feld „Texturpfad“.
Sie müssen auch ein neues Inhaltspaket für den Charakter auswählen oder erstellen, das die benutzerdefinierten Inhalte für das Spiel enthält. Ein Inhaltspaket ist im Wesentlichen ein Mod. Wählen Sie das Inhaltspaket aus, das Sie für den Charakter verwenden möchten, oder erstellen Sie ein neues Inhaltspaket, indem Sie ihm einen Namen geben und auf die Schaltfläche „Neu erstellen“ klicken.
Das dritte, was Sie brauchen, ist eine Charakterkonfigurationsdatei, die jedoch automatisch für Sie erstellt wird. Im Feld „Config File Output“ können Sie einen Pfad dafür definieren. Die Standardeinstellung sollte auch in Ordnung sein.
Sobald Sie die grundlegenden Informationen ausgefüllt haben, ist es an der Zeit, einige Gliedmaßen zu erstellen. Verwenden Sie die Schaltflächen „+“ und „-“, um Gliedmaßen hinzuzufügen oder zu entfernen. Sie können ganz einfach mehrere Gliedmaßen hinzufügen, indem Sie ein 2D-Raster definieren (die Felder „X“ und „Y“) und auf die Schaltfläche „Mehrere hinzufügen“ klicken.
Machen Sie sich hier nicht zu viele Gedanken über die Definitionen. Wir möchten nur einige Gliedmaßen hinzufügen, die wir später bearbeiten können. Es ist auch möglich, aber derzeit nicht empfohlen, die Fugen hier zu definieren. Das geht später viel einfacher.
Die Dateistruktur
Wenn Sie einen neuen Charakter erstellen, werden Sie aufgefordert, einen Pfad für die Charakterkonfigurationsdatei anzugeben (z. B. Mods/MyMod/Characters/Mycharacter.xml). Es wird dringend empfohlen, dass die Textur- und Sounddateien im selben Ordner oder in Unterordnern am selben Ort wie die Charakterkonfigurationsdatei abgelegt werden.
Wenn ein neuer Charakter im Editor erstellt wird, fügt das System automatisch die Referenz zur Charakterkonfigurationsdatei im Inhaltspaket hinzu und erstellt die Animations- und Ragdoll-Dateien für Sie.
Wenn Sie aus irgendeinem Grund die Standardpfade nicht verwenden möchten, können Sie die Pfade in der Charakterkonfiguration ändern, indem Sie die Werte für die Attribute „Ordner“ der Elemente „Ragdolls“ und „Animationen“ ändern.
Wichtig: Benennen Sie die Animations- oder Ragdoll-Dateien nicht um, sonst kann das Spiel sie nicht verwenden. Dies wird hoffentlich irgendwann geändert, aber verwenden Sie vorerst die Standarddateinamen.
Wichtig: Um Probleme mit der Dateistruktur zu vermeiden, schreiben Sie bitte den ersten Buchstaben im Charakternamen groß und sonst nichts. Der Charaktername sollte mit dem Ordnernamen übereinstimmen.
Tipp: Sie können mehrere Ragdolls und Animationen für einen einzelnen Charakter haben, aber derzeit werden nur die Standardeinstellungen im Spiel verwendet.
Gliedmaßen bearbeiten
Wenn Sie mit dem Hinzufügen einiger Gliedmaßen fertig sind, klicken Sie auf die Schaltfläche „Erstellen“. Zuerst wird Ihr Charakter mit all den Gliedmaßen übereinander wie ein schreckliches Durcheinander aussehen. Dies liegt daran, dass es noch keine Gelenke gibt, um die verschiedenen Gliedmaßen zu verbinden und auseinander zu halten. Lassen Sie uns vorerst einfach ignorieren, wie der Charakter in der Spielansicht aussieht. es wird nicht richtig aussehen, bevor wir die Gelenke hinzufügen.
Tipp: Sie können Glieder hinzufügen, nachdem Sie Gelenke erstellt haben, und Gelenke erstellen, bevor die Glieder fertig sind. Es ist jedoch einfacher, zuerst die Gliedmaßen zu definieren. Dann die Gelenke. Und dann iterieren.
Bevor wir darauf eingehen, wie wir Joints hinzufügen, sollten wir zuerst die Source Rects und die Collider der Gliedmaßen anpassen. Source Rects sind einfach Definitionen über die Position und die Abmessungen des Gliedes; Sie markieren, wo sich das Glied in der Texturdatei befindet (in Pixel). Collider hingegen sind die physischen Definitionen der Gliedmaßen. Sie bestimmen, wie sich die Gliedmaßen in der Spielwelt bewegen.
OK, beginnen wir mit der Bearbeitung. Stellen Sie zunächst sicher, dass Sie die Schalter „Spritesheet“ und „Gliedmaßen“ im Bedienfeld „Modi“ ausgewählt haben. Überqueren Sie auch den Schalter „Collider anpassen“ oben auf dem Bildschirm.
Tipp: Sie können die Collider-Form ändern, indem Sie die Collider-Abmessungen über die Parameter anpassen. Aktivieren Sie den Schalter „Parameter“, um die Parameter des ausgewählten Glieds anzuzeigen.
Sie sehen jetzt die Collider der Gliedmaßen, die grün über Ihrem Charakter gezeichnet sind. Wählen Sie die Glieder über dem Sprite-Sheet aus. Ziehen Sie das kleine Kästchen in der oberen linken Ecke, um das Quellrechteck zu verschieben, und das Kästchen in der unteren rechten Ecke, um die Größe des Quellrechtecks (und des Colliders) anzupassen.
Wichtig: Wenn der Modus „Collider anpassen“ aktiviert ist, werden die Collider automatisch neu berechnet. Wenn die Collider die falsche Größe haben, funktionieren die Kollisionen nicht richtig. Wenn die Collider zu klein sind, kann die Ragdoll instabil werden und sogar explodieren.
Tipp: Verwenden Sie die Pfeiltasten, um das Quellrechteck um jeweils ein Pixel zu verschieben.
Sie können weitere Gliedmaßen hinzufügen, indem Sie eine vorhandene Gliedmaße duplizieren. Wählen Sie ein Glied aus und klicken Sie auf „Glied duplizieren“ [Strg+C]. Das neue Glied sollte jetzt ausgewählt sein. Ziehen Sie das Quellrechteck an die gewünschte Position und passen Sie die Größe an, genau wie bei den anderen Gliedmaßen. Die meisten Gliedmaßen können auch gelöscht werden [delete], aber es gibt einige Einschränkungen dafür.
Tipp: Wenn Gelenke oder Gliedmaßen nicht korrekt gelöscht oder hinzugefügt werden oder Sie ein anderes Problem im Editor haben, werfen Sie einen Blick in die .xml-Datei. Sie können Gliedmaßen und Gelenke auch manuell in der .xml-Datei hinzufügen oder entfernen.
Verbindungen erstellen
Wenn Sie mit den Hauptgliedern fertig sind (Sie müssen nicht alle auf einmal definieren), können Sie damit beginnen, Gelenke zwischen den Gliedern zu erstellen.
Stellen Sie sicher, dass der Modus „Gliedmaßen“ ausgewählt ist. Wählen Sie dann ein Glied aus und klicken Sie auf die Schaltfläche „Gelenk erstellen“ [Strg+e]. Sie können jetzt ein Gelenk zwischen zwei Gliedmaßen zeichnen. Der Anfangspunkt des Gelenks wurde definiert, als Sie die Schaltfläche oder den Hotkey gedrückt haben, und jetzt müssen Sie das andere Ende des Gelenks definieren. Bewegen Sie dazu die Maus über das gewünschte Glied und wählen Sie es mit der linken Maustaste aus.
Tipp: Drücken Sie [Strg], um mehrere Gliedmaßen oder Gelenke gleichzeitig auszuwählen und zu bearbeiten.
Tipp: Klicken Sie im Joint-Bearbeitungsmodus auf „Joint-Einstellungen kopieren“, um die Einstellungen des ersten ausgewählten Joints auf die anderen Joints zu kopieren.
Der Bearbeitungsmodus sollte nun automatisch zu „Joints“ wechseln. In diesem Modus sehen wir die Gelenkenden als rote Kreise gezeichnet. Wenn Sie einen der Kreise auswählen, ändert er die Farbe und zeigt drei kleine Widgets neben jedem Ende des Gelenks.
Tipp: Sie können Gliedmaßen und Gelenke auch über dem Charakter in der Spielansicht bearbeiten und erstellen, aber normalerweise ist es einfacher, dies auf dem Sprite-Sheet zu tun.
Versuchen Sie, das kreisförmige Widget zu ziehen. Dies ist der Ankerpunkt des Gelenks. Es definiert den Punkt, an dem das Glied mit dem anderen Glied verbunden ist. Je größer der Abstand zwischen den beiden Enden, desto länger das Gelenk. Und je länger das Gelenk, desto weiter sind die Gliedmaßen voneinander entfernt.
Tipp: Wenn die Gliedmaßen übereinander zu liegen scheinen und die Gelenkenden auf dem Sprite-Blatt korrekt, aber in der Spielansicht falsch aussehen, versuchen Sie, die Gelenkenden umzudrehen (d. h. ziehen Sie sie einfach so, dass sie die Plätze tauschen).
Wenn Sie beide Gelenkenden an Ort und Stelle haben, wählen Sie eines der rechteckigen Widgets aus. Dies sind die Gelenkwinkel-Widgets. Sie definieren die Grenzen der Gelenkrotation. There’s an upper limit and a lower limit. By default both are set to 0. When the joint limits are at the same value, the joint is as stiff as it gets. The upper limit should always be higher than the lower limit. Both limits go clockwise from -180 degrees to 180 degrees.
Tipp: By default, the rotations start from the top and end at the bottom, but the ‘Spritesheet Orientation’ has an effect on this. Click ‘Spritesheet’ on the ‘Modes’ panel to see the orientation controls.
It’s possible, for example, to define some of the limbs from left to right and others from top to bottom, but currently you can only have one universal offset for the character. You can freely change the orientation depending on which joint you are currently editing, but it’s a lot easier if at least most of the limb sprites are laid out in the same orientation in the sprite sheet.
The ‘Spritesheet Orientation’ property also has an effect on some gameplay features, like the damage sectors. So be sure that you save the ragdoll with the correct orientation.
Basic Setup for the Ragdoll
At this point, you should have a character with some limbs and joints ready. Limbs and joints together constitute the skeleton of a character, or a ragdoll, as we call it. Enable ‘Ragdoll’ on the ‘Modes’ panel to see the ragdoll drawn over the character. On the right, you will now see settings that affect the whole ragdoll.
The characters have something called the ‘main collider’. This is an approximation of the character’s dimensions used for animations, multiplayer syncing and AI decisions. When you have the ‘Colliders’ mode enabled, the main collider is drawn in white (capsule) over the character. It’s important that the collider is of an approximately correct size. It’s also important that the ‘Height From Floor’ parameter is given a reasonable value. Otherwise the character won’t stand where it should. Note that this parameter has an effect only when the character is standing; it doesn’t affect swimming animations.
Enable ‘Parameters’ on the ‘Modes’ panel to see the parameter editor on the right. Ensure that the main collider is set up properly. You can now also review all the colliders of the limbs to check that they are the right shape and size.
Yet another thing to check here are the limb types. Select the ‘Limbs’ mode to see the limb parameters for each limb in the parameter editor. Make sure that the character has a torso and/or a head, that the legs and arms are defined as such, and that the tail limbs are given the type ‘Tail’. If the limb types are wrong, your animations might not work as intended, because the system doesn’t know which limb it should move to make the character swim or walk, for example.
Tipp: When you have limbs or joints selected, only the selected elements are shown in the parameter editor. If you want to see all the limbs or joints, deselect all by clicking the right mouse button.
When you are done, click the ‘Recreate Ragdoll’ button on the ‘Tools’ panel to apply the changes.
Tipp: Currently there is no autosave in the editor (Sorry! We promise to do something about this later). Please use the quick save buttons often enough that you don’t lose your progress.
Tipp: Try undo [ctrl+z] and redo [ctrl+r]. They should work for most things. Just don’t try to undo destroyed limbs or joints. That won’t work.
Animations
Animations are what make characters alive. Unlike in many other games, in Barotrauma the characters are entirely driven by physical forces. When we make the feet of the character to take steps or the tail to swing when the character swims, we actually define forces on the limbs.
Doing this kind of animation can be a bit different from doing ordinary animations with keyframes. We don’t have the same control on the movement. The upside is that the animations can adjust to the environment without any kind of tweening or blending from an animation clip to another – we don’t have any clips, but we do have animation definitions as a collection of parameters.
There are currently four animation types for the characters that you can edit:‘Walk’, ‘Run’, ‘SwimSlow’, and ‘SwimFast’. Each of the animations is defined in a separate file and they have distinct parameters. Some of the parameters are common to all, some specific to the animation type. Most of these you don’t have to worry about, because you can easily experiment with the widgets that are drawn over the characters.
Tipp: Press [e] to switch between grounded and swim animations. Press [Left shift] to switch between slow and fast movement animations. There’s also a drop down for selecting the animations.
However, there are some important parameters that you can edit only in the parameter editor. Select ‘Parameters’ on the right side of the editor view to open the parameter editor.
- Head/torso/foot move force defines the directional force applied to the given limb to move it.
- Head/torso/foot torque defines the angular force that rotates the limbs to the rotation defined in the Head/torso/foot angle parameter.
- Steer torque determines how fast the main collider is rotated when the character turns.
- For humanoids only:get up force defines how much force is used to force the character standing.
Tipp: When the parameter editor is open, you can see which parameter(s) you are changing when dragging a widget over the character. The parameters that are updated should flash in green.
Limitations and Missing Features
There are some limitations to keep in mind when creating characters in the editor.
The most pressing of them are the following:
- Unlike the animation parameters, many of the ragdoll parameters are not updated at runtime. Click ‘Recreate Ragdoll’ on the ‘Tools’ panel to see the changes.
- You can edit attacks but cannot create them in the editor. So, to get the character to attack anything in the game, you’ll need to do some .xml editing.
- You can’t see afflictions at all, which means all the damage to other characters must be edited in .xml.
- You can’t edit the sprite deformations, which are used for example in the Moloch’s bladder to make it pulsate.
- You can’t edit the character config file (“Mycharacter.xml”) at all, meaning that you’ll have to do .xml editing to enable AI for your character.
- Creating humanoids is disabled to prevent crashes, because humanoids have prerequisites that are not enforced when creating a character. Note that you can still create humanoids using XML if you know what you are doing. Just use the vanilla human as the basis of your humanoid character and prepare for crashes.
Having the above mentioned limitations means that some things just have to be done by manual .xml file editing. Hopefully we can remove the need for this at some point, but for the time being, let’s look at how you can handle it.
XML Tweaking:The Character Config File
The two things that you will really need for your character are health and the AI. Health is pretty straightforward, but the AI might need a bit of explaining.
Tipp: Editing .xml files can be intimidating at first, but it’s not difficult. Just check the existing character files and extrapolate from there.
The non-human AI is currently just a simple state machine, where the AI determines which target it should prioritize in a given situation. In the ‘ai’ block, you can define these priorities:which things the character should target, which state it should use while targeting, and what (base) priority should be given to this target. The actual priority is determined by dynamic factors like the distance to the target. Some factors can be modified in the .xml. Let’s take a closer look at the most important of them:
- combat strength – Defines how strong the AI thinks the character is.
- sight – Multiplies the distance at which the character can see targets.
- hearing – Multiplies the distance at which the character can hear (or “sense”) targets.
- aggressive boarding – If true, the character tries to break into the submarine.
- flee health threshold – If the character has less health than this, it will flee.
- aggression greed – Determines how much the targeting priority increases each time the character does damage to the target. The actual priority adjustment is calculated based on the damage percentage multiplied by the greed value. The default value is 10, which means the priority will increase by 1 every time the character does damage 10% of the target’s current health. If the damage is 50%, then the priority increase is 5.
- aggression hurt – Determines how much the targeting priority increases each time the character takes damage. Works like the greed value, described above. The default value is 100.
You might also want to add some sounds and particles (like blood) to your character. If you want the character to drop some items, give it an inventory too. Each of these should be easy enough to add. Just copy and paste the appropriate blocks from other files and adjust the values a bit.
Tipp: The AI characters only target entities that have
XML Tweaking:The Ragdoll Files
OK, so now you know how to edit the .xml files – let’s go a bit deeper:we need to add an attack for your character. And that takes tweaking a lot of parameters.
Fortunately you can edit the attack parameters in the editor too (where you have the tooltips for most of them). So I’m not going through all the parameters here. Just copy and paste an attack block from another character’s ragdoll file and place it under the limb you want to use for the attack. This is much easier if you have given easily readable names to your limbs.
An important part that you unfortunately cannot see in the editor (for now, that is) is the afflictions. Afflictions are what actually do damage to characters. All the afflictions in the game are defined in Content/Afflictions.xml, where you can also create your own.
So, you might want to add some afflictions inside the attack blocks in the ragdoll file, like so:
Some other things you may want to try to add to your character are damage modifiers and deformations. Damage modifiers can be positive (>1) or negative (<1), meaning that they can be used to define a shield or a weak spot, for example. Deformations are merely visual, but can be used to achieve things that are not otherwise possible to do. Take a look at MolochDefaultRagdoll.xml for a reference on both topics. Here’s some simplified code from Moloch’s ragdoll file:
Tipp: Everything you edit in the editor has a representation in the .xml files. If you edit the animations, the animation files will change. And if you edit the ragdoll, the ragdoll file will change.
Publishing Your Character
Custom characters need to be shared with other players so that you can play together with them in multiplayer mode.
Fortunately, publishing a mod is fairly simple:first you need to select your newly created content package, which creates a folder called ‘NewWorkshopItem’ inside your game folder and copies the character file there. This folder and all its contents will be uploaded to the Workshop.
Make sure all the files required for your mod are present inside the folder:textures, audio, ragdoll and animation files. If you have wisely put everything in the same folder as the character config file, you shouldn’t have to manually add any additional files:the entire folder is included in the workshop item.
Once everything is ready, simply click ‘Publish item’. The mod should now be found in Steam workshop, where others can find and download it.