Archiv der Kategorie: Mini-Tutorial

SplitScreen: Mehrere Spieler auf einer Glotze

In letzter Zeit ist er etwas aus der Mode gekommen und wirkt für den ein oder anderen vielleicht wie ein Relikt aus längst vergangenen Gaming-Tagen. Geselliges Zusammensitzen vor der Glotze und ein schnelles Spielchen wurden mittlerweile fast vollkommen virtualisiert und durch Netzwerke und Voice-Chat ersetzt. Trotzdem ist es nach wie vor eine immer noch interessante Technik und dank Konsolen durchaus auch heute noch das ein oder andere mal sinnvoll und vor allem spaßig. Ich schreibe hier natürlich über Split-Screens. Mehrere Spieler spielen an einem Bildschirm, in unterteilten Bereichen mit jeweils einer eigenen Ansicht.

Lies den Rest dieses Beitrags

Advertisements

„ContentPipeline Overdrive“

Die ContentPipeline des XNA-Frameworks ist ja eine ziemlich coole Sache, wenn man deren Sinn verstanden hat und diese richtig anwendet. Sie komprimiert Inhalte, kümmert sich zur Entwicklungszeit darum, daß die Inhalte in ein passendes Format konvertiert werden, kann diese noch dynamisch verarbeiten (z.B. Tangenten in einem 3D-Objekt berechnen) und kümmert sich später auch darum, daß diese im Spiel komfortabel geladen werden können.

Soweit so gut…

Auf der anderen Seite besteht ja ständig eine Nachfrage für Editoren aller Art und eine Infrastruktur für diese Editoren zu entwickeln ist nicht unbedingt eine Aufgabe, die innerhalb von einer Stunde erledigt ist, sondern dabei trennt sich die Spreu vom Weizen. Ein guter Editor benötigt eine gute Infrastruktur. Ich denke mal, daß mir hier die meisten zustimmen können und hoffentlich auch werden.

Ein sehr wichtiger Punkt ist in einem Editor, daß Inhalte geladen werden können. Hmmm, kurz überlegt: Heureka! Das ist doch das was die ContentPipeline macht. Da verwende ich doch einfach die…

Und genau jetzt fangen die Probleme an…

Lies den Rest dieses Beitrags

Die Matrix

Die Matrix ist ein Science-Fiction Film aus dem Jahre 1999 in dem Keanu Reaves die Hauptrolle spielt. Vollkommen richtig, aber auch vollkommen am Thema vorbei. In diesem Artikel geht es nicht um Filme, sondern um die mathematische Matrix. Ok, mathematische Grundlagen… Das klingt deutlich langweiliger als ein Science-Fiction-Blockbuster und das ist es sicherlich auch. Ich versuche diesen trockenen Stoff hier möglichst so rüberzubringen, daß es schnell und schmerzlos geht und einigermaßen interessant bleibt. Wie immer möchte ich mich dabei nicht in den Tiefen der Mathematik verirren und auch nicht in endlos auschweifenden Erklärungen verlieren, sondern das vermitteln, was man zur täglichen Arbeit in der Spieleentwicklung benötigt.

Dieser Artikel ist ein vorbereitender Artikel für den vierten Teil meiner Shader 101 Reihe. Ich erachte dieses Thema jedoch als so wichtig, daß ich mich entschlossen habe, es in einem eigenen Beitrag zu behandeln. Das Themengebiet findet schliesslich nicht nur Anwendung in der Erzeugung einer Landschaft sondern bei jedem 3D-Projekt.
Lies den Rest dieses Beitrags

Facepalm: Nicht alle Codepfade geben einen Wert zurück

In meiner neuen Rubrik Facepalm werde ich kurz und knackig kleine Tipps und Hilfen geben, die irgendwo gefragt wurden oder auf die ich gerade gestoßen bin. Eine Facepalm ist die Geste, die man macht, wenn man die Hand vor’s Gesicht schlägt wenn man sagt „Warum bin ich da nicht selbst drauf gekommen?“.

Die Artikel dieser Rubrik werden sehr kurz sein, denn es handelt sich schliesslich um einfache Probleme 🙂

In diesem ersten Beitrag geht es um die Fehlermeldung „Nicht alle Codepfade geben einen Wert zurück“, die z.B. in folgender Methode vom Compiler geworfen wird:

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }
}

Der Grund für diesen Fehler ist sehr einfach: Ein Rückgabewert in einer C#-Funktion ist nicht optional, sondern es muss in jedem Fall ein Wert zurückgegeben werden. Im obigen Beispiel wird aber kein Wert zurückgegeben, wenn provoziereFehler den Wert true enthält.

Beheben kann man diesen Fehler ganz einfach, in dem man entweder im Else-Zweig oder nach der If-Abfrage einen Wert zurückgibt, z.B. eine -1 um ein Problem anzuzeigen.

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }

  return -1;
}

Scripting Engine – Teil 2

Nachdem ich im ersten Teil ein wenig über die Grundlagen und die Philosophie einer Scripting Engine geschrieben habe, möchte ich in diesem zweiten, lange erwarteten Teil mehr in die Details gehen und weitere Grundlagen schaffen, die im weiteren Verlauf sehr wichtig sein werden.

Ein kurzer Rückblick: Es geht um Scripting, welches wir im ersten Teil als das Fernsteuern von Systemen definiert haben. In dieser mehrteiligen Artikel-Serie möchte ich gemeinsam mit euch eine Scripting Engine implementieren und alle notwendigen Hintergrundinformationen liefern. Trotzdem müsst ihr später keine eigene Engine entwickeln, sondern könnt die in die starLiGHT.Engine integrierte verwenden. Diese werde ich nämlich im Laufe dieser Artikel-Serie entwickeln.
Lies den Rest dieses Beitrags

%d Bloggern gefällt das: