Thiemo Mättig

Glow Changelogs (2009–2011)

Slopes in debug mode

Ja, wir verspäten uns. Auf die Demo- oder besser gesagt Previewversion werdet ihr noch einige Tage warten müssen. Aber ich habe ein gutes Gefühl. Die Liste der noch offenen Bugs wird immer kürzer und das Änderungsprotokoll mit den erledigten Punkten immer länger. Darunter sind inzwischen fast alle meine "Lieblings"-Bugs, die mich bisher immer so gestört haben, dass ich euch keine Version mit diesen Fehlern geben wollte.

  • In den bisherigen Glow-Versionen wurde nur sehr selten von der Möglichkeit Gebrauch gemacht, schräge Fußböden (Slopes) in den Levels zu verwenden. Das möchte ich gern ändern. Dummerweise stolpert man über immer mehr irritierende Bugs, sobald man etwas intensiver mit Schrägen hantiert. Manchmal fällt unser Held durch den Fußboden, wenn man beim Sprung genau die Kante zwischen zwei schrägen Tiles erwischt. Gegner wandern Schrägen hinauf, bleiben aber dann hängen und können sich nicht mehr bewegen. Nervig. So macht das Bauen von coolen Levels keinen Spaß. Dabei kann die Lösung manchmal ganz einfach sein: Slope(false);, fertig. Nur die Stelle im Code zu finden, an der diese Zeile bisher fehlte, das war nicht so einfach.
  • Der Verwirrungszauber soll die Gegner durcheinander bringen, sie sollen nicht mehr wissen wo vorn und hinten ist, auf der Stelle hin und her laufen und Stevie nicht mehr erkennen. Bisher war das so implementiert, dass die Bewegung der Gegner vollständig gestoppt und nur ihre Blickrichtung in einem festen Takt umgekehrt wurde. Das funktionierte, war aber nicht wirklich schön. Es sah beinahe aus, als ob die KI abgestürzte wäre. Die Lösung waren wieder zwei bis drei Zeilen Quelltext an den richtigen Stellen: Die Gegner laufen weiter, auch wenn sie verwirrt sind, sie drehen aber in kurzen Abständen zufällig um (nicht mehr alle im gleichen Rhythmus). Dann noch die Feinderkennung abschalten und das war's schon. Cooler Nebeneffekt: Bei diesen Änderungen ist praktisch kostenlos auch eine Funktion abgefallen, die den Gegnern mehr Individualität verleiht. Sie verlassen ihre festgelegten Patrouillen-Pfade jetzt manchmal und drehen mitten auf dem Weg vorzeitig um.
  • Ein sehr alter Bug hieß: "Feuer ist nach Schnellladen extrem laut". Holger hatte mehrfach danach gesucht und ich genauso. Ohne Erfolg. Dabei ist die Lösung erschreckend einfach, wenn man sich einmal klar gemacht hat, wie die Feuergeräusche entstehen: Sobald ein Feuer in Hörreichweite kommt, wird sein Sound-Loop gestartet. Das passiert im normalen Spiel mit jedem Feuer einzeln, abhängig davon, wie sich Stevie durch den Level bewegt. Beim Schnellladen kann es dagegen passieren, dass schlagartig viele Feuer in Hörreichweite sind und alle gleichzeitig gestartet werden. Nur durch diese Gleichzeitigkeit entsteht das hörbare Übersteuern der Sounds. Die Lösung: Ein kleiner Zufallswert, der jeden Sound um ein paar Millisekunden verzögert und damit das nachbildet, was normalerweise passieren würde, wenn die Soundquellen eine nach der anderen in Hörreichweite gelangen.
  • Über einen der nervigsten Fehler hatte ich schon einmal berichtet. Kurz: Bei OpenGL beziehen sich die Texturkoordinaten auf die Mitte des Pixels, wie man es von Malprogrammen gewohnt ist. Bei Direct3D beziehen sich die Texturkoordinaten auf die linke obere Ecke des Pixels, sind also um ein halbes Pixel verschoben. Im Ergebnis sieht alles verschwommen aus. Noch schlimmer wird das, wenn – wie es bei Glow der Fall ist – zwei Renderdurchgänge gemacht werden (der zweite für Post-Processing-Effekte und die Auflösungs-Unabhängigkeit). Bisher hatte ich nur eine "halbe" Lösung für den zweiten Schritt, der erste erzeugte immer noch verschmierte Texturen. Meine Lösung: D3DXMatrixTranslation(). Diese Funktion wird sowieso benutzt, um das Bildschirmwackeln zu realisieren. Ich setze einfach immer ein halbes Pixel Verschiebung ein und spare mir damit Vertex-Shader-Umwege oder gar komplizierte Berechnungen mit jeder einzelnen Textur.

