Seite 1 von 3
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 04.11.2011, 19:55
von mnemonix
Sieht schon ziemlich cool aus das Material. Bin mal gespannt, wie das Spiel am Ende aussieht.
Hier noch zwei kleine Fragen:
Erstellt und verwaltet ihr euren eigenen OpenGL Context (inkl. Fenster Verwaltung) für beide Plattformen (Windows, Linux) oder benutzt ihr dafür eine 3rd Party Bibliothek wie SDL, GLFW, Qt, etc.? Welche Art von zelluläre Automaten nutzt ihr für die Erstellung der Dungeons?
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 04.11.2011, 20:21
von Artificial Mind
wir benutzen GLFW fürs Fenster/Inputmanagement, GL3W für die extensions und GLM für Vektor/Matrixarithmetik.
Wenn mein Kommilitone Morgen Zeit findet, schreibt er sicher was über die Automaten ;)
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 05.11.2011, 19:57
von balddenimhero
joeydee hat geschrieben:Welcher Algorithmus steckt denn hinter dem Generieren des Dungeons?
Input für den Algo:
- ein paar vordefinierte Räume
- Dimensionen des Dungeons
- maximale Korridorlänge
- Min. Abstand um Räume für Korridore
Generierung läuft dann so:
- Räume zeilenweise mit zufälliger Verschiebung in die Map einfügen (so viele wie passen)
- Zugangspunke zufällig für Korridorverbindung auswählen
- Per Floodfill kürzeste Wege zwischen Zugangspunkten finden
- Zufällig kürzeste Wege auswählen und Korridore entsprechend legen
- Auf Erreichbarkeit testen und wenns nicht anders geht neu generieren
mnemonix hat geschrieben:Welche Art von zelluläre Automaten nutzt ihr für die Erstellung der Dungeons?
Das ist noch nicht fix, da die natürlichen Dungeons noch nicht fertig sind ;) .. Die künstlichen werden wie oben beschrieben erzeugt.
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 06.11.2011, 15:04
von Artificial Mind
Cellular Texture mit Gold-Weiß-Mischung:

- Cellular Texture - Gold
Cellular Texture mit verschiedenen metallischen Edelsteinen:

- Cellular Texture - Mixed Metal Gems
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 06.11.2011, 23:26
von Artificial Mind
Transparente Geometry und Distortion (echte Refraction kommt noch):

- Transparent Distortion
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 07.11.2011, 11:20
von starvald
Ich raff' das letzte Bild nicht. Irgendwie kommt da die Distortion (räumlich?) nicht rüber. Ansonsten sieht das sehr, sehr geil aus!
Wie willst du "echte" Refraction umsetzen? Ich frage, da ich mich selbst mal damit beschäftigt habe:
http://www.youtube.com/user/starvald?fe ... K7byxz-40M
Der Effekt im Video ist übr. rein Shaderbasiert (SM 3.0)
Gruß,
Nick
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 07.11.2011, 11:32
von Artificial Mind
Ja ich weiß was du meinst, der Eindruck geht irgendwie bei einem stillen Bild verloren... Distortion sollte auch nicht für Glas, sondern eher für Hitzeflimmern benutzt werden. Refraction will ich auch einfach per Post-Effect faken, ungefähr so:
http://www.youtube.com/watch?v=57zr1vfU ... re=related
Momentan versuche ich multiple Distortion vernünftig zu faken, ohne pro "Layer" ein Pass zu machen, dann kann ich mit meiner Partikelengine Hitzeflimmern simulieren.
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 07.11.2011, 22:36
von Artificial Mind
So jetzt funktioniert multiple Distortion vernünftig. Transparente Geometry wird noch etwas hacky zusammengeblendet, das muss ich noch ändern.
Dies ist jetzt ein Screen, der hoffentlich den räumlichen Eindruck erhält und Hitzeflimmern, sowie das grüne Glas zeigt:

