MasterQ32

Broken Remote

Die Broken Remote ist ein Modding-Werkzeug für The Binding Of Isaac: Afterbirth+ (TBOI:AB+), welches das Vorgehen beim Modding stark vereinfacht.

Es erlaubt einem, kurze Codesnippets und Ideen auszuprobieren, ohne dazu das Spiel neu starten zu müssen oder eine neue Mod anzulegen. Anstelledessen wird eine Code Injection über die Broken Remote-Mod durchgeführt. Dadurch können beliebige Snippets im Spiel ausgeführt werden.

Die Injection wird durch ein Modding-Werkzeug ausgeführt, welches einen einfachen Code-Editor sowie eine Großzahl an schnellen Modifikationen am Spiel erlaubt. Zu diesen Modifikation gehört zum Beispiel das Spawnen eines Standard-Items, die Modifikation des Spielerlebens oder das Spawnen von Collectibles oder Gegnern.

Technik

Das Projekt besteht aus zwei Komponenten: Dem Modding-Tool sowie der Host-Mod, welche den Ingame-Teil übernimmt.

Das Modding-Tool wurde mit dem Qt-Framework in C++ geschrieben, da es ein plattformunabhängiges UI-Framework bietet, zudem ist die Verwendung von Sockets sehr einfach. Die Mod wurde mit Lua programmiert, da dies die Programmiersprache ist, welche TBOI:AB+ für seine Modding-API anbietet. Hier wurde für die Netzwerkimplementierung das im Spiel integrierte luasocket genutzt.

Die meisten Menü-Einträge im Modding-Tool sind Shorthands für kurze Snippets, welche an das Spiel übertragen werden und dort sofort ausgeführt. Ebenfalls werden die im Tool ausgeführten Scripte mit der selben Methode übertragen.

Da Lua an vielen Stellen auf globale Variablen setzt, konnte ohne Probleme die im Spiel vorhandene print-Funktion überschrieben werden, sodass sie zusätzlich zu ihrer ursprünglichen Funktion auch alle ausgegebenen Texte an den im Modding-Tool integrierte Log überträgt. Hiermit kann man live mitverfolgen, welche Ausgaben oder Fehlermeldungen eine Mod produziert.

Für ein vereinfachtes Arbeiten und das Erstellen von Mods bietet die Ingame-Mod ebenfalls eine API an, mit welcher man sich einfach an die vom Spiel bereitgestellten Hooks anklemmen kann und somit auf Events reagieren.

TODO: Include more information, add some screenshots

Weblinks

(Copyright © 2012-2017 Felix Queißner, Impressum)