• 12Minuten
blank

Quiz-Spiele sind seit vielen Jahren äußerst beliebt. Egal, ob im linearen Fernsehen, auf YouTube oder in geselliger Runde mit Freunden und Familie: Das Wetteifern um die richtigen Antworten bereitet meist großes Vergnügen. Warum also nicht Dein eigenes Spiel entwickeln?

Das wäre doch großartig, oder? Freunde kommen zu Besuch, um einen unterhaltsamen Abend zu verbringen. Und Du hast da auch schon etwas vorbereitet: Dein eigenes Quiz-Spiel! Den Laptop an den Fernseher oder Projektor angeschlossen, und schon kann es losgehen. Die Spieler haben die Wahl zwischen mehreren Kategorien – oder sie wählen einfach alle aus. Jede Frage muss innerhalb weniger Sekunden beantwortet werden. Wer am Ende die meisten Punkte hat, gewinnt.

Quiz Champion
So sieht Quiz Champion aus

Um das zu realisieren, habe ich einen kleinen Prototyp gebastelt, den Du nach Belieben verändern und erweitern kannst. Alles, was Du brauchst, ist die kostenlose Version von GameMaker Studio 2, den Download des Prototyps (findest Du unten) und ein bisschen Zeit. Vor allem, um zahlreiche Fragen und Antworten vorzubereiten.

Was kann der Prototyp?

Ich habe vier Kategorien mit jeweils 20 Fragen vorbereitet. Das ist zwar nicht viel, aber immerhin ein Anfang. Die Kategorien sind:

  • Allgemeinwissen
  • Geschichte
  • Wissenschaft
  • Sport

Die Spieler können entweder eine Kategorie wählen oder alle. Du kannst natürlich auch Deine eigenen Kategorien erstellen. Zum Beispiel, wenn Du ein Quiz für eine Hochzeit oder einen Geburtstag entwerfen möchtest. Oder für die Schule, Studenten, ein Firmenjubiläum oder Deinen Sportverein.

Die Anzahl der gestellten Fragen und die Zeit pro Frage sind anpassbar. Standardmäßig werden fünf Fragen gestellt, und jede muss innerhalb von 15 Sekunden beantwortet werden. Je schneller geantwortet wird, desto mehr Punkte gibt es. Am Ende wird die Gesamtpunktzahl angezeigt. Außerdem wird darauf geachtet, dass pro Runde keine Frage doppelt gestellt wird.

Farben und Schriften kannst Du ganz einfach anpassen. Ebenso die Fragen und Antworten, die in einem Array hinterlegt sind. Neben der Frage und den Antwortmöglichkeiten siehst Du die aktuelle Punktzahl, die verbleibende Zeit und die Anzahl der bisher gestellten Fragen. Unten läuft sogar ein Zeitbalken, um das Ganze ein wenig spannender zu machen.

Steuerung

Du kannst das Spiel entweder per Tastatur (Nummern) oder per Maus steuern. Dank der Maussteuerung sollte auch eine Touch-Bedienung funktionieren – das konnte ich allerdings nicht testen.

Nur ein Prototyp!

Ich habe versucht, einen guten Kompromiss zwischen Funktionalität, Anpassbarkeit und Übersichtlichkeit zu finden. Das bedeutet, dass wahrscheinlich einige Features fehlen. Es gibt auch nur einen Einspielermodus. Das heißt: In einer Gruppe kann nacheinander gespielt und die Punkte notiert werden. Eine Highscore-Liste und andere Kinkerlitzchen fehlen ebenfalls.

Eine sinnvolle Verbesserung wäre eine kurze Pause zwischen den Fragen, in der klar signalisiert wird, ob die Antwort richtig oder falsch war und, wenn falsch, was die richtige Antwort gewesen wäre. Aber das sollte kein großer Aufwand sein, falls Du es nachträglich realisieren möchtest.

Gegebenenfalls wäre auch noch eine Gamepad-Steuerung sinnvoll, aber dies zu ergänzen ist in GameMaker Studio nicht sonderlich schwierig.

Im Folgenden werde ich den Aufbau und den Code erklären. Du kannst aber auch einfach ganz nach unten scrollen und den Prototyp herunterladen.

Aufbau

Wir haben nur einen Raum und zwei Objekte.

