World of Goo Ball Editor

World of Goo Ball Editor (aka GooBLE) is a tool for making World of Goo Balls

You can create your own balls using your own original graphics and sounds, or just tweak an existing ball from the original game - or anything in between.

Quick Links: [ FAQ ] [ Reference Guide ] [ My First Goo Ball - Tutorial ] [ Download Page ] [ Install for Linux ]

Before you start, you will need...

A Computer
The Editor is written in Python and so is fully cross-platform capable.
World of Goo
You will need to have purchased the full game. Windows Users, if you want to test your Goo Balls directly from the Editor (and you will want to), you also need to update to the latest version.
GooTool
For easy integration of your addins into your or other players games. Get it here.
World of Goo Ball Editor
The full Windows installation package is available from the download page
Linux and Mac versions will / should / may follow

The Very First Thing

The first time you run World of Goo Ball Editor it will ask you to locate the WorldOfGoo folder you want to edit.

If you are familar with GooTool you will know that it always preserves the original game files and creates a separate folder which holds the modified version of the game. If you haven't yet, you should run GooTool and create the "modded" folder now.

This is the folder you should use for the Editor, since you should never modify the files in the original game folder. It is often best to create your modded folder in a private folder, be that "My Documents" or your "Home Folder" or on a separate drive somewhere. Wherever you create it, you will need to ensure you have full permissions to read/write/delete files and create folders.

The nickel tour

The Editor GUI is split into several areas: Open Image

The toolbars should be fairly self explanatory - all the buttons have tooltips telling you what they do, just hover of them for a moment before clicking.

The Ball View area is Tabbed, so you can have several levels open at once, and you can switch between each view as needed. This also means you can copy and paste things from one ball to another (described in more detail later).

Understanding the World of Goo

It will help you to design Goo Balls and find your way around if you have some understanding of how World of Goo (and hence the Editor) structures the data.

World of Goo builds a complete ball from 2 main XML files plus other information taken from a number of game-wide (global) files, as well as the actual image and sound files.

Ball Tree
Holds all the information about how the ball looks (graphics, particle effects etc), how is moves, what it can do, what the player can do with it... pretty mich everything.
Resources
Holds a list of all the image and sound files used in the level and gives each one an ID. This ID is then used to apply images/sounds to items in the level, rather than using their actual filename.

Tree View Tabs

Each of these files is represented as a Tree View in the Tree Tabs panel. The tree begins at the top with a "root" item. All the different objects that make up a ball are listed as children underneath the root item. Open Image.

Whenever you add an item to your ball, it will be added into one of these trees. You won't need to remember which one, because when you select the item in the graphical view, the entry for it will be highlighted in the Tree, and vice versa.

Properties Pane

When you select any item, a list of its properties/attributes is displayed in the panel below the trees. Open Image. These properties cover every possible value or setting that can be applied to an object of that type.

Some of these you can also change using your mouse (position, size, and rotation) by selecting and dragging objects in the graphical view. Others you will have to enter or select by hand in the properties pane.

Many of these properties you will never have to touch, except in advanced ball designs.

Most items have a few properties that are "essential"; these will be given reasonable default values where possible, but some of them will appear in red to indicate that you must fill something in. Open Image

FAQ

Frequently Asked Questions

Coming 'Soon'

Reference Guide

Reference info regarding balls, their tags and attributes is currently here
http://goofans.com/developers/game-file-formats/balls-xml

Errors and Warnings

When you Save, Play or Make a goomod in the editor, it performs a series of checks to ensure that the ball you have made is valid and everything is correct. It will display an Issues message box if it finds any problems.

Each issue has a "severity" associated with it...
Advice : Mostly design tips, "best practice" hints and cosmetic issues
Warnings : More serious problems which will cause unexpected or bizarre behaviour in the level
Critical : Problems that will make the game crash or will cause serious trouble creating or distributing a goomod.

The ball will always be saved, regardless of any problems, but the editor will not allow you Play or Make a goomod if there are any Critical Issues.

The editor will link directly from the message screen to this information page, so you can find out about each of the messages you receive. But if you just want to find out the problem are... read on.

Advice Messages

Ball Tree

