Erstellen Sie Ebenen mit dem Mixer

7

Ich erstelle ein Spiel und habe ein benutzerdefiniertes Level-Format für Level in meinem Spiel. Ich wollte wissen, ob es möglich ist, in Blender Ebenen für dieses Format zu erstellen. Mein Format basiert auf XML und deklariert nur die Positionen bestimmter Objekte. Online habe ich gesehen, dass viele Leute Blender verwenden, um Ebenen in ihrem eigenen benutzerdefinierten Format zu erstellen, das Blender verstehen kann.

Wie kann ich Blender dazu bringen, mein Format zu verstehen und mit Blender Levels für mein Spiel zu erstellen?

Nik
quelle
Der Begriff "Ebene" ist hier etwas unklar. Es hört sich so an, als wollten Sie die Geometrie nicht in Ihrer "Level" -Datei, sondern nur dort, wo sich Objekte in der Szene befinden. meinst Du das?
Schockieren
Ja, das habe ich gemeint, sorry
Nik
1
Grundsätzlich möchte ich Objekte mit benutzerdefinierten Daten (Positionsdaten) platzieren und diese in mein Dateiformat exportieren.
Nik

Antworten:

6

Sie haben zwei Möglichkeiten:

  • Verwenden Sie die Python-API
  • Da Blender kostenlos und Open Source ist, können Sie alle gewünschten Codeteile neu faktorisieren. Dies ist jedoch eine verrückte Idee, selbst wenn Sie daran denken, dass Blender ein relativ sauberes und modulares Design aufweist.

Übrigens ist Collada nur XML, ich möchte Sie nur daran erinnern, dass die Standarddatei im Mischformat wahrscheinlich nicht so Standard ist, aber es gibt vorgefertigte Alternativen.

user827992
quelle
3

Aus meiner Erfahrung mit Blender als Level-Editor sind hier einige Tipps:

  • Keiner der vorhandenen Exporteure exportiert derzeit benutzerdefinierte Eigenschaften verschiedener Objekte . Sie sind für die Bereitstellung von Metadaten von entscheidender Bedeutung. Wenn Sie dies wünschen, müssen Sie Ihren eigenen Exporteur erstellen.
  • Der IRC-Kanal #blenderpython (der sich auf demselben Server wie andere Kanäle befindet: http://www.blender.org/community/chat ) sollte Ihnen bei den meisten Ihrer Probleme helfen können (siehe Dokumentation) obwohl zuerst wird es Ihnen helfen, die meisten Variablennamen zu finden).
  • Wenn Sie mehr als Positionsdaten (z. B. Netze) exportieren möchten, erfordern die Daten von Blender viel Vorverarbeitung. Ich empfehle daher dringend, mindestens eine Zwischenausgabestufe zu verwenden.
  • Mit F8 können Sie Skripte sofort neu laden. Sie können die Konsole aktivieren, um herauszufinden, warum Ihr Skript die erforderlichen Menüelemente nicht registriert.

Wenn Sie nur Positionen benötigen, warum Blender? Gibt es etwas Schlechtes daran, einfach eine "Position Viewer" -App basierend auf Ihrem Spielcode zu erstellen (Sie könnten sogar das Level laden und es sofort sehen) und die Level-Dateien selbst zu schreiben?

Schlange5
quelle
Eine visuelle Methode wäre viel einfacher zu bearbeiten, Änderungen können schneller angewendet werden und die individuelle Definition jeder Position erscheint mühsam. Ja, ich könnte einen Level-Editor schreiben, aber es wäre einfacher, einen Mixer zu verwenden, oder?
Nik
1
Du hast noch nichts über deine Daten im Spiel gesagt. Wenn Sie Netze an diesen Positionsdaten ausrichten möchten, kann Blender einfach nicht helfen, da die darin enthaltenen Netze nicht das darstellen, was Sie im Spiel sehen werden. Wenn Sie zu viele Positionen verwalten müssen, können Sie diese einfach prozedural generieren. Ein visueller Weg ist nur dann einfacher, wenn er nicht nur aus Gründen der Textlosigkeit visuell ist.
Schlange5
1
Ich habe Blender oft als Platzierungseditor verwendet, und es hat den großen Vorteil, dass ich weniger Arbeit zu erledigen habe. Selbst wenn ich später einen benutzerdefinierten Editor haben möchte, weiß ich nicht, ob es sich lohnt, einen benutzerdefinierten Level-Editor zu erstellen, wenn ich gerade anfange, Levels für ein neues Spiel zu erstellen.
Schockieren
3

Mit "Ebene" meinen Sie, dass Sie die Geometrie nicht in Ihrer Ebenendatei haben möchten, sondern nur dort, wo sich Objekte befinden. Ein klarerer Begriff dafür ist "Platzierungseditor" (dh verwenden Sie Blender, um Objekte in der Szene zu platzieren).

Ich habe ein Python-Skript geschrieben, um genau das zu tun . Zusätzlich zur regulären Position / Drehung / usw. werden benutzerdefinierte Eigenschaften gespeichert, und Sie können die Daten entweder als XML oder als JSON speichern.

(und dann habe ich das Skript nur zum Spaß auf Maya portiert )

jhocking
quelle