• Halbzeit! 03.11.2018 - 04:13 3
    Folgenden Nutzern gefällt das Design: TroMu, Vankenthor, damios

    Da nun rund 36h vom Wettbewerb vorbei sind, gibt es eine kleine Zusammenfassung.

    Das Spielprinzip bei JUST DO IT! ist ziemlich simpel. Man navigiert in vier Richtungen und versucht zum Ausgang des Levels zu gelangen. Das Ganze wäre sehr simpel, wenn es nicht so viele bewegliche Gegner und Schussanlagen gebe. Außerdem braucht man in einigen Levels auch Schlüssel um Türen zu öffnen und Energie gibt es ohnehin nicht, nur ein paar Leben.

    Steuerung, Spielfigur und Gegner waren eigentlich schnell erstellt. Ich halte es relativ minimalistisch, die "opulente" Optik kommt vom Tileset, das ich eigens für das Spiel kreiert habe. Blöderweise habe ich angefangen die Schatten der Wände mit Tiles zu zeichnen, was eigentlich recht cool aussieht, aber bei komplexeren Levels sehr viel Zeit kostet.

    Das Drumherum ist nach 36h weitestgehend fertig. Das Spiel hat ein kleines "Hersteller-Intro", ein Menü, Optionen, Musik, Soundeffekte, Partikel, ein paar Gegner, drei Wand-Sets, vier Boden-Sets, mehrere Schlüssel und Türen und andere Dinge. Die "Spielfigur" kann man mit Tastatur und Gamepad steuern. Beim Gamepad gehen Digitalkreuz UND Analogstick, bei der Steuerung die Pfeiltasten UND W-A-S-D. Man halt also die freie Wahl.

    Und ja, zudem gibt es im Menü noch eine Maussteuerung. Wenn man die Maus nicht bewegt, wird der Zeiger nach ein paar Sekunden ausgeblendet und stört nicht mehr.

    Für die zweite Hälfte sind vor allem Levels geplant. Außerdem fehlt noch etwas Feinschliff. Zwar gibt es jetzt schon Spielereien wie Raumübergänge, richtig glücklich bin ich mit der Qualität aber noch nicht. Außerdem bin ich mir noch nicht sicher, ob die Musik nicht nach einer Weile nervt. Man kann sie zwar in den Optionen ausstellen, aber dennoch sollte sie einen nicht in den Wahnsinn treiben. 

    Auf Twitter könnt ihr ein paar Screenshots und ein Video sehen. Twitter hat es zwar mal wieder geschafft auf einem 2MB 720p Video (gestochen scharf) Pixelbrei zu machen, aber man kann zumindest erkennen, worum es im Spiel geht.

    Ach ja: Momentan hadere ich noch ein bisschen mit der Geschwindigkeit. Wenn viele Gegner schießen, geht es auf < 1000 FPS. Das liegt wahrscheinlich am Partikelsystem. Mal sehen, was ich da noch optimieren kann. Ansonsten läuft das Spiel auf meinem nicht mehr ganz so aktuellem Laptop bei 1500 bis 2500 FPS. Nur der Sternenscroller im Intro nicht, der liegt bei ca. 330 FPS.  Aber sollte es da auf 10 Jahre alten Rechnern etwas ruckeln, ist das meiner Meinung nach nicht sonderlich schlimm.


    Kommentare: 0
  • Zufällige Aufgaben 02.06.2018 - 23:51 2
    Folgenden Nutzern gefällt das Design: damios, krazun

    Da das Interesse an #Kopfnuss erstaunlich groß ist, möchte ich einen weiteren kleinen Einblick gewähren. Momentan arbeite ich am Blitzmodus. Der Spieler wählt zunächst eine (oder alle) Grundrechenart aus und dann einen Zeitmodus. Zur Auswahl stehen 5, 10 oder 15 Sekunden. Dies ist dann die Zeit, die man für eine Aufgabe zur Verfügung hat. Nachfolgend erscheint eine Aufgabe und vier Buttons mit Zahlen drauf. Ein Ergebnis ist richtig, die anderen drei sind falsch. Der Spieler verliert, wenn er entweder ein falsches Ergebnis gewählt oder die Zeit verstrichen ist.

    Heute habe ich die Spiellogik implementiert und das Additionsverfahren abgeschlossen. Die anderen drei Grundrechenarten werden noch folgen, aber das ist nicht mehr viel Arbeit. Für Interessierte möchte ich schildern, wie die Aufgaben generiert und die falschen Ergebnisse erzeugt werden, schließlich gibt es hier viele Wege, die nach Rom führen. (oder in den RAM)

    Zunächst muss man wissen, dass die Aufgaben immer schwieriger werden sollen. Das Spiel orientiert sich an der Aufgabennummer, die mitgezählt wird. Die Aufgaben werden in vier Schwierigkeitsgrade unterteilt:

    1. Aufgabennummer < 5
    2. Aufgabennummer < 10
    3. Aufgabennummer < 20
    4. Aufgabennummer > 20

    Da es nicht ganz einfach ist, über einen so langen Zeitraum die Konzentration hoch zu halten, sollte die Unterteilung reichen, lässt sich aber beliebig erweitern.

    Addiert werden in diesem Modus immer nur zwei Zahlen. Das Spiel generiert also lediglich zwei Zufallszahlen und zählt diese Zusammen. Was sich bei den vier Schwierigkeitsgraden unterscheidet, ist der Bereich.

    1. Zahl zwischen 3 und 9
    2. Zahl zwischen 3 und 19
    3. Zahl zwischen 3 und 49
    4. Zahl zwischen 3 und 99

    Die Wahrscheinlichkeit, dass bei 4. eine Aufgabe wie 3+3 kommt, ist zwar gegeben, aber ich halte das nicht für schlimm, wenn der Spieler mal durchatmen kann.

    Nun besteht hier noch die Möglichkeit, dass zwei Mal die selbe Aufgabe gestellt wird. Gerade bei 1. passiert das relativ oft. Da kann man das Ergebnis prüfen und eine Schleife durchlaufen lassen, die so lange läuft, bis eine Aufgabe mit einem anderen Ergebnis generiert wird. Oder man macht es wie ich:

    if (ergebnis == altesErgebnis)
    {
        zahl1++;
        zahl2++;
        ergebnis = zahl1 + zahl2;
    }

    Wenn das Ergebnis identisch ist, dann wird den beiden Ausgangszahlen einfach ein Wert hinzugefügt. 

    Soweit zur Aufgabe. Nun braucht das Spiel drei falsche Ergebnisse. Das Problem: Die falschen Zahlen müssen in der Nähe der richtigen Zahl sein, sonst kann man das Ergebnis zu leicht "erraten".

    Da ich drei verschiedene falsche Zahlen brauche, habe ich drei Verfahren gewählt, um diese zu erzeugen.

    // Falsch 1
    if (richtig > 9)
    {
    	var minus = floor(random_range(2, 5));
    	falsch[1] = richtig - minus;
    } else {
    	var plus = floor(random_range(2, 5));
    	falsch[1] = richtig + plus;
    }

    Wenn das Ergebnis größer als 9 ist, wird eine Zufallszahl zwischen 2 und 4 erzeugt und diese vom Ergebnis abgezogen. Ist das Ergebnis <= 9, wird eine eben solche Zahl addiert. Den Code könnte man noch kürzen, aber so bin ich für spätere Verfahren flexibler.

    // Falsch 2
    if (richtig > 2)
    {
    	falsch[2] = richtig - 1;
    } else {
    	falsch[2] = richtig + 1;
    }

    Okay, das war jetzt extrem einfach. Die zweite falsche Zahl ist meistens eins kleiner als das richtige Ergebnis. Das hat auch den Vorteil, dass die beiden falschen Ergebnisse auf jeden Fall nicht identisch sind.

    var moeglichkeit = irandom(1);
    
    // Falsch 3
    if (moeglichkeit == 0)
    {
    	if ((richtig mod 5) = 0)
    	{
    		falsch[3] = richtig + 5;
    	} else {
    		falsch[3] = falsch[1] + 5;
    	}
    } else {
    	if (richtig > 10)
    	{
    		var moeglichkeit2 = irandom(1);
    		
    		if (moeglichkeit2 == 0)
    		{
    			falsch[3] = richtig - 10;
    		} else {
    			falsch[3] = richtig + 10;
    		}
    	} else {
    		falsch[3] = richtig + 10;
    	}
    }

    Die dritte falsche Zahl ist etwas komplexer. Es gibt zunächst zwei Möglichkeiten. Möglichkeit 0 ist, dass zunächst geprüft wird, ob die Zahl durch 5 teilbar ist. Wenn ja, wird 5 dazu addiert. Wenn nein, wird zur ersten falschen Zahl 5 addiert. 5er Werte werden später bei der Multiplikation oft vorkommen und da brauche ich falsche Ergebnisse, die genug "verwirren".

    Die zweite Möglichkeit ist, dass geprüft wird, ob das Ergebnis > 10 ist. Wenn nicht, wird einfach 10 addiert. Wenn es größer 10 ist, wird zufällig gewählt, ob 10 addiert oder subtrahiert wird.

    Hintergrund: Wenn man das nicht macht, dann kann man jede Additionsaufgabe einfach dadurch lösen, indem man nur die letzten beiden Ziffern addiert und die letzte Ziffer vom Ergebnis mit den vier Zahlen vergleicht.

    Beispiel: 98 + 98

    8 + 8 = 16, dann muss ich nur schauen, welches Ergebnis am Ende eine 6 hat. Durch falsch[3] kann es aber sein, dass ich eine Zahl habe, die +-10 davon abweicht.

    Wir haben also nun die Aufgabe und drei falsche Ergebnisse. Das Spiel muss jetzt nur noch die Buttons erzeugen und die Zahlen zuweisen. Die Buttons stecken im Array button[] . Die Zuweisung erfolgt so:

    richtigesErgebnis = floor(random(4));
    
    falschCount = 1;
    for(var i=0;i<4;i++)
    {
    	if (richtigesErgebnis = i)
    	{
    		button[i].richtig = 1;
    		button[i].text = ergebnis;
    	} else {
    		button[i].richtig = 0;
    		button[i].text = falsch[falschCount];
    		falschCount++;
    	}
    }

    Im GameMaker hat man noch die Möglichkeit mit dem Befehl ds_list zu arbeiten. Da speichert man die Ergebnisse, mischt dusch und weist die den Buttons zu, aber ich fand die hier gewählte Methode irgendwie eleganter. 

    Das war es eigentlich auch schon. Ist ziemlich viel Code für so wenig Spiel. 

    Sobald die anderen Grundrechenarten fertig sind, gibt es den heiß ersehnten Download und dann wird sich zeigen, ob die Balance stimmt. Vor allem bei Multiplikation und Division habe ich ein wenig Bauchschmerzen. 


    Hashtags: #kopfnuss
    Kommentare: 0
  • Neu seit 0.2.5 31.05.2018 - 07:59 2
    Folgenden Nutzern gefällt das Design: damios, krazun

    Von Version 0.2 auf 0.2.5 ging es vorwiegend um die Implementierung wichtiger, aber nicht spielrelevanter Dinge. Ich mache gerne erst das drum herum, bevor ich mich auf die wesentlichen Dinge konzentriere.

    Zunächst habe ich ein kleines Logo eingebaut. Wirklich hübsch ist es nicht, aber es hätte auch deutlich schlechter ausfallen können. Da es jetzt eingebaut ist, kann man es auch jederzeit austauschen.  

    Da es in der ursprünglichen Version nur einen Spielmodus gab, musste ich auch einige Dinge intern umstellen. Außerdem habe ich die Texte zentral ausgelagert. Theoretisch könnte ich jetzt jederzeit mehrere Sprachen anbieten.

    Ein mir wichtiges Feature sind die Farb-Themes. Per Tastendruck kann man im Hauptmenü eines von vier Themes wählen. Mir war das wichtig, weil ich gerade für den Schulmodus auf Lichtbedingungen (großer Bildschirm oder Leinwand) Rücksicht nehmen wollte. Die vier Farben sind Grün, Blau, Lila und Weiß. Da sollte farblich und vom Kontrast her für die meisten Leute etwas dabei sein.

    Einstellungen wie Fullscreen/Fenster und Theme werden nun gespeichert.

    Die Buttons für den Spielmodus und den Schwierigkeitsgrad wurden mit Tooptips versehen, damit man eine Information darüber erhält, was sich dahinter verbirgt. Einiges wurde auch von den Positionen und Farben her optimiert. Alles sollte jetzt mehr wie aus einem Guss wirken.

    Nächster Schritt

    Als nächstes wird der Blitz-Modus eingebaut. Da sich dahinter eine ganz andere Logik als beim Schulmodus verbirgt, wird das nicht in ein paar Minuten eingebaut sein. Ich denke aber, dass ich mit Version 0.3 endlich einen Download anbieten kann.


    Kommentare: 0
  • Der Reiz vom stillen Wettbewerb 19.05.2018 - 18:39 5
    Folgenden Nutzern gefällt das Design: damios, Vankenthor, Graui, krazun, eitelkalk

    Die Reaktionen auf CYPEST sind recht unterschiedlich. Spieler, die sich darauf einlassen, sind oft voll des Lobes. Das zeigt sich bis jetzt in zwei Let‘s Plays die von Leuten erstellt wurden, die ich nicht kannte und den Bewertungen auf Pewn. Seit dem der Gastmodus eingebaut wurde und man es im Browser spielen kann, wurde es zwar mehr gezockt, die Registrierungen sind aber nicht gerade in die Höhe geschossen. Häufiger Vorwurf: Das Spiel ist zu schnell und zu schwierig. Mein „Gegenargument“: CYPEST ist das, was in Deinem Kopf vorgeht.

    Als geistiger Vater des Spiels habe ich mir viele Gedanken gemacht, bevor ich überhaupt mit der Entwicklung begann. Viele Elemente reiften über Jahre. Der regionale Bezug der Highscorelisten beispielsweise wurde dreist von der Trackmania-Reihe abgeschaut. Mich begeisterte es im ersten Moment, als ich Trackmania Nations vor etwas mehr als 10 Jahren spielte.

    Spiele mit Wettbewerbscharakter sind für mich eine Hassliebe. Phasenweise spielte ich gerne RTS, sehr gerne Rocket League, FIFA oder auch Schach. Aber alle Spiele wurden mir irgendwann „zu laut“ und zu aggressiv. Einzig das Spielgefühl von Trackmania motivierte mich, es über viele Jahre immer wieder herauszuholen.

     

    Ein paar negative Beispiele

    Rocket League ist ein geniales Spiel, sofern die Internetverbindung mit macht bzw. die Server der Entwickler. Was mich aber zusehends gestört hat, war der direkte Kontakt mit den Spielern. Die einen verhöhnen die Gegner, wenn sie selbst am gewinnen sind, die anderen beleidigen die Mitspieler, wenn sie Fehler machen. Und wieder andere machen lieber Eigentore oder fahren sinnlos im Kreis um dem eigenen Team zu schaden. Das kann zwischendurch unterhaltsam sein, aber auf Dauer ist mir das einfach zu viel negative Stimmung.

    FIFA habe ich bin FIFA 16 oft gespielt, aber nur selten online. Wenn man auf der Siegerstraße steht, brechen viele Gegner das Spiel ab. Wenn man 0:1 hinten liegt, versuchen viele Gegner nur den Ball zu halten und auf Zeit zu spielen. Da könnte ich buchstäblich aus der Haut fahren. Ebenfalls nervig: Spieler, die jede Wiederholung dreimal anschauen wollen. Auf Dauer bleibt da für mich einfach zu viel Frust.

    Schach sollte eigentlich kein Problem sein, denkt man. Das Problem bei vielen Plattformen ist aber, dass alles, was man macht, öffentlich einsehbar ist. Besonders die meiner Meinung nach beste Plattform lichess.org ist ein offenes Buch. Selbst nicht registrierte Spieler können von allen Mitgliedern jedes Spiel, jede Statistik und somit jeden noch so kleinen Fehler sehen. Dazu kommt, dass auf der Seite laufend irgendwas blinkt und, für meinen Geschmack, hektisch angezeigt wird. Zusätzlich kommen Zuschauer in die Spiele und können chatten, was sehr ablenkend ist. Trotz zahlreicher positive Erlebnisse überwiegt bei mir irgendwann das Negative, weil ich weiß, dass jeder Fehler für immer auf dieser Plattform festgehalten wird. Dazu kommen Spieler, die bei einer Verluststellung nur die Zeit runterlaufen lassen oder Spieler, die eine Partie eröffnen, aber keinen Zug machen. Und, ganz allgemein, Cheater.

    Und dann ist da eben noch Trackmania. Ich starte es, verbinde mich „unsichtbar“ mit dem Spiel und niemand bekommt mit, dass ich gerade spiele. Ich kann mich auf die Strecken konzentrieren und einfach fahren. Es ist egal, ob ich einmal fahre oder tausendmal, niemand weiß es. Was die „Welt“ erfährt, ist lediglich meine beste Leistung. Das Spiel kommuniziert nicht mein Scheitern sondern nur meine Erfolge. In den Highscorelisten steht nicht „Das ist die Zeit des Spielers, aber er hat dafür 256 Anläufe gebraucht.“ Da steht nur meine beste Zeit und mein daraus resultierender Rang.

    Man kann Trackmania online spielen. Jeder spielt dabei für sich, man sieht lediglich den „Geist“ anderer Fahrzeuge. Selbst bei schlechter Verbindung kann ich gemütlich spielen und das Spiel übermittelt meine beste erreichte Zeit. Ja, ich stehe im direkten Wettbewerb, aber ich kann alle Mitstreiter unsichtbar machen und mich nur auf meine Leistung konzentrieren. Es ist einfach nur positiv.

    Diese Aspekte waren mir bei CYPEST sehr wichtig. Jeder Spieler kann sich selbst seine Ziele setzen und dann versuchen, sie zu erreichen. Genau genommen gibt es dabei keine Verlierer. Es gibt welche, die wollen in der Weltrangliste (Olymp) weit vorne stehen, andere konzentrieren sich auf einzelne Level oder auf ihre persönliche Region. Manche möchten lediglich die Level schaffen und anderen gefällt das Setting, das Spielgefühl und die Musik. Es ist eben das, was sich im Kopf abspielt und es ist das, was der Spieler daraus macht. Die persönlichen Statistiken sind wirklich persönlich. Selbst wir Entwickler wissen nicht, wie oft jemand ein Level startet und wie oft er stirbt. Wir sehen, wie der Rest der Welt, nur das Beste, was ein Spieler anzubieten hat.

    Wie bei Trackmania gibt es auch in CYPEST sehr unterschiedliche Level. Manche sind sehr einfach, manche extrem schwer. Manche sind sehr schnell, manche bestehen ausschließlich aus einem riesigen Slowspeed-Feld. Es sind zwar nur 20 Level, die aber sind sehr abwechslungsreich. Das ist ein weiterer Aspekt, der mich begeistert. Die Mechanik ist extrem leicht, es gibt nicht viele Features, aber was sich aus dieser Schlichtheit ergibt, ist überwältigend. Die meisten Level hat man, wenn man es vom Start bis zum Ziel durchspielt, in weniger als einer Minute durch. Das größte Level in CYPEST schafft man in rund 90 Sekunden. Wenn man es schafft.

    Seit der Version 1.2 habe ich eine neue Profildatei für meine Statistiken angelegt. Ich wollte ein paar Rekorde brechen und jedes Level mindestens einmal schaffen. Damit ich diese Ziele erreiche, habe ich >10h gespielt. 50 Spielstarts, knapp 1300 Tode, 87mal Level beendet, 65296 Items eingesammelt. Und das, obwohl ich jedes Level selbst erstellt habe. Aber ich habe zwischendurch ein paar Monate fast nicht gespielt und mir fehlte die Übung. Und das ist ein weiterer, faszinierender Aspekt. Viele Punkte erreicht man in CYPEST durch ein bisschen Talent und sehr viel Übung. Mit jeder Minute Spielzeit wird man besser. Nicht die Spielfigur, sondern der Spieler. Das Spiel ist immer gleich, es gibt, abgesehen von den Partikeln, keine Zufallselemente im Spiel. Eine Stelle, die einst „UNMÖGLICH!“ erscheint, ist mit etwas Übung das einfachste auf der Welt. Es ist nicht, wie in vielen Rennspielen, das Auto, nicht, wie in Rollenspielen, der Charakter, nicht Messi oder Ronaldo, die aus fast jeder Situation ein Tor machen, das bist einfach nur Du! Es ist Deine Leistung, Dein Erfolg und nicht irgendein Wert im Speicher des Computers.

    Übrigens: Für alle, die das Spiel nicht kennen sei erklärt, dass bei Trackmania die Autos immer gleich sind. Es gibt unterschiedliche Designs, alle Eigenschaften sind aber gleich.

    Klar, es ist wie mit fast allen Spielen, dass auch für den Entwickler irgendwann der Reiz zur Neige geht. Vor allem, wenn es keine Konkurrenz gibt. Die beiden eingangs erwähnten Let‘s Plays haben mich zwischendurch ein wenig wach geküsst. Ich schaute den Leuten zu wie sie an bestimmten Stellen immer wieder scheiterten, bis sie einen Weg fanden, die Stelle zu überwinden oder einfach genug Übung hatten. Für mich als Hobbyentwickler ist das ohnehin das Größte zu sehen, wie andere das eigene Spiel spielen, ihren Spaß haben und man beobachtet, wie der Spieler die Gedanken des Designers nach und nach entschlüsselt. Eines der beiden Videos wurde sogar live übertragen und ich fieberte mit, als würde das eigene Kind an einem Wettbewerb teilnehmen. Jeder Fortschritt und jeder persönliche Rekord wurde bejubelt. Genau dafür entwickle ich so gerne Spiele! Das ist der Reiz für die ganze Mühe.


    Kommentare: 0
  • Tücken beim Leveldesign 12.01.2018 - 06:26 4
    Folgenden Nutzern gefällt das Design: alistez, damios, eitelkalk, Ikarus

    Wenn man sich CYPEST so anschaut, es vielleicht sogar spielt, könnte man kaum glauben, dass das Thema Leveldesign wirklich eins wäre. Schließlich fliegt man nur hoch, das Level füllt nicht einmal die ganze Bildschirmbreite aus und ohnehin gibt es kaum Bauteile. Eckige und schräge Wände, ein paar Gegner, Items, Speedfelder und Dekoration. Was kann daran so schwer sein?

    Tatsächlich nimmt der Levelbau, mit Ausnahme der Webengine, die meiste Zeit in Anspruch. Noch mehr als Grafiken, Sound und der andere Kram, den ich so mache. Wobei das auch nur die halbe Wahrheit ist. Der Bau eines Levels nimmt etwa ein Drittel der Zeit in Anspruch. Zwei Drittel bestehen aus Testen und Optimieren. Um zu verstehen, warum das so ist, muss man zunächst ein wenig in die Mechanik eintauchen.

    In CYPEST spielt man einen Virus, der einen Server infiltriert. Der Virus kann nur Informationen einsammeln und den Gegnern ausweichen. Der Spieler kann sich also nur nach rechts und links bewegen, selbst hoch und runter geht nicht. Wenn er das kurze Level schafft, wird der Server zerstört und alle sind glücklich.

    Worum es im Spiel aber eigentlich geht, sind die Punkte. CYPEST verfügt über umfangreiche Highscorelisten mit lokalen vergleichen. Das bedeutet, dass Glück keine Rolle spielen darf. Es darf nur das Können des Spielers darüber entscheiden, wo er in der Liste landet. Es ist ein sportlicher Vergleich von Fähigkeiten. Um dies möglichst fair zu gestalten, muss das Spiel einige Bedingungen erfüllen:

    1. Es darf keine Glücksfaktoren geben. Das heißt, dass alles immer gleich sein muss. Das Timing, die Bewegung der einzelnen Items, einfach alles, was das Gameplay beeinflusst und Auswirkungen auf Punkte sowie Schaffbarkeit des Levels haben kann. Tatsächlich gibt es in CYPEST keinen Zufall, abgesehen von optischen Dingen wie Partikeln oder den Hintergrundgrafiken.
    2. Die Fähigkeit des Spielers muss einen großen Einfluss auf die Punkte haben. Das heißt, dass man ein Level mit wenigen, mit vielen und mit sehr vielen Punkten schaffen kann und die Anzahl der Punkte rein vom Können des Spielers abhängt. Wie gut das funktionieren kann, sieht man derzeit an der Highscoreliste, beispielsweise an Level 1 der ersten Mission. Wer das Level schafft, kann "nur" 100 000 Punkte haben, vielleicht sogar weniger. Wer es bis zur Perfektion treibt, hat 220 000 Punkte oder mehr.
    3. Es muss immer wieder mehrere Wege geben, um schwierige Stellen zu schaffen. Wenn es einen einfachen und einen schwierigen Weg gibt, muss der schwierige Weg mit mehr Punkten belohnt werden.
    4. Es muss einen signifikanten Unterschied machen, ob man das Level schafft oder 200 Pixel vor dem Ziel stirbt. Aus diesem Grund gibt es vor jedem Ende noch extra Files zum einsammeln, außerdem 15 000 Bonuspunkte, wenn man durch die virtuelle Ziellinie saust und den Server wirklich zerstört.
    5. Jedes Level muss auch im Zweispielermodus gut funktionieren.

    Diese Punkte beinhalten vor allem Elemente, die den sportlichen Aspekt abdecken. Dazu gesellen sich noch die Architektur (es sollte abwechslungsreich sein) und allgemeine Abwechslung der Level. Das heißt, dass man deutlich spüren muss, dass man sich in einem anderen Level befindet. So gibt es Zwischendurch Level, die nur aus einem riesigen Slowspeed-Feld bestehen, dann wieder Level, bei denen es viele verschiedene Geschwindigkeitsfelder gibt. Manche Level legen den Schwerpunkt auf einen oder zwei Gegnertypen und so weiter.

    Zu guter Letzt darf man auch die Didaktik nicht außer acht lassen. Damit meine ich, dass neue Spielelemente sanft eingeführt werden, damit der Spieler begreift, was es damit auf sich hat. Erst nach und nach soll sich das Potential des neuen Elements voll entfalten. Beispielsweise taucht der Gegnertyp "Stampfer" erst in Level 4 der ersten Mission auf und da, am Anfang, nur am Rand. Man kann diesen Weg gehen und bekommt mehr Punkte, oder man fliegt daran vorbei und beobachtet, was da passiert. Weiter oben taucht dieses Gegner wieder auf, hier kommt man aber nicht mehr an ihm vorbei. Die Stelle ist aber, verglichen mit späteren Stellen, sehr einfach zu meistern.

    Beim Levelbau kommen viele Aspekte zusammen und es ist nicht einfach, jederzeit allem gerecht zu werden. Beispielsweise versuche ich, wie beschrieben, ein neues Element sanft einzuführen, zu steigern und dann mit anderen Elementen zu kombinieren, um Schwierigkeit und Abwechslung zu erhöhen. Das geht aber nicht immer, weil die Level sonst auf Dauer zu einfach und eintönig werden. Hier kommt nämlich der Wiederspielwert zutage. Als Beispiel dient hier Level 2 der ersten Mission. Am Ende wird alles, was es bis dahin gab, kombiniert. Wenn man es zum ersten Mal spielt, bekommt man fast einen Infarkt, weil aus allen Richtungen Schüsse auf einen zufliegen. Was zunächst unfair erscheint, ist aber eine Täuschung. Die Stelle sieht schwierig aus, ist aber total einfach. Es gibt drei Wege, sie zu schaffen, ohne getroffen zu werden, man muss nur die anfängliche Panik überwinden. Mit dieser gewaltigen Kombination von Gegnern führte ich an dieser Stelle ein weiteres "Element" in CYPEST ein, nämlich die besagte Täuschung. An einigen Stellen wirkt das Spiel unschaffbar, dabei gibt es immer einen einfachen Trick, auf den man kommt, wenn man kurz überlegt. Entweder braucht man ein bestimmtes Timing (Rhythmus), muss sich auf was Bestimmtes fokussieren (etwa nur die Wände anschauen und nicht auf die Gegner achten) oder den richtigen Weg finden. Dieser wird oft durch die Dateien im Spiel markiert. Wenn man nicht weiß, welcher Weg der Beste ist, sollte man den Dateien folgen.

    Das sind alles Dinge, auf die es zu achten gilt, aber das sind die Dinge, die eben nur ein Drittel der Zeit kosten.

    Was mir beim Leveldesign das Genick bricht, ist die super simple Steuerung. Da der Spieler weder hoch noch runter kann, ist das Timing das A und O. Ich kann nicht sagen: "Ich platziere das mal und der Spieler wird dass dann schon irgendwie schaffen, weil er abbremsen und beschleunigen kann." Am deutlichsten wird das bei den Stampfern. Die Geschwindigkeit ist fest einprogrammiert. Je nachdem, wo der Stamper platziert wird und wie groß der Abstand zwischen den Wänden ist, verhält sich dieser Gegner anders. Im simpelsten Fall ist er genau in dem Moment, wenn der Spieler vorbei fliegt, komplett offen. Im schlimmsten Fall geschlossen. Dazwischen gibt es viele Varianten zwischen "sehr einfach" und "fast nicht schaffbar", die man testen muss. Je weiter oben ein solcher Stampfer im Level steht, umso schwieriger der Test. Man muss alles durchspielen. Da sich auf den Startpunkt eines Gegners auch die Speedfelder davor auswirken können, muss man es immer individuell testen und anpassen.

    Zur Verdeutlichung: In CYPEST folgt dem Spieler eine Kamera. Die Gegner über der Kamera werden erst ab einem bestimmten Abstand zur Kamera aktiviert, vorher sind sie untätig. Der Abstand ist zwar immer gleich, aber je nach Speedfeld ist die Zeitspanne bis zur Ankunft des Spielers unterschiedlich.

    Gleiches gilt für jeden anderen Gegner und für deren Kombinationen. 32 Pixel weiter oben und die Stelle ist zu einfach, 32 Pixel weiter runter und sie ist nicht mehr zu schaffen.

    Wie oft ich ein Level teste und überarbeite, kann ich nur noch schätzen. Die leichteren, kürzeren Level brauchen ungefähr 20 bis 30 Tests. Bei einem Level wie beispielsweise Level 6 in der ersten Mission, gehen die Testläufe in die Hunderte. Es kann tatsächlich sein, dass man für ein Level, das man in einer Minute durchspielen kann (wenn man nicht stirbt) 12 bis 15 Stunden arbeitet. Im Durchschnitt rechne ich einen Arbeitstag pro Level (rund 10 bis 12 Stunden) bis alles passt.

    Leider ist es auch eine Tatsache, dass ich ein Opfer meines eigenen Trainings bin. Ich bin mittlerweile zu gut, um realistisch einschätzen zu können, was für normale Spieler schaffbar ist. Mitten in der 1.2 Phase habe ich mir eine halbe Stunde Zeit genommen um Screenshots zu machen. Ich spielte alle bis dahin bestehenden 14 Level mindestens zweimal komplett durch. Ein Spieler, der CYPEST noch nie gespielt hat und damit beginnt, braucht dafür sicherlich fünf bis sieben Spielsstunden.

    Deshalb suche ich auch immer wieder neue Tester und freue mich, wenn ich einem Spieler live zuschauen kann. Es ist interessant zu beobachten, wie andere Spieler so ein Level betrachten. Was sie wahrnehmen und was sie ignorieren. Leider hat man als kleiner Entwickler nur selten solche Gelegenheiten.

    Zum Ende möchte ich noch kurz beschreiben, wie die Arbeitsschritte aussehen. Zunächst überlege ich mir, was die Besonderheit des Levels sein soll. Jedes Level sollte mindestens einen ganz speziellen, unvergesslichen Abschnitt haben oder, wenn es sich um das erste Level einer Mission handelt, einen pädagogischen Auftrag. Beispielsweise wird in Level 1 der zweiten Mission der Teleporter näher gebracht. Am Ende soll der Spieler wissen, das es sie gibt und wie sie funktionieren.

    Dann beginne ich mit der Architektur. Ich setze von Start bis Ziel fast nur Wände ein. An besonderen Stellen, an denen ich die Architektur mit Gegnern verbinden will, etwa Stampfern, setze ich diese ein. Dann teste ich, bis ich ohne Probleme durchkomme und optimiere einige Stellen, die mir zu schwer oder zu leicht erscheinen. Dann platziere ich die Gegner und durchlaufe die Testphase erneut. Hier passe ich an manchen Stellen die Architektur wieder an, wenn etwas zu schwierig oder zu langweilig ist. Wenn ich an einer Stelle dreimal in Folge scheitere, MUSS sie geändert werden.

    Zu guter Letzt kommen die Items. Dateien, Ordner, Multiplikatoren und Time-Emitter werden platziert, gefolgt von den Lichtern. Nun wird noch einmal alles gründlich getestet. Verschiedene Wege, unterschiedliche Herangehensweisen um alles einzusammeln. Wenn es keine Möglichkeit gibt, eine Datei einzusammeln, wird sie wieder entfernt. Dabei versuche ich noch auf ein möglichst symmetrisches Erscheinungsbild zu achten.

    Interessant ist, dass sich das Spiel mit Lichtern ganz anders anfühlt als ohne. Mir ist oft aufgefallen, dass ohne Lichter manche Stellen total einfach, mit Lichtern aber unheimlich schwer sind. Das liegt vor allem an den zusätzlichen Reizen, die man verarbeiten muss. Oder um es mit den Worten eines Testers zu sagen: "CYPEST ist die totale Reizüberflutung." Lichter – und vor allem die dynamischen Schatten – machen die Level viel hübscher. Allerdings führt das auch zu einem geringeren Kontrast. Es liegt in der Natur der Sache, dass man dadurch vor allem die Objekte nicht gut wahrnehmen kann, die man nur im Augenwinkel sieht. Dadurch verengt sich das Sichtfeld enorm und man konzentriert sich nur noch auf das, was sich in einem geringen Radius um den Virus herum abspielt.

    Diesen Effekt kennt man auch aus anderen Spielen, etwa Ego-Shooter. Vergleicht man beispielsweise das alte Quake 3 mit dem neuen, noch nicht fertigen Quake Champions, dann fällt einem auf, dass das Spielprinzip im Kern ziemlich identisch ist. Ein großer Unterschied in Quake Champions sind aber die graphischen Ablenkungen. Es gibt viel mehr Lichter, dunkle(re) Stellen, Partikel und andere Effekte. Beispielsweise lenken Explosionen und, je nach Waffe, die Schüsse viel mehr ab als im Original. Abgesehen davon, dass auch die GUI und andere Elemente wesentlich kleiner geworden sind, ist es schwieriger, die wesentlichen Dinge im Auge zu behalten. Wer noch ein zweites Beispiel braucht, kann gerne mal das erste Need for Speed mit der Version von 2015 vergleichen.

    Nach der letzten Bearbeitungsphase warte ich meistens ein bis zwei Tage ab und teste erneut. Am besten erfolgt der Test, wenn ich müde bin. Wenn ich dann an einer Stelle immer wieder versage, muss sie überdacht werden. Sobald die Überarbeitung fertig ist, wird das Level für andere freigegeben. Dann sagen mir die Tester (hoffentlich), was alles falsch ist und es folgen weitere Korrekturen.

    Da CYPEST ein Wettbewerb ist, kann man auch nicht einfach ein Level raus hauen und hoffen, dass es funktionieren. Der Supergau ist, wenn man eine neue Version bringt und eine bereits erreichte Punktzahl ist nicht mehr schaffbar. Ebenso ärgerlich ist es, wenn ein Level später wesentlich einfacher wird. Wer sich zuvor bemühte, um ein Level zu schaffen und möglichst viele Punkte zu erreichen, fühlt sich im Nachhinein um seine Leistung betrogen. Zwar hat das Spiel momentan noch nicht viele Spieler, wir versuchen aber auch diesem Aspekt von Anfang an gerecht zu werden.


    Kommentare: 6
  • Blick zurück 05.01.2018 - 19:51 4
    Folgenden Nutzern gefällt das Design: alistez, TroMu, damios, eitelkalk

    Spieleentwicklung ist fast ausschließlich eine evolutionäre Angelegenheit. In kleinen, oft mühsamen Schritten wird das Werk immer besser. Bei den, gefühlt, eine Million Schritten, vergisst man ganz gerne, was man tatsächlich erreicht hat. Nachfolgend möchte ich einen Blick zurück werfen und zeigen, wie das bei CYPEST war. Außerdem möchte ich noch zeigen, was der nächste Schritt sein wird.

    Meine Arbeitsweise hängt von der Größe des Projekts ab. Ich unterscheide zwischen kleinen, großen und sehr großen Projekten. Ein kleines Projekt ist ein Spiel, dessen Entwicklungszeit weniger als 12 Monate dauert. Was darüber geht, ist groß, mehr als 3 Jahre ist sehr groß.

    Kleine Projekte haben ein konkretes Ziel. Eine Deadline, eine begrenzte Vision davon, was erreicht werden soll. Wenn das erreicht ist, wird vielleicht noch gepatcht, dann ist das Projekt Geschichte. Bei großen Projekten sieht es anders aus, weil sich meistens die Zielsetzung unterscheidet. Das erfordert nicht nur eine bessere Planung, sondern vor allem dem Überwinden des inneren Schweinehundes. Bis zu einem gewissen Maß ist nichts jemals fertig.

    CYPEST ist mittlerweile ein großes Projekt. Obwohl man es dem Spiel auf den ersten Blick nicht ansieht, steckt enorm viel Arbeit, Technik und Kreativität darin. Leider merkt man das momentan erst dann richtig, wenn man es Spielt.

    Als ich mit der Entwicklung begann, erstellte ich die ersten Grafiken und baute eine spielbare Version im GameMaker. Ich wusste genau, wie das Spiel von seiner Mechanik her funktionieren soll und was die wesentlichen Features sein werden. An diesem Kern hat sich bis heute fast nichts geändert. Alles Andere wurde mittlerweile mehrfach auf den Kopf gestellt. Am deutlichsten wird das am Screenshot:

    CYPEST evolution

    Links ist der Prototyp zu sehen, rechts die Version 1.0. Wirklich final ist das eigentlich auch noch nicht.

    In etwa bei 2/3 der Entwicklung (aus der Sicht von heute) gab es eine Richtungsänderung. Die Lichter waren schon immer geplant, der Neon-Look hingegen kam nach einer ausführlicheren Teambesprechung und hatte weitreichende Folgen. Das Neon ist nicht nur ein anderes Grafikset, es ist ein fester Bestandteil der Engine, zumindest bei den Wänden. Im Editor werden noch die alten Grafiken gesetzt. Wenn das Level gestartet wird, rechnet die Engine das komplette Level neu und generiert die Wände als eine riesige Textur (vereinfacht gesagt). Dabei wird nicht einfach nur die Wandfarbe bestimmt, sondern auch die Kanten und der korrekte Schein nach Außen in allen möglichen Kombinationen. Eines der vielen Vorteile daran ist, dass wir die Farben variieren können, ohne neue Grafiken zu brauchen. Wir können auch Texturen drüber mappen, was wir ab Version 1.2 tun werden:

    Diese Änderung hatte weitreichende Folgen, die wir heute noch spüren. Beispielsweise mussten alle Gegnergrafiken geändert werden. Ebenso Virus, Logo und Menüs. Ursprünglich sollte es eine „Pixelgrafik mit Licht und Schatten werden“. Auf der Webseite merkt man, Stand heute, dass der modernisierte Wechsel dort niemals ankam.

    Die Änderungen an der Grafik sind nur ein Teil der permanenten Verbesserungen. Es werden nicht nur Grafiken ausgetauscht und, beispielsweise, neue Hintergründe hinzugefügt, sondern auch am Sound hat sich vieles geändert.

    Ursprünglich sollten 8Bit / 16Bit Lieder abgespielt werden, wie man es noch im Cracktro des Spiels hört. Zum Neon passt das aber nicht mehr. Deshalb wurden alle Lieder verworfen und neue komponiert. Vorwiegend sind nun Acid / House und Goa Musik zu hören. Dabei stellte ich bei Versuchen fest, dass 140 BPM so ziemlich das optimale Tempo für das Spiel sind. CYPEST hat unterschiedliche Geschwindigkeiten (aufgrund der Speedfelder) und somit musste eine Geschwindigkeit gefunden werden, die einen guten Kompromiss darstellt. 170 BPM D&B wäre perfekt für Ultraspeed, aber bei Slowspeed ist das einfach zu schnell und das Spiel fühlt sich viel zu träge an. 140 sind der perfekte Kompromiss.

    Nachdem sich ein Testspieler über die Musik beschwerte, werden immer wieder neue Lieder erstellt und die „nervigsten“ Lieder ausgetauscht. Das Problem bei jedem Spiel ist, dass manche Lieder auf Dauer sehr nerven können. Dies ist auch ein Punkt, der laufend verbessert wird.

    Gleiches gilt auch für die Engine. Was mit GMS2 begann, mündete in C++. Der entscheidende Vorteil ist, dass wir nun alles im Griff haben und nicht auf das Wohlwollen einer schlecht gepflegten Entwicklungsumgebung angewiesen sind. Doch auch hier wird laufend optimiert. Immer wieder wird die Geschwindigkeit erhöht und kleine Details verbessert, die in der Summe das Spielerlebnis bereichern.

    Der Unterschied zu einem kleinen Projekt ist folgender: Immer wieder schaue ich mir das Spiel an. Auf selbst erstellten Videos, Screenshots oder in dem ich es spiele. Dann suche ich mir die Punkte heraus, die mich am meisten stören und arbeite es dann ab. Über mehrere Versionen hinweg bleibt kaum ein Stein auf dem anderen, aber man merkt rückblickend, wenn man alte Videos und Screenshots anschaut, wie das Spiel wesentlich besser wurde. Abgesehen von den vielen Partikeln, die nun das Spiel zieren, fällt auf alten Videos am ehesten auf, dass die Lichter links und rechts über den Levelrand hingen. Das klingt wie eine Kleinigkeit, aber wenn man es direkt vergleicht, sind das Welten.

    Selbst bis 1.2, der bevorstehenden Version, wird sich noch viel tun. Wer weiß, wie die Version in drei Monaten aussieht?


    Kommentare: 4
  • Der lange Weg zu 1.2 01.01.2018 - 20:53 3
    Folgenden Nutzern gefällt das Design: damios, eitelkalk, krazun

    Momentan befindet sich das Spiel in der Version 1.1, aber die Entwicklung geht weiter. 1.2 steht vor der Tür und hat erfolgreich Weihnachten und Neujahr vertrieben.

    Eigentlich wollten wir von 1.0 auf 1.2 springen, aber im ersten Drittel der Entwicklung kam uns noch ein schlimmer Bug unter und so mussten wir handeln. Deshalb klingt der nächste Versionssprung viel geringer, als er tatsächlich ist.

    Was ist geplant?

    Zunächst einmal wird eine zweite Mission geben. Die erste Mission hat 8 Level, die zweite wird 12 erhalten. Das klingt zahlenmäßig vielleicht nicht nach viel, aber wer CYPEST ein wenig spielt, kann sich vorstellen, dass da mehr dahinter steckt. Wenn man ein Level fehlerlos spielt, ist man zwar in etwa einer Minute durch, aber das muss man erst einmal schaffen. Für manche Level braucht man, vergleichbar mit Super Meat Boy, sehr viele Anläufe. Und selbst wenn man am Ziel ist, hat man mit Sicherheit noch nicht alle möglichen Punkte. Letztlich geht es in CYPEST genau darum: den Punktevergleich.

    Der Levelbau sieht zwar auf den ersten Blick einfach aus, aber es erfordert extrem viele Tests. Jedes Level muss mehrere hundert Mal gespielt werden, bis es stimmig ist.

    Mit der neuen Mission gibt es auch neue Features. Zum Beispiel wird es einen Teleporter geben, außerdem einen neuen Gegner-Typ. Dazu gibt es für die Dateien und Ordner, die man einsammeln kann, ein komplett neues Grafikset. Neue Hintergründe und neue Musik runden das Paket ab.

    Doppelter Wortsinn

    Abgesehen von den Inhalten arbeiten wir außerdem noch an einer Browserversion. Man wird also mit dem selben Account auf dem Desktop und/oder im Browser spielen können. Wir meinen es also Ernst, wenn wir von einer neuen Version sprechen. 

    Leider lässt sich momentan noch nicht sagen, wann die neue Version fertig wird. Derzeit arbeiten wir noch an den Inhalten. Während ich dann am Levelbau arbeite, wird sich der Kollege um die Portierung kümmern. Wir hoffen in der Zwischenzeit auf möglichst viel Feedback, damit wir das gleich in 1.2 einfließen lassen können.


    Kommentare: 0