Grundlagen Spielentwicklung

Diese Seite fasst wichtige Grundlagen zum Thema Spielentwicklung zusammen: Scripts schreiben – Spielmechaniken entwickeln – Grafiken und Sounds erstellen. Diese Fähigkeiten werden mit Übungen gefestigt und auf den darauffolgenden Seiten eingesetzt.

Arbeitsmittel
gesperrter SchuBu+ Inhalt
gesperrter SchuBu+ Inhalt

Info für Lehrende

Eingeloggte Lehrer*innen mit Lizenz für dieses Buch werden hier durch Unterrichtsvorschläge und Zusatzinformationen zur Seite und zu Lernzielen unterstützt.
Mehr zu SchuBu+

Leveldesign

Der Kern eines Spiels sind die Regeln und Möglichkeiten, die den Spielerinnen und Spielern Herausforderungen bieten. Solche Herausforderungen, die angepasst werden, um die Spielschwierigkeit festzulegen, nennt man Spielmechaniken.

Die Aufgabe für Game-Designerinnen und Game-Designer ist es, interessante und lösbare Schwierigkeiten zu erfinden.
Popup: Ausgewogenes Spiel

Ausgewogenes Spiel

Erfinde innerhalb von fünf Minuten ein gut ausgewogenes Spiel in der Game-Engine! Probier das Spiel zwischendurch immer wieder aus!

Balancing

Wenn ein Spiel so schwer ist, dass nur wenige Menschen es schaffen, weil alle anderen schon vorher aufgegeben haben oder wenn es so leicht ist, dass man es sofort bewältigt, dann ist es unausgewogen. Den Vorgang, ein Spiel so zu gestalten, dass es ausgewogen ist, nennt man Balancing.

Illustration eines weiblichen Roboters, wie sie über Kissen und Lava auf einer Schnur balanciert.
Ein Spiel soll gut gebalanced sein.

Es ist ein guter Trick, ein Spiel zuerst viel zu leicht und dann viel zu schwer zu gestalten. So sieht man die zur Verfügung stehenden Möglichkeiten, um es gut auszubalancieren.

Popup: Schweres Spiel

Schweres Spiel

Erfinde innerhalb von fünf Minuten ein sehr schweres Spiel! Probier das Spiel zwischendurch immer wieder aus!

Wenn ein Spiel aus mehreren Levels besteht, dann sollte es im ersten Level leicht sein, im zweiten Level dann deutlich schwerer, dann wieder etwas leichter, … Insgesamt soll es langsam immer schwerer werden.

Art

Die Spielwelt und die Situation, in der ein Spiel beginnt, nennt man Setting. Es ist eines der wesentlichen Elemente der Game-Story. Mithilfe von Grafik und Sound wird diese Spielwelt für die Spielerinnen und Spieler klar.

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Ein Setting soll Spielerinnen und Spielern drohende Gefahren und mögliche Abwehrmittel aufzeigen.

Grafik

Grafiken bestimmen wie ein Videospiel aussieht und erzählen einen Teil der Game-Story. Grafikerinnen und Grafiker arbeiten in vielen Bereichen:

Character Design

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Grafische Gestaltung der Spielfiguren.

Interface Design

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Gestaltung der Spielanzeigen und der Spielbedienung

Concept-Art

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Erste Zeichnungen, wie ein Spiel, die Charaktere, die Welt aussehen wird

Level-Design

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Anordnung der Spielelemente und Herausforderungen in einem Spielabschnitt

Texture-Art

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Gestaltung der Oberflächen von allen Elementen eines Spiels

3D-Art

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Gestaltung der dreidimensionalen Modelle von Dingen und Figuren

Animation

Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang. Schwarz-weiß Zeichnung eines stürmischen Friedhods und einer mysteriösen Person in einem Kapuzenumhang.
Gestaltung der Bewegungen von Dingen und Figuren

Sounddesign

Zur Tongestaltung (dem Sounddesign) gehören:

  • Musik: ein Soundtrack zum Spannungsaufbau, um Atmosphäre und Stimmung zu erzeugen (z. B. wird die Musik gruselig, wenn man sich einer Gefahr nähert)
  • Atmo: an einen Ort gebundenes Hintergrundgeräusch, das in der Schleife läuft. Es sollte sehr zurückhaltend gestaltet werden. Was hört man an einem Ort, wenn es still ist? (Beispiele: Wind in der Einsamkeit, Herzklopfen in der Introspektive, Verkehr in der Stadt, Regen)
  • Geräusche und Effekte: um Ereignisse und Aktionen hören zu können (z. B. Geräusche von splitterndem Glas, von quietschenden Reifen oder Anstoßen an einer Wand)

Für das Sounddesign kann man auf kostenlose Sounddatenbanken wie z. B. von Pixabay zurückgreifen. Bei der Auswahl muss man darauf achten, dass Sounds und Musik unter einer Creative-Commons-Lizenz veröffentlicht wurden.

Sounds kann man mit Mikrofon und Soundrekorder auch selbst aufnehmen. Ein beliebtes Programm dafür ist der freie Audioeditor und Audiorekorder Audacity, da man mit diesem die Sounds danach auch bearbeiten kann.

Man sieht die Benutzeransicht von Audacity.
Audacity

Partnerarbeit

  1. Klickt auf den Button für ein zufälliges Setting!
    Aufgabe

    Spiel-Setting

  2. Erstellt mit GIMP eine einfache Zeichnung der beiden exakt runden Spielfiguren in einer Ansicht von oben und speichert es als png-Bild ab! Es muss genau folgende Auflösung haben: 62 x 62 Pixel.
  3. Öffnet die GamBu – Game-Engine und gestaltet ein kleines Level für das zufällig ausgewählte Setting!
    • Stellt die Welt auf Steuerung mit Pfeiltasten! Klickt danach auf Assets, dann auf Texturen! Klickt auf die Maus1 und ladet eure erste Spielfigur hoch! Eure zweite Spielfigur soll Maus2 ersetzen.
    • Erstellt anschließend eine kleine Rennstrecke aus Wand-Teilen mit einem Ziel am Schluss und zwei Elementen am Anfang!
    Popup: Wiesen-Wette

    Wiesen-Wette

    Probiert die Wiesen-Wette gemeinsam aus! Die zweite Maus wird mit WASD gesteuert.
  4. Versucht folgende Sounds zu produzieren und fügt sie anschließend in euer Spiel ein:
    • das Geräusch des Events (siehe am Ende eurer Setting-Beschreibung)
    • eine Atmo (höchstens 30 Sekunden)
    Popup: Wiesen-Wette mit Sounds

    Wiesen-Wette mit Sounds

    Importiert die erstellten Sounds für Event und Atmo in euer Spiel! Klickt dafür auf Assets und dann Sounds! Am Schluss testet das Spiel wieder gemeinsam!

Programmieren

Ein Computerprogramm ist eine haargenaue Anleitung für einen Computer, was er tun soll. Computerbefehle sind in Programmiersprache verfasst, damit der Computer auch versteht, was man ihm befiehlt.

Illustration eines Roboters, wie er versucht mit binärem Code einen verwirrt dreinschauenden Computer zu programmieren.
Sprachenlernen zahlt sich aus.

GamBu-Script

GamBu-Script ist die Scriptsprache, mit der man Spielelemente in der SchuBu-Game-Engine GamBu programmieren kann. Für jedes runde Element in der GamBu-Game-Engine, also , , , und , kann man ein Script schreiben, das bestimmt, was das Element kann, macht und wie es reagiert.

 + Script =  Bot

Alles in GamBu-Script wird kleingeschrieben.

Ein Befehl lautet zum Beispiel:

bei berührung sage "Autsch!" (In Anführungszeichen darf auch großgeschrieben werden.)

Bei Berührung sage: „Autsch!“ würde also nicht funktionieren.

bei berührung sage "Autsch!"

Programmiere die Schlange so, dass sie sich genauso wie die Schlange in der Vorlage bewegt!

Tipp: Klicke auf den Bot, um ihn zu programmieren. Im Skriptfenster steht ganz rechts BEFEHLE. Das ist eine Liste der wichtigsten Skriptbefehle. Du brauchst für dieses Skript nur vier verschiedene Befehle: wiederhole, block, hinauf und hinunter. Definiere zuerst einen Block, der die Schlange einmal hinunter- und hinaufgehen lässt. Nenne diesen Block patrouilliere und wiederhole seine Ausführung 100 sekunden lang! In diesem Block befinden sich zwei Zeilen. In der ersten Zeile wird zwei Sekunden der Befehl hinunter wiederholt, in der zweiten Zeile der Befehl hinauf.

Info für Lehrende
Patrouille – Vorlage
Patrouille – Aufgabe

Hacks und Tricks

Schleifen und Verzweigungen

Syntax
Beispiel
Anmerkung
say ("Ein beliebiger Text")
say ("Halli Hallo")
Der Bot sagt: „Halli Hallo” in einer Sprechblase.
say ("")
say ("")
Die Sprechblase verschwindet.
move (x, y)
move (-200,100)
Der Bot bewegt sich mit Kraft 200 nach links und 100 nach oben.
repeat seconds (x) [Befehl]
repeat seconds (10) move (0, 0.1)
Der Bot bewegt sich 10 Sekunden lang langsam nach oben.
repeat count (x) [Befehl]
repeat count (3) move (0, -200)
3 Frames hintereinander beschleunigt der Bot sehr stark nach unten.
transform to [Element-Typ]
transform to switch
Der Bot verwandelt sich in einen Schalter. Element-Typen: ball, player, goal, death, ++, wall, stop, switch, bot
state of element (n)
say (state of element (1))
Wenn das Element 1 eingeschaltet ist, ist state == 1 sonst 0.
if ([Bedingung ist wahr]) [Befehl]
if (state of element (35) == 1) say ("eingeschaltet!")
Falls der Schalter eingeschaltet ist, dann sagt der Bot "eingeschaltet!".
Wichtig: In Bedingungen muss für die Gleichheit immer ein doppeltes == verwendet werden.
if ([Bedingung wahr ist]) [Befehl] else [anderer Befehl]
if (state of element (35) == 1) say ("eingeschaltet!") else say ("ausgeschaltet")
Mit der zusätzlichen Angabe von „else [anderer Befehl]“ wird hier bestimmt, was der Bot macht, wenn der Schalter ausgeschaltet ist.

Funktionen und Events

Syntax
Beispiel
Anmerkung
function [bezeichnung] ([p1, p2, ..]) { [befehl 1] [anderer Befehl] [beliebig viele weitere Befehle] }
function kreis (drehung , geschwindigkeit) { rotate (drehung) move forward (0, geschwindigkeit) }
p1, p2 sind Parameter. Man kann eigene Namen erfinden und sie in der Funktion wie Variablen verwenden.
[Funktionsbezeichnung] ([w1, w2])
kreis (1,1) kreis (10, -10)
Mit diesem Aufruf der eigenen Funktion mit dem Namen „kreis” bewegt sich der Bot ein bisschen in einem Kreis weiter. Damit er einen ganze Kreis fährt, muss man diese Funktion wiederholt aufrufen.
[variablenname] = [Information]
alter = 12 satz = "Mein Freund ist ein Bot"
Der Variablenname kann alles außer ein GamBu-Script-Befehlswort sein.
on touch [Elementtyp oder ein Element oder finger] ([event_info oder nichts]) => [Befehl]
on touch player () => say ("Hallo") on touch wall () => say ("aua") on touch element (9) () => say ("Oh. du bist es.") on touch finger () => say ("Du hast mich angeklickt.")
Das Event wird bei Berührung ausgelöst. Element-Typen: ball, player, goal, death, ++, wall, stop, switch, bot – finger bedeutet, dass man das Element angeklickt hat.
on appear [Elementtyp oder ein Element] ([event_info oder nichts]) => [Befehl]
on appear death () => move forward (0, -100) on appear element (10) () => say ("Hallo, mein Lieblings Wuzi!")
Das Event wird bei Sicht ausgelöst.
face element (n)
face element (103)
Der Bot dreht sich ein kleines Stück in die Richtung zum Element.
move forward (rechts, vor)
move forward (0, 10)
Der Bot bewegt sich etwas nach vor. Bei minus (0, 10) würde er sich zurück und bei (10,0) von sich aus gesehen nach rechts bewegen.
rotate (x)
rotate (10)
Der Bot dreht sich ein bisschen im Uhrzeigersinn. Achtung: Elemente, die Lebewesen darstellen, drehen sich in die Richtung, in die sie sich bewegen. Das kann der Grund sein, wenn rotate keine Auswirkung zeigt.
distance to element (x)
if (distance to element (x) < 100) say ("Ich komme näher.")
Eine solche if () .. Konstruktion muss in einer Schleife wiederholt werden, damit der Bot im richtigen Augenblick reagieren kann.
log ("text" + "text2" + x)
log ("Der Wert der Variable my_v = " + my_v)
Mit log kann man Texte und Werte in die GamBu-Konsole schreiben. Das hilft beim Fehlerfinden. Mit + werden mehrere Texte verbunden.

7. Grundlagen Spielentwicklung
gesperrter SchuBu+ Inhalt Tools
Zeitgesperrter SchuBu+ Inhalt
Zufallgesperrter SchuBu+ Inhalt
Zeigengesperrter SchuBu+ Inhalt
Rechnengesperrter SchuBu+ Inhalt
Antwortengesperrter SchuBu+ Inhalt
Quizgesperrter SchuBu+ Inhalt
Info
Buchauswahl Digitale Grundbildung 4 - Inhaltsverzeichnis
Tools
Zeitgesperrter SchuBu+ Inhalt
Zufallgesperrter SchuBu+ Inhalt
Zeigengesperrter SchuBu+ Inhalt
Rechnengesperrter SchuBu+ Inhalt
Antwortengesperrter SchuBu+ Inhalt
Quizgesperrter SchuBu+ Inhalt
Über SchuBu
Zwischenstand gespeichert
Meine Lösung prüfen
erledigt
Juhu!
Du hast das Aufgabenpaket abgeschlossen.
Erledigt:
Genug für heute