LÖVE - Eine Open-Source 2D Lua-Game-Engine

Bei LÖVE oft auch Löve2d oder Love genannt handelt es sich um eine rudimentäre 2D-Game-Engine. LÖVE bringt seine eigene LUA Runtime mit und ermöglicht das Entwickeln unter Windows, MacOS, und Linux. Es existiert auch eine Runtime für Android. Die Installation unter Windows gestaltet sich durch eine Installer sehr einfach. LÖVE Spiele werden wie auch in PICO-8 mit LUA entwickelt, wobei LÖVE aber keinerlei Tools bereit stellt. Für die Entwicklung wird also ein separater Editor/IDE benötigt. Grafiken und Sounds müssen ebenfalls extern erstellt werden. Alle Game-Ressourcen werden einfach in einem Ordner abgelegt. Die einzige Bedingung von LÖVE ist das der Ordner eine main.lua enthält welche als Startpunkt für die Game-Engine dient. LÖVE stellt Grafik, Sound und Eingabe-Funktionen bereit. Es existieren zahlreiche Libraries für LÖVE, leider sind viele nicht mehr kompatibel mit der aktuellsten Version und wurden schon seit Jahren nicht mehr geupdatet. Wenn man mehrerer Libraries verwendet entsteht schnell ein durcheinander, da es anscheinend keine Standards für die Installation gibt, legt jede nicht native Lua-Erweiterung seine DLLs in einem anderen Ordner ab. Einige wenige LÖVE-Libraries können schon über Luarocks installiert werden, hoffentlich vereinfacht sich die Installation in der Zukunft. LÖVE Spiele können in *.love Dateien gepackt werden um sie zu teilen. Dabei handelt es sich lediglich um umbenannte Zip-Dateien. Leider funktionieren viele der LÖVE-Libraries nach dem Packen nicht mehr. Es ist zwar ebenfalls über Umwege möglich eine Executable zu erstellen, diese Plagen aber die selben Probleme wie die Love-Dateien, externe Libraries werden nicht mehr gefunden. Wegen dieser Probleme und des begrenzten Funktionsumfangs von LÖVE bieten sich andere Game-Engine an wenn man nicht alles von Grund auf selbst implementieren will.

LÖVE kann unter love2d.org heruntergeladen werden.

Banana Rider - Ein PICO-8 Spiel

"Banana Rider" ist ein kleines PICO-8 Spiel. Ziel des Spieles ist es möglichst viele Münzen einzusammeln und die Felsen zu vermieden. Bei einer Kollision mit einem Felsen verliert man ein Leben. Nach drei Kollisionen oder einer Minute ist das Spiel automatisch zu Ende und es wird die erreichte Punktzahl angezeigt.




Hier geht es zum Spiel: Banana Rider

PICO-8

Bei PICO-8 handelt es sich um eine sogenannte "Fantasy Console". Das sind erfundene Konsolen die sich meist an Konsolen in die 8 - 16 Bit Zeit orientieren. Sie ermöglichen das einfache erstellen von eigenen Spielen und richten sich deswegen alle Interessierten denen das Programmieren für echte Konsolen der 8-16 Bit Ära zu aufwendig ist, die aber dennoch etwas vergleichbares erstellen wollen. PICO-8 war eine der ersten dieser "Fantasy Console" und kostet momentan 14.99 $ und ist für Windows, Linux und MacOs verfügbar. Dabei Limitiert PICO-8 Absichtlich die zur Verfügung stehenden Möglichkeiten. So hat PICO-8 eine Auflösung von nur 128x128 Pixeln bei 16 Farben. Der Zeichensatz kennt nur Großbuchstaben. Durch diese Einschränkung ist es für Programmierer aber einfacher eigene Projekte umzusetzen, da man sich besser auf die Grundlegende Spielmechanik konzentrieren kann. PICO-8 ist Emulator und Editor in einem. Wenn man das PICO-8 Programm startet sieht man zuerst eine Startsequenz die an das Booten eines DOS-PCs oder eines Commodore erinnert. Man findet sich danach auf der PICO-8 Konsole wieder. Über diese Konsole kann der Integrierte Appstore gestartet werden oder es kann direkt einen neues Spiel programmiert werden. Über das drücken der Escape-Taste wird die integrierte IDE gestartet. Hier können Code, Grafik und Sounds erstellt bzw. geschrieben werden. So sind ein kleines Grafikprogramm, ein Tile-Editor als auch ein Sound-Editor bereits eingebaut. Spiele für PICO-8 werden in Lua geschrieben und können als virtuelle Cartridge über den integrierten Appstore veröffentlicht werden. Dabei sind alle Kreationen kostenlos und Open-Source. Auch bei über den Appstore geladenen Spielen ist es jederzeit möglich über die Escape-Taste in den Editor-Modus zu wechsel um z.B. Änderungen vorzunehmen oder zu untersuchen wie etwas implementiert ist.

