Seite 1 von 1

[Projekt] Weltenmotor

Verfasst: 11.01.2010, 22:50
von dronus
Hi,

da ich vermutlich bei meiner weiteren Arbeit das Forum öfters beanspruchen werde, eine Beschreibung was ich mache:

Eine Renderengine mit ausschliesslich programmiertem Inhalt, ein paar kleine Spiele damit und vielleicht irgendwann ein großes :-)
Normalerweise bastel ich schlecht oder nicht dokumentierte Programme, in diesem Fall ist die Dokumentation wesentlich weiter als der Code, der bisher nur einige Prinzipien testet. Der (tw. pseudo)wissenschaftlicher Doku-Text dazu findet sich hier: http://www.hirnsohle.de/mathe/weltenmotor.pdf

Das ganze ist seit einigen Jahren sporadisch in Arbeit. Die Testsoftware implementiert schon etliche Prinzipien, sieht aber grausam aus. Sobald man sie Demo nennen kann lad ich sie hoch.

Im Prinzip sind die Einzelteile nicht neu (zb. Elite II - Frontier) aber eine konsequente Umsetzung habe ich noch nicht gesehen. Auch hier im Forum findet man einige ähnliche Ansätze :)

Zur Zeit ist das ein Einzelarbeits-, Hobbyprojekt, aber langsam brauch ich mehr Wissen wie man Echtzeitdinge so macht. Insbesondere mit der Performance habe ich Probleme, da die Bücher immer predigen möglichst viel Kram in die Graka zu laden und ihn nicht wieder anzufassen, was ich nicht hinbekomme da permanent einzigartige, neue Dinge den Sichtbereich oder LOD erreichen.
Ich vermute dass wohl ein Teil der Geometriegestaltung in die GPU wandern muss, habe aber keinen Plan den ganzen Welt-Erfindungscode dann doppelt für CPU und GPU zu pflegen.

Ich freue mich natürlich über Anregungen, Beileidsbekundungen

alles Gute euch!



Merkmale:
  • Rein Code-generierter Inhalt
  • Möglichst konsistent mit bekannten Naturgesetzen
  • Möglichst konsistent in Raum und Zeit
  • Große Ausmaße der Welt
  • Lange Zeitskala
  • Ort und Zeit frei wählbar
  • Details entsprechend der alltäglichen Wahrnehmung (Milchstraße, Monduntergang, Europäische Unionen und Bleistifte...)
  • Maximaler Formenreichtum
  • Theoretische Möglichkeit, irgendwo ein Abbild der Erde zu finden wie wir sie kennen
Daraus ergibt sich:
  • Landschaften die erodieren
  • Städte die entstehen und vergehen
  • Kleines Krabbelgetier unter einer Straßenlaterne
Technisches:
  • Scenegraph mit bidirektionalem Rendering, damit kann der Root in jedes Objekt verlegt werden.
  • Große Tiefe des Scenegraphs (~50 Level)
  • Realtime Erzeugung und Bereinigung des Scenegraphs
  • Wahlfreies Renderig von Objekten zu jedem Ort und jeder Zeit
  • Suchmechanismen, um Szenerien zu finden (da ohne gespeicherten Content ja keine gestaltet werden können)
  • Überlagertes Simulationssystem um die "View-Only"-Welt interaktiv zu ergänzen.
  • Überlagertes "Frontend", das ein Spiel daraus macht (Spielziele / GUI)
  • Environment z.Z. Java, OpenGL
  • Platformen Windows, Linux, MacOS X
  • Z.z. Größtenteils Fixed Function Grafikcode
  • Z.z. Niedrigerer Detailgrad als klassische Engines
erste Anwendungen:
  • einfach pur als Kunstwerk
  • Autorennen in den Straßen einer Alienstadt
Bild Bild

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 00:39
von Lord Delvin
dronus hat geschrieben:Ich freue mich natürlich über ... Beileidsbekundungen
Seh ich überhaupt kein Grund für. Ist n gutes Projekt. Gefällt mir echt:)

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 01:42
von Chromanoid
das pdf dokument (Doku Text) ist echt amüsant geschrieben. ich musste oft schmunzeln :). sehr gut gelungen.

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 08:40
von Schrompf
Wenn ich nur das PDF gelesen hätte, würde ich mir denken "Och, noch ein utopischer Gesamtentwurf". Aber Du hast eine lauffähige Umsetzung begonnen. Dafür gebührt Dir ein engagiertes Schulterklopfen! Weiter so!

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 10:37
von Stefan Zerbst
Hi,

