Data Dealer

In dem Spiel „Data Dealer“ geht es darum möglichst viel persönliche Daten zu sammeln. Das auf HTML5 basierende Spiel versucht dabei die Mechanismen echter Datenhändler möglichst akkurat abzubilden. Entwickelt wird das ganze dabei vom Cuteacute-Team.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=dQk08036uNE

Zur Zeit läuft eine Kickstarter Kampange in welcher $50.000 gesammelt werden sollen. Leider fehlen bis zum 11. Juli noch knapp $ 20.000, so das Unterstützer hier gerne gesehen sind. Das Spiel soll anschließend unter einer Creative Commons Lizenz erscheinen und wird damit freie Software sein. Testen kann man das ganze mit der aktuellen Demoversion unter http://demo.datadealer.net/.

Weitere Informationen gibt es unter:
http://www.heise.de/newsticker/meldung/Data-Dealer-Farmville-fuer-Datenverticker-1889193.html

Präsentationen im Browser

Es muss nicht immer Powerpoint oder LibreOffice Impress sein. Es geht auch einfacher (und schöner) wie impress.js beweist. Dabei handelt es sich um ein Framework basierend auf CSS3 Transforms welches sich für Präsentationen im Browser eignet.

Das impress.js Demo

Das impress.js Demo

Einen Eindruck der Fähigkeiten von impress.js kann man sich auf der entsprechenden Demoseite verschaffen. Das ganze ist dabei freie Software und unter der GPL sowie der MIT-Lizenz lizenziert. Der Quellcode ist auf Github unter https://github.com/bartaz/impress.js zu finden.

Dive

Mittels HTML 5 und den entsprechenden APIs wie WebGL ist mittlerweile eine Menge möglich. Besonders schön sieht man das immer wieder an entsprechenden Demos.

Die Visualisierung der Musik

Die Visualisierung der Musik

Eines dieser Techdemos ist dabei unter http://do.adive.in/music/ zu finden. Dabei handelt es sich um eine HTML5 App zur Visualisation von Musik. Die jeweiligen Parameter sind dabei frei einstellbar und das Ergebnis ändert sich dann dementsprechend. Daneben ist es auch möglich die eigenen Presents abzuspeichern um sie später wieder zu benutzen.

CSS Creatures

Das mittlerweile mit CSS Dinge wie Logos und Formen abgebildet werden, hat sich sicherlich schon herumgesprochen. Witzig wird das ganze immer dann, wenn neue Grenzen ausgelotet werden, wie dies auch bei den „CSS Creatures“ geschieht.

bennettfeely.com/csscreatures/

bennettfeely.com/csscreatures/

Dort werden kleine Monster gezeigt, welche vollkommen in CSS erstellt wurden. Daneben kann man sich auch eigene Monster erzeugen. Zu finden ist das ganze unter http://bennettfeely.com/csscreatures/.

melonJS ohne preload benutzen

Bei melonJS handelt es sich um eine Javascript Engine zur Spieleentwicklung im Browser mittels HTML5. Möchte man dort ein Level laden, so geschieht das in Form einer TMX Datei. In melonJS gibt es dabei zwei Methoden zum laden der entsprechenden Daten. Diese sind „me.loader.preload“ und „me.loader.load“. Alle Beispiele welche man im Netz so findet nutzen dabei immer die „preload“ Methode:

var g_resources= [
{ name: "desert1",          type: "image", src: "desert1.png" },
{ name: "desert",           type: "tmx",   src: "desert.tmx" },
{ name: "player_male_base", type: "image", src: "player_male_base.png" },
{ name: "fog",              type: "image", src: "fog.png" }
];

...

me.loader.preload(g_resources);

Das Problem ist das man bei größeren Spielen mit ein paar hundert MiB Spieldaten, das ganze schlecht komplett in den Speicher laden kann. Hierfür gibt es die „load“ Methode. Allerdings enthält diese einige Fehler welche das ganze erschweren. Die „preload“ Methode trägt jede TMX Datei in das Array „levels“ im „me.levelDirector“ ein. Bei der „load“ Methode passiert genau dies nicht. Deshalb muss man hier anders vorgehen (bis der Fehler behoben ist). Ein Minimalbeispiel zum laden eines Levels sieht damit so aus:

<!DOCTYPE html>
<html>
  <head>
    <title>melonJS minimal sample</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script type="text/javascript" src="melonJS.js"></script>

    <script type="text/javascript">
      var jsApp = {
        start: function() {
          if (!me.video.init('jsapp', 640, 480, false, '1', false))
          {
            alert("Sorry but your browser does not support html 5 canvas.");
            return;
          }

          me.loader.onload = this.loaded.bind(this);

          //lade manuell
          me.loader.load({name: "desert1",  type:"image",  src: "desert1.png"}, this.onload);
          me.loader.load({name: "desert",  type:"tmx",  src: "desert.tmx"}, this.onload);

          //zeige Ladebildschirm
          me.state.change(me.state.LOADING);
        },

        onload: function(data) {
          me.levelDirector.addTMXLevel("desert"); //Bugfix
          me.levelDirector.loadLevel("desert");
        },

        loaded: function() {
          me.state.set(me.state.PLAY, new PlayScreen());
          me.state.change(me.state.PLAY);
        }
      }

      var PlayScreen = me.ScreenObject.extend({
      });

      //starte wenn der Browser bereit ist
      window.onReady(function() {
        jsApp.start();
      });
    </script>
  </body>
</html>

Damit lädt man ein Level dynamisch, ohne auf die „preload“ Methode angewiesen zu sein. Möglich wird dies durch den kleinen Bugfix in der „onload“ Methode:

me.levelDirector.addTMXLevel("desert"); //Bugfix

Dieser sorgt dafür das der levelDirector über die entsprechende TMX Datei informiert wird und somit die Datei beim laden des Levels auch findet.