- Hitzeflimmern und billige Rauch-Sprites ;)
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 07.11.2011, 22:38
von Alexander Kornrumpf
Also für meine Begriffe sieht das "metal mixed gems" viel mehr nach Kirchenfenster (aka Glas) aus als das grüne Bundeswehr Tarnmuster dass anscheinen Glas darstellen soll :P
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 07.11.2011, 22:45
von Artificial Mind
Ja das habe ich auf dieser Cellular Texture auch schon bemerkt. Das grüne "Glas" ist auch noch kein wirkliches Refraction sondern Distortion, also Blickwinkel- und Tiefenunabhängig.
Ich finde aber, die Goldadern auf der einen Steintextur sahen recht gut nach Metall aus. Von diesen "Adernbildern" habe ich noch zwei, die schon mehr nach Metall aussehen (obwohls eher Edelsteine sind):

- Emerald Adern

- Türkis Adern
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 10.11.2011, 13:03
von Artificial Mind
So, Marching Cubes!
(Vielen Dank dabei an Cat, der einen exzellenten Artikel über Marching Cubes Optimierung geschrieben hat ;) )
Ich muss mir "nur" noch einen guten Plan ausdenken, wie ich die Normalen vernünftig berechne (momentan hat das noch einige Probleme), dann die Tangenten und dann einen guten Mechanismus zum Textur-Generieren.

