OpenRA

In meinem gestrigen Artikel ging es um eine Command & Conquer Version für den Browser. Neben dem Original gibt es eine Reihe von Projekte welche sich mehr oder weniger mit Command & Conquer beschäftigen. Eines dieser Projekte ist OpenRA. Dabei handelt es sich um eine Engine welche das Feeling und die Spielmechanik von Command & Conquer nachbaut. So kann die Engine unter anderem die Spieldaten der alten Command & Conquer Teile nutzen. Angeboten werden dabei aber im Moment nur einzelne Missionen und keine zusammenhängende Kampagne. Neben dem Singleplayermodus gibt es auch einen Multiplayermodus.

Der Titelschirm von OpenRA

Der Titelschirm von OpenRA

OpenRA ist unter der GPLv3 lizenziert und damit freie Software. Der Quelltext ist auf GitHub zu finden. Geschrieben ist das ganze in C#. Damit ist ist OpenRA unter Linux, Mac OS X und Windows lauffähig. Die offizielle Seite des Projektes ist unter openra.net zu finden.

Pearl Boy

Seitdem WebGL in unsere Browser eingezogen sind, gibt es auch die entsprechenden Techdemos für diese Technologie. Ein sehr schönes Techdemo ist dabei Pearl Boy welches auf der entsprechenden Webseite zu finden ist.

Das Boot auf dem Wasser

Das Boot auf dem Wasser

Man befindet sich mit einem Boot auf dem Wasser und steuert einen Jungen in diesem Boot. Mit Hilfe der WASD-Tasten kann man sich meditativ über das Wasser bewegen oder alternativ dieses verlassen und schwimmen. Technisch baut das ganze auf der Goo Engine auf, bei welcher es sich um eine Grafikengine für WebGL und HTML 5 handelt.

Unity nun auch zur Miete

Die Unity Engine hat in den letzten Jahren enorm an Beliebtheit gewonnen. Das dürfte nicht zu letzte an den kostenlosen Grundversionen gelegen haben. Daneben gibt es auch die Pro Variante welche mit knapp 1200 € zu Buche schlägt.

Die Unity Subskriptionsseite

Die Unity Subskriptionsseite

Wer sich das auf Schlag nicht leisten kann, hat nun die Möglichkeit Unity Pro für $ 75 respektive 57 € im Monat zu abonnieren. Auch die Pro-Versionen der Plugins für iOS, Android und Co. können dabei auch abonniert werden. Das ganze schlägt dann mit zusätzlichen $ 75 pro Plugin und Monat zu Buche. Zu finden ist die neue Subskriptionsseite unter https://store.unity3d.com/products/subscription. Die Mindestlaufzeit für ein Abo beträgt dabei 12 Monate.

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.

Hack & Slash RPG Tutorial für Unity

Für Unity (die Spielengine, nicht die Ubuntuoberfläche) gibt es eine Menge Dokumentation angefangen bei Tutorien bis zu Büchern (wobei deutsche Bücher an dieser Stelle Mangelware sind). Eines der ausführlicheren Tutorien ist „Hack & Slash RPG Tutorial“ welches mittlerweile aus 285 Teilen besteht. Zu finden ist dieses unter http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial. In dem Tutorial wird dabei Stück für Stück ein Rollenspiel in Unity aufgebaut und stetig verbessert. Das ganze wird dabei in Form von Videos präsentiert, was bestimmte Erklärungen wesentlich vereinfacht.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Unity_3D