These pages describes the addin file format for World of Goo, specification version 1.1, as implemented by GooTool.

Addins are extensions to World of Goo that add or modify functionality. There are two types of addin: mod and level. Mods can modify or replace any file. Levels can do the same but also get a button added to Chapter 1 allowing them to be played. Addins can depend on other addins. For example the level addin MyLevel could depend on the MyOrangeBall mod addin.

The binary format of an addin is just a Zip file with a .goomod extension and a special directory structure. The directory structure of the Zip file follows:

  • /addin.xml - An XML manifest file describing this addin.
  • /text.xml - An optional XML file containing text strings.
  • /override/ - A directory containing new files, or replacements for 2dboy original files.
  • /merge/ - A directory containing files to merge in with 2dboy-supplied XML.
  • /compile/ - A directory containing files to compile (encrypt) into bin/binltl format.

Some knowledge of XML, XSLT and XPath may be helpful to create anything but the simplest addins. There are some examples in this documentation, and more in the addin development FAQ.

You can also look at existing addins in the download section, particularly the sample category which illustrates advanced addin techniques.

Changes

Specification version 1.0 was the first public goomod version and is supported by all versions of GooTool.

Specification version 1.1 is the updated version released in November 2009, and is supported in GooTool 1.0.1 upward. If your addin is a level addin, to upgrade to this version you will need to surround your <level> with a <levels> element.

Attempts to install a 1.1 goomod into an old version of GooTool will result in a message instructing the user to upgrade GooTool.

The following features were added in version 1.1:

  • thumbnail was added to the manifest file, allowing a screenshot or other image to be embedded.
  • A new file /text.xml is recognised, allowing quick addition of strings.
  • cutscene and skipeolsequence can now be specified on a level.
  • Addins can now provide more than one level. To support this, <level> is now a child of <levels>

Comments

Comments? Discuss in the forum.