11/11/2011

Ein paar Gedanken zu Adobe und Flash im Allgemeinen

Seit dem 9.11.2011 ist klar, Adobe verabschiedet sich von Flash und setzt nun voll auf HTML5. So schreibt es jedenfalls unter anderem Spiegel Online und viele Blogger und User in diversen Foren springen mit auf diesen Zug auf. In Wirklichkeit stellt Adobe „nur“ die Entwicklung des Flash Players für mobile Endgeräte, bzw. deren Betriebssysteme ein. So wird z.B. der Flash Player für Android nicht mehr weiterentwickelt. Das betrifft jedoch nicht den Flash Player den man auf seinem Desktop PC installiert hat oder auf seinem Laptop. Hier muss man also differenzieren und nicht gleich eine ganze Technologie für tot erklären.
Nach dieser Meldung („Adobe to cease developing mobile Flash plugin for Android and PlayBook“) brachen alle Dämme und es wird mächtig viel diskutiert. Ich möchte hier einfach zum jetzigen Zeitpunkt meine aktuelle Sicht der Dinge vermitteln.

Aus meiner Sicht ist die Entscheidung von Adobe ein Stück weit nachvollziehbar. Aber nur ein Stück weit. Betrachtet man das Ganze auf etwas längere Sicht, muss man sich schon fragen ob Adobe hier nicht etwas panisch und übereilt entschieden hat. Der Schuss könnte für Adobe in ein paar Monaten/Jahren böse nach hinten losgehen.

Was spricht für die Entscheidung. Viele mobile Endgeräte haben einfach nicht genug Saft um aktuelle Flashseiten mit dem neuesten technischen Schnickschnack ordentlich darstellen zu können. Viele dieser Seiten sind zudem nicht für so kleine Displays konzipiert (speziell bei Smartphones) worden und brauchen nicht selten eine Maus um komfortabel bedient werden zu können. Und genau das ist auch der Punkt, bzw. der Fehler. Man war einfach davon ausgegangen das diese eigentlich nicht für mobile Endgeräte konzipierten Seiten schon irgendwie akzeptiert werden würden. Aber das trifft nicht zu und viele User haben das Angebot eines Flash Players auf ihren Smartphones so gut wie nicht genutzt. Die wenigen Tablets die neben dem iPad auf dem Markt sind spielen zum jetzigen Zeitpunkt noch kaum eine Rolle. Viele User benutzen lieber alle möglichen Apps, anstatt sich mit dem Flash Player für mobile devices über nicht optimierte Flash Microsites zu quälen. Da sich Flash verstärkt zur Entwicklung von Apps für alle möglichen Plattformen eignet scheint dieser Schritt von Adobe auf den ersten Blick also nachvollziehbar.

Was spricht gegen die Entscheidung. Das Ganze ist aus meiner Sicht von Adobe viel zu kurzsichtig gedacht worden. Schon in naher Zukunft wird es immer mehr Tablets geben. Das Surfverhalten der Leute wird sich entsprechend ändern. Weg vom Desktop PC und hin zum Tablet. Und wie bei allen Geräten werden sich auch Tablets weiter stark verbessern. Die Akkulaufzeiten werden steigen und natürlich werden die Prozessoren schneller werden. Die Displays von Tablets haben jetzt schon eine ausreichende Auflösung und auch diese wird sich mit Sicherheit noch in nächster Zeit erhöhen. Das sind alles Argumente die für einen Flash Player auf mobilen Endgeräten wie Tablets sprechen und gegen die totale Konzentration auf Apps. Natürlich müssen die Flashentwickler darauf achten das ihre Inhalte auch ohne Maus zu bedienen sind, aber müssen das nicht alle Entwickler die für Geräte mit Touchscreens veröffentlichen wollen? Aber das spielt ja jetzt erst mal keine Rolle mehr, denn in Zukunft werden sich alle Tablets, Smartphones und ähnliche Geräte wie die von Apple verhalten und im Browser keine Flash Inhalte mehr darstellen können. Bleibt natürlich die Frage ob sich die User dann statt der Flashseite eine entsprechende App auf ihr Gerät ziehen. Und genau das kann bezweifelt werden.

