Das eigene Spiel: Das „Terminal-Problem“

23. Juli 2017 von | Kategorie(n): Programmierung
Schlagwörter: //

Das eigene Spiel: Das „Terminal-Problem“

Wenn man an einem Projekt arbeitet, kommt es zu Problemen. Das ist auch gut so und das ist völlig normal. Manchmal hingegen sind diese Probleme ziemlich groß – zu groß, denkt man. Eines hatte ich bei meinem Kino-Spiel. Ich nenne es liebevoll „Das Terminal-Problem“.

Was ist ein Terminal?

Ich versuche, es verstÀndlich zu erklÀren. Soweit dies mir gelingt, denn was ich hier beschreibe, befindet sich sehr weit im inneren der Spielmechanik.

In einem Kino gibt es Punkte, in denen Kunden mit dem Personal interagieren. Diese wĂ€ren z.B. Situationen an der Kasse oder an der Popcorn-Theke. Diese Objekte sollen als „Terminal“ verwirklicht werden. Das heißt: Im Quellcode ist ein Ort, an dem Kunde und Personal sich gegenĂŒberstehen und interagieren, ein Terminal. Der Kunde stellt sich nun an so ein Terminal – sei es eine Kasse oder eine Theke – und es werden Animationen abgespielt und plötzlich hĂ€lt der Kunde Popcorn oder Ă€hnliches in der Hand. So wie es eben in einem Kino ablĂ€uft, wenn man bereit ist, die zum Teil sehr hohen Preise zu bezahlen.

Damit nun Personal und Kunde die richtige Stelle an der Theke findet, muss es sowas wie „Docks“ geben. Das ist nichts anderes als ein Punkt, an dem eine Spielfigur andocken kann. WĂŒrde sonst unschön aussehen, wenn Personal und Kunde auf dem gleichen Fleck stehen oder auf der Grafik des Kasse oder Theke.

Das Problem

Die bereits erwĂ€hnten Docks waren das Problem. Mein Spiel ist zwei Dimensional angelegt und der Spieler wird das Geschehen von oben (Vogelperspektive) betrachten. Wenn der Spieler ein Objekt (z.B. ein Terminal) auf dem Bildschirm platziert, kann er dieses mit der Taste „R“ drehen. Mein Spiel ist so ausgelegt, dass es maximal vier verschiedene Wege gibt, einen Gegenstand auszurichten. Bisher lief es so ab, dass das Objekt beim Drehen gar nicht wirklich gedreht wurde, sondern nur das Sprite (also das Bild des Objektes) ausgetauscht wurde. Diese Methode war ziemlich leicht zu implementieren und unkompliziert.

In dem Moment, in welchem ich die Docks erfand, wusste ich: „Oh man, jetzt gibt’s ein Problem.“ Denn diese Docks haben das Problem mit der angesprochenen Positionierung der Personen behoben, aber sie haben auch ein Problem geschaffen. Man stellt sich einmal vor: Es gibt eine Theke mit zwei Kassen, so mĂŒssen vier Docks platziert werden. Jetzt dreht der Spieler diese Theke, folglich wird die Grafik ausgewechselt. FĂŒr die neue Grafik mĂŒssten die „Andock-Punkte“ an einer anderen Stelle sein, denn das Objekt wurde gedreht (z.B. von waagerecht zu senkrecht). Bei vier verschiedenen Grafiken und vier Docks mĂŒsste ein Terminal somit 16 Docks besitzen. DarĂŒber hinaus mĂŒsste jede Person, die sich an dieses Terminal stellt, erst abfragen, in welchem Ausrichtungszustand sich das Objekt befindet.

Wegen diesem Problem, wĂŒrde der Code der kĂŒnstlichen Intelligenz der Besucher und des Personals komplexer werden. Und dies auf eine Art, die ganz einfach unschön ist.

Die Lösung

Obwohl ich lange nach einer Lösung gesucht habe und auch dachte, dass eine bessere Modellierung sehr schwer wÀre, lag die Lösung auf der Hand. Das Drehen musste anders ablaufen! Nun wird das Objekt einfach jedes mal um zusÀtzliche 90 Grad gedreht. Somit werden nur vier Docks benötigt, da diese automatisch gedreht werden (Kindobjekte). Folglich kann die erarbeitete Modellierung mit den Docks bleiben. Und ich bin froh, dass dem so ist, da ich denke, dass die Docks ein guter Ansatz sind.

Manchmal ist die Lösung leicht, wenn man in die richtige Richtung denkt. Daher empfiehlt es sich, Abstand von der Arbeit zu nehmen, sobald ein Problem auftaucht, welches schwer lösbar ist. Ablenkung hilft und plötzlich sieht man das Problem mit anderen Augen. Zumindest ist dies oft bei mir der Fall.

 

Was denkst du ĂŒber diesen Post?
  • Gut (1)
  • Hilfreich (0)
  • Nicht gut (0)
  • Lustig 😀 (1)
Diesen Post teilen:
Facebooktwittergoogle_plusredditpinterestlinkedinmail

2 Antworten zu “Das eigene Spiel: Das „Terminal-Problem“”

  1. ENiEX sagt:

    In der Programmierwelt, oder in deinem Fall der Unity-Welt, gibt es zum GlĂŒck verschiedene Möglichkeiten, ein… na sagen wir „Hindernis“ zu ĂŒberwinden. Der Artikel ist jedenfalls ein faszinierender Einblick in deine Vorgehensweise. Ich muss sagen, das Projekt wird immer interessanter.
    Bin gespannt, wie es weiter geht.

    WĂŒnsche dir noch, einen schönen Abend 😉

    • Tim Poerschke sagt:

      Wenn ich schreibe, weiß ich selbst zwar genau, was ich meine und beschreiben möchte, jedoch habe ich immer bedenken, dass meine Leser es nicht verstehen, weil diese nicht „in der Materie stecken“. Daher: Freut mich sehr, dass das Projekt bei Außenstehenden gut ankommt.

      Ich wĂŒnsche dir einen schönen Abend 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

+ 17 = 26