ich habe das PDF noch nicht gelesen, aber das letzte Bild hat mich direkt an Frontier: First Encounters erinnert. Schwärm ... das waren noch Zeiten. Allein deswegen hoffe ich, dass wir von dem Projekt mal was spielbares sehen werden :D

Trotz des Charmes der konservativen visuellen Umsetzung ist das GameDev.net Journal von Ysaneya und dem Infinity Projekt immer lesenswert was prozedurale Content-Generierung und die grafische Umsetzung einer epischen Weltraum-Umgebung angeht.

Ciao,
Stefan

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 10:53
von Schrompf
Ohja, Ysenaja... den hatte ich zu verlinken vergessen. Was der Mann auf die Beine stellt, ist im besten Sinne des Wortes astronomisch!

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 11:13
von Stefan Zerbst
Schrompf hat geschrieben:... ist im besten Sinne des Wortes astronomisch!
:mrgreen:

Aber ich finde so etwas immer deprimierend, mein eigener Planetenrenderer liegt seit fast einem Jahr in der Ecke und wartet auf Fortführung. Aber wenn man so was sieht hat man keinen Bock mehr seinen eigenen Kram anzuschauen ... :cry:

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 12:27
von dronus
Die Infinity Seiten hab ich schon sabbernd duchgeblättert ;-)

Ich bin aber grad mehr bei der "Breitensuche", erstmal sollen Kugeln um die Sonne kreisen, Schläuche aus dem Boden spriessen und Klötzchen auf den Straßen fahren... dann kommt Licht, Schatten, bunt & lecker.

Utopie schadet nie.

Re: [Projekt] Weltenmotor

Verfasst: 12.01.2010, 17:43
von Stefan Zerbst
Igitt ... realistische Planung :mrgreen:

Dann halte den Thread mal auf dem Laufenden wenn es Veränderungen gibt.

Ciao,
Stefan

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 01:15
von Chromanoid
finde es übrigens sehr sympathisch, dass du java als sprache/umgebung/plattform auserkoren hast :). java wird hinsichtlich spieleentwicklung meiner meinung nach wirklich stark unterschätzt. leider durch sun auch nicht wirklich gefördert... aber ich glaube und hoffe das könnte sich zumindest langfristig ändern... :) welchen opengl wrapper benutzt du zZ, wenn man fragen darf? hast du mal darüber nachgedacht die jmonkeyengine zu benutzen? wenn das ganze verteilt ablaufen soll könnte auch project darkstar was für dich sein (ein java mmo gaming application server), wenn du noch nicht davon gehört haben solltest...

auf bald
chromanoid

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 07:53
von Lord Delvin
Chromanoid hat geschrieben:java wird hinsichtlich spieleentwicklung meiner meinung nach wirklich stark unterschätzt
Ist jetzt leider OT, aber mit Java wirst du imo nie ein gutes kommerzielles Spiel inbekommen, da das Dekompilieren viel zu gut funktioniert und du so mit sehr geringem Aufwand beliebige änderungen durchführen kannst. Wüsste zumindest nicht wie man das verhindert.
Ich mein man kann nen Obfuscator einsetzen aber selbst dann ist das Ergebnis immernoch OOCode, der afaik nicht wesentlich komplizierter ist, nur sehr ungewohnt. Und du kannst dann keine richtig guten Crashreports mehr bauen.

Ist jetzt auch OT, aber wie wärs mit ESC/Java2? Wäre für mich der einzige Grund Java zu verwenden:D

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 08:09
von Chromanoid
Sorry für das OT aber das kann ich nicht so stehen lassen :D
Lord Delvin hat geschrieben:Ist jetzt leider OT, aber mit Java wirst du imo nie ein gutes kommerzielles Spiel inbekommen, da das Dekompilieren viel zu gut funktioniert und du so mit sehr geringem Aufwand beliebige änderungen durchführen kannst. Wüsste zumindest nicht wie man das verhindert.
Ich mein man kann nen Obfuscator einsetzen aber selbst dann ist das Ergebnis immernoch OOCode, der afaik nicht wesentlich komplizierter ist, nur sehr ungewohnt. Und du kannst dann keine richtig guten Crashreports mehr bauen.
was hat die qualität eines spiels mit der dekompilierungsfähigkeit zu tun? alle spiele die für das meiste eine scriptsprache benutzen, .net, xna oder flash einsetzen können dann keine guten kommerziellen spiele werden? Das halte ich für eine gewagte These... Vielleicht ist es dann etwas einfacher einen Kopierschutz zu knacken oder Trainer zu entwickeln, aber darauf sollte man sowieso nichts geben. In MMO Spielen sollte man sowieso so entwickeln, dass alles wichtige auf dem Server statt findet... Da man momentan (außer man benutzt java3d) in Java für 3D Grafik sowieso eigene DLLs beilegen muss würde man außerdem eh Kopierschutz u.Ä. auch in so Teilen ablegen können.

