seeseekey.net - Invictus Deus Ex Machina

Seit­dem WebGL in unsere Brow­ser ein­ge­zo­gen sind, gibt es auch die ent­spre­chen­den Tech­de­mos für diese Tech­no­lo­gie. Ein sehr schö­nes Tech­demo ist dabei Pearl Boy wel­ches auf der ent­spre­chen­den Web­seite zu fin­den ist.

Das Boot auf dem Wasser

Man befin­det sich mit einem Boot auf dem Was­ser und steu­ert einen Jun­gen in die­sem Boot. Mit Hilfe der WASD-Tasten kann man sich medi­ta­tiv über das Was­ser bewe­gen oder alter­na­tiv die­ses ver­las­sen und schwim­men. Tech­nisch baut das ganze auf der Goo Engine auf, bei wel­cher es sich um eine Gra­fi­ken­gine für WebGL und HTML 5 handelt.

Die Unity Engine hat in den letz­ten Jah­ren enorm an Beliebt­heit gewon­nen. Das dürfte nicht zu letzte an den kos­ten­lo­sen Grund­ver­sio­nen gele­gen haben. Dane­ben gibt es auch die Pro Vari­ante wel­che mit knapp 1200 € zu Buche schlägt.

Die Unity Subskriptionsseite

Wer sich das auf Schlag nicht leis­ten kann, hat nun die Mög­lich­keit Unity Pro für $ 75 respek­tive 57 € im Monat zu abon­nie­ren. Auch die Pro-Versionen der Plugins für iOS, Android und Co. kön­nen dabei auch abon­niert wer­den. Das ganze schlägt dann mit zusätz­li­chen $ 75 pro Plu­gin und Monat zu Buche. Zu fin­den ist die neue Sub­skrip­ti­ons­seite unter https://store.unity3d.com/products/subscription. Die Min­dest­lauf­zeit für ein Abo beträgt dabei 12 Monate.

Bei melonJS han­delt es sich um eine Java­script Engine zur Spie­le­ent­wick­lung im Brow­ser mit­tels HTML5. Möchte man dort ein Level laden, so geschieht das in Form einer TMX Datei. In melonJS gibt es dabei zwei Metho­den zum laden der ent­spre­chen­den Daten. Diese sind „me.loader.preload“ und „me.loader.load“. Alle Bei­spiele wel­che man im Netz so fin­det nut­zen dabei immer die „pre­load“ 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 Pro­blem ist das man bei grö­ße­ren Spie­len mit ein paar hun­dert MiB Spiel­da­ten, das ganze schlecht kom­plett in den Spei­cher laden kann. Hier­für gibt es die „load“ Methode. Aller­dings ent­hält diese einige Feh­ler wel­che das ganze erschwe­ren. Die „pre­load“ Methode trägt jede TMX Datei in das Array „levels“ im „me.levelDirector“ ein. Bei der „load“ Methode pas­siert genau dies nicht. Des­halb muss man hier anders vor­ge­hen (bis der Feh­ler beho­ben ist). Ein Mini­mal­b­ei­spiel 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 dyna­misch, ohne auf die „pre­load“ Methode ange­wie­sen zu sein. Mög­lich wird dies durch den klei­nen Bug­fix in der „onload“ Methode:

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

Die­ser sorgt dafür das der level­Di­rec­tor über die ent­spre­chende TMX Datei infor­miert wird und somit die Datei beim laden des Levels auch findet.

Für Unity (die Spie­len­gine, nicht die Ubun­tu­ober­flä­che) gibt es eine Menge Doku­men­ta­tion ange­fan­gen bei Tuto­rien bis zu Büchern (wobei deut­sche Bücher an die­ser Stelle Man­gel­ware sind). Eines der aus­führ­li­che­ren Tuto­rien ist „Hack & Slash RPG Tuto­rial“ wel­ches mitt­ler­weile aus 285 Tei­len besteht. Zu fin­den ist die­ses unter http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial. In dem Tuto­rial wird dabei Stück für Stück ein Rol­len­spiel in Unity auf­ge­baut und ste­tig ver­bes­sert. Das ganze wird dabei in Form von Videos prä­sen­tiert, was bestimmte Erklä­run­gen wesent­lich vereinfacht.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/Unity_3D

Ges­tern ver­suchte ich Fall­out 3 auf einem Mac OS X und anschlie­ßend auf einem Linux Sys­tem zu instal­lie­ren. Das ganze sollte mit­tels Wine zum lau­fen gebracht wer­den, was grund­sätz­lich kein Pro­blem dar­stel­len sollte. Aller­dings stellte sich das dank DRM aller Secu­ROM und DVD Über­prü­fung als ein Ding der Unmög­lich­keit her­aus, vor allem dann wenn man kein CD/DVD-ROM Lauf­werk im ent­spre­chen­den Rech­ner hat. Nun gut wer nicht will, der hat schon.

Der Über­tä­ter in Form von Fall­out 3

Wenn Fall­out schon nicht funk­tio­niert, so kann man sich ja immer­hin noch am geis­ti­gen Vater des Spie­les bedie­nen: Was­te­land. Aller­dings muss man sich nicht mit dem Ori­gi­nal von 1987 begnü­gen son­dern kann ab Okto­ber 2013 mit deren Nach­fol­ger Was­te­land 2 vor­lieb neh­men. Das ganze würde über Kick­star­ter mit einer Summe von $ 2.933.252 finanziert.

Das Spiel wird es in einer Linux, Win­dows und Mac OS X Ver­sion geben und auch als DRM freie Ver­sion ange­bo­ten. Neben der eng­li­schen Ori­gi­nal­spra­che soll das Spiel min­des­tens in die Spra­chen Fran­zö­sisch, Ita­lie­nisch, Deutsch und Spa­nisch über­setzt werden.

Tech­nisch wird das ganze auf der Unity Engine auf­set­zen, wel­che dafür um eine Linux Unter­stüt­zung erwei­tert wird. Den ent­spre­chen­den Ent­wick­ler­blog fin­det man unter http://wasteland.inxile-entertainment.com/blog/.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://de.wikipedia.org/wiki/Wasteland

Bei der Spie­le­ent­wick­lung auf iOS Gerä­ten ist es von Vor­teil eine Engine zu benut­zen um sich einige „läs­tige“ Arbeit vom Hals zu schaf­fen. Unter http://maniacdev.com/2009/08/the-open-source-iphone-game-engine-comparison/ gibt es dazu eine schöne Liste von Open Source Engi­nes für iOS. Dabei wur­den nur Engi­nes auf­ge­lis­tet, wel­che auch dar­auf basie­rende Soft­ware im AppS­tore haben. Mir per­sön­lich gefällt das Spar­row Frame­work ganz gut wel­ches unter http://gamua.com/sparrow/ zu fin­den ist und sich für 2D Spiele eignet.

Rol­len­spiele in Java­script sind an sich eine schöne Sache. Man muss keine zusätz­li­che Soft­ware instal­lie­ren und das Spiel als sol­ches ist auch immer aktu­ell. Gezeigt hat dies neu­lich Mozilla mit dem MMORPG Brow­ser­Quest wel­ches kom­plett im Brow­ser läuft. Möchte man RPGs sel­ber schrei­ben so sollte man sich mal die Biblio­thek RPG JS anschauen, wel­che unter http://rpgjs.com/ zu fin­den ist. Die Engine ist dabei unter MIT und GPL dual lizenziert.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://www.guido-muehlwitz.de/2012/02/rollenspiele-in-html5/
http://www.golem.de/news/browserquest-mozilla-startet-browser-mmog-in-html5-1203–90802.html

Den Fire­fox 4 gibt es ja stan­dard­mä­ßig nicht für Ubuntu 10.10. Da aber die Javaskrip­ten­gine eine echte Beschleu­ni­gung erfah­ren hat, wel­che ich auch aus­nut­zen wollte musste ein PPA her. Die­ses PPA ist ppa:mozillateam/firefox-stable wel­ches auch auf der Kon­sole mit­tels

sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update && sudo apt-get dist-upgrade

hin­zu­ge­fügt wer­den kann. Danach sollte man sich noch das deut­sche Sprach­pa­ket instal­lie­ren, da die Fire­fox­ver­sion sonst Eng­lisch ist. Zu fin­den ist die­ses Paket unter http://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0/linux-x86_64/xpi/de.xpi. Und schon ist Fire­fox 4 da :)

Wei­tere Infor­ma­tio­nen gibt es unter:
http://linuxundich.de/de/software/firefox-4–0-in-ubuntu-mozilla-team-ppa-installieren/

Natür­lich ist dem nicht ganz so wie in der Über­schrift ver­spro­chen ;) Aber einige Leute haben ange­fan­gen eine Engine zu schrei­ben wel­che ein Anno ähn­li­ches Spiel bereit­stellt, sprich es han­delt sich um eine 2D Echt­zeitstra­te­gie­si­mu­la­tion wel­che auf den Namen Unknown Hori­zons hört. Das Spiel gibt es dabei für Linux und Windows.

Basie­rend auf der FIFE Game Engine wurde das Spiel immer wei­ter ent­wi­ckelt bis zum jet­zi­gen schon ganz ansehn­li­chen Stand. Das sollte natür­lich nicht dar­über hin­weg täu­schen das es sich bei dem Spiel noch um eine Alpha­ver­sion han­delt. Die offi­zi­elle Seite des Spie­les ist unter http://www.unknown-horizons.org zu finden.

Vor eini­ger Zeit suchte ich nach ein paar Sam­ples von ver­schie­de­nen Sprach­syn­the­se­sys­te­men. Fün­dig wurde ich auf der Seite http://ttssamples.syntheticspeech.de/. Das ganze ist dabei auch nach der Anwen­dung der Engine (Kom­mer­zi­ell, For­schung etc.) sor­tiert. Sehr inter­es­sant klin­gen im übri­gen die Sys­teme aus den 70er Jah­ren (ROSY, Syni 1 und 2) :)