(3 Kommentare)

Wir haben auf eure Wünsche und Sorgen gehört und heute eine in allen Punkten verbesserte Preview-Version veröffentlicht. Was ist neu im Vergleich zur ersten Preview?

  • Der Schwierigkeitsgrad ist wesentlich fairer (danke an alle). Es ist jetzt nicht mehr nötig, aller paar Schritte [F5] zum Schnellspeichern zu drücken. Kritiken und Erfahrungsberichte zu diesem Thema sind natürlich auch weiterhin sehr willkommen. Zu leicht oder gar langweilig soll das Spiel natürlich auch nicht werden.
  • Auto-Save. Der Spielstand wird automatisch am Anfang jedes Levels gespeichert.
  • Das Event- und Triggersystem ist wesentlich erweitert und beherrscht jetzt auch Wettereffekte und das Spawnen von Gegnern und Fallen. Einige dieser Neuerungen kann man bereits in der Preview sehen, mehr wird es im fertigen Spiel geben.
  • Die Zeitlupen- und Zeitstopp-Effekte sind wesentlich realistischer. Sie wirken sich jetzt auf beinahe das gesamte Spiel aus und nicht mehr nur auf die Gegner.
  • Die Gegner flüchten, wenn sie von der Blitzwaffe des Spielers getroffen werden. Das erschien uns aus mehreren Gründen logisch und sinnvoll. Außerdem sieht es einfach cool aus.
  • Die Kollisions-Erkennung ist etwas präziser (danke, Jonathan).
  • Das Demospiel, das man hinter dem Menü sieht, kann in der Datei Glow.ini deaktiviert werden. Übrigens: Im Spiel kann man [Esc] drücken, um das Demospiel ohne davor liegendes Menü zu sehen.
  • Wir haben diverse Textausgaben optimiert oder ganz entfernt, damit das, was wirklich wichtig ist, nicht in Unwichtigem unter geht.
  • Viele kleinere und einige größere Probleme wurden behoben. Im Idealfall habt ihr die Fehler nicht bemerkt, uns haben sie aber gestört. Zum Beispiel gab es ein Problem mit dem Maleralgorithmus, der bei Objekten mit gleicher Rangfolge abwechselnd mal das eine und mal das andere vorn dargestellt hat (danke, Holger).

Bekannte Probleme:

  • Auf schrägen Flächen kommt es manchmal vor, dass der Spieler durch den Fußboden fällt.
  • Die Lebensenergie-Anzeige oben links, die jetzt aus 12 Herzen besteht, wird noch anders gestaltet.

(7 Kommentare)

Fast ein Jahr ist es nun schon her, dass wir die erste Preview veröffentlicht und um euer Feedback gebeten hatten. Ganz untätig waren wir seit dem nicht, aber zugegebenermaßen auch nicht besonders aktiv. Neue Gegner und Welten zu erfinden macht nun mal leider mehr Spaß als sie dann wirklich einzubauen. Bevor wir uns weiter mit der Entwicklung des eigentlichen Spielinhalts beschäftigen und euch die nächsten vier Levels zum Probespielen überlassen, gibt es hier erst einmal eine Aktualisierung der schon bekannten vier Levels. Wir bitten vor allem darum, die technischen Aspekte und die Steuerung zu testen (die Levels sind ja die selben) und uns jedes Problem hier, im Forum oder per E-Mail zu melden.