@Nochmal speziell an Lord Delvin :) Es haben neulich auch ein paar Kerle bei Gamasutra von ihrer haarsträubenden Variante erzählt, ihr Spiel ohne extra Browser-Plugin in den Browser zu kriegen :): http://www.gamasutra.com/view/feature/4 ... e_web_.php Wäre vielleicht auch was für dein Spiel. Sie machen eine DLL für ihr Spiel. Die DLL wird dann vom Java-Applet/Webstart aufgerufen und das Spiel gestartet. Die haben für die Variante zwar viel Kritik geerntet, aber ich glaube sie werden gut damit fahren... Allerdings wäre ich an ihrer Stelle bei Java geblieben, aber ihre Codebase ist eben in C++...

Mal ein "paar" kommerzielle Java Spiele:
http://www.runescape.com (lt. Wikipedia angeblich 10 Mio aktive Spieler, 1 Mio Premium Konten)
http://www.jagex.com/ (haben runescape gemacht, deren spiele sind glaube ich alle in java) -> http://www.funorb.com/gamelist.ws
weitere hier: http://lwjgl.org/projects.php
sonst fällt mir gerade noch der indie Titel Grappling Hook ein...

Wie hat es Richard Schubert so schön in seiner Signatur stehen :) "Produktivität über Performance - XNA Creators Club" ich ergänze das mal mit "Produktivität über Kopier- und Modifikiationsschutz". Beides gilt definitiv auch für Java. Das merkt man insbesondere, wenn man bedenkt wie verbeitet Java bei betrieblichen Anwendungen ist.

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 09:33
von kimmi
Mensch, das sieht sehr vielversprechend aus. Ich fühlte mich sofort zurückversetzt in alte Elite-Frontier-Zeiten und das waren wahrlich nicht die schlechtesten :). Bleib bloss weiter am Ball, ich bin schon sehr gespannt, was uns von dir noch alles erwartet. Ich habe noch nicht die zeit gehabt, dein PDF zu lesen. Aber das steht ganz oben auf meiner Liste.
Und schön, daß auch mal andere Ansätze wie hier über Java vorgestellt werden. Das baut sicherlich einige Vorurteile ( zum Beipiel bei mir ) ab, was die Java-Performance angeht.

Gruß Kimmi

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 10:17
von Chromanoid
Damit das hier bezügl. Java nicht weiter ausartet, werde ich demnächst mal etwas zu Spieleentwicklung mit Java im Programmiersprachen Forum schreiben... Ich würde daher bitten die Diskussion bis dahin zu vertagen ^^ (ja ich weiß ich hätte gar nicht damit anfangen sollen ;))

@dronus:
hast du deine wirkungsgeflechte schon mal testweise implementiert? das sieht finde ich sehr spannend aus... Falls du noch Anregungen bezüglich prozeduraler Grafik/Texturen suchst und es noch nicht kennst, ist http://www.werkkzeug.com/ einen Blick wert. Die UI dieses Editors ist wirklich nett gemacht und man kann anhand der beiliegenden Samples gut erkennen was eigentlich alles mit den richtigen operationen so möglich ist.

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 11:15
von kimmi
Wer diskutiert, ich lobe doch nur :).

Kimmi

Re: [Projekt] Weltenmotor

Verfasst: 13.01.2010, 22:30
von dronus
Chromanoid hat geschrieben:welchen opengl wrapper benutzt du zZ, wenn man fragen darf?
lwjgl
Chromanoid hat geschrieben: hast du mal darüber nachgedacht die jmonkeyengine zu benutzen?

