Item - Bastelschublade/trinity GitHub Wiki

Das alte Item system (json) wurd durch eine Datenbank Scene ersetzt, um einfacher Itemdaten ändern und ergänzen zu können. Da Items auf unterschiedliche Weise im Spiel verwendet werden (inventar, text, tooltip, händler, in kisten, als physischer gegenstand...), sollten die Metadaten zu jedem Item zentral gesammelt und für jede Komponente (World, Safe, Inventar, Character, Combat) des Spiels zugängig sein: Global.ItemDB

Item Eigenschaften

Die Datenbank enthält Nodes vom Typ Item welcher eine Reihe Eigenschaften bereitstellt, die für jedes Item gesetzt werden 'müssen':

  • item_name Itemname, der für die Anzeige im Spiel verwendet wird (Tooltips, Quests usw..)
  • item_alias Itemname (Englisch, Einzigartig!, zusammengeschriebenundklein) der zur identifikation (anstelle einer id) des objekts und zum abfragen dessen eigenschaften verwendet wird. (nicht ingame sichtbar) UPDATE: wird nun automatisch aus dem Nodenamen übernommen.
  • item_price
  • item_body Verweis auf die physische Komponente des Items (scene), wird zum generieren des items in der Welt (drop/spawn/equip) benötigt. UPDATE: wird nun automatisch aus dem Nodenamen erzeugt (items/bodies/.tscn) oder auf default.
  • item_icon Verweis auf ein Bild, das zB im Inventar angezeigt wird. 256x256 transparenter hintergrund. UPDATE: wird nun automatisch aus dem Nodenamen erzeugt (items/icons/.png) oder auf default.
  • item_sellable Yes/No
  • item_stackable bisher werden nur items die man stacken kann vom inventar benutzt

Item Types

Dem Item in der ItemDB können "Typen" als Unterpunkte hinzugefügt werden. Dies sind Klassen, die weitere Eigenschaften und Funktionalitäten bereitstellen. Beispielsweise ergänzt der Typ "Seed" das item um die möglichkeit es auf dem Feld anfplanzen zu können, benötigt dafür aber zustätzliche Informationen zB seed_grow_time und seed_crop als Verweise auf die Pflanze, die daraus entstehen soll. Einem Item können mehrere Typen untergeordnet werden, zB ist ein Kürbis sowohl Food als auch Seed. Die typen müssen nur zum Item hinzugefügt werden, die Implementierung ins Spiel (Buttons, Funktionen etc.) erfolgt automatisch.

Bisherige Typen:

  • Seed
  • Food
  • Equip
  • Weapon ergänzt automatisch Equip (Vererbung)
  • Quest noch nicht implementiert

Items Erstellen:

Die wesentlichen Schritte zur Erstellung eines nicht animierten Items werden im folgenden kurz Anhand eines Beispiels gezeigt. GGf. können Schritte übersprungen werden, wenn zB schon ein Modell vorliegt, oder sich das Item aus anderen bereits vorhandenen Assets zusammensetzt (zB Blumenstrauß oder Obstkiste):

Anmerkung: Das zuordnen der ItemBodies (3D) und ItemIcons (2D) zu den Items (Text) funktioniert jetzt automatisch, das erspart etwas Arbeit in Schritt 4, dafür haben sich die Pfade minimal geändert, die Dateinamen der icons und bodies, müssen jetzt zum alias (eigenschaft vom body) sowie zum namen des nodes in der ItemDB passen. items/dice/dice_icon.png -> items/icons/dice.png (selbsterklärend wenn man es sieht, aber abweichend von den Bildern unten)

1. Modellieren des Körpers

create simple object in blender Das ist kein Blender tutorial: Mit loopcuts die augen zu erzeugen ist natürlich nicht super elegant, aber es soll ja nur den Prozess veranschaulichen ;) Das Blender (v2.8+) plugin um direkt in godot scenen zu exportieren gibt es hier. Und ist sehr zu empfehlen!

2. Nach Godot importieren

create item body object in godot Da ich vergessen habe die default camera in blender zu löschen bzw. nicht zu exportieren, hab ich sie direkt verwendet um einen screenshot für den nächsten schritt zu erstellen. Über das [+] links oben kann auch eine eigene Kamera hinzugefügt werden, wenn noch nicht vorhanden (und danach wieder löschen!).

3. Erstellen des Icons

quick and dirty icon mit gimp Das ist erstmal der quick and dirty weg den ich zur zeit verwende, später kann dieser schritt vielleicht automatisiert werden, durch ein Script, das ein Bild des objectes rendert.

4. In die Datenbank eintragen

metadata and db register

5. Ins Spiel bringen

Items die einfach rumliegen sollen, können per drag and drop oder durch den instance button (gif) der World.tscn hinzugefügt werden. Durch schritt 4 ist es aber auch möglich, die Items im Spiel zu generieren zB als Questbelohnungen oder beim Ernten von Pflanzen, dazu muss nur der item_alias im entsprechenden Feld (in der quest, loottabelle, pflanze ...) angegeben werden. place item in world Achtung: Durch einen ungelösten Bug, fallen kleine Objekte gerne mal durch die Map, das liegt an der Map nicht am Item und wird noch gefixt, bis dahin können items um sicher zu gehen auf Tischen oder anderen Objekten abgelegt werden.

5. Optional: Typ spezifische ergänzungen

⚠️ **GitHub.com Fallback** ⚠️