Game-Runner
Auf https://game.gbsl.website lassen sich die erstellten Games hochladen und spielen. Mit einer kleinen Modifikation können kann sogar der Punktestand einer Spielerin/Spielers in ein Scoreboard übernommen werden.
Im erstellten Spiel wurde (in den meisten Fällen*) eine Funktion set_score
definiert, über welche jeweils der neue Score aktualisiert wurde. Um den Score nun auch im Scoreboard zu registrieren, muss dort device.report(new_score)
aufgerufen werden. Sofern der aktuelle Wert einen neuen Punkte-Höchststand ist, wird er ans Scoreboard geschickt.
def set_score(new_score):
global score
score = new_score
if score > 10 and level == 1:
level_2()
elif score < 20 and level == 2:
level_1()
device.update_text(
id='score',
text=f'Score: {score}'
)
device.report(score)
* Falls keine set_score
Funktion verwendet wurde, muss überall dort, wo der score
verändert wird das device.set_score(score)
aufgerufen werden.
Game Hochladen
Ein Game kann als .zip
Ordner hochgeladen werden. Der komprimierte Ordner enthält genau ein Python-Programm (z.B. game.py
) und falls das Spiel Bilder und oder Sound enthält, auch diese Ordner.
Die Ordnerstruktur könnte also in etwa wie folgt aussehen:
game.zip
├── game.py
├── Bilder
│ ├── hintergrund.png
│ ├── ghost.gif
│ └── ghost_yellow.gif
└── Sound
├── booooom.mp3
└── catch.mp3
Anzeigebild hinzufügen
Es kann ein Anzeigebild für das Game hochgeladen werden. Dazu wird dem Zip-Ordner ein Vorschaubild mit dem Namen preview
(z.b. preview.png
, preview.jpg
oder preview.gif
) hinzugefügt. Die Ordnerstruktur sieht dann wie folgt aus:
Wichtig: Das Vorschaubild muss exakt den Namen preview
haben, sonst wird es nicht verwendet.
game.zip
├── game.py
├── preview.png
├── Bilder
│ ├── hintergrund.png
│ ├── ghost.gif
│ └── ghost_yellow.gif
└── Sound
├── booooom.mp3
└── catch.mp3
Spieloptimierungen
Damit das Spiel schneller lädt, gibt es ein paar Tricks:
- entfernen von allen nicht verwendeten Bildern und Sound-Tracks aus den Bilder/Sound Ordnern
- Die Bildergrösse verringern, indem die Auflösung des Bildes heruntergesetzt wird (bspw. für Hintergründe auf eine Breite von
500px
, für kleine Objekte auf eine Breite von200px
). Achtung: Durch die Reduktion der Auflösung gehen Informationen verloren und das Bild kann u.U. verpixelt werden. - Die Dateigrösse von Sound-Dateien reduzieren. Auch hier geht Soundqualität verloren. Oft ist dies aber kaum spürbar bei Smartphone/Laptop Lautsprechern. Diese Reduktion der Dateigrösse heisst Komprimierung und kann bspw. mit einem Onlinetool gemacht werden:
- mp3smaller ->
Small File Size (MP3 Bitrate 32Kbps)
wählen - compress-mp3 ->
Quality: Best Compression
wählen
- mp3smaller ->
Codeoptimierung
Wenn im Spiel mehrfach (daher auch an einem anderen Ort als ganz am Anfang) device.clear_playground()
steht, so können bis auf den ersten Aufruf die Befehle zu device.clean_playground()
(mit einem n
statt einem r
am Ende) verwendet werden. Dies bewirkt, das die Bilder und Sound-Dateien nicht gelöscht werden und somit nicht erneut hochgeladen werden müssen. Dazu müssen aber auch alle device.configure_playground()
Befehle (ausser der Erste!) angepasst werden und die images=
und audio_tracks=
Optionen entfernt werden. (Bemerke: Die Option image=
kann dennoch gesetzt werden.)
Wettbewerb 🥇🥇🥇
In jeder Klasse werden Spiele und SpielerInnen prämiert:
- Das am besten bewertete Spiel der Klasse
- Das am meisten gespielte Spiel der Klasse
- Die Spielerin/Der Spieler mit dem Highscore beim (gesamthaft) am besten bewerteten Spiel
Zeitraum: Montag 25.01.2021 bis Sonntag 31.01.2021