Alternativ zum Appstore können die Virtuellen-Cartridges lokal auch als P8-Datei gespeichert werden. Elegant ist die Möglichkeit Spiele als PNG-Bild zu exportieren. Dabei handelt es ich um ein normales Bild das ein definiertes Logo oder Vorschaubild zeigt. Der eigentliche Programmcode wird in den Metadaten der PNG-Datei gespeichert und kann über die PICO-8-Runtime geladen und gespielt werden.

Die Idee hinter PICO-8 ist wirklich gut. Leider verderben die Einschränkungen des Editor-Modus den Spaß. Auch dieser läuft einer Auflösung von nur 128x128 Pixeln. Dadurch können nie mehr als ein paar Zeilen Code angezeigt werden. Beim Umsetzen etwas größerer Projekte stört das extrem. Natürlich ist auch möglich externe Editoren zu verwenden, allerdings verliert man dadurch das schnelle Testen von Codeänderungen und anderen Integrierten Tools. Nach jeder Codeänderung muss das Programm in PICO-8 neu geladen.

Reines spielen der PICO-8-Cartridges ist auch kostenlos über den Browser möglich. Allerdings können dann keine Änderungen vorgenommen werden und es ist auch nicht möglich den Code einzusehen oder gar neue Spiele zu erstellen.

PICO-8 ist eine interessante Spielerei um erste Spiele-Ideen auszuprobieren. Besonders "Nicht-Programmierer" werden darüber einfach an das Thema herangeführt. Falls man allerdings schon Erfahrung mit dem Programmieren hat und ausgewachsene IDEs kennt wird man sich schwer mit der integrierten 128x128-IDE von PICO-8 tun. Ihnen kann ich z.B das freie LÖVE Game-Engine empfehlen. Allerdings verliert man dadurch leider die intergiereten Tools von PICO-8. Mit Hilfe von PICOLOVE können PICO-8 Spiele zu LÖVE portiert werden. Nichtsdestotrotz wurden viele interessante und witzige kleine Spiele in PICO-8 programmiert. So ist z.B die erste Version des bekannten Spiels "Celest" bei einem Game-Jam auf dem PICO-8 programmiert worden.

Viele zusätzliche Links zu PICO-8 wurden unter awesome-PICO-8 zusammengetragen.

Inzwischen existieren mehrere teilweise auch kostenlose alternativen. Diese haben meist viele Komponenten von PICO-8 eins zu eins nachgebaut, verfügen aber nicht über die in Jahre gewachsene Community von PICO-8. Zu nennen sind hier: TIC-80, PV8, UnicornConsole und LIKO-12.

PureRef