Die Folgen dieser Entscheidung. Könnte man doch nur in die Zukunft blicken. Aber es zeichnen sich ja schon bestimmte Entwicklungen ab und diverse Szenarien könnten denkbar sein.

Spiegel Online schreibt: „Letztlich wäre der flächendeckende Wechsel zu HTML5 ein Gewinn für alle - denn ein offener, einheitlicher Standard ist am Ende gut für Nutzer, Entwickler und Hardware-Hersteller.“ Dieses Fazit ist ungefähr genauso kurzsichtig wie die Entscheidung von Adobe. Der flächendeckende Wechsel zu HTML5 wäre ein Gewinn für alle? Es gibt aktuell keine Vernünftigen Tools zum erstellen von HTML5 Seiten. Der Aufwand in der Produktion ist also deutlich höher und somit auch die Kosten zum erstellen von Inhalten. Was hat der Nutzer davon? Der Nutzer kriegt nun HTML5 Seiten zu sehen die man mit Flash so schon vor 10 Jahren erstellen konnte. Das ist ein echter Rückschritt und auch die Ladezeiten sind deutlich länger. Was hat der Entwickler davon? Wegen nicht vorhandener Tools gestaltet sich die Entwicklung deutlich aufwändiger als mit Flash. Was zum Ergebnis hat, dass die Kosten für die Produktion steigen, was man erst mal einem Kunden vermitteln muss, der wie gesagt ein Produkt zu sehen kriegt das es schon so vor 10 Jahren hätte geben können. Und was haben die Hardware Hersteller davon? In dem Spiegel Online Artikel steht das viele Ihre Werbekampagnen umstellen müssen, was sicher nicht kostenlos erfolgen wird. Es entstehen den Herstellern also extra Kosten, weil sie auf das falsche Pferd gesetzt haben und eines ihrer wichtigsten Argumente gegen iPhone und iPad, nämlich Flash im Browser darstellen zu können, geht ihnen verloren. Soviel zum Fazit von Spiegel Online.

Langfristig wird Flash in Browsern immer weiter an Bedeutung verlieren. HTML5 wird Stück für Stück Flash das Wasser abgraben. Die Entscheidung von Adobe wird diesen Vorgang nur noch beschleunigen. Und es werden weitere Technologien kommen die Flash immer weiter ersetzbar machen. Es seien an dieser Stelle z.B. für den 3D Bereich nur kurz WebGL und OpenGL ES erwähnt. Schon vor einigen Jahren gab es eine evtl. vergleichbare Situation in der der Shockwave Player durch den Flash Player verdrängt wurde, obwohl Shockwave damals schon viele Jahre vor Flash 3D darstellen konnte. Es setzt sich halt nicht immer die bessere Technologie durch. Wie schnell dieser Wandel vom allgemeinen Hype beflügelt stattfinden wird lässt sich kaum einschätzen, aber es wird sicher nicht sofort passieren. Wir werden auch noch im nächsten Jahr viele schöne Flash Seiten zu sehen bekommen.

Wo aber bleiben langfristig die Flashentwickler wenn sich die Landschaft in den nächsten Jahren in diese Richtung verändert? Diese müssen sich wohl umstellen und ggf. andere Bereiche suchen. So wird Flash zwar immer weiter aus der Browser Landschaft verschwinden, aber mit der gerade erst am Anfang stehenden App-Entwicklung aus Flash heraus ergeben sich auch ganz neue Möglichkeiten und Chancen. Werbemittel und Online Spiele werden zudem ein sehr großes Thema bleiben und wer weiter Frontend im Browser entwickeln möchte sollte sich mal mit HTML5 beschäftigen. Wer als Flasher noch mit Actionscript 1 zu tun hatte wird sich schnell mit JavaScript zurechtfinden. Auch wenn ein Umstieg von Actionscript 3 zu JavaScript sicher hart und unschön (zurück in die Steinzeit) ist. Falls das alles so zutreffen sollte wird der Flashentwickler also entweder weiter mit Flash arbeiten, aber immer weniger Online Inhalte erstellen, oder aber er wendet sich langsam von Flash ab und macht sich mit neuen/anderen Technologien vertraut um weiterhin Online Inhalte erstellen zu können.

Bleibt noch die Frage was Adobe und andere Hersteller auf ihre Ankündigungen folgen lassen werden HTML5 voran zu bringen. Bisherige Versuche wie Adobe Muse und Adobe Edge können höchstens erste vorsichtige Schritte gewesen sein geeignete Tools für Entwickler zu schaffen. Hier muss einfach noch sehr viel mehr passieren.

Der Hype um HTML5 ist jedenfalls unglaublich groß zur Zeit. Bleibt zu hoffen, dass er auch berechtigt ist. Aus jetziger Sicht ist er das für mich jedenfalls nicht. Die Entwicklung im Allgemeinen wird mit einem größeren Aufwand verbunden sein um Ergebnisse erzielen zu können die es schon vor 10 Jahren gab. Falls sich HTML5 nun wirklich durchsetzt und nicht rasend schnell weiterentwickelt wird drehen wir im Web die Uhr ein paar Jahre zurück. Wird das die aktuelle Entwicklung aufhalten? wohl kaum.

Ich würde mir für die Zukunft eine Landschaft mit Flash Player Plugin auf allen Systemen wünschen. Man wird ja noch träumen dürfen. Dann gäb es diese ganze Diskussion gar nicht, denn noch ist HTML5 aus meiner Sicht nicht reif genug. Und wer weiß was die Zukunft noch Flash-freundliches bereit hält. Erstens kommt es anders und zweitens als man denkt. Als Entwickler sollte man sich jetzt durch den Hype nicht verrückt machen lassen und weiter alles genau beobachten.

Zu dem Thema gibt es unzählige Links. Hier eine kleine Auswahl:
Lee Brimelow
Mike Chambers
Thibault Imbert
Grant Skinner

10/24/2011

Starling Framework Performance Test

Ein kleiner Performancetest mit dem neuen Starling Framework. Als Basis für den Test hab ich eine Illustration von Lana Del Rey genommen und die einzelnen Bereiche des Bildes in MovieClips unterteilt. Insgesamt besteht das Bild aus 1068 MovieClips. Das war eine Plackerei! Gezeichnet habe ich das Bild komplett in Flash nach einer Fotovorlage, wobei ich sagen muss das Flash CS5 viel zu oft abstürzt. Macht echt wenig Spaß aktuell, ich hoffe das wird mit CS5.5 und den darauffolgenden Versionen wieder deutlich besser. Mit meinem aktuellen Wissensstand was Starling betrifft, gab es für mich dann nur die folgende Lösung meinen Test weiter fortzuführen. In einer Schleife lese ich alle 1068 MovieClips (flash.display.MovieClip) aus und zeichne diese jeweils in bitmapData‘s (flash.display.BitmapData) rein um dann per „Texture.fromBitmapData“ die entsprechenden Texturen für die Starling Images zu erzeugen. Danach kommen nur noch ein bisschen Mathe und TweenLite zum Einsatz um die Einzelteile zu bewegen.
Die Performance spricht für sich. In anderen Tests hab ich sogar mehrere tausend Objekte bewegen können. Bleibt noch zu hoffen das Stage3D und somit auch Starling bald für mobile Anwendungen verfügbar sind. Kann es kaum abwarten solche Ergebnisse auf einem iPad oder anderen Geräten zu sehen.
Zum starten einfach aufs Bild klicken:


(Um die Demo zu starten einfach auf das Bild klicken. Flash Player 11 required.)

10/11/2011

Starling Framework with FlashDevelop

