Welcher SceneGraph ist für die Programmierung kleiner Spiele am besten geeignet?

8

Ich bin seit 7 Jahren ein Entwickler von Java-Webanwendungen (hauptsächlich auf der Serverseite), der sich kürzlich für die Spieleentwicklung interessiert hat (ich weiß nicht warum, vielleicht langweile ich mich). Heute habe ich nach Frameworks gesucht. Ich habe ein paar Szenendiagramme gelesen und mir jMonkeyEngine angesehen . Es wurde hier und hier empfohlen .

Mein erstes Ziel war es, eine einfache Ebene und eine Kugel zu erstellen, die mit der Tastatur bewegt werden können. Wie bereits erwähnt, bin ich Webentwickler und habe nie etwas anderes programmiert. Deshalb habe ich mit den Tutorials von jMonkey begonnen. Aber ich konnte sie nicht zum Laufen bringen. Ich habe mir das Wiki angesehen, aber ich habe festgestellt, dass die Dokumentation sehr schlecht zu sein scheint, zumindest im Vergleich zu dem, was ich gewohnt bin. Ich habe mir dann einige andere Szenendiagramme (auch für C ++) angesehen, aber sie scheinen auch eine veraltete, unvollständige, schlechte Dokumentation zu haben.

Kann mir jemand ein Szenendiagramm empfehlen, das mit Arbeitsproben gut dokumentiert ist? Oder gibt es so etwas wie den "ultimativen Leitfaden", um sich mit diesem Thema zu befassen? Muss ich zuerst wissen, wie ich mein eigenes Szenendiagramm entwickeln kann, damit es funktioniert, oder ist es möglich, nur die abstrakten Prinzipien zu verstehen und sie aus einem höheren Blickwinkel zu verwenden?

Irgendwie habe ich das Gefühl, dass ich die tiefen Innenseiten eines Szenendiagramms verstehen muss, um es gut zu verwenden (wie es bei ORM-Tools in Webentwicklern der Fall ist, können Sie sie nicht gut verwenden, wenn Sie Datenbanken nicht verstehen).

Es tut mir leid, wenn diese Frage zu "noobisch" ist, aber ich möchte einfach auf die Beine kommen und meine ersten Schritte machen.

Chris
quelle

Antworten:

5

Ein Szenendiagramm ist ein Werkzeug. Es ist nicht wirklich ein geeignetes Tool, wenn Sie gerade erst mit der Spieleentwicklung beginnen.

Ich denke, was Sie suchen, ist kein Szenendiagramm, sondern nur ein Rahmen.

Normalerweise würde ich XNA empfehlen, weil es wirklich gut ist (leistungsstark, modern, gut dokumentiert, anfängerfreundlich). Aber es ist C # und ich kann sehen, dass Sie ein Java-Mann sind. Wenn Sie lieber bei Java bleiben möchten, sind die Java-Ports der alten NeHe OpenGL-Tutorials möglicherweise ein guter Ausgangspunkt (dies ist kein Framework - aber es handelt sich um eine Reihe von Tutorials für die Vorgehensweise (auf niedriger Ebene) ) die Art von Dingen, die ein Framework für Sie erledigt - Laden und Rendern von Modellen, Laden von Texturen usw.).

In den ersten Lektionen lernen Sie Transformationsmatrizen kennen, worum es in Szenendiagrammen im Grunde geht (im allgemeinen Fall).

Um ein Szenendiagramm kurz zu beschreiben: Angenommen, Sie haben ein Windmühlenmodell - es wird in einem eigenen Raum definiert. Sie übersetzen es dorthin, wo es in Ihrem Weltraum erscheinen soll . Diese Windmühle hätte ein untergeordnetes Objekt für ihre rotierenden Blätter. Sie würden also eine Rotationstransformation auf die Blätter anwenden und die Übersetzung der Eltern erben, um die Blätter korrekt in der Welt zu platzieren.

Wenn Sie anfangen, kleine Spiele zu machen, müssen Sie sich nicht so viele Sorgen um diese große, komplizierte Datenstruktur machen. Normalerweise haben Sie nur ein paar Modelle, auf die Sie Transformationsmatrizen direkt anwenden.