Was ist neu?

  • Stevie sollte jetzt nicht mehr durch schräge Fußböden fallen. Das war der schlimmste Fehler, der uns lange verfolgt hat und für den wir bis heute kein "echte" Lösung gefunden haben, jedenfalls keine, die mich als Softwareentwickler zufrieden stellt. Falls es euch doch noch passiert, gebt uns unbedingt Bescheid.
  • Standard-Tastaturbelegung geändert. Strg und Leertaste haben den Platz getauscht. Jetzt wird mit Strg geschossen und mit der Leertaste gesprungen, wie in allen modernen Egoshootern. Die Tastaturbelegung lässt sich in Glow zwar beliebig ändern, aber darauf greifen die Spieler natürlich immer erst dann zurück, nachdem sie sich mindestens einmal über die "falschen" Tasten geärgert haben. Ursprünglich hatten wir uns an alten Jump-n-Runs orientiert, da wurde immer mit Strg gesprungen.
  • Stevie ist bei sehr kurzen Tastendrücken besser steuerbar. Jetzt kann man sich viel kontrollierter an Fallen und Sprünge heran tasten. Wenn man es noch genauer braucht, kann man geduckt kriechen, das funktionierte aber auch in der vorigen Preview schon.
  • Der Unsichtbarkeits-Zauber hat eine kleine aber sehr wesentliche Änderung erfahren: Stevie kann sich jetzt wortwörtlich an allen Gegnern vorbei schleichen. Normalerweise blockieren die Gegner den Weg und Berührungen fügen unserem Helden Schaden zu. Das macht die Unsichtbarkeit zum mächtigsten Zauber überhaupt. Nun kann man die Gegner umgehen oder sich sogar in ihre Mitte schleichen und von dort aus aufräumen.
  • Die Musik im Hauptmenü hat ein schickes Intro bekommen.
  • Die Lebensenergie-Anzeige ist komplett neu gestaltet. Es bleibt bei den 12 Punkten aus der zweiten Preview, sie werden jetzt aber als Kreis angezeigt.
  • Rundungsfehler bei den Speer-Fallen behoben (danke, Blue Cobold). Sie schienen zu wackeln, wenn man sich langsam bewegte.

Ich will einmal versuchen, in den nächsten Tagen regelmäßiger vom Projektfortschritt zu berichten, auch wenn ihr die Änderungen nicht sofort selbst ausprobieren könnt. Also, was hat sich in den vergangenen Tagen getan?

  • Wenn unser Held an einer Leiter hängt, konnte er schon immer um sich schießen. Anders als im Stand gehen diese Attacken aber immer nur in eine Richtung und man muss warten, bis die Sequenz zu Ende ist, bevor man in die andere Richtung feuern kann. Beim Blitzangriff war das etwas nervig. Jetzt kann man ihn nach links und rechts wenden, während er noch feuert. Weiterhin (das geht in der Preview schon) kann man von der Leiter abspringen und den noch feuernden Blitz mitnehmen. Nur zum Festhalten an der Leiter braucht Stevie seine Hände, deshalb bricht der Blitzzauber dabei schlagartig ab.
  • Nach dem Auslösen eines Aktionszaubers wird jetzt immer zurück zur vorigen Waffe gewechselt, egal ob der Aktionszauber verbraucht ist oder nicht.
  • Mann kann Hebel vertikal spiegeln und an die Decke hängen.
  • Hebel und Radiustrigger, die Objekte verschwinden lassen (Kommando "Die"), funktionieren endlich fehlerfrei, ohne dass noch irgendwo ungültige Verweise auf das verschwundene Objekt herum lungern und für Zugriffsverletzungen sorgen. Solche Gemeinheiten sind es, wegen denen ich C++ letztendlich nicht leiden kann. Warum gibt es keinen Debug-Modus, der mir anzeigt, wenn ich noch referenzierten Speicher versehentlich zu zeitig frei gebe?
  • Radius-Trigger reagieren auf das Kommando "Activate". Damit die Skriptfähigkeit in dieser Hinsicht komplett ist, muss das aber auch bei allen anderen Trigger-Objekten möglich sein (Soundquellen, Geheimgänge etc.).

