Episode 21: Web GameDev
Spiele im Browser, Spiele für den Browser
Viele Engines bieten einen Web-Export an. Andererseits gibt es auch Engines direkt fürs Web. Wofür das gut ist und wofür nicht, klären wir in dieser Folge.
Welche Unterschiede gibt es zwischen einem Web-Export in einer herkömmlichen Engine und einem Spiel, welches direkt fürs Web entwickelt wurde? Welche Vorteile hat es für SpielerInnen, welche in der Entwicklung? Mit welchen Limitationen muss man klarkommen?
Wir stellen ein paar Tools und Engines vor, die für Web-Games geeignet sind, erklären den Unterschied zwischen DOM-basierten und Canvas-basierten Games und spinnen darüber hinaus ein bisschen rum, welche Web-Tools man wie zweckentfremden kann, um sie in der Entwicklung einzusetzen, oder welche Web-Features auch in herkömmlichen Games sinnvoll sind.
Außerdem haben wir neu und shiny einen Discord-Server, auf denm ihr mit uns über diese Folge, unsere anderen Folgen, eure Projekte und alle Themen rund um die Entwicklung von Spielen diskutieren könnt: https://discord.gg/shHJPUd2Ww
CSS-Property zum Rendern von Pixel-Art
Wenn man Bilder für Pixel-Art Spiele hochskalieren möchte, wird hierbei per Default eine Interpolation angewandt. Dadurch sehen die Bilder eher unscharf aus, als pixelig. Um dies zu umgehen, kann man die folgende CSS-Eigenschaft verwenden:
image-rendering: pixelated;
Links
Unsere Web Games
- Ritual Tycoon - HTML5 Game von uns vom GGJ 2016
- rubbrl4zr (GGJ Seite) - YouTube-Video von "Rubberlaser" - Ein HTML5 Game von uns vom GGJ 2017 (YouTube-Video)
- JNTetri - Multiplayer Tetris-Klon in JNGL, im Browser lauffähig
- Critical Mission - Ein Artemis-Klon von Carsten - vor langer Zeit angefangen und nie fertiggestellt...
Andere erwähnte Spiele
- Artemis Spaceship Bridge Simulator - Ein Local-Multiplayer-Co-op-Spiel, das eine Raumschiffbrücke simuliert
- Empty Epsilon - Ein Artemis-Klon, OpenSource
- MonstersGame - Browserspiel aus dem Jahr 2005 (gibt es immer noch)
Sonstige Links
- ElectronJS - Das Tool, um Web-Apps als native Desktop-Applikationen zu verpacken
- Discord Game SDK - Discords API für Games (einige Features sind bereits deprecated)
- Creating a 13KB JS Game using SVG - Ein Artikel über Spieleentwicklung mit SVG
- Practical SVG - Ein kurzes Buch rund um das Vektorgrafikformat SVG
- Web RTC Data Channels - Dokumentation auf MDN (Mozilla Developer Network)
- Audio for Web games - Dokumentation auf MDN (Mozilla Developer Network)
- 2D collision detection - Dokumentation auf MDN (Mozilla Developer Network)
- Game From Scratch - Unity Pricing Changes - hier ging es um die Unity Logo Policy (ab Minute 7:20)
- Godot Online Editor - Godot bietet ebenfalls einen Online-Editor an. Vielen Dank an smarty aus dem Discord für diesen Hinweis!
- Gdevelop Web Editor - Simon vom GameDev-Podcast hat uns darauf hingewiesen, dass GDevelop ebenfalls einen Online-Editor anbietet. Vielen Dank dafür!
Engines & Libraries (Fokus auf "free" und "open source")
- Phaser - 2D Game Engine für Javascript (MIT-Lizenz, proprietärer Editor)
- Kaplay - Sehr einfache 2D Game Engine für JS (MIT-Lizenz)
- Three.js - 3D Grafik-Library für Javascript (MIT-Lizenz)
- BabylonJS - 3D Game Engine für Javascript (Apache 2.0 - Lizenz)
- PlayCanvas - Game Engine für Javascript, auch 3D (MIT-Lizenz, proprietärer Editor)
Physik:
- ammo.js - Javascript-Port von Bullet Physics (zlib-Lizenz, die Dokumentation soll lückenhaft sein)
- box2d.js - Javascript-Port von Box2D, für 2D Physik (zlib-Lizenz)
- planck.js - Javascript-Rewrite von Box2D, für 2D Physik (MIT-Lizenz)
- matter.js - 2D Physik Engine für Javascript (MIT-Lizenz)
Gamepad API
- Gamepad API - Mozilla Developer Network (MDN) Beschreibung der HTML5 Gamepad API
- Using the Gamepad API - Mozilla Developer Network (MDN) Anleitung zur Gamepad API
YouTube-Kanäle zum Thema
- SimonDev - (nicht der Simon vom GameDev-Podcast 😉) Ein YouTube-Kanal mit viel Three-JS-Content
- BabylonJS - Offizieller BabylonJS-Kanal mit Turorials und Updates
- RedStapler - YouTube-Kanal mit vielen Tricks und Hacks zu CSS
Diese Folge könnt ihr auch auf Youtube anhören.