- Marching Cubes
Grid Resolution: 128³
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 10.11.2011, 23:10
von mnemonix
Sieht lustig aus, aber für welche Zwecke wollt ihr den Marching Cubes Algorithmus später verwenden? Was soll das auf dem Bild darstellen und wie hast du es generiert?
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 10.11.2011, 23:14
von Artificial Mind
Das auf dem Bild ist nur simples fraktales Perlin-Noise als Density für den Marching Cubes mit nem linearen Falloff auf der Y-Achse (oben), einfach um zu testen, ob der Algorithmus funktioniert.
Verwenden wollen wir ihn für die natürlichen Höhlen. Anstatt die Geometrie direkt zu modellieren - so stell ich mir das vor - wird "einfach" eine interessante, komplexe Dichte-Funktion erstellt, die hauptsächlich erstmal die Form, die wir gitterförmig bilden, nachbilden soll. Sekundär wird dann entsprechendes Noise draufaddiert, welches dann für Stalagmiten/titen, steinige Oberflächen, Säulen etc. sorgt/sorgen soll. Die genauen Details müssen noch ausgearbeitet werden, aber Marching Cubes ist als Engine-Feature auch ganz nett ;)
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 10.11.2011, 23:22
von Zudomon
Ach, wie gern ich das auch so in SQ machen würde... aber ich befürchte, dass das alles zu langsam würde, wenn ich da Anfange, mehr als ein Voxel pro Meter zu nehmen.
Ich bin aber mal gespannt, wie das bei euch am Ende aussieht. Aber nicht, dass ihr mich zu Eifersüchtig macht und ich dann doch wirklich noch bei mir umbauen muss... ;)
Zu den glitzer Shadern hatte ich dich glaub ich nur im ICQ gelobt... also hier nochmal offiziell, das sieht echt geil aus! Nur musst du dir noch was wegen den Quadratpixeln einfallen lassen... zur Not dann wirklich beides berechnen und lerpen. Sollte doch eigentlich garnicht so viel ausmachen, oder wirst du pro Fläche mehr als zwei Materialien haben?
Oder du könntest auch das Objekt in 3 Submeshes unterteilen und dann nur die, wo beide Materialien gleichzeitig sind mit dem teuren Shader berechnen.
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 10.11.2011, 23:39
von Jonathan
Artificial Mind hat geschrieben:wir benutzen GLFW fürs Fenster/Inputmanagement, GL3W für die extensions und GLM für Vektor/Matrixarithmetik.
Wie zufrieden seit ihr mit GLM? Ich habe mir die Seite (
http://glm.g-truc.net/ , stimmt doch, oder) mal angeschaut, es sieht ja ansich recht überzeugend aus.Jedenfalls besser als etwas selbstgeschriebenes und gute OpenGL Anbindung hat ja auch immer etwas für sich. Kann es das halten, was es verspricht?
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 10.11.2011, 23:44
von Artificial Mind
Jonathan hat geschrieben:Artificial Mind hat geschrieben:wir benutzen GLFW fürs Fenster/Inputmanagement, GL3W für die extensions und GLM für Vektor/Matrixarithmetik.
Wie zufrieden seit ihr mit GLM? Ich habe mir die Seite (
http://glm.g-truc.net/ , stimmt doch, oder) mal angeschaut, es sieht ja ansich recht überzeugend aus.Jedenfalls besser als etwas selbstgeschriebenes und gute OpenGL Anbindung hat ja auch immer etwas für sich. Kann es das halten, was es verspricht?
Also ich bin sehr zufrieden damit, besonders weil es zu über 95% die gleiche Syntax hat wie GLSL und das sehr angenehm ist. (Die fehlenden 5% sind der glm:: namespace und das umständliche Swizzlen, also keine wirklichen Hindernisse imho ;) )
Man muss sich nur daran gewöhnen, dass v.length() nicht die Länge, sondern die Anzahl der Komponenten ist und man mit glm::length(v) die Länge bekommt (was natürlich konsequent ist, denn GLSL kennt keine "Klassenmethoden" und deswegen wird diese globale Funktions-Syntax benutzt). Ab und zu hakelt es mit irgendeiner Template-Argument-Deduction, aber eigentlich funktioniert es zuverlässig. Performanceprobleme hatte ich auch noch keine und ich benutze die Vektoren in der prozeduralen Generierung, also schon im Performance-kritischen Bereich. Wenn man sich konsequent daran erinnert, dass GLM genauso wie GLSL-Arithmetik funktioniert, dann ist GLM wirklich gut.
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 11.11.2011, 11:09
von Aramis
Das deckt sich ziemlich mit meinen Erfahrungen mit GLM. Die Aufteilung der einzelnen Komponenten auf Header ist aeusserst gewoehnungsbeduerftig, aber wenn man mal die passenden Includes zusammen hat, fuehlt es sich ziemlich gut an :-)
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 11.11.2011, 13:59
von TGGC
Artificial Mind hat geschrieben:Das auf dem Bild ist nur simples fraktales Perlin-Noise als Density für den Marching Cubes mit nem linearen Falloff auf der Y-Achse (oben), einfach um zu testen, ob der Algorithmus funktioniert.
Verwenden wollen wir ihn für die natürlichen Höhlen. Anstatt die Geometrie direkt zu modellieren - so stell ich mir das vor - wird "einfach" eine interessante, komplexe Dichte-Funktion erstellt, die hauptsächlich erstmal die Form, die wir gitterförmig bilden, nachbilden soll. Sekundär wird dann entsprechendes Noise draufaddiert, welches dann für Stalagmiten/titen, steinige Oberflächen, Säulen etc. sorgt/sorgen soll. Die genauen Details müssen noch ausgearbeitet werden, aber Marching Cubes ist als Engine-Feature auch ganz nett ;)
Erinnert mich an liquidiced. Hast du mal Cats Artikel dazu gelesen?
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 11.11.2011, 14:09
von Chromanoid
Artificial Mind hat geschrieben:So, Marching Cubes!
(Vielen Dank dabei an Cat, der einen exzellenten Artikel über Marching Cubes Optimierung geschrieben hat ;) )
Ich muss mir "nur" noch einen guten Plan ausdenken, wie ich die Normalen vernünftig berechne (momentan hat das noch einige Probleme), dann die Tangenten und dann einen guten Mechanismus zum Textur-Generieren.
Grid Resolution: 128³
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 14.11.2011, 21:53
von Artificial Mind
Ich bin nicht zu allzu viel gekommen, aber es gibt jetzt ein rudimentäres Mapsystem und sobald wir die natürlichen Caves per Cellular Automata fertig haben und mit den Künstlichen Dungeons gemerged haben, wird die Karte auch sinnvoller befüllt. Man sieht noch sehr gut, dass die Normalen vom Marching Cubes noch rumbuggen, dass steht aber schon auf meiner virtuellen TODO-Liste, genauso wie vernünftiges Marching Cubes Texturing ;) Durch die fehlerhaften Normalen sieht man momentan sehr gut, dass die Karte aus Kästchen besteht^^