Nein, einen täglichen Rhythmus werde ich ganz bestimmt nicht schaffen. Aber wenn sich etwas getan hat, werde ich berichten. Neu in den vergangenen Tagen:

  • Stevie fällt jetzt ohne Pistole und sogar ohne sein Schwert in die Hölle. Das ermöglicht uns, den Spieler viel sanfter in das Spiel hinein zu begleiten. Die zusätzlichen Items für Schwert und Pistole, die der Spieler natürlich kurz nach Beginn schon einsammeln darf, gibt es nun auch (bisher gab es nur Items für die Munition).
  • Auch ein Item für unseren geplanten großen "Schlüssel" gibt es nun. Es bewirkt im Moment jedoch nichts weiter.
  • Nach dem Beseitigen eines Bossgegners endet der Level nicht mehr vollautomatisch. Das ist eine notwendige Änderung im Zusammenhang mit dem erwähnten Schlüssel. Letztendlich hoffen wir, dem Spiel dadurch ein wenig mehr Tiefe zu verleihen.
  • Der größte Nachteil dieser Änderung ist, dass Stevie nach dem Töten eines Bosses nicht mehr für kurze Zeit unsterblich wird. Es kann also wieder passieren, dass ihn zum Beispiel nach dem Töten des Drachens noch ein Feuerball trifft. Deshalb verschwinden jetzt zusammen mit dem Boss auch alle seine Feuerbälle, Bomben usw.
  • Es gibt ein neues Kommando "ExitLevel", mit dessen Hilfe man den erfolgreichen Abschluss eines Levels an beliebige Ereignisse binden kann, z.B. an das Einsammeln eines bestimmten Items.
  • Der Smasher (ihn konnte man in der Preview schon bewundern) und die Stampfer-Falle haben schicke neue Sounds bekommen, wenn sie auf den Boden krachen.
  • Attackiert man die Gegner mit dem Blitzzauber, flüchten sie (übrigens flüchten sie sogar dann schon, wenn sie den Blitzangriff nur sehen). Lief in diesem Moment eine Angriffssequenz des Gegners, wurde fälschlicherweise sein Angriff umgedreht. Das fiel z.B. beim Smasher auf, dessen weites Ausholen mit dem Hammer etwas länger dauert.
  • Es gibt ein Auto-Save-Kommando für die Verwendung in Triggern. Damit sind jetzt die mehrfach gewünschten Speicherpunkte machbar. Ein Quick-Save-Kommando gibt es auch (sogar schon von Anfang an), dazu fehlt aber noch ein Auslöser, den der Spieler betätigen kann, wenn er speichern möchte.
  • Im Editor steht ein ganzer "Wald" neue Dekoration zur Verfügung, unter anderem Bäume und Grabsteine.
  • Im Editor kann mit Tab schnell zwischen den Tile-Ebenen umgeschaltet werden. Strg+Tab schaltet zwischen Tile- und Objekt-Bearbeitung um. (Inspiriert vom Tile Studio.)
  • Verletzt man einen Gegner per Trigger mit den Kommandos "Hurt" oder "Die", erhält der Spieler korrekterweise keine Punkte. Die Abschüsse werden aber gezählt, da es verwirrend wäre, wenn am Ende für einen offensichtlich leeren Level noch lebende Gegner angezeigt würden.

