Broken Remote

2017-01-22

Modding the Binding of Isaac with style

modding (1) software (29) lua (3) games (9)

The day when BoI:AB+ got modding support.

BrokenRemote is a remote Lua code injector. This means, you can type some code in the tool, hit a key and the code will be executed in the game instantaneously.

A screenshot of The Binding Of Isaac with some modded parts

This allows a developer to prototype and create mods much faster than reloading a mod by using the luamod command repeatedly. The tool also provides a vast set of predefined actions that modify the current game state like spawning enemies, pedestal items, pickups, …

It also provides 12 experimental items (4 active, 4 passive, 4 trinkets) that can be used to prototype custom item ideas without the need of putting the items into the game first:

A screenshot of The Binding Of Isaac with some modded parts

The user interface was pretty simplistic and in the style of Notepad++ or other classic text editors. As you can see, there were buttons to give the player hearts, battery charges and other collectibles as tool buttons and a text editor for the Lua scripts.

A text editor that shows some example code

The basic idea of the mod was: use luasocket to connect the actual mod for Binding of Isaac to the editor, and then send over packages that contain the lua code to be executed.

The mod featured a rich environment for the user, so simple one-shot commands could be executed the same way as uploading a half-done mod.

A simple example for such a mod is a custom card, that, if used, will animate the player with the teleport animation:

local cardId = Isaac.GetCardIdByName("Mod Card 1")
if cardId == -1 then
	-- Don't do stuff when the item wasn't found
	Game():GetPlayer(0):AnimateSad()
	return;
end

-- Register our mod callback for the use with BrokenRemote
function mod:MC_USE_CARD(card)
	if card ~= cardId then
		return
	end
	
	local p = Game():GetPlayer(0)
	p:AnimateTeleport(true)
end

The card will only ever do the animation, no actual teleport is performed, but as you can see, creating new items that way is fairly simple.

A screenshot of The Binding Of Isaac with some modded parts

You can find a download of the project at moddingofisaac.com, the source code is hosted at GitHub: