[Projekt] Yet another Dungeon Crawler
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.
Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.
This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.
Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.
This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Wenn du nicht gerade Student bist und kein Problem mit Mathematik hast, würde ich an deiner Stelle nicht mit "richtiger/normaler" Literatur zur Bildverarbeitung anfangen, weil die meistens sofot mit Fourieranalyse kommen.
Bildverarbeitung würd ich immer mit eigenen Programmen lernen, schreib dir selber nen kleines Tool, was Bilder verändert.
Empfehlen kann ich zuerst Kantenerkennung ( z. B. http://de.wikipedia.org/wiki/Sobel-Operator Mach dir nichts wenn du aus dieser Seite nicht herauslesen kannst, was du machen sollst, google einfach danach)
Sehr gut sind auch immer umrechnungen RGB-Farbraum nach HSV-Farbraum und umgekehrt und so Späßte iwe alle Farben + 50° Hue (Farbwertverschiebung) einbauen. Kontraständerungen sind auch gut.
Dann noch nen Blur einbauen, z. B, http://de.wikipedia.org/wiki/Weichzeichnen bzw. http://en.wikipedia.org/wiki/Gaussian_blur (die deutsche Seite ist mal wieder ausgesprochen uninformativ)
Einfach selber mal ein wenig Bilder verändern. Und immer die goldene "Grundregel" beachten: äußere Schleife über y, innere über x :D
Edit: Such dir am besten einfache Tutorials zu den Themen. Bei Bildverarbeitung ist es imho einfacher, zuerst das praktische und dann das theoretische zu Verstehen.
Bildverarbeitung würd ich immer mit eigenen Programmen lernen, schreib dir selber nen kleines Tool, was Bilder verändert.
Empfehlen kann ich zuerst Kantenerkennung ( z. B. http://de.wikipedia.org/wiki/Sobel-Operator Mach dir nichts wenn du aus dieser Seite nicht herauslesen kannst, was du machen sollst, google einfach danach)
Sehr gut sind auch immer umrechnungen RGB-Farbraum nach HSV-Farbraum und umgekehrt und so Späßte iwe alle Farben + 50° Hue (Farbwertverschiebung) einbauen. Kontraständerungen sind auch gut.
Dann noch nen Blur einbauen, z. B, http://de.wikipedia.org/wiki/Weichzeichnen bzw. http://en.wikipedia.org/wiki/Gaussian_blur (die deutsche Seite ist mal wieder ausgesprochen uninformativ)
Einfach selber mal ein wenig Bilder verändern. Und immer die goldene "Grundregel" beachten: äußere Schleife über y, innere über x :D
Edit: Such dir am besten einfache Tutorials zu den Themen. Bei Bildverarbeitung ist es imho einfacher, zuerst das praktische und dann das theoretische zu Verstehen.
-
balddenimhero
- Beiträge: 7
- Registriert: 03.11.2011, 19:33
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Nachdem bei den letzten Posts die künstlichen und natürlichen Dungeons gezeigt wurden, gibts jetzt die kombinierte Version, die quasi ein Level ausmacht.
Die Zeichen lassen sich wie folgt interpretieren:
Die Zeichen lassen sich wie folgt interpretieren:
- W = Wand eines künstlichen Dungeons
- w = Wand eines natürlichen Dungeons
- D = Treppe ins nächste Level
- U = Treppe ins vorherige Level
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
So nach der Winterpause mal wieder ein Update:
Wir haben endlich über das Marching Squares und dem vorherigen Gaussian Blur beide Dungeon-Arten in ein 3D-Modell gebracht. Dabei haben wir auch genaue "Kappen" für die Dungeons, indem wir den Marching Squares etwas modifiziert haben (er spuckt nun auch noch eine Liste von Dreiecken aus, die die "Kappe" bilden)
Re: [Projekt] Yet another Dungeon Crawler
Na das sieht doch schon Mal sehr gut aus, super!
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
So, nun gibt es ein wenig mehr Beleuchtung, etwas bessere Wandgeometrien und rudimentäre Fackel-modelle (per Bézier-Kurven-Rotations-Körper ;) )
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Sehr rudimentäre Schatten gibt es nun in der Engine.
Zu sehen ist die erste Seite (FOV 90) der noch zu erstellenden Cubemap. Die Shadowartefakte werden noch nicht vernünftig (*hust* depth - 0.001 *hust*) ausgemerzt und im Endeffekt möchte ich auch weichen Schatten haben. Das ganze von allen 30 Fackeln gleichzeitig, allerdings bei statischer Geometrie. Maaal gucken ;) Gehen eigentlich Texture Arrays von Shadow-Maps?
Zu sehen ist die erste Seite (FOV 90) der noch zu erstellenden Cubemap. Die Shadowartefakte werden noch nicht vernünftig (*hust* depth - 0.001 *hust*) ausgemerzt und im Endeffekt möchte ich auch weichen Schatten haben. Das ganze von allen 30 Fackeln gleichzeitig, allerdings bei statischer Geometrie. Maaal gucken ;) Gehen eigentlich Texture Arrays von Shadow-Maps?
- Schrompf
- Moderator
- Beiträge: 5397
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [Projekt] Yet another Dungeon Crawler
Klar geht das. Mit einem Geometrie-Shader kannst Du auch in mehrere davon gleichzeitig reinrendern. Das wäre vielleicht eine Idee, um dem mächtigen Aufwand für RenderTarget-Wechsel und DrawCalls beizukommen, den Du mit 30x6 Rendertargets bekommst.
Alternativ könnte sich auch so ein 2,5D-Schattenansatz eignen, wie ich ihn in Splatter verwende. Deine Dungeons sehen ja sehr flach und eben aus, da könnte das klappen. Gibt weiche Schatten und belastet dafür primär mal die Grafikkarte - maximal 1 Pass pro Licht, plus ein DrawCall pro Schattenverlängerungs-Pass.
Alternativ könnte sich auch so ein 2,5D-Schattenansatz eignen, wie ich ihn in Splatter verwende. Deine Dungeons sehen ja sehr flach und eben aus, da könnte das klappen. Gibt weiche Schatten und belastet dafür primär mal die Grafikkarte - maximal 1 Pass pro Licht, plus ein DrawCall pro Schattenverlängerungs-Pass.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
2.5D Schatten finde ich nicht so gut, weil die Wände ja richtig 3D sind und ich die Engine nachher auch für CyberDive benutzen möchte.
Ich hatte jetzt mal für OpenGL nachgeguckt und es gibt tatsächlich GL_TEXTURE_CUBE_MAP_ARRAY, allerdings ist die Tutorialdichte schon bei cube maps für shadow maps dermaßen gering, dass ich da komplett auf mich allein gestellt wäre.
Die Engine unterstützt nun erstmal einfache Cube Maps für automatische Shadow-Map generierung und auch schon einfache PCF Softshadows: Hat jemand eine Idee, woher diese Bugs kommen könnten? Es scheint, dass die Shadow-Map einen Offset enthält oder so ...
Zum Erstellen der Shadowmap benutze ich die eigenen z-Werte
und beim deferred lighting greife ich dann so darauf zu:
lightRadiusSqr ist das Quadrat vom maximalen Lightradius (oder auch FarPlane der Camera der ShadowMap)
ShadowMapSampler ist als uniform samplerCubeShadow ShadowMapSampler; definiert.
(Beides natürlich teilweise vereinfacht und ein wenig pseudo)
ShadowMap-Größe ist 512² momentan
Ich hatte jetzt mal für OpenGL nachgeguckt und es gibt tatsächlich GL_TEXTURE_CUBE_MAP_ARRAY, allerdings ist die Tutorialdichte schon bei cube maps für shadow maps dermaßen gering, dass ich da komplett auf mich allein gestellt wäre.
Die Engine unterstützt nun erstmal einfache Cube Maps für automatische Shadow-Map generierung und auch schon einfache PCF Softshadows: Hat jemand eine Idee, woher diese Bugs kommen könnten? Es scheint, dass die Shadow-Map einen Offset enthält oder so ...
Zum Erstellen der Shadowmap benutze ich die eigenen z-Werte
Code: Alles auswählen
gl_FragDepth = length(worldPos - lightPos) ^ 2 / lightRadiusSqrund beim deferred lighting greife ich dann so darauf zu:
Code: Alles auswählen
float refDepth = length(worldPos - lightPos) ^ 2 / lightRadiusSqr;
vec3 dir = normalize(worldPos - lightPos);
shadowFactor = texture(ShadowMapSampler, vec4(dir, refDepth - 0.0005));ShadowMapSampler ist als uniform samplerCubeShadow ShadowMapSampler; definiert.
(Beides natürlich teilweise vereinfacht und ein wenig pseudo)
ShadowMap-Größe ist 512² momentan
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
So hab den Bug gefunden, die y-Koordinate war falsch und im Endeffekt der komplette Up-Vektor der Cube-Maps. Vielen Dank, OpenGL, dass eure API so gut dokumentiert ist!
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Nächstes Update (ich hoffe, die vielen Bilder werden nicht als Spam empfunden):
Es gibt nun einen Mechanismus, der eine große "Mastertextur" erstellt und den Dungeonwänden "Wege" auf dieser Textur zuordnet, die Seamless Kanten erlauben und trotzdem einen Großteil der Zufälligkeit behalten. Die Mastertextur kann vorberechnet werden und damit in sehr hoher Qualität (Textur Antialiasing beim Erstellen usw.) benutzt werden.
Unsere Karte hat Ausmaße von 120x150 und die Wände sind ca. 1 hoch. Die gesamten Wandlängen ergeben sich zu 4000-5000 Einheiten, was bei 512x512 pro Square auf der Wand ca. 18 Texturen der Größe 8192x8192 ergibt. Stattdessen gibt es für 512x512 pro Square eine 8192x8192 Mastertextur, auf der diese Zufallswege berechnet werden.
Um ein wenig schneller zu debuggen und weil meine Grafikkarte nicht soo viel RAM hat, benutze ich zum Testen 128x128 per Square (2048x2048 Mastertextur) oder 256x256 per Square.
Es gibt nun einen Mechanismus, der eine große "Mastertextur" erstellt und den Dungeonwänden "Wege" auf dieser Textur zuordnet, die Seamless Kanten erlauben und trotzdem einen Großteil der Zufälligkeit behalten. Die Mastertextur kann vorberechnet werden und damit in sehr hoher Qualität (Textur Antialiasing beim Erstellen usw.) benutzt werden.
Unsere Karte hat Ausmaße von 120x150 und die Wände sind ca. 1 hoch. Die gesamten Wandlängen ergeben sich zu 4000-5000 Einheiten, was bei 512x512 pro Square auf der Wand ca. 18 Texturen der Größe 8192x8192 ergibt. Stattdessen gibt es für 512x512 pro Square eine 8192x8192 Mastertextur, auf der diese Zufallswege berechnet werden.
Um ein wenig schneller zu debuggen und weil meine Grafikkarte nicht soo viel RAM hat, benutze ich zum Testen 128x128 per Square (2048x2048 Mastertextur) oder 256x256 per Square.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Update:
- Wände haben nun verschiedene Edelsteinarten in kleinen Vorkommen
- Es gibt Kristalle, die die natürlichen Dungeons in verschiedenen Farben erleuchten
- Künstliche Dungeons haben eine hübschere Wandtextur, inklusive (sichtbarem) Parallax Mapping
- Schatten sind vorerst deaktiviert, bis ich die performant mit einem CubeMapArray zeichnen kann
- Fackeln haben etwas bessere Partikel bekommen (obwohl ich immer noch nicht zufrieden bin)
- Wände haben nun verschiedene Edelsteinarten in kleinen Vorkommen
- Es gibt Kristalle, die die natürlichen Dungeons in verschiedenen Farben erleuchten
- Künstliche Dungeons haben eine hübschere Wandtextur, inklusive (sichtbarem) Parallax Mapping
- Schatten sind vorerst deaktiviert, bis ich die performant mit einem CubeMapArray zeichnen kann
- Fackeln haben etwas bessere Partikel bekommen (obwohl ich immer noch nicht zufrieden bin)
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Der Boden der künstlichen Dungeons hat jetzt mal eine prozedural generierte Cellular Texture mit Parallax Mapping erhalten (Auflösung im Screenie: 4096x512, Tileable in y-Richtung, Berechnungszeit 0.8 Sekunden).
Überraschend gut kommt eine leichte Anpassung der z-Koordinate im Fragment Shader abhängig von der Höhe, die für das Parallax Mapping benutzt wird.
Überraschend gut kommt eine leichte Anpassung der z-Koordinate im Fragment Shader abhängig von der Höhe, die für das Parallax Mapping benutzt wird.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: [Projekt] Yet another Dungeon Crawler
Sehr schön, langsam wird erkennbar, wie es aussehen wird, wenn endlich die ganzen Matschtexturen raus sind. :)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Re: [Projekt] Yet another Dungeon Crawler
Sehr schickes Blooming hast du da übrigens :)
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
CodingCat hat geschrieben:Sehr schön, langsam wird erkennbar, wie es aussehen wird, wenn endlich die ganzen Matschtexturen raus sind. :)
Vielen dank ihr beide ;)Andre hat geschrieben:Sehr schickes Blooming hast du da übrigens :)
Grade habe ich die natürlichen Wände noch etwas interessanter gestaltet, jetzt kommt noch der Boden der natürlichen Dungeons dran und dann ist das auch schon abgabefähig aus meiner Sicht (Abgabe ist Freitag).
Es läuft unter Linux !!1! (*hust* Bestehenskriterium *hust*)
Die Parameter für Parallaxmapping sind momentan nur auf die künstlichen Wände optimiert, es ist ganz schön anstrengend, das für alle Geometrie- und Texturverteilungen gut aussehen zu lassen (hat da jemand Tipps? ).
Das Blooming ist übrigens kein normaler Gauss-filter, sondern blurt nur die Diagonalen, damit das diesen "Kreuz"-Effekt gibt.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
So, ich bin mit der Bodentextur der natürlichen Dungeons noch nicht wirklich zufrieden, aber bis Freitag wirds das wohl erstmal tun müssen. Später kommt da noch Vielfalt und so, aber erstmal nicht.
Die natürlichen Wände habe ich wieder als richtige Wände ohne Übergang zum Boden realisiert, da ich eh keine Chance habe, die vernünftig zu blenden. Noch ein wenig mehr Struktur und ein paar Risse in die Wände und schon bin ich gut zufrieden. Da die natürlichen Wände nun ein gutes Stück dunkler geworden sind, kommen die Edelsteine besser zur Geltung.
Die natürlichen Wände habe ich wieder als richtige Wände ohne Übergang zum Boden realisiert, da ich eh keine Chance habe, die vernünftig zu blenden. Noch ein wenig mehr Struktur und ein paar Risse in die Wände und schon bin ich gut zufrieden. Da die natürlichen Wände nun ein gutes Stück dunkler geworden sind, kommen die Edelsteine besser zur Geltung.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
[youtube]yCtPw8ZTspU[/youtube]
Kurzes abschließendes Video zum Projekt ;)
Kurzes abschließendes Video zum Projekt ;)
- Schrompf
- Moderator
- Beiträge: 5397
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [Projekt] Yet another Dungeon Crawler
Sieht echt gut aus :-) Schade, dass da nix Spielbares draus wird. Und ebenso schade, dass die Echtzeit-Schatten und die anderen Renderer-Features praktisch ungenutzt bleiben.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Yet another Dungeon Crawler
Danke :)
Um die Features brauchst du dir keine Sorgen machen, die leben in CyberDive weiter *g*
Ich finds auch ein wenig schade, dass es im Endeffekt "nur" eine TechDemo geworden ist, aber ich hab ja noch den Source und wenn es sich ergibt, werde ich daran nochmal weiterarbeiten. Einen Casual-Dungeon-Crawler brauchte ich immer schon mal und da Torchlight 2 noch brauchen wird ... xD
Um die Features brauchst du dir keine Sorgen machen, die leben in CyberDive weiter *g*
Ich finds auch ein wenig schade, dass es im Endeffekt "nur" eine TechDemo geworden ist, aber ich hab ja noch den Source und wenn es sich ergibt, werde ich daran nochmal weiterarbeiten. Einen Casual-Dungeon-Crawler brauchte ich immer schon mal und da Torchlight 2 noch brauchen wird ... xD