PureRef ist ein kleines aber extrem praktisches Programm für Digital-Künstler. Mit PureRef kann man Inspirationen oder Referenzsammlungen für eine Grafik, ein 3D Model oder ein sonstiges Werk organisieren. Dafür können beliebige Bilder per drag and drop zu einer Sammlung hinzugefügt werden. Die Bilder können dabei in dem PureRef Canvas frei verschoben und skaliert werden. Es besteht die Möglichkeit Gruppen zu Bilden zu benennen und Bilder automatisch anzuordnen. Die Bedienung ist intuitiv und einfach zu erlernen. Das einzig ungewöhnliche ist das das Programmfenster mit gedrückter rechter Maustaste verschoben wird. Das Programm kann so konfiguriert werden das es immer im Vordergrund bleibt, was besonders beim arbeiten mit nur einem Monitor sehr praktisch ist. PureRef kann kostenlos unter www.pureref.com heruntergeladen werden (Spenden sind erwünscht). Es existieren Versionen für Windows, Mac und Linux.

Einfaches Webanwendungs-Management mit Caprover

Bei Caprover, das früher unter dem Namen CaptainDuckDuck bekannt war (IMHO war der alte Name um Klassen besser) handelt es sich um eine Web-Oberfläche zum Verwalten von Webanwendungen. Die Anwendungen werden dabei in Docker-Container gestartet. Dem Anwender werden viele Verwaltungsaufgaben abgenommen. Caprover wirbt mit dem Slogan "Build your own PaaS in a few minutes!" und tatsächlich ist es sehr einfach möglich Webanwendungen mit Caprover zu veröffentlichen. Caprover läuft selbst in einem Docker-Container was die Installation einfach macht. Für Digitalocean existiert ein fertiges Droplet wodurch für die Installation nur wenige Klicks benötigt. Die Installation ist aber auch bei anderen Providern nicht schwierig. Die einzige Anforderung ist ein installiertes Docker. Bei den meisten Server-Anbietern kann bereits eine vorgefertigtes Docker-VM-Image gestartet werden. Danach ist die Installation mit einem Befehl erledigt:

docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

Ein einfacher VServer ist vollkommen ausreichend für mehrere Node.js Anwendungen sowie eine Datenbank. Bei einem VServer ist meist der Arbeitsspeicher das begrenzende Element. Das beste an Caprover ist das einfache Deployment von Webanwendungen. Vor dem ersten Deployment muss nur eine Appname über das Webinterface von Caprover gewählt werden. Die App wird dann automatisch unter einer Subdomain mit dem entsprechenden Namen gestartet. Natürlich kann die zu nutzende Domain auch manuell geändert werden. Caprover kümmert sich dabei falls gewünscht auch um das entsprechende SSL-Zertifikat von Let's encrypt. Alle Webanwendungen laufen hinter einem Nginx-Webserver der auch für das HTTPS zuständig ist. Komplexere Konfigurationen können im Webinterface über die Nginx-Config vorgenommen werden.

Webanwendungen die in NodeJS, Python, PHP, ASP.NET oder Ruby geschrieben können ohne Dockerfile über eine captain-definition-Datei deployed werden. Über die captain-definition wird dabei konfiguriert welche Runtime von der Anwendung benötigt wird, falls notwendig kann auch eine Dockerfile verwendet werden.

Von einem Development-Rechner kann über den Konsolenbefehl:

caprover deploy 

direkt deployed werden, alternativ ist das auch über das Webinterface mittels eines TAR-Archives möglich. Über sogenannte One-Click Apps können gängige Webanwendungen in wenigen Klicks deployed werden.

Hier einige Beispiele:

Datenbanken und Datenbank GUIs

  • MongoDB
  • MongoExpress
  • MsSQL
  • MySQL
  • Redis
  • PhpMyAdmin
  • PostgreSQL
  • Adminer
  • Apache CouchDB
  • Gitea
  • ElasticSearch

Blogging und Content

  • WordPress
  • Ghost
  • Prisma 1
  • Strapi
  • Minio

Dev Tools

  • Jenkins
  • Drone.io
  • Hasura
  • Nexus3