Endlich gibt’s den Flash Player 11 und mit ihm die neue Stage3D API. Stage 3D, vorher unter dem Codenamen „Molehill“ bekannt, spricht die Grafik-Hardware z.B. unter Windows über DirectX an. Unter Mac OS X und Linux geschieht das über OpenGL. Bei mobilen Endgeräten soll das über OpenGL ES laufen, was aber aktuell noch nicht funktioniert. Abgesehen von Mobilgeräten ist Stage 3D damit mit allen gängigen Grafikkarten kompatibel und mit dem neuen Flash Player 11 Plugin quasi für jeden Browser sofort verfügbar. Stage 3D beschleunigt neben 3D- auch 2D-Inhalte und bringt Flash insgesamt auf ein extrem hohes Leistungsniveau.

Hier ein schönes Beispiel. Unreal Tournament 3 im Browser dank Stage3D!



Für die Entwicklung von Spielen ist die Performance optimal, auch und besonders bei 2D Spielen können bisher ungeahnte Ergebnisse erziehlt werden. Und genau hier tritt jetzt das Starling Framework auf den Plan. Das Framework erleichtert den Umgang mit Stage 3D und erlaubt es Flash Entwicklern mit den von ihnen bekannten Mitteln 2D-Inhalte GPU beschleunigt zu erstellen. Mit nur ein paar Kniffen ist es möglich über die bekannte „Display List“-Architektur, die Starling quasi nachbildet, Sprites, MovieClips und Images auf der Stage, bzw. in diesem Fall dann Stage3D zu adden.
Hier gibts ein paar Starling Demos. Hier ganz offiziell und hier noch mehr.

An dieser Stelle nun eine kleine Erklärung was man mit FlashDevelop anstellen muss, damit man mit dem Starling Framework arbeiten kann.


Zunächst einmal braucht es natürlich die neueste FlashDevelop Version. Aktuell ist das „FlashDevelop 4.0.0 RC1“. Bitte unbedingt dort den Installationshinweisen folgen. Dort wird unter anderem empfohlen, ältere Versionen von FlashDevelop vor der Installation zu desinstallieren.

Bei der Installation zieht sich FlashDevelop auf Wunsch automatisch das neueste Flex SDK. Geschieht das nicht, oder es kam dabei zu einem Fehler braucht es die Flex SDK natürlich trotzdem. Auf jedenfall sollte es die neueste Version sein. Aktuell ist Version: „4.5.1.21328“!

Nachdem jetzt FlashDevelop und die Flex SDK heruntergeladen und installiert worden sind braucht es noch den neuen Flash Player 11 als Projektor. Einfach unten auf der Seite je nach Betriebssystem auswählen. Als Windows Benutzer hab ich mich für den „Download the Windows Flash Player 11.0 Projector content debugger (EXE, 8.91MB)“ entschieden.

Jetzt geht’s an die Einstellungen. Einfach ein neues FlashDevelop AS3 Projekt starten.


Dort dann unter „Project“ und dann „Properties“ die Karteikarte „Output“ auswählen. Dann bei „Platform“ „Flash Player“ auswählen und als Version dahinter „11.0“ nehmen. Bei „Test Project“ dann noch „Play: External Player“ auswählen und danach dann zur Karteikarte „Compiler Options“ wechseln.



Dort die „Additional Compiler Options“ anklicken. Rechts in der Zeile erscheint ein kleiner Button. Diesen anklicken und in dem sich öffnenden Fenster folgende Zeile eintragen und anschließend mit „OK“ bestätigen.


-swf-version=13



Ist in dem Fenster bereits etwas eingetragen einfach eine neue Zeile machen und dort dann rein damit.

Das waren die Einstellungen bei den Properties. Einfach mit „OK“ bestätigen und weiter geht’s.
Jetzt unter „Tools“ und dann „Programm Settings…“ links „AS3Context“ anklicken. Nur falls FlashDevelop nicht zu Begin schon wie beschrieben die Flex SDK mit installiert hat, muss an dieser Stelle der Pfad eingetragen werden, zu dem Ordner wohin die Flex SDK heruntergeladen und ggf. entpackt worden ist. Dazu im rechten Bereich auf die Zeile „Installed Flex SDKs“ klicken und rechts auf den kleinen Button der nun erschienen ist.