Ball has a very low dragmass causes glitches near an open pipe
Solution: Increase the dragmass attribute, 10 is a reasonable minimum.
No part called "body" this ball will not display in WooGLE correctly
Problem: In order to display ball images WooGLE reads the ball xml file and finds the image for the part called body. If it cannot find one then the ball is shown as a circle or a rectangle.
Solution: Rename the main part of the ball to "body"
Strand maxlen2 is 0, this ball will not form any strands.
Problem: The balls has strands set to 1 (or more), however the maxlen setting will prevent it from ever making any connections.
Solution: change maxlen2 to a reasonable value. Original balls used 100-200
Strand has no fireparticles it will not burn.
The strand has a burntime set, however if fireparticles is left blank, the strand will not burn.
Solution: Select an effect for fireparticles
Strand has a large ignitedelay so fire may not spread
Problem: The strand has an ignitedelay which is close to (or larger) then the burntime of the ball. So the ball may explode before the strand has burnt all the way to the end, and set fire to the next ball.
Solution: Reduce the ignitedelay, increase the burntime of the ball.
throw sound not last in list. {other sound} sounds will play instead
Problem: There is a big in the game which means the sounds given for the throw event only play correctly if they are the last sounds specified.
Solution: Cut and Paste the throw sounds to the end of the list.
throw sound not found. {other sound} sounds will play instead
Problem: There is a big in the game which means that if you do not specify any sounds for the throw event, then other sounds will play when the ball is thrown.
Solution: If you do not what the ball to make any sounds when it is thrown, add the throw event sounds as the last in the list, but leave the sounds attribute empty.

Resource Tree

Image resource {Resource Id} unused
Problem: An image is defined in the resource file, but is not used.
Solution: Remove the unused resource, or use it.
Sound resource {Resource Id} unused
Problem: A sound is defined in the resource file, but is not used.
Solution: Remove the unused resource, or use it.

Dependancy Tree

Custom Balls used {list-of-BallTypes}
These are the other Custom balls this ball can create
Custom Materials used {list-of-Materials}
These are the Custom materials used by this ball, or by the other custom balls
Custom Particles used {list-of-Particle Effects}
These are the Custom particle effects used in this ball, or by the other custom balls

Warning Messages

Ball Tree

Ball is detachable but has no detachstrand
Problem: This will cause unpredictable effects if the player tries to detach the ball. Sometimes it will allow them to "drag" the structure around by pulling the ball they have selected.
Solution: If the ball is really detachable, add a detachstrand, otherwise set detachable=false
attenutation{...} has only 2 arguments and the first is not 0
Problem: If only 2 numbers are supplied and the first is not 0, this will cause odd blackout and graphics behaviour when player select / drags the ball.
Solution: If you do not want the ball to change size, set the first number to 0, if you do want the ball to change size, add a 3rd number.
Strand minlen is greater than maxlen
Problem: This is just a bit "wrong", and can cause strange behaviour whilst building
Solution: Make maxlen greater than (or equal to) minlen

Resource Tree

Image file extensions must be png (lowercase) {filename}
Problem: The file extension of the image is not in lowercase, this will cause problems on non-windows systems
Solution: Rename the file and ensure the extension is changed to png
Sound file extensions must be ogg (lowercase) {filename}
Problem: The file extension of the sound is not in lowercase, this will cause problems on non-windows systems
Solution: Rename the file and ensure the extension is changed to ogg

Critical Errors / Problems

Ball Tree

Ball contains balls but has no popparticles
Problem: The game will crash when the ball is popped.
Solution: Select a particle effect for popparticles
Ball contains balls but has no popsound
Problem: The game will crash when the ball is popped.
Solution: Select a sound for popsound
towermass is between -1 and 1.
Problem: The game will crash when a ball climbs on a structure.
Solution: Change the towermass to be grater than 1
stacking set true on circle ball
Problem: The game will crash when 2 balls land on top of each other.
Solution: Set stacking=false or change the ball shape to a rectangle.
Part {part name} is an eye but has no pupil image
Problem: The game will crash.
Solution: Set eye=false or select an image for the pupil
Ball is static and draggable
Problem: The game will crash when you click the ball.
Solution: If this is a static ball, like an anchor, set draggable=false

Dependancy Tree

Ball Recursion {list-of-Balls}
Problem: The first ball in the list contains the second in the list, which contains the 3rd... ultimately one of the descendants contains the original parent ball and creates a circular dependancy. This will crash the game.
Solution: Edit one of the balls in the list, to break the circle
Ball {GooType} is missing
Problem: A ball used in this level, or a ball contained by a ball used in this level, is missing and cannot be found in the folder you are editing.
Solution: Remove the ball, change the ball type or install an addin which contains the missing ball
Material {Material Name} is missing
Problem: One of the geometry objects, or one of the balls, uses a custom material which cannot be found.
Solution: Change the material to a standard one, or install / enable the addin which contains this material.
Look at the Depends tree to find out which object needs this material.
Particle Effect {Effect Name} is missing
Problem: Something... a signpost, fire, particles object or a ball in this level uses a custom particle effect which cannot be found.
Solution: Change the effect to a standard one, or install / enable the addin which contains this particle effect.
Look at the Depends tree to find out which object needs this effect.