In den vergangenen Tagen habe ich vor allem an unserem Trigger- und Event-System gefeilt und verschiedenen Objekten neue "Skript"-Möglichkeiten verpasst oder Bestehendes flexibler gestaltet.

  • Der Herzteil-Generator arbeitet jetzt mit einem Radius, wie die anderen Auslöser-Objekte auch. Herzteile regnet es nur, wenn Stevie sich innerhalb des Radius befindet. Bewegt er sich aus dem Radius, gibt es auch keine Herzteile mehr. Auch die zufälligen Positionen der Herzteile werden durch diesen Radius begrenzt. Ist er verbraucht, zerstört er sich selbst, um Speicher und CPU-Last zu sparen.
  • Der Erscheinen von Objekten ist jetzt immer von der Kameraposition abhängig und nicht mehr von den Begrenzungen des Levels. Damit ist es jetzt möglich geworden, alle Boss-Gegner frei zu positionieren. Bisher mussten sich einige Bosse zwingend in der rechten unteren Ecke des Levels befinden, weil beispielsweise ihre Feuerbälle oder Bomben an den Levelbegrenzungen ausgerichtet wurden.
  • Schlüssellöcher reagieren jetzt auch auf Lock- und Unlock-Kommandos und öffnen oder schließen damit die dazu gehörige Tür, auch ohne dass der Spieler den passenden Schlüssel besitzen muss.
  • Diverse Auslöser-Objekte (z.B. Texteinblendungen und Einmal-Sounds) können jetzt nicht nur durch den Spieler sondern auch durch ein Activate-Kommando ausgelöst werden. Das machen die Arbeit mit dem Triggersystem flexibler. Jetzt können beispielsweise Texteinblendungen auch vom Betätigen eines Hebels abhängig gemacht werden.
  • Lokale Geräuschquellen (das sind bei uns unter anderem alle atmosphärischen Geräusche, die im Loop endlos abgespielt werden) können mit Kommandos aktiviert und deaktiviert werden (auch mehrmals). Auch einmalige Ereignis-Sounds können jetzt per Kommando scharf geschaltet werden. Das ist nützlich für Stellen, an denen ein Sound erst erklingen soll, wenn Stevie zum zweiten mal vorbei kommt.
  • Manchmal blieben Gegner beim Einsatz des Zeitlupenzaubers einfach auf der Stelle stehen. Ursache war ein Konflikt zwischen der von mir neu eingebauten sanften Beschleunigung der Gegner und einer Funktion, die zu kleine Geschwindigkeiten als Stillstand interpretierte. Letzteres ist z.B. wichtig, wenn ein mit der Pistole herunter geschossenes Item über den Boden hüpft.
  • Es gibt einen neuen Gegner, ich will an dieser Stelle aber nicht zu viel verraten.
  • Eingesammelte Amulett-Splitter (so nenne ich diesen Gegenstand momentan) werden gezählt und im Statistikbildschirm angezeigt, im Moment aber nur in Textform.

Tileset-Test mit neuen Tiles und Objekten

Die Feiertage haben wir beide ganz gemütlich verbracht, deshalb hat sich in den vergangenen Wochen auch nicht sonderlich viel getan.

  • Neben der Sprache (bisher leider nur Deutsch und Englisch) wird jetzt auch die Bildschirmauflösung beim ersten Start automatisch erkannt.
  • Das Entzünden von Feuer ist schon seit einer Weile möglich, jetzt hat dieser Effekt auch ein passendes Geräusch.
  • Das Amulett, das wir schon einige Male erwähnt haben, entwickelt sich weiter. Neu ist ein Item für den runden Mittelteil des Amuletts.
  • Es gibt zwei neue schwebende Lift-Plattformen.
  • Für besonders gruselige Stellen stehen jetzt Bilder von auf dem Boden herum liegenden Gegnern zur Verfügung.
  • Wir haben eine ganze Menge Tiles ergänzt: Erdboden, eine Friedhofsmauer, Konstruktionen aus Stahlträgern und Gehwegplatten. Das Meiste davon wird gleich für die ersten vier Levels gebraucht.

Ein aktuelles Bild mit vielen dieser Neuerungen gibt es auch. Das Bildschirmfoto stammt aus dem Editor, deswegen fehlt der Spielercharakter.

Mein voriger Statusbericht liegt leider schon einige Wochen zurück. Was hat sich seit dem getan?

  • Beim Einsammeln von wichtigen Items (vor allem Waffen und Zaubersprüche) verschwinden diese jetzt nicht mehr einfach mit einem Sterneneffekt. Wir fanden das verwirrend. Manchmal konzentriert man sich auf etwas ganz anderes und fragt sich, was man da wohl wohl gerade eingesammelt hat. Jetzt wird das Item vergrößert und blendet langsam aus.
  • Beim Einstellen der gleichzeitig hörbaren Geräuschquellen (von 16 bis 128, Standard ist 64) gab es einen Absturz, der vermutlich seit 2006 im Code schlummerte und bisher niemandem auffiel. Schuld waren die Feuerbälle, die den Neustart des Soundsystems nicht mitgemacht haben. Danke, QDOOS3.
  • Gegner können jetzt in mehreren Varianten animiert werden. Technisch ist das wie bei den Kollisions-Masken gelöst. Sobald eine passende Datei gefunden wird, wird für jeden Gegner zufällig eine der beiden Variationen ausgewählt. Aktuell verwenden wir das bei den Bewegungsarten von drei Gegnern - manche schlurfen gebeugt durch die Gegend, andere gehen aufrecht.
  • Der Sprachcode einer Übersetzung muss jetzt nicht mehr zwingend zweistellig sein (z.B. "de").
  • Eine zweite Flagge weht im Wind. Diese ist nicht im 3D-Programm sondern in einem eigens dafür entwickelten Tool entstanden (nach diesem simplen Prinzip). Das Tool selbst ist leider so spezialisiert und so langsam, dass ich es wohl nicht veröffentlichen werde.
  • Es gibt ein paar zusätzliche Erd-Tiles, Balken, Gras sowie weiter reduzierte Lücken zwischen den Steinplatten, die ich bisher übersehen hatte.
  • Wir haben einige Stellen beschleunigt, an denen Glow mehr oder weniger nur Zeit schindet, ohne dass es voran geht. Stirbt man, erscheint das Menü nun schneller und zeigt sofort die gespeicherten Spielstände zum Laden an. Auch das Inventar öffnet sich schneller.
  • Auch an unserem Black-Chronos-Intro, das gleich nach Spielstart zu sehen ist, habe ich ein klein wenig geschraubt. Der Effekt eines alten, pumpenden Fernsehers ist jetzt hoffentlich noch etwas realistischer.
  • In den Statistiken hatte ich versehentlich die Anzeige weg optimiert, wenn man null Geheimgänge gefunden hatte, es im Level aber welche gab. Genauso bei Gegnern und eingesammelten Gegenständen.

