Archiv: Kategorie Webdesign

Gilbert Gress ruft euch an!

07.04.2010

http://www.gress-cam.ch

Eine interaktive Aufklärungskampagne der Suva.

Das Projekt

Gemeinsam mit Angelink haben wir vor kurzem das Projekt gress-cam.ch realisiert.
Hier tritt Gilbert Gress als Botschafter der schweizer Unfallversicherung Suva auf. Die Kampagne stellt wichtige Informationen zur Suva bereit und klärt über Unfallprävention im Sport auf.

gilbert_web

Die Idee

Die Idee war direkt mit Gilbert Gress in Kontakt zu treten, der einem dann erklärt auf was man beim Sport besonders achten muss um Unfälle zu vermeiden. Dazu soll er sogar Nutzer anrufen, die ihm seine Telefonnummer hinterlegen.

Realisiert wurden diese Anforderungen mit einer Microsite, die die Webcam von Gilbert Gress zeigt. Gilbert klärt hier einen Besucher über Telefon auf was alles gefährlich sein könnte. Nach Beendigung des Gesprächs fordert die Trainerlegende den Besucher auf, seine Telefon/Natelnummer einzugeben. Dann könne er einen aus der Liste der Besucher aussuchen und einen Rückruf tätigen.

gresscam-dreh4

Umsetzung

Damit Gilbert Gress wirklich anrufen kann, benötigten wir einen Telefonservice, der ein Tonband von seiner Stimme in der richtigen Sprache abspielt und dies mit dem Webcam-Video synchronisiert. Die Dreharbeiten fanden nicht bei Gilbert Gress zu Hause, sondern bei uns im eingerichteten Studio statt.

gresscam-dreh5

gresscam-dreh1_grossgresscam-dreh3_grossgresscam-dreh2_gross

Das gesamte Video besteht aus einem einzigen progressiven Stream. Während der Anrufer wartet, loopt ein Video Controller vor und zurück. Sobald der Teilnehmer den Anruf annimmt, wird die Lautstärke des Videos nach unten geregelt und das Video spielt synchron weiter ab. Hat der Anrufer keine Nummer eingegeben, wird er wiederum zum Zaungast und kann die Unterhaltung mithören. Am Ende verabschiedet sich Gilbert Gress und wünscht den Zuschauern alles Gute.

Grossen Wert wurde auf die sharing-Funktionen gelegt, um es dem Besucher so einfach wie möglich zu machen, seinen Freunden von der Seite zu erzählen. Das Feedback Formular ermöglicht es, zusätzlich Rückfragen und Vorschläge zu tätigen.

Als Grundstock verwendeten wir das PureMVC Framework. Einige andere Libraries (fnfo,fcfg,puremvc,puremvc-syncer,asaf3,flayout,osmf,resm,servicelib,tweener) reduizierten unseren Arbeitsaufwand erheblich.
Hiermit ein Dankeschön an die Entwickler.

Ein tolles Projekt mit vielen Raffinessen.

gresscam-dreh6

Wir erschaffen interaktive Erlebnisse

08.11.2009

… Was dafür notwendig ist, und wie wir das erreichen, wollen wir in einem kurzen Image-Film zeigen, der ab sofort hier und auch auf unserer Webseite zur Verfügung steht.

Guave Studios – Corporate Film from Guave Studios on Vimeo.

Genetische Algorithmen Mandalaa.com

08.07.2009

Mit mandalaa.com haben wir ein Projekt für einen unserer Kunden verwirklicht, dass den Benutzer Blumen generieren lässt. Er kann die Form, Farbe und Maserung dieser durch mutieren und kreuzen beeinflussen. Die Blumen entwickeln sich dadurch weiter und können dann gespeichert und weiterversandt werden.

Ein Video des entwickelten Prototyps gibts hier:

Mandalaa – Webproject from Guave Studios, Zürich on Vimeo.

Parameter Haufen

Die Daten der Blumen selbst bestehen aus einem Parameterhaufen, der die verschiedenen Eigenschaften beschreibt. Die Vielfalt der Blumen zeigt, dass mit Hilfe relativ weniger Parameter extrem viele verschiedene Möglichkeiten bestehen. Es gibt auch Beziehungen zwischen Parametern, die für die Mutation und die Kreuzungen wichtig sind.

Genetische Algorithmen

