Interview mit Adam Saltsman

Adam Saltsman (AdamAtomic) ist ein Spieleentwickler und Entwickler von flixel (einer Open Source AS3-Spielebibliothek). Er hat kürzlich einige Zeit damit verbracht, einige Fragen zu beantworten, wie er mit Flash angefangen hat und welche Arbeit er gerade macht.

Hallo Adam, erzähl uns ein wenig über deinen Hintergrund und wie du mit dem Bau von Flash-Spielen angefangen hast. Bist du ein Autodidakt??

Ich habe einige Programmierkurse an der Universität besucht und dann einige Jahre als Softwareentwickler für eine kleine Firma hier in Austin gearbeitet. Ich bin dort für ein paar Jahre als freischaffender Künstler gegangen, und während dieser Zeit habe ich angefangen, Flash zu lernen. Mein Freund Ivan hat sich ein paar Stunden von seinem Tag genommen, um mir die Seile zu zeigen und ich war los! Ungefähr 6 Monate nach dem Start begann ich mit dem Experimentieren mit Pixel-Flash-Material mit höherer Leistung. Es dauerte mindestens noch ein Jahr, bis die erste Version von flixel formalisiert wurde.

Viele Leute, darunter auch ich, haben wegen Spielen in Flash angefangen. Was tragen Sie zu Ihrem Erfolg als unabhängiger Spieleentwickler bei und welchen Rat haben Sie für andere, die den Traum leben möchten??

Machen Sie kleine Spiele! Machen Sie kleine polierte Demos oder Prototypen und teilen Sie sie mit allen. Dies ist nicht unbedingt der Weg zum finanziellen Erfolg, aber meiner Erfahrung nach ist es der beste und schnellste Weg, um zu lernen, wie man Spiele gestaltet. Ich habe vielleicht etwa ein Dutzend einwöchige Spiele gemacht und fange gerade an, mich mit meinem Designprozess sehr wohlzufühlen.

Ihre Flash-Spiele haben einen retro-pixelierten Look. Sprechen Sie darüber, wie Sie mit Bitmaps auf der Bühne umgehen. Verwenden Sie eine Kachel-Engine, Blitting oder andere Techniken, um eine schnelle Reaktion, wenig Speicherplatz und hohe Bildraten zu erreichen?

Flixel verwendet einen mehrschichtigen Rendering-Ansatz. Zuerst überprüft Flixel, ob die Grafik skaliert oder gedreht wurde. Wenn dies der Fall ist, verwendet sie den Flash-Vektorrenderer, um sie wie ein normales Sprite- oder Movieclip-Objekt zu zeichnen. Wenn es jedoch nicht gedreht wurde, selbst wenn es getönt oder das Alpha geändert wurde, verwendet Flixel einen sehr schnellen Blitting-Aufruf (copyPixels), um die Grafik in den Grafikpuffer zu stempeln. Der Grafikpuffer wird mit dem Vector Renderer skaliert und gerendert (um den Effekt der vergrößerten Pixelgröße zu erzielen).

Es ist interessant zu sehen, dass Sie nicht nur Spiele in ActionScript entwickeln. Sprechen Sie über die anderen Plattformen, auf denen Sie entwickeln, und ob es Ähnlichkeiten mit der Arbeit mit Flash gibt?

Mein "Tagesjob" ist sozusagen das Erstellen von Spielen für das iPhone in C ++ und Objective C. Objective C ähnelt Flash in gewisser Weise merkwürdig, nur mit mehr Klammern!

Paper Moon, das in Unity 3d erstellt wurde, ist ein unglaubliches Plattformspiel mit einem glatten Papierausschnitt. Können Sie uns etwas über Ihren Beitrag zur Entwicklung des Spiels erzählen??

Paper Moon war eine Zusammenarbeit mit dem kanadischen Studio Infinite Ammo, das Unity für zukünftige Projekte lernen wollte. Ich war nur zu gerne, um sie mit einigen Kunstwerken zu unterstützen!

Die Entwicklung von Spielen ist enorm an den Ressourcen eines Systems, vor allem an Flash, dem jegliche GPU-Beschleunigung fehlt. Sprechen Sie mit uns über die Schritte, die Sie unternehmen, um eine optimale Leistung im Code selbst sicherzustellen.

Flixel leistet nur ein paar Dinge für die Leistung. Man verzichtet darauf, möglichst copyPixels anstelle des Vector Renderers zu verwenden. Dies führt meistens zu einer Leistungssteigerung von etwa 90%. Die Verwendung der vergrößerten, klumpigen Pixel ist schön, da Sie zwar immer noch einen Großteil des Browserfensters ausfüllen, die eigentlichen Rendervorgänge jedoch in einem relativ kleinen Bereich ausgeführt werden. Schließlich ermutigt flixel Sie nicht, Ihre Spielobjekte zu recyceln. Alle Demo-Spiele bis github verwenden vorab zugewiesene Arrays, beispielsweise für Geschosse oder Partikeleffekte. Objekte verfügen jetzt über eine reset () - Funktion, die dies noch einfacher macht.

Bei einem normalen Spielprojekt, mit wie vielen Personen arbeiten Sie normalerweise und mit welchen typischen Zeitrahmen?

Nur ich und 4-7 Tage. Das könnte sich ändern, ich habe für das nächste Jahr ein paar größere Sachen auf dem Teller…

Wenn Sie sich für eines entscheiden könnten, was würden Sie als Ihren Lieblingsteil von ActionScript 3 betrachten? Ebenso was würden Sie ändern oder umsetzen wollen?

Generell mag ich, wie schlampig es ist. Wenn es eine strengere Sprache wäre, denke ich, dass Prototyping und Iteration ein viel langsamerer, frustrierender Prozess wären. Einige Dinge, mit denen ich Probleme habe, sind das Zuweisen von Werten zu primitiven Parametern innerhalb einer Funktion (ich kann nur einen bestimmten Zuweisungsoperator dafür nicht kennen) und auch Verweise auf Funktionen erstellen, die zu anderen Objekten gehören. Das mag auch an meiner eigenen Unwissenheit liegen, aber hier mag die Art und Weise, wie C # Funktionszeiger (Delegierte?) Behandelt, nützlich sein.