GooTool

GooTool is a utility to extend your World of Goo experience, enabling you to install new levels and mods to provide further gameplay, and to view and share your World of Goo accomplishments.

Features

  • Profiles - View your profiles, view your tower image and stats, backup and restore your profile, move it between machines, and upload to your tower on this website.
  • Addins - Install and uninstall mods and new levels within the game.
  • Options - Configure certain aspects of the game that you can't easily do otherwise - for example changing resolution or removing the loading screen video.
  • Translation - An advanced mode for those interested in translating the game into their own language.

How does it work?

Options are manipulated in your config.txt directory. Addins are merged by decrypting World of Goo files and merging them with addins in the addin file format.

What now?

Building GooTool

GooTool is written in pure Java. You can get the source code from the GooTool download page.

Requirements

You will need:

  • Java 1.5+ (1.5.x recommended for building)
  • ANT
  • launch4j if you wish to build the Windows EXE
  • NSIS if you wish to build the Windows installer

The GUI forms were created using IntelliJ IDEA. You will need IDEA in order to modify them easily; a trial version can be downloaded from JetBrains. However you do not need IDEA simply to compile GooTool, as I have included javac2.jar in lib/build/: this is the IDEA Java compiler, which injects code for the GUI forms.

All other required libraries for building are in lib/build. Run-time libraries are in dist_src/common/lib.

Building

Create a file ant.properties in the top-level directory setting the following variables to appropriate values. Only jdk.home is required for simple builds, the rest are for building distributions or tagging releases.

Example for Windows:

jdk.home=c:/Program Files/java/jdk1.5.0_17
launch4j.dir=C:/Program Files/Launch4j
nsis.dir=C:/Program Files/NSIS

Example for Linux:

jdk.home=/usr/lib/j2sdk1.5-sun
launch4j.dir=/home/david/src/launch4j
nsis.dir=/home/david/src/nsis/nsis-2.42
svn.base=file:///svn/gootool

For building, I use the 1.5 JDK to maintain Mac compatibility.

Run ant with one of the following targets:

recompile (default)
Cleans everything and compiles it again (runs clean then compile)
dist
Builds all platform distributions (runs dist-linux, dist-macosx and dist-win32).
tag-release
Tags a release in Subversion(for me only) - only works under Linux

There are other targets but they're generally just called by the above.

Development

The master bug/feature tracker is at /issues (you can also use /mantis to see it better without the goofans theme).

There are a lot of TODOs in the code. The whole thing is rather messy due to it being a long evolution of a bunch of prototype code, rather than a result of actual design. In particular, Controller is horrendously monolithic, and a major refactor is needed soon to support retargeting the build to something other than the local machine (e.g. iPhone).

Please feel free to submit patches by e-mail, preferably against the latest version.

IntelliJ IDEA

The kind folk at JetBrains have provided a full Ultimate edition license for bona fide GooTool developers. Contact davidc for the license key.