Es gibt etwas, das mich an diesem Projekt immer noch erstaunt. Obwohl ich schon so lange daran arbeite, fallen mit immer noch regelmäßig neue Situationen auf, an denen mich das Spiel mit irgend einer Kleinigkeit nervt. Etwa Meldungen, die zu wenig Information transportieren oder allgemein Situationen, in denen sich der Spielfluss nicht so flüssig anfühlt, wie ich das gern hätte. Aber es wird seltener. Dafür gibt es jetzt häufiger kleine Fehler, die ich selbst verursacht habe. Ich werte das mal als gutes Zeichen. ;-)

Also, was hat sich seit dem letzten Änderungsprotokoll getan?

  • Die Textmeldungen, die oben links erscheinen, werden nicht mehr mit in den Savegames gespeichert. Dass das überhaupt gemacht wurde, zeigt sehr schön, wie sorgfältig mein Vorgänger gearbeitet hat - nach wie vor meinen größten Respekt dafür. Aber die Meldungen dort oben sind kleine schnelle Hinweise für die jeweilige Situation, etwa wenn der Spieler zwei sich ausschließende Zauber gleichzeitig auslösen möchte. Lädt man einen Spielstand, hat man keinen Bezug mehr zu dieser Meldung. Sie ist die Antwort auf einen Tastendruck, der Minuten oder vielleicht sogar Tage her ist.
  • Erst kürzlich hatte ich eingebaut, dass ein von einer Leiter abgefeuerter Blitzangriff sowohl an der Leiter hängend gedreht als auch in den Sprung übernommen werden kann. In beiden Fällen gab es mehrere Folgefehler. Der offensichtlichste war, dass dem Spieler zwei Blitze aus dem Inventar abgezogen wurden.
  • Lock und Unlock bewirken jetzt bei allen Objekten, die keine besondere Behandlung für diese Kommandos haben, das selbe wie Enable und Disable. Das Objekt wird also aktiv und inaktiv, wobei es wieder auf das Objekt ankommt, ob und wie es auf diese Eigenschaft reagiert. Die meisten Objekte werden dadurch sichtbar und unsichtbar. Eine besondere Behandlung für Lock und Unlock haben nur Türen, Schlüssellöcher (wirkt sich auf die verbundene Tür aus) und Blitzbarrieren (hat die selbe Funktion wie eine Tür). Außerdem ist die Wirkung von Lock und Unlock bei allen Fallen umgekehrt: Mit Lock versperrt die Falle dem Spieler den Weg (negativer Effekt), mit Unlock wird der Weg frei (positiver Effekt). Ist das logisch? Man könnte es auch anders sehen, dass Lock die Falle abstellt. Aber dann bliebe trotzdem die Barriere als verwirrende Ausnahme.
  • Große Dekorationsobjekte erscheinen jetzt mit einem effektvollem Aufschlag auf den Boden, sofern die Gravitation für das Objekt aktiviert ist.
  • Weitere Objekte können jetzt erscheinen und verschwinden, z.B. Schilder und freier Text.
  • Datum und Zeit werden jetzt als Zahl im Savegame gespeichert, nicht mehr nur als Text. Das ermöglicht etwa lokalisierbare Datumsanzeigen. Beim Schnellladen (F9) wird das Autosave beachtet und hat Vorrang vor dem Quicksave, je nachdem, was aktueller ist.
  • Die Bilder, die als Belohnung für das Besiegen eines Bossgegners erscheinen, werden mit im Spielstand gespeichert. Das ist notwendig, weil der Tod eines Bossgegners nicht mehr automatisch zum Beenden des Levels führt, man also zwischendurch noch Savegames anlegen und laden kann. Leider führen solche Änderungen immer dazu, dass die Savegames nicht mehr kompatibel sind, aber das sollte verschmerzbar sein.
  • Es gibt eine neue Option in den Grafikeinstellungen, mit der das 4:3-Seitenverhältnis erzwungen werden kann, mit dem Glow intern arbeitet. Man hat nun also die Wahl, ob man seinen 16:9-Bildschirm gefüllt aber verzerrt sehen möchte oder ob man lieber das originale Seitenverhältnis mit schwarzen Balken mag.
  • Die Pinselgröße, dank der man im Editor große Flächen mit Tiles füllen und diese anschließend schattieren kann, ist jetzt mit Strg+Mausrad sehr schnell einstellbar. Genauso mächtig wie die "Zoom"-Funktion in der Werkzeugleiste werde ich das Mausrad aber vermutlich nicht machen. Die drei "Zoom"-Buttons (Strg++, Strg+- sowie Strg+0) verlängern den Weg von Plattformen und Fallen oder vergrößern den Radius von Objekten, die einen Radius haben. Sonst vergrößern sie das Objekt selbst, wenn eins ausgewählt ist. Im Tile-Modus vergrößern sie die Auswahl, wenn eine aufgespannt ist (nützlich für gestufte Schattierungen). Und wenn nichts davon zutrifft, verändern die Tasten wie gesagt die Pinselgröße. Nur zoomen im eigentlichen Wortsinn geht nicht. Deswegen zeigen die Multifunktions-Buttons auch keine irritierenden Lupen mehr sondern nur noch ein Plus, ein Minus und den Text "1:1".
  • Im Editor gibt es jetzt zwei verschiedene Visualisierungen für die Radien von Soundqullen. Eine sehr detaillierte in der Debug-Ansicht (Strg+D) und eine unscheinbare in der WYSIWYG-Ansicht.
  • Das Kommando DumpResources zeigt den Grafikkartenspeicher-Verbrauch jetzt auch direkt auf der Konsole an.
  • Hier und da weitere Performance-Optimierungen, z.B. sind einige Stringoperationen durch einfachere Operationen mit Einzelzeichen ersetzt.

