Der folgende Beitrag ist eine Übersetzung aus dem offiziellen DaggerXL-Blog. Er beinhaltet den Beitrag vom 22.03.2011, welcher von luciusdxl verfasst wurde. Die folgende Übersetzung stammt von Deepfighter und Crashtestgoblin.

Wir bitten um Verständnis, dass die Übersetzung etwas auf sich warten ließ, aber wir hatten beide in letzter Zeit viel zu tun.

———————————–

In diesem Artikel möchte ich über den Fortschritt der Version 0.20 berichten, sowie den Plänen schwächere Endsysteme zu unterstützen.

Fortschritt Version 0.20

Ich habe weiter an Version 0.20 von DaggerXL gearbeitet und möchte nun einige Sachen erklären, die vor kurzem vollendet wurden. Wenn ihr DaggerXL im Forum schon immer verfolgt habt, sind die Neuigkeiten schon bekannt.

Dungeon-Wasser

Der erste Schritt war herauszufinden wo die Wasserhöhen gespeichert sind, da diese für jeden Dungeon anders ist. Als ich das herausgefunden hatte, war der nächste Schritt die Wasseroberfläche zu rendern, was Ihr unten sehen könnt (thumbnails):

Der nächste Release wird womöglich die einfache Wasseroberfläche benutzen, wie in den vorhergehenden Screens gezeigt. Ich werde noch für mich herausfinden wie ich mit der Oberfläche hantieren will (wie genau der Standard sein wird, sowas in der Art) nach dem nächsten Build. In der Zukunft wird das Wasser aber viel cooler aussehen, aber ich versuchte nach wie vor mich auf das Gameplay zu konzentrieren.

Der nächste Schritt war ausfindig zu machen wenn der Spieler sich unter Wasser befindet und die dortigen Effekte zu rendern:

Letztendlich implementierte ich noch die Schwimm-Mechanik, welches der Spieler nutzt um die Fertigkeit des Schwimmens zu verbessern, welches sich beispielsweise auf die Schwimmgeschwindigkeit auswirkt. Zusätzlich verbessert die Fertigkeit beim benutzen im selben Maße Rennen (running) und Klettern (climbing) in der aktuellen Arbeit. Schlussendlich fügte ich noch die Anzeige für das Atmen und die Mechanik des Ertrinkens, jedoch wurden beide erst nach den obigen Screens integriert. Klänge für das hineinsteigen in das Wasser, das Schwimmen selbst und die Unterwasser-Umwelt wurde implementiert.

Objektorientierungs-Problem

Die nächste Sache, an der ich gearbeitet habe, waren diverse Objektorientierungs-Probleme, welche solch komische Bilder verursacht haben, wie ihr unten sehen könnt:

Diese und viele andere seltsame Anomalien wurden nun für Version 0.20 gefixt. Die meisten der Screenshots diverser Probleme wie diesen wurden von von einem DaggerXL-Forenmitglied, Lennas, gemacht – wenn ihr weitere „Pannen“ sehen wollt, besucht den Bug-Thread hier.

Schalter

Schalter werden in Version 0.20 deutlich zuverlässiger funktionieren. Das erste Problem ist, dass sie in vielen Fällen nicht korrekt oder überhaupt nicht animiert waren. Diese Probleme wurden gefixt. Das zweite Problem ist, dass sie häufig ihre Zielobjekte nicht ordnungsgemäß aktiviert haben, was nun auch gefixt wurde. Darüber hinaus wurde ein neuer Schalter-Typ gefunden und implementiert, der die Tore steuert, die ihr in einigen Dungeons finden könnt.

Verbleibende Probleme und Features

Ich arbeite nun daran, das Dungeon Texture Region Remapping zu vollenden, welches bewirkt, dass Dungeons in verschiedenen Regionen von Daggerfall verschiedene Texturen verwenden, ohne selbstgefertigte Teile für jede Region erstellen zu müssen. Dies ist ähnlich zu dem Texture Remapping, was bereits für die Außen- und Innenbereiche der Gebäude sowie für den Boden erledigt worden war. Nachdem dies beendet worden sein wird, wird unser nächstes Ziel sein, die UV-Probleme und schließlich die Flächen-Skalierungs- und Versatzprobleme zu fixen – was Dinge, wie schwebende Pfähle und Säulen beseitigen wird. Auf der Feature-Seite werde ich das Plünder-System vollenden, das Leveling und funktionierende Zufallsbegegnungen integrieren, wenn die Bugs beseitigt sein werden. An diesem Punkt werde ich Version 0.20 veröffentlichen, welche ein deutlich stabileres Dungeon-Erkundungserlebnis ebenso wie einen kompletten Charakteraufstieg und Leveling enthalten wird.

Unterstützung von Low-End-Systemen

Der Fokus von DaggerXL ist im Augenblick, und dies wird auch eine Weile so fortgeführt, das „Vanilla“-Daggerfall-Gameplay zu vervollständigen.  Allerdings werde ich langsam anfangen, eine funktionierende Unterstützung für Low-End-Hardware einzubauen und die Unterstützung für mittlere und High-End-Hardware zu optimieren. Hier ist im Wesentlichen also, wie ich plane, diese Angelegenheit anzupacken:

1) Stärkere Optimierungen für den derzeitigen Renderer (versteht sich). Dinge, wie die Reduzierung der Shader-Komplexität so weit wie möglich, die weitere Reduzierung der Batch-Anzahl und so weiter.

2) Unterstützung für Prä-Shader Model 2.0-Hardware mit reduzierten Effekten und reduzierter Qualität sobald nötig. Das Ziel wird hier sein, die Effekte , die eine gefixte Version verwenden werden soweit wie möglich zu reproduzieren. Jeder GPU soll in der Lage sein, in diesem Modus zu laufen, selbst wenn dafür visuelle Kompromisse eingegangen werden müssen – womöglich eine reduzierte Sichtweite, Lichtvereinfachungen (sprich Dynamic Light Maps, Textur-Projektionen, lokale Tesselation + Vertex Lighting, etc.; ich bin mir noch nicht sicher, welche genau). – Diese Option kann zugunsten von Option 3 weiter unten übersprungen werden.

3) Software Renderer – ich habe mir vor Kurzem erneut gewünscht, mit Software Rendering herumzuspielen (das war vor einer Weile… zusätzlich dann einige CPU-Raycasting-Experimente). Die Idee würde geringe bis mittlere Auflösungen und jegliche Systeme mit einer bescheidenen CPU unterstützen. Ältere GPUs (insbesondere Intel) neigen dazu, schreckliche und veraltete Treiber zu haben. Dies kann also eine brauchbare Alternative für Leute mit mittelstarken Systemen sein, die wenig leistende oder alte GPUs haben. Bei geringen Auflösungen kann dies Systemen mit langsamer CPU helfen, seit Stapelverarbeitung, CPU/GPU-Kanalbandbreite und Treiberleistung nicht mehr länger ein Thema ist.

Nun, aufgrund der schrecklichen Treiber, die ich erwähnte,  habe ich wirklich erwogen, Option #2 auszulassen. Im Grunde das bescheidene Shader Model 2+ GPU (Radeon 9500+, GeForce 6+) oder Software. Normalerweise hätte ich davor zurückgeschreckt, ein Software Renderer hinzuzufügen, aber es gibt einige unwiderstehliche Gründe dafür –

* Aus irgendeinem Grund möchte ich mit Software Rendering herumbasteln. Als Hobbyprojekt ist dies wirklich richtig verlockend für mich. :)

* Wenn man die Menge der GPUs auf die mit mittestarken Treibern beschränkt und einen Rückgriff auf neuere GPUs mit schlechten  Treibern (denkt an Intel) berücksichtigt, sollte diese dazu führen, DaggerXL ein wenig einfacher zu unterstützen und zugleich die potentielle Zielgruppe zu vergrößern.

* Unterstützt ältere Systeme ohne sich über schwache Treiberunterstützung Sorgen machen zu müssen (zumindest bei der Grafik).

* Ich plane, eventuell multiple Plattformen zu unterstützen. Das würde mir also erlauben, sicher zu gehen, dass eine einwandfreie Unterstützung für multiple Renderer enthalten ist, ohne, dass hochrangige Codes beeinträchtigt werden. Das bedeutet, dass das meiste der Code-Basis nicht beachten sollte, ob es Hardware oder Software ist.

* Breiteres System und mögliche Plattform-Unterstützung

Natürlich werden viele dieser coolen neuen Effekte lediglich auf der Hardware-Version möglich sein. Dennoch sollte der Software Renderer deutlich besser als der originale Daggerfall-Renderer aussehen. Einige Beispiele beinhalten Fixes visueller Glitches zwischen Fliesen, erhöhen die Render-Distanz (mehr als Vanilla, weniger als GPU), Beleuchtung und Gouraud Shading auf dem Boden, Per-Pixel-Perspektivenkorrektur, um die Texturen klarer erscheinen zu lassen, Mip Mapping, ordentliche Z-Buffer, Echtfarben-Texturen im 32 bit-Modus, etc. Es wird zwei Modi geben – 32 bit und 8 bit – abhängig davon, ob ihr eine Unterstützung der Palette haben wollt oder nicht. Textur-Auswechslungen, Sprite-Auswechslungen und Model-Auswechslungen werden in dem 32 bit Software gerenderten Modus und in dem GPU-Modus unterstützt – jedoch wird die Performance natürlich eine Berücksichtigung haben müssen.

Darüber hinaus plane ich, einige begrenzte, einmalige Cachings zu machen, um die Ladezeiten am Anfang zu beschleunigen. Dies würde automatisch beim ersten Mal geschehen, wenn das Programm gestartet oder der Cache ungültig werden würde (neue Version, Modding, etc.). Wiederrum alles automatisch, aber ich würde gerne auch die Ladezeiten deutlich schneller bekommen.

Advertisements