(Szenendiagramme werden auch für leistungsbezogene Dinge wie Sortieren nach Material, Keulen usw. verwendet - alles unnötig für Anfänger und für die meisten kleinen Spiele.)

Andrew Russell
quelle
Ich habe XNA nie benutzt. Hat es einen eigenen Szenegraphen?
Calvin1602
Nein. XNA ist etwas niedriger. Sie müssten Ihre eigenen schreiben.
Andrew Russell
8

Szenendiagramme haben ihren Platz als Must-Have leicht verloren. Meistens, weil eine auf Szenengraphen zentrierte Engine so stark mit der Idee eines Szenegraphen verbunden ist, dass sie sich selbst verwirrt. Tatsache ist, dass verschiedene Teile eines Motors eine unterschiedliche Sicht auf die Welt benötigen, während ein szenegraphisch zentrierter Motor dazu neigt, allen Teilen des Motors dieselbe Sicht aufzuerlegen.
Der Szenegraph, wie er traditionell betrachtet wird, eine Hierarchie von übergeordneten und untergeordneten Objekten, eignet sich gut für Transformationen, ist jedoch möglicherweise völlig ungeeignet für das Rendern, wenn Sie mehr daran interessiert sind, welche Materialien verwendet werden (okay, auch der Standort zählt, aber es gibt verschiedene Möglichkeiten, damit umzugehen, und Eltern-Kind garantieren nicht, dass sie nahe beieinander sind, wir sehen es einfach so).
In vielen Spielen werden Sie feststellen, dass Sie eine Szenenwurzel mit vielen Kindern haben, aber diese Kinder haben selten eigene Kinder. Die wenigen, die Kinder haben, können Sie genauso gut selbst aktualisieren und den Szenegraphen überspringen, da dies zu unnötiger Komplexität und Leistungsverlust führt (jede Transformation überprüft, ob das übergeordnete Element schmutzig ist, während nur wenige tatsächlich ein übergeordnetes Element haben, das jemals schmutzig wird (die Weltwurzel selten) bewegt sich).

Kaj
quelle
2

Warum nicht eine Spiel-Engine wie Unity3d verwenden ? Es ist sehr bekannt für seine einfache Bedienung und hervorragende Dokumentation. Ich habe es selbst kurz ausprobiert und war beeindruckt, wie gut die API und eine Reihe guter Tutorials dokumentiert waren. Ich hatte Probleme mit meinem Arm und einer Bühne und musste Hilfe von meiner Frau bekommen. Sie hat keine Ahnung von Programmierung, fand aber Unity3D wirklich cool. Sie können viel erreichen, indem Sie einfach ziehen und ablegen. Sie können mit der Engine mehrere Skriptsprachen verwenden. Es unterstützt unter anderem JavaScript, was meiner Meinung nach angesichts Ihres Hintergrunds attraktiv sein sollte. Sie können eine kostenlose Version mit allen Funktionen erhalten, die ein Anfänger benötigen würde.

Wenn Sie kein 3D benötigen, ist GameMaker eine großartige Alternative. Es ist wirklich einfach, Spiele zu spielen. Ich habe es an der Universität benutzt und ein paar Spiele damit gemacht. Viel Spaß. So können Sie sich wirklich darauf konzentrieren, das Spiel zu entwickeln, und Sie müssen nicht so viel über Technologie nachdenken. Sie können ein Spiel mit nur einem Mausklick zusammenstellen. Aber wenn Sie Fortschritte machen und verstehen, wie alles funktioniert, beginnen Sie, Ihre eigenen Skripte zu schreiben.

Meiner Meinung nach funktioniert es viel besser als GameSalad zu sagen, das keine Skriptsprache hat. Sobald Sie anfangen, kompliziertere Dinge zu tun, wird es wirklich ärgerlich, wenn Sie nur mit einem Mausklick zeigen, denke ich.

Erik Engheim
quelle
0

Ich stimme Kaj voll und ganz zu. Weitere Informationen zu diesem Thema finden Sie unter gamearchitect (übrigens, wenn Sie an der Entwicklung von Spielen interessiert sind, lesen Sie einfach die gesamte Website, insbesondere die alte).

Calvin1602
quelle