(11 Kommentare)

Fullscreen Blood Gore Splatter Effect

Mehrere Monate ruhte das Projekt. Ich bin gespannt, ob jemand merkt, dass sich hier wieder etwas tut.

  • Die bildschirmfüllenden Bluteffekte verdecken nicht mehr das Spielgeschehen in der Mitte des Bildschirms sondern werden am Bildschirmrand gezeichnet, wie man es auch von vielen anderen Spielen kennt.
  • Einige der älteren Gegner waren uneinheitlich dunkel und je nach Hintergrund sehr schlecht zu erkennen. Jetzt sind sie einheitlich hell.
  • Unser Held wurde bisher gnadenlos zerquetscht, wenn er ungünstig auf einem Fahrstuhl stand und sich den Kopf an einer Kante stieß. Jetzt wird er statt dessen leicht zur Seite geschoben, sofern über seinem Kopf genug Platz dafür ist. Die schwebenden Plattformen fühlen sich damit gleich viel weniger gefährlich an. Frustrierende Situationen, in denen man plötzlich ohne offensichtlichen Grund starb, sollten damit deutlich seltener auftreten.
  • Dank Holgers Hilfe – er ist der ursprüngliche Schöpfer der Engine und eigentlich nicht mehr am Projekt beteiligt – gibt es jetzt sogar eine Optimierung, mit der sich unsere Spielfigur auf schrägen Böden besser steuern lässt. Die Idee ist, dass sie beim Laufen sozusagen an der Schräge kleben bleibt und es damit auch möglich ist, zuerst die Pfeil- und dann die Sprungtaste zu drücken. Leider greift die Optimierung in vielen Fällen noch nicht.
  • Mit der Kamerasperre sind jetzt alle ehemaligen positionsabhängigen Trigger (diese wurden schlicht aktiv, wenn sich der Spieler rechts davon befand) in flexiblere Radiustrigger umgewandelt.
  • Ich arbeite weiter an der Gegner-KI unserer neuen Bossgegner. Einige sollen Säure spucken. Das glaubwürdig darzustellen, ist gar nicht so einfach.
  • Den meisten unserer Gegner wird jetzt auch manchmal langweilig und sie machen eine Pause. Sie bleiben stehen, geben Geräusche von sich, drehen sich um und laufen wieder los. Das passiert relativ selten, damit es etwas Besonderes bleibt. Und natürlich sind die fliegenden Gegner davon ausgenommen, sie können ja nicht einfach in der Luft stehen bleiben.
  • Der auf dem Boden hockende Witheg macht etwas weniger Krach. Sein Geräusch war länger als der Abstand, in dem es abgespielt wurde. Das heißt, es war immer doppelt zu hören, wie ein Echo.
  • Gegner, die aus der Luft nach unten fallen, beispielsweise beim Bossgegner George Devil oder per Radius-Trigger, rudern in der Luft nicht mehr mit den Beinen und warten nach der Landung auch ganz kurz, ehe sie los laufen.
  • Bombendrachen bewegen sich wie die Gegner am Boden etwas flüssiger und drehen nicht mehr ganz so schlagartig um, wenn sie ein Ende ihrer Bahn erreicht haben.
  • Viele weitere Feinheiten bei den Gegnern, zum Beispiel ein sehr seltener Absturz beim Angriff des Feuerdrachens oder ein Fehler in der Fluganimation von Satan, die sich in einer Endlosschleife verfing, wenn er an einer Stelle mit zu niedriger Decke positioniert wurde.
  • Die blinkenden Zeitbalken für fast leere Zaubersprüche blinkten bisher so, dass sie immer ganz sichtbar oder ganz unsichtbar waren. Man sah sie also kurzzeitig gar nicht. Jetzt blinken sie transparent, so dass man sie immer noch ablesen kann.
  • Auch unter der Haube wird momentan wieder geschraubt. Es ist endlich möglich, für jedes beliebige (auch nicht animierte) Objekt eine von der tatsächlichen Texturgröße abweichende Bounding Box festzulegen. Diese Rechtecke werden in unserer Engine für zwei Dinge verwendet: Für die Kollisionserkennung und die Markierung im Editor (sozusagen die "Kollision" mit der Maus). Damit ist es jetzt möglich, schnell und ohne (zusätzliche) Codeänderung Objekte zu schaffen, die unser Held als Kletterhilfe verwenden kann.