- Marching Cubes Map System
PS: Ja, die "Feuer-Partikel" bestehen noch aus einer sehr schlechten unanimierten Perlin-Textur, reines Debug Feature *g*
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 15.11.2011, 10:55
von balddenimhero
Da die Showroomtags nun auch für nicht-Threadersteller gehen poste ich mal Bilder von den natürlichen Dungeons wie sie bisher aussehen. Erreichbarkeit wird hier bisher noch nicht getestet, ist ja aber keine große Sache und kommt die Tage rein. ;) Der Look der Dungeons gefällt schon mal :D

- Natürlicher Dungeon
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 15.11.2011, 11:34
von Schrompf
Gefällt mir, ein schönes Höhlensystem. Aber wie willst Du Erreichbarkeit sicherstellen? Einfach Flood Fill und neugenerieren, wenn >10% nicht zu erreichen sind?
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 15.11.2011, 18:51
von balddenimhero
Genau ;) Das Generieren geht so schnell, da kann mans auch eben neu generieren lassen. Erreichbarkeit mit Automaten zu bewerkstelligen wäre wohl kaum sinnvoll möglich.
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 15.11.2011, 21:07
von Artificial Mind
Andererseits ist die Wahrscheinlichkeit bei größeren Dungeons recht groß, dass viele Teile abgeschnitten sind. Wir sollten vielleicht doch im Nachhinein Teile verbinden, können das ja irgendwie mit den "Bergwerksstollen" oder so verbinden.
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 16.11.2011, 12:55
von Artificial Mind
Ich habe einfach mal kurz Marching Squares auf unsere ASCII Höhlen angewandt:

- Marching Squares Dungeon
Adaptives Marching Squares sieht irgendwie nicht so gut aus, ich glaube ich muss per Gauss-Kernel smoothen damit die Wände mehr als 4 Richtungen haben ...
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 16.11.2011, 17:04
von LONy
Sehr cool was ihr da macht und sehr interresant die Entwicklung mit zu verfolgen.... weiter so, weiter so, weiter so!!! :D
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 16.11.2011, 21:28
von Artificial Mind
So: Gaussian Smoothing -> Noise perturbation -> adaptive Marching Squares -> voilà

- Marching Squares Dungeon - Smoothed
Es gibt noch etwas Verbesserungsspielraum, aber im Groben bin ich doch zufrieden ;)
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 17.11.2011, 20:56
von mnemonix
Das sieht *awesome* aus! Super Arbeit! Du bist wirklich ein Artificial Mind. ;D Kennst du dich gut mit Bildverarbeitung aus?
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 17.11.2011, 21:03
von Artificial Mind
mnemonix hat geschrieben:Das sieht *awesome* aus! Super Arbeit! Du bist wirklich ein Artificial Mind. ;D Kennst du dich gut mit Bildverarbeitung aus?
Vielen Dank ;) Ich versuche meinem Namen gerecht zu werden *g* Ich habe relativ viel praktische Erfahrung mit Bildverarbeitung und einige Hintergrundkentnisse. Bei irgendwelchen komischen Transformationen im Spektralraum, nachdem man das Bild per Fourier "desintuitiviert" hat, tue ich mich allerdings noch etwas schwer^^
Re: [Projekt] Yet another Dungeon Crawler
Verfasst: 17.11.2011, 21:18
von mnemonix
Kannst du gute Lektüre oder ähnliches empfehlen zu dem Thema Bildverarbeitung?