Andere Apps

  • Parse
  • NextCloud
  • Rainloop
  • Thumbor

Visual Studio Code mit Bash unter Windows nutzen

Artikel überholt: Die neue VS-Code-Konfiguration wird hier beschrieben

Wer Visual Studio Code unter Linux benutzt wird sich schnell an das Integrierte Terminal gewöhnt haben. Unter Windows steht zwar CMD oder die Powershell zu Verfügung, wer aber unter Linux Bash verwendet und sich nicht immer umgewöhnen will kann Bash über Cygwin auch unter Windows als internes Terminal in Visual Studio Code verwenden. Dafür sind folgende Schritte notwendig:

  1. Cygwin Installieren
    Durch Cygwin stehen viele im Linux Terminal verwendeten Programme auch unter Windows zur Verfügung. Cygwin kann einfach über einen Installer installiert werden. Will man nachträglich Programme zu Cygwin hinzufügen kann man dies über ein erneutes aufrufen des Installers tun. Eleganter direkt aus dem Cygwin Terminal heraus geht es mit apt-cyg. Durch den Aufruf von lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg wird apt-cyg in das aktuelle Verzeichnis heruntergeladen. Für den Download der Datei wird Lynx verwendet. Dabei handelt es sich um einen Terminal-Browser. Lynx sollte in der Standartinstallation von Cygwin bereits installiert sein. Mit install apt-cyg /bin wird apt-cyg installiert. Die Installationsdatei kann nach der Installation über wieder mit dem Befehl rm apt-cyg gelöscht werden, da sie nicht mehr benötigt wird. Durch den Aufruf apt-cyg von wird das Manual angezeigt. Apt-cyg orientiert sich an apt-get, die meisten Befehle sind identisch.

  2. Chere installieren
    Mit apt-cyg install chere installiert man Chere. Über Chere kann ein Rechtsklick-Menü für Cygwin in den Windows Explorer eingebaut werden. Das ermöglicht es ein Terminal im aktuellen Ordner zu öffnen. Chere wird in der Visual Studio Code Konfiguration dafür verwendet um Bash automatisch im aktuell von Visual Studio Code geöffneten Projektordner aufzurufen, dadurch spart man sich das lästige navigieren zum Projektordner.

  3. Terminal konfiguriern
    Um Cygwin mit Bash unter Visual Studio Code zu nutzen muss folgende Konfiguration in der Settings-Datei vorgenommen werden. Die Settings können über das Menu Datei → Einstellungen → Einstellungen aufgerufen werden.

{
    "workbench.colorTheme": "Visual Studio Dark",
    "files.exclude": {
        "**/.git": true,
        "**/node_modules": true
    },
    "terminal.integrated.shell.windows": "C:\\\\Program Files\\\\Cygwin\\\\bin\\\\bash.exe",
    "terminal.integrated.shellArgs.windows": ["/bin/xhere", "/bin/bash"],
    "window.zoomLevel": 0
}

Nach einem Neustart von Visual Studio Code kann das integrierte Terminal über das Menü Anzeigen → Integriertes Terminal oder das Tastenkürzel CTL + ö genutzt werden.

Marp - Mit Markdown PDF-Präsentationen erstellen

Bei Marp handelt es sich um ein schlichtes Markdown-Präsentationsprogramm. Wer sich bereits mit Markdown auskennt kann fast sofort produktiv Arbeiten. Marp Präsentationen sind einfach gehalten und ermöglichen keinerlei Effekte. Leider ist es nicht möglich Listen, Punktweise einzublenden. Es wird Github Flavord Markdown unterstützt. Der Text kann durch --- in Sildes eingeteilt. Über Directives können erweiterte Einstellungen wie, Seitenformat, Seitenzahlen, Theme, Hintergrundbild usw. konfiguriert werden. Formeln können mithilfe von KaTeX direkt inline erstellt werden. Zum präsentieren ermöglicht es Marp die Präsentationen als PDF zu exportieren, genauso wie es die Beamer-Latex Klasse auch machen.