Viel ist in den vergangenen Monaten nicht passiert, aber genug, um unsere schon veröffentlichte Vorschauversion zu aktualisieren. Wie die erste, zweite und dritte Preview enthält auch diese immer noch die selben vier Levels. Nur die Technik haben wir auf den neusten Stand gebracht.

Die wichtigsten Änderungen in Kürze:

  • Bildschirmauflösung und Sprache werden beim Start automatisch erkannt.
  • Der Spieler startet komplett ohne Waffen ins Spiel.
  • Das Einsammeln von Items wird klarer animiert.
  • Nach dem Benutzen eines Zauberspruchs wird immer zurück zur vorigen Waffe gewechselt.
  • Man kann einfacher kämpfen, während man an einer Leiter hängt.
  • Der Spieler wird nicht mehr so einfach von Fahrstühlen zerquetscht.
  • Die Gegner drehen nicht mehr ruckartig mitten auf ihrem Weg um sondern bleiben kurz stehen.
  • Die Helligkeit einiger Gegner und andere grafische Feinheiten wurden verbessert.
  • Das Trigger- und Event-System wurde weiter verbessert und flexibler gemacht.

Von den neuen Gegnern und vor allem Bossgegnern sieht man in dieser Demo absichtlich noch nichts. Das heben wir uns für das fertige Spiel auf.