obj_menu: Das Hauptmenü mit dem Titel. Hier wählt der Spieler die Kategorie aus.
obj_quiz: Das eigentliche Spiel mit der Spiellogik.

Wir starten also mit obj_menu. Der Spieler wählt die Kategorie aus. Dann wird obj_menu gelöscht und obj_quiz erstellt. Wenn das Quiz vorbei ist, kann der Spieler wählen, ob er zurück zum Menü will um eine neue Kategorie zu wählen oder eine neue Runde spielen möchte. Dabei lässt sich alles per Tastendruck (Zahlen) oder Maus steuern.

Schauen wir uns den Code an.

obj_menu

Wir haben insgesamt fünf Events.

Event Create

Hier haben wir die wichtigsten Einstellungen. Werte, die wir später im Quiz brauchen, sind global.

Event Step

Das ist lediglich Tastatur und Maussteuerung. Sobald gewählt wurde, lassen wir die Instanz sterben.

Event Draw

In der Schleife werden nacheinander die Kategorien aufgelistet. Je nachdem, wo die Maus ist, wird das Rechteck dahinter in einer anderen Farbe gezeichnet. Wer genau hinschaut, wird bemerken, dass ich Template Strings verwende.

Escape-Taste losgelassen

Wenn wir nicht im Browser sind, wird das Spiel geschlossen.

Event Destroy

Bevor die Instanz zerstört wird, erstellen wir das Quiz-Objekt.

obj_quiz

Auch hier haben wir fünf Events. Alle Funktionen, die wir verwenden, schauen wir uns weiter unten an.

Event Create

Hier kann man einige Dinge anpassen, etwa Positionen, Farben oder die Zeit pro Frage.

Event Step

Zunächst unterscheiden wir, ob das Spiel vorbei ist (game_over) oder nicht. Wenn das Spiel läuft, läuft auch die Zeit runter (time_left). Anschließend kommt die Abfrage der Steuerung.

Wenn das Spiel vorbei ist, werden zwei Buttons angezeigt, dessen Steuerung wir hier ebenfalls kontrollieren (Tastatur und Maus). Dargestellt wird das natürlich im Draw-Event.

Event Draw

Das Prinzip ist hier ganz ähnlich wie im Menü, nur das wir, wie im Step-Event, erneut zwei Zustände haben. Die GML-Buttons sind wirklich nicht toll, aber ich wollte das man bei einem Projekt verwenden.

Escape-Taste losgelassen

Wenn wir nicht im Browser sind, wird die Instanz gelöscht.

Event Destroy

Bevor die Instanz zerstört wird, erstellen wir das Menü-Objekt.

Jetzt schauen wir uns noch die Skripte an.

Skripte

init_questions

Die Kategorien sind ein einfaches Array. Die Fragen sind wie folgt aufgebaut:

["Frage", ["Antwort 1", "Antwort 2", "Antwort 3", "Antwort 4"], 0]

Die Zahl am Ende gibt an, welche Antwort richtig ist. Bitte berücksichtigen, dass die Zählung bei Null beginnt!

set_category_and_destroy

Diese Funktion wird im Step-Event des Menüs aufgerufen. Wir legen die Zahl der Kategorie fest und zerstören die Instanz.

load_question

Hier wird die nächste Frage geladen und dabei berücksichtigt, dass keine Frage doppelt gestellt wird. Die nächste Frage, Antworten und richtige Antwort wird in den Variablen question_text, answer_options und correct_answer gespeichert. Am Ende setzen wir die Zeit zurück auf max_time.

check_answer

Mit dieser Funktion überprüfen wir, ob die Antwort richtig war. Wenn alle Fragen gestellt wurden, wird die Runde beendet. Übrigens: Gleich am Anfang wird mit score += round(time_left); die Punktzahl addiert.

new_round

Hier setzen wir einfach nur die Ausgangsvariablen zurück, wenn wir eine neue Runde starten.

Das war es bereits.

Download

Weiterführende Links

Projekt Snake
Projekt Tic-Tac-Toe – Teil 1
Memory im GameMaker
Casino Würfel – Das Ein-Objekt-Spiel
Farb-Themes für eigene Spiele

Autor

Abonnieren
Benachrichtige mich bei
guest

0 Comments
Älteste
Neueste Meistgewählt
Inline Feedbacks
Alle Kommentare anzeigen