Marp bassiert auf der Electron Runtime und kann kostenlos für Windows, MacOS und Linux von der Webseite yhatt.github.io/marp heruntergeladen werden.

Mit reveal.js gibt es einen mächtige aber auch komplizierter zu benutzende Alternative.

OpenSCAD - 3D-Modelle programmieren

Meist werden 3D-Inhalten mit grafischen Tools wie Maya, AutoCAD, Blender, 3D Coat oder ähnlichen erstellt. Allerdings ist es auch möglich 3D-Modelle durch Code zu erstellen. Mit dem OpenSouce-Programm OpenSCAD können Modelle durch SCAD-Code programmiert werden. Aus einfachen Grundformen können mit Boolean-Operationen komplexere Formen erstellt werden. OpenSCAD eignet sich hervorragend zum Erstellen von Modellen für den 3D-Druck. OpenSCAD kann direkt STL-Dateien exportieren. Es existieren zahlreiche Bibliotheken um oft verwendete Objekte wie Schrauben oder Aluschienen direkt per include in eigene Projekte zu importieren. Durch das Schreiben von Modulen können auch aufwändige Modelle über Parameter schnell angepasst werden.

OpenSCAD kann unter www.openscad.org heruntergeladen werden. Das Programm wird für Windows, Linux und MacOS angeboten. Mit OpenJSCAD existiert auch ein Ableger der zum Programmieren der Modelle auf JavaScript setzt und direkt im Browser ausgeführt werden kann (SCAD-Import vorhanden).

Dolphin - GameCube und WII Emulator

Dolphin ist ein Emulator für GameCube und WII Spiele. Mit der neu erschienen Version 5.0 gab es zahlreiche Verbesserungen die zu einer genaueren und schnelleren Emulation führten. Dolphin ist OpenSource und für Windows, Linux und MacOS verfügbar. Des weiteren existieren auch Ports für Andorid welche aber zur zeit noch keine brauchbare Preformance liefern. Generell macht Dolphin erst ab einem Mittelkasse Gaming PC richtig spaß. Für eine flüssige Emulation in höheren Auflösungen sollte mindestens einen Core i5 verwendet werden. Auf einem NUC mit integrierter Grafik sind die meisten Spiele bei 720p gut spielbar. Mit einem Core i7 und einer Geforce GTX 980 sind alle Spiel in FULL-HD und bei 60 Frames/sec spielbar.

Generell ist die Emulation von GameCube Spielen inzwischen fast fehlerfrei möglich. Allerdings sind die meisten GC-Spiele noch für 4:3 Monitore ausgelegt was nicht einfach behoben werden kann. Zwar gibt es entsprechende Einstellungen in Dolphin, diese führen aber bei den meisten Spielen zu Clipping-Fehlern, so das man oft mit schwarzen Rändern vorlieb nehmen muss. Inzwischen existieren für einige Spiele inoffizielle Texture-Mods so das selbst alte GameCube spiele in hohen Auflösungen noch richtig gut aussehen.


Dolphin kann kostenlos unter dolphin-emu.org heruntergeladen werden.

Alle nachfolgenden Screenshots sind ohne Texture-Mods angefertigt worden.

Shine - Dynamische Schatten als Text-Effekt

ragersWeb


Mit der JavaScript-Bibliothek Shine können Schatten-Text-Effekte erstellt werden. Besonders bei großen Texten wirken diese Effekte sehr gut und sind dadurch ein perfekter Blickfang. Die Bibliothek setzt bei der Umsetzung auf die CSS-Eigenschaften boxShadow und textShadow. Werden diese vom Browser nicht unterstützt, wird der Effekt nicht dargestellt. Der Effekt funktioniert bei Texten und Boxen.

Shine kann unter bigspaceship.github.io/shine.js heruntergeladen werden.