Nein, ich schreib ja grad eine Engine, da kann ich keine gebrauchen :-)
Lord Delvin hat geschrieben: Ist jetzt leider OT, aber mit Java wirst du imo nie ein gutes kommerzielles Spiel inbekommen
Mir egal, wirds eben nichtkommerziell.. Wenn man unbedingt will kann man aber auch zu Maschinencode compilieren.
kimmi hat geschrieben:Das baut sicherlich einige Vorurteile ( zum Beipiel bei mir ) ab, was die Java-Performance angeht.
Da tut sich nicht mehr viel gegenüber C. Die Qualität der Algorithmen macht viel mehr aus. Der größte technische Nachteil ist aus meiner Sicht, dass man nicht wie in C++ Objekte und Arrays auf den Stack packen kann, sondern immer alles auf dem Heap reserviert und garbage-collected werden muss und man keine Spezialmaschinenbefehle benutzen kann (SIMD und sowas).
Chromanoid hat geschrieben: hast du deine wirkungsgeflechte schon mal testweise implementiert?
Der Aufbau der Städte und Gebäude in der Implementierung benutzt z.Z. etwa nur 1/3 der Variablen, die in der Grafik im PDF zu sehen sind. Im Moment arbeite ich aber am Planeten (soll Berge und Flüsse bekommen, ihr kennt das ja aus dem Fernsehen, wie sowas aussieht).
Chromanoid hat geschrieben: Falls du noch Anregungen bezüglich prozeduraler Grafik/Texturen suchst und es noch nicht kennst, ist http://www.werkkzeug.com/ einen Blick wert.
Das hab ich mal probiert, ein gutes Vorbild ist auch die 3d-Sofware Maya, dort kann wird jeder Bedienschritt im GUI durch ein Objekt mit Verkabelungen repräsentiert, genau wie in werkkzeug. Und der Normalanwender merkt es noch nicht mal, wenn er nie den Graphen-Editor benutzt :-)

Re: [Projekt] Weltenmotor

Verfasst: 07.02.2010, 01:39
von dronus
Fortschritt...

alles noch mit Macken, aber solange ich noch an allen Enden schraube lohnts auch nicht die zu beheben.

Stadt
Bild

Landschaft
Bild
Bild

Pflanzen
Bild

Bevölkerung
in einem eckigen Stück der Galaxis, die Farben zeigen an welches Volk am meisten vertreten ist. Man kann die Zeit hunderttausenfach beschleunigen, dann sieht man wie sie konkurrieren
Bild
dasselbe auf einem Planeten
Bild
Die Volksbewegungen sollen dann gemessen werden und die Städte usw. entsprechend dargestellt. Ziehen Leute hin, sieht man Baustellen, nehmen sie ab sieht man verfallende Häuser oder Gefechte, je nachdem...

Kreaturen kommen gerade, aber nur niedere :-) in den Städten sehen die noch unpassend aus, zuviele Beine..

Re: [Projekt] Weltenmotor

Verfasst: 15.02.2010, 12:13
von ponx
Bis die ersten Spiele damit umgesetzt sind, hätt ich den Bevölkerungsgraphen gerne als winamp-plugin, bitte ! :)

Re: [Projekt] Weltenmotor

Verfasst: 16.02.2010, 18:45
von Frekl
Wow
find die idee echt gut
hab schon oft über ´sich entwickelndes gameplay nachgedacht
Aber gut find ich vor allem die Idee, nicht alle Objekte zu generieren
sondern nur Dinge altern/verjüngern zu lassen
wenn du des ma in nem kleinem Programm ansatzweise zeigst
wär ich beeindruckt

mfg
frekl

Re: [Projekt] Weltenmotor

Verfasst: 16.02.2010, 18:48
von Frekl
Du willst Java als Sprache verwenden?
Das kann ich nur gutheissen!
Ich habe viel Erfahrung in Java und kann sagen:
Diese Sprache ist super für die Spieleprogrammierung geeignet
und bis jetzt bin ich sehr zufrieden mit der Performance

viel glück!

Re: [Projekt] Weltenmotor

Verfasst: 20.02.2010, 14:12
von dronus
Frekl hat geschrieben:Diese Sprache ist super für die Spieleprogrammierung geeignet
und bis jetzt bin ich sehr zufrieden mit der Performance
Sie ist allgemein sehr gut zum Programmieren geeignet :D
Schwierig ist allerdings große Massen kleiner Objekte zu verwenden. Die kann man in C als structs in arrays schreiben, in Java geht das nicht. Dort wird jedes Objekt im Code erstmal einzeln erzeugt. Vielleicht optimiert die VM, vielleicht nicht, jedenfalls schwierige Sache. Damit hab ich bei der Weltenengine gewisse Probleme. Manchmal wäre es schneller, statt Objekten primitive Datentypen in große Arrays zu pumpen, aber das macht den Code nicht grad schöner...