Hinter der Applikation verbergen sich einige genetische Algorithmen. Jedoch fehlt ein entscheidender Schritt zur Genetik. Der Einfachheit halber haben wir auf Deathrules (Regeln für das Sterben einer genetischen Linie) verzichtet und den Blumen konkrete Regeln vorgegeben. Dies hat einen entscheidenden Vorteil, da wir die somit nicht darstellbaren Formen von vornherein ausschliessen.

Reproduzierbare Zufälle

Da wir zu viele Parameter bräuchten um alles zu beschreiben, brauchten wir Zufälle. Diese mussten aber reproduzierbar sein, sonst würde eine vom Nutzer zuvor gespeicherte Blume bei jedemProgrammaufruf ein bisschen anders ausschauen. Dies umgingen wir mit einem “Pseudo-Random-Generator” mit Offset. Was hat das Ganze dann aber noch mit Genetik zu tun? Der Offset ist sowas wie die Genetik. Sie bestimmt bei jeder Blume ihre Charakteristiken.

Erweiterbarkeit

Da wir davon ausgehen, dass sich dieses Projekt weiterentwickelt, war die Erweiterbarkeit ein wichtiger Punkt. Was dabei problematisch ist, sind die bisher generierten Blumen. Denn sobald Darstellungsalgorithmen geändert oder erweitert werden müssen, könnte dies fatale Folgen für die bereits gespeicherten Blumen haben. Deswegen ist die Generation, Beschreibung und Darstellung völlig getrennt, austausch- und erweiterbar.

Jetzt Blumen generieren auf mandalaa.com

PPMCity.com – Surf Through

01.07.2009

Ich habe mir jetzt doch mal die Zeit genommen, eine kurze Vorstellung eines unserer grössten Projekte, nämlich die für den schweizer Star-DJ Sir Colin umgesetzte virtuelle Stadt “PPMCity.com” zu machen. Das erspart euch langes Probieren und Rumsurfen in der virtuellen Stadt. Ich empfehle trotzdem jedem, der gerne moderne Kommunikationstechinken nutzt, gerne Poker spielt oder eine eigene virtuelle Wohnung einrichtet und knifflige Spiele mag, sich in PPMCity umzusehen.

Für jeden interessierten Webdesigner und Flasher lohnt sich der Besuch auf jeden Fall.

Einige erste Eindrücke nun hier im Video:

PPMCity – a surf through from PPMCity on Vimeo.

fCon Flash Deployment Console

18.06.2009

fcon_logo

Die Flash Deployment Console ist für das Deployment in einem Game oder in einer Webseite gedacht, die während der Laufzeit direkten administrativen Eingriff in die Applikation oder Ablauf brauchen. Vergleichbar ist die fCon mit einer Development Console in einem Spiel. (Vielfach mit ^ aufrufbar).

Applikationskontrolle

Die fCon hat in der Console eine Eingabemöglichkeit (Kommandozeile). So ist es möglich Commands zu registrieren die beispielsweise den Benutzer in ein gewisses Level setzen.

Modifikation von Variablen

Die fCon bietet Möglichkeiten für das setzen von Variablen. Sie bietet vorallem mit Vervollständigung eine Navigation durch alle DisplayObjects.

Deployment Logging

Gerade bei Flash Online Applikationen befinden sich die Logs einer Applikation auf der Nutzerseite. Somit kann die Laufzeit der Applikation nicht überwacht werden. Natürlich kann man die Logstufen FATAL und ERROR  per Reports an den Server übermitteln, aber bei DEBUG und INFO wäre das mengenmässig ein absolutes Problem. Somit kann man als Entwickler direkt vor Ort in das Geschehen der Applikation Einblick nehmen und den aktuellen Fehler in den Logs suchen.

History

Die fCon bietet eine History mit UP and DOWN keys an. Diese kann mit einer Einstellung Lokal automatisch gespeichert werden. Weiteres kann man mit PAGE_UP oder PAGE_DOWN im Logviewer gescrolled werden. Drückt man zusätzlich SHIFT kann man nach ganz oben oder nach ganz unten.

Scripts und Variablen

Zusätzlich ist ein einfaches Scripting und Variablendeffinitionen möglich.

Sicherheit

Da wir nicht jedem auf einer Webseite den Zugriff auf die Console bieten wollen kann mit dem Lockmanager ein Passwort gesetzt werden. Das ganze funktioniert versteckt und ohne Visuelles Feedback. Somit ist es in einer gewissen Weise “geheim” das diese Applikation eine Console bietet. Das Passwort ist selbstverständlich gehashed und somit auch nicht auslesbar.

Ein paar kleine Beispiele

Einfaches Setup

package {
  import com.guavestudios.fcon.ConsoleImpl;
  import flash.display.Sprite;
  import flash.display.StageAlign;
  import flash.display.StageScaleMode;
  import flash.events.Event;
  import flash.text.TextField;
  import flash.text.TextFieldAutoSize;
 
  /**
   * fCon Sample
   * @author maze | guavestudios.com
   */
  public class Main extends Sprite {
 
    public var txt:TextField;
 
    public function Main():void {
      if (stage) init();
      else addEventListener(Event.ADDED_TO_STAGE, init);
    }
 
    private function init(e:Event = null):void {
      removeEventListener(Event.ADDED_TO_STAGE, init);
      // entry point
      stage.scaleMode = StageScaleMode.NO_SCALE;
      stage.align = StageAlign.TOP_LEFT;
 
      ConsoleImpl; //reference the console
      var config:XML=
 
         <![CDATA[crtl+Char.<]]></setting>
         <setting id="Console.trace">false</setting>
         <setting id="AutoCompletion.Key"><![CDATA[Char.<]]>
         true
         true
        ;
      Console.setStage(stage, config); //initialize console
 
      Console.trace("Hello World"); //sample trace
 
      //create a sample textfield
      txt = new TextField();
      txt.autoSize = TextFieldAutoSize.LEFT;
      txt.text = "Open with 'CRTL + &lt;' and completion with '&lt;'";
      addChild(txt);
 
      //register an sample command with textField
      Console.execute(["loadCommand",new SampleCommand(txt)]);
    }
 
    /**
     * sample function
     * @return testString
     */
    public function getString():String {
      return "this is a test String";
    }
  }
}

Um die Console aufzurufen muss man zuerst das Flash aktivieren und CRTL + < drücken. Dieser Shortcut ist frei definierbar mit der Config.

Das kleine Tutorial zeigt einige Funktionen die die Console im jetztigen Status kann. Die ganzen Kommandos können nach der Reihe ausgeführt werden.
Die Console ist gleich darunter eingebettet und ist noch zugeklappt:
Console

This movie requires Flash Player 9

  • Ist die Console offen und das Eingabe Feld aktiviert kann man mit < alle verfügbaren Commandos anzeigen.
  • mit pr und < vervollständigt die Console zu print Leertaste. Danach Hello World eingeben und Enter drücken
  • align help eingeben um eine hilfe über den Align Command darzustellen
  • align bottom eingeben um die Console ganz untem im Flash zu positionieren
  • Wir befinden uns derzeit auf der Stage
  • print $stage.@ und mit < vervollständigen um die verfügbaren Childs der Stage anzuzeigen (nummeriert)
  • weiter schreiben mit 1. und vervollständigen mit <. Wir befinden uns jetzt in der Applikation und sehen die Eigenschaften.
  • Die ganze Zeile kann jetzt weitergeschrieben werden auf print $stage.@0.txt.text und mit Enter ausführen
  • Da wir das Textfeld nocheinmal brauchen können wir es in eine Variable speichern.
  • set textField $stage.@0.txt
  • Wir können jetzt eine Variable modifiziern mit modify $textField.name ‘myTextField’
  • Die Vervollständigung kann auch auf Element Namen reagieren.
  • print $stage.@0.# und mit < vervollständigen. Jetzt wird myTextField als benanntes Item angezeigt. (Listet alle DisplayObjects mit Namen auf)
  • Fertigschreiben print $stage.@0.#myTextField.text
  • Wir können das Textfeld umpositionieren mit modify $textField.y 50
  • Wir haben bei der Initialisierung die Console um “SampleCommand” erweitert. Der Command ist sampleCommand
  • sampleCommand $textField.x $textField.y

Wir haben die Flash Deployment Console mit unseren Applikationen weiterentwickelt und jetzt online verfügbar gemacht.
Im Trunk befinden sich derzeit noch mehr Plugins und Commands die ich bei Zeit vorstellen werde.

fCon on Googlecode.com

Sourcecode für Sample

Das ganze ist OpenSoure und unter MIT Lizenz. Wer mitentwickeln möchte kann sich gerne bei uns melden.