Hier muss auf „Hinzufügen“ geklickt werden. Oben dann auf „New SDK“ klicken und rechts dann unter „Location“ den Pfad zur Flex SDK eingeben. Ist der Pfad korrekt erscheinen bei den Properties darunter Name und Version. Das Ganze mit „OK“ bestätigen.




Jetzt noch im „Settings“ Fenster links, ein gutes Stück unter „AS3Context“ den Punkt „FlashViewer“ auswählen. Rechts dann unter „External Player Path“ den Pfad zu der „FlashPlayer11.exe“ eintragen.



Das wars. Jetzt ist FlashDevelop in der Lage für den Flash Player 11 zu veröffentlichen. Die ganze Stage3D Power steht dem Entwickler zur Verfügung und das Starling Framework kann eingesetzt werden.
Hier ist der Download Link und hier gibts das ultimative PDF zum lernen.

5/09/2011

Scaling a SWF's Stage via Actionscript and ExternalInterface

Nachdem ich vor einigen Tagen 2 Threads im Flashforum gelesen habe kam ich auf die Idee einer SWF in einer HTML Datei eingebettet die sich selbst skalieren kann. Also das man per ActionScript und während des laufenden Betriebs die Größe der Stage anpassen kann. Da stageWidth und stageHeight ausschließlich nur zum Auslesen der Bühnengröße geeignet sind und es auch sonst keine Möglichkeiten gibt mit ActionScript Einfluss auf die Größe der Stage zu nehmen musste ein anderer Weg her.
Eigentlich super simpel, und es funktioniert einwandfrei.
Ich bin dafür einfach den Weg über JavaScript gegangen. Das Scaling erledigt also eine JavaScript function von mir die ich aus Flash heraus mit „ExternalInterface.call“ anspreche. Dabei übergebe ich einfach 2 Parameter für die Width und Height und das JavaScript erledigt den Rest. Das ganze klappt sogar so gut, dass man das auch mit einer Tweening Engine kombinieren kann, wodurch die Skalierung beliebig animiert werden kann.

Ich bin mir nicht sicher ob das ganze überhaupt sehr sinnvoll ist, aber ich wollte einfach mal ausprobieren ob es möglich ist.
Das ganze anschauen könnt Ihr euch HIER.
Sources, Scripte und weitere Informationen findet Ihr im entsprechenden Flashforum Thread.

4/01/2011

Cloud Cover Simulator

Nachdem ich bei mehreren Projekten einen Hintergrund mit Wolken brauchte hab ich mich zunächst im Web auf die Suche begeben. Die meisten Lösungen waren entweder unbefriedigend oder echte Performance Killer.
Die von mir erstellte Klasse (AS3) basiert auf dem Clouds Tutorial von Dan Gries und Barabara Kaskusz. Die Lösung mit grayscale Perlin noise und dem ColorMatrixFilter Wolken zu erstellen ist einfach optimal. Ich hab dieses Prinzip übernommen und an ein paar Stellen etwas aufgebohrt. So lassen sich alle Parameter zu jeder Zeit anpassen und es ist möglich über den Scale Factor die Auflösung so zu verringern, dass man den Wolkeneffekt auch problemlos bei Größen mit mehr als 400x400 Pixeln einsetzen kann. Zudem ist es möglich die Wolken abhängig von der Mausposition zu steuern was ein ganz netter Effekt ist wie ich finde.
Um die angesprochenen Parameter einstellen zu können muss die Anwendung einfach gestartet werden. Wer mit der Maus in die linke Ecke unten fährt wird dann auch direkt erkennen wie er die Wolkenanimation beeinflussen kann.


Verwendet werden:
Minimal Comps by Keith Peters
TweenNano by GreenSock