World of Goo Level Editor

World of Goo Level Editor (aka WooGLE) is a tool for making World of Goo levels

You can create your own levels using your own original graphics and music, or just tweak a level from the original game - or anything in between.

Quick Links: [ FAQ ] [ Reference Guide ] [ My First Level - 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. That said, it is apparently far easier to make it work on Windows, and maybe Linux, than on Mac.
World of Goo
You will need to have purchased the full game. Windows Users, if you want to play your levels directly from the Editor (and you will want to), you also need to update to the latest version.
For easy integration of your addins into your or other players games. Get it here.
World of Goo Level Editor
The full Windows installation package (and Linux binary package) are available from the download page.

The Very First Thing

The first time you run World of Goo Level 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 Level View area is a Multiple-Document Interface (MDI), so you can have several levels open at once, and you can minimize/maximize/restore each level view as needed. This also means you can copy and paste things from one level to another (described in more detail later).

Understanding the World of Goo

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

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

The XML files for a level are called Scene, Level and Resources (resrc).

Holds information about how the level looks (graphics, particle effects etc), the geometry (solid things) and other physics stuff (like gravity and wind) that affect the Goo Balls.
Holds the information about the Goo Balls in the level, as well as things like where the pipe is, how many goos you need to collect and what music is played.
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: scene, level or resources. All the objects in that file are listed as children underneath the root item. Open Image.

Whenever you add an item to your level, 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 level 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 level 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

Next Steps

How about we get started on making "My First Level"...

My First Level

The following tutorial assumes that you have read, and partially understood the previous page
...and at the very least assumes you've done what it said.

Previous Level Editor tutorials have tended to be huge great blocks of text, which proved difficult to read, and even more difficult to follow. Even with a couple of screenshots, it was still difficult to get any real understanding across.

So... I'm trying something completely different...

The World of Goo Level Editor Video Tutorial

It's in 8 parts, so I've made a playlist.
Don't worry several of the parts are quite short, total running time is about 20 mins.

It takes you from Clicking the "New Level" button
through initial design and fixing some issues
to adding finishing touches and finally saving a .goomod file

I think it's pretty well annotated, and explains what's happening as it goes along.

Once you've finished....
Polite request: Please don't all upload your "My First Level" levels.. we'll have hundreds of 'em.

My Next Level

Now that you've made your first level, you probably can't wait to make your next.
Here's a few tips....

Getting Help

There's a pretty good and ever expanding FAQ - Here
We're also working on several Reference, Info and Guide pages - here
And if you still can't figure out how to do something... ask in the forums.

Don't try to re-invent the Wheel (or Cogs, or Windmills)

At least to begin with, almost everything you'll want to do will have been done before, or something quite similar. If you can think of an original level that did something like what you want, load it up and take a look at how 2DBoy did it.
You can even Copy and Paste stuff from the original levels into yours.

It may seem "naggy"...but it's for your own good!

When you first come to save your next level, chances are WooGLE is going to list 27 different things that are wrong with it... some of them will be CRITICAL and it will insist that you fix them before you go any further.
I know it's annoying... but "in the olden days" (a couple of months ago) it would let you try to play any old rubbish. The consequence usually was... the game crashed.. and you didn't know why. If there were actually 27 things wrong with your level, you would never find them all by just trial and error.

Let us know if your level crashes the game

We're pretty sure that WooGLE will catch most of the stuff that will crash the game, but we never cease to be amazed by some of the really "weird and wonderful" stuff that new level designers try. So we ask for your help.....
If you make a level, and WooGLE lets you play it, and the game crashes....
usually it will crash at the very start of the level.. it shows the Level name screen, then just stops....
You best way forward is... make a goomod of the level, upload it somewhere then post in the forums (with a link).. so the "experts" can take a look and figure out what you've done wrong, and what we've missed.

Don't try to make them too hard!

There is a tendancy for new designers (and experienced ones actually) to try to make levels that are hard to beat.
This is a problem for 2 reasons...
i) You actually want people to play your level and enjoy it. If it's too hard they won't.
ii) There are some PHENOMENALLY GOOD players around, and even if you think the level is really hard, they will probably be able to finish it in 3s and 0 moves and collect every single ball you put in there.
If you try to make the level so hard even they can't do it... NO-ONE else will even get close... so what's the point?

Most importantly...

Try to make your levels interesting and fun it's difficult to tell you how to do that.. but try!
And don't feel like you have to crank out levels by the hour, or even by the day. The best levels take time to create, once you really get into it, you'll spend ages tweaking things to get them "just" right.. and playing them over and over to check that every little detail is spot on, before you upload.
It does take time, but usually results in much better, more enjoyable levels.

Reference Guide

Here we aim to provide all sorts of useful reference information regarding all the objects and items used to build a World of Goo Level.


But here's what we've got so far...

Items with no link are planned but aren't done yet.


Geometry (aka Solid Stuff)
Basic Shapes
Composite Geometry
Static (Walls and Cliffs)
Dynamic (Motors, Hinges and Falling Things)
Making Geometry Visible (Applying Images)
Making Geometry less Solid
DIY Composite Geometry (Advanced)
Guide: Making things Spin!
Info: The tag attribute
Info: Materials
Images (aka SceneLayer)
Importing Image Resources
Force Fields
Labels and Text


Goos and Strands

Exits and Pipes
Other ways to end the levels
Multiple Exits and Pipes (Advanced)
Music and Sound
Cameras and Pois


Set Defaults

Addin Info

Level Info

Text Resources

Reference by Game File Structure

Level Tree

Holds the information about the Goo Balls in the level, as well as things like where the pipe is, how many goos you need to collect and what music is played. See the bottom of the page for a full list.

It also has several attributes of it's own, listed below are those you may find quite useful... Full Details on all level attributes


The number of Goo Balls required to finish the level. Required on levels with a levelexit, ignored on those without.


If set to true this attribute limits the camera to "explored" areas only.
What consistutes an "explored area" is explained in more detail here - Explored Area


If set to true prevents the player from attaching Goo Balls through geometry objects. Useful for preventing building through walls or thin platforms. Can cause minor player "annoyance" when it prevents you for building near corners.


The probability per move that a new time bug will appear. Values above about 0.5 will result in many timebugs, values around 0.1 will result in "a few", set 0 to disable timebugs completely.


If set to true displays an overlay showing geometry and other invisible objects. Static objects appear in yellow, Dynamic objects in Green, ForceFields in Blue. This can be very useful during the design phase, but should be set to false before you release the level.

The Level Tree contains....

Exits and Pipes

There are a number of ways you can complete a level in World of Goo, but by far the commonest is the pipe. see also Ending Levels without a pipe
However it's not the pipe that actually ends the level, it's a levelexit item, but you'll need both.

At it's simplest...

When the Editor creates a new level it includes a levelexit
Move this to where you want it and click the AutoPipe button on the toolbar, and you're almost done!
You just need to set how many balls are required to complete the level... see [ballsrequired]

If you want a little more than the "simplest"...

Pipes in detail

A pipe item is purely visual, it doesn't actually DO anything to the Goo Balls. A pipe just shows the player where they are aiming for, and becomes animated when the exit is open and Goo Balls are collected.
They have a type attibute which controls the colour of the pipe, but it does not affect what types of Goo Balls can or cannot be collected.

Pipes have child vertexes

The vertex items tell the game where to place the mouth of the pipe, where the bends are and where the pipe ends. You can have as many vertexes (bends) in the pipe as you like. However, pipes can only ever run horizontally or vertically and if there is a bend they MUST turn, if they go straight on (or turn back on themselves) the game crashes. The Editor will help you with this.

The first vertex listed is the mouth, it can be moved freely and should be positioned at (or close to) the centre of the levelexit. You should always position this first. Any other vertexes will "snap" into allowed positions as you drag. [Video that shows all of the above stuff about vertexes]

The levelexit

As mentioned above pipes are just visual items, it's levelexits that do all the real work. They control the opening / closing of the pipe, they suck Goo Balls towards their centre when the exit it open, and they allow balls into the pipe (or not). They also display the small puffs of air sucking towards the centre.
The radius attribute affects two functions of the pipe. It sets the detection distance for opening the pipe, if there is an attached Goo Ball within the radius, then the exit and pipe open. It also sets the suction range, (almost*) all Goo Balls within the radius are sucked towards the centre.
But not all Goo Balls will be collected.
Whether or not a Goo Ball is collected is controlled by two things. Some types of Goo Ball can never be collected (those tagged suckable=false; Pokey, Beauty, BlockHead etc). All other Goo Balls can be collected, and you can use the filter attribute to control which are "allowed" in this level.

If filter is empty or missing, then any "suckable" Goo Ball will be collected. Otherwise filter can be set to allow one (or more) specific types of Goo Ball into the exit. When more than one type of Goo Ball is allowed the types should be comma-seperated common,Ivy for example.


If I have a levelexit do I really need a pipe?
Yes you do. If you don't have a pipe the game crashes when you open the exit.
What does Autopipe do?
Autopipe is just a quick way of getting a simple pipe into your level. What it does is...
Add a pipe item - if there isn't one
Add a vertex exactly at the centre of the levelexit
Add another vertex outside the nearest edge of the level (calculated from scenebounds - link)
NB: Any existing vertexes will be removed, the Editor will warn you of this.
Pipes depth and id attributes
Pipes have a depth attribute, however it appears to be completely ignored by the game. Despite the fact that several pipes in the original levels have non-zero depths, testing reveals that pipes are always drawn at depth=0
Pipes also have an id attribute which has no effect or function on the game.
Given this, both depth and id will be removed in future versions of the Editor.
* About sucked balls
Goo Balls with stacking=true (BlockHead, RectHead, WindowSquare, WindowRect) are immune to the suction of the pipe. And strangely, lose all solidity and cannot be stacked when they are within the radius of an open pipe.
antigrav balls, like balloon, are also immune to the suction when attached. This can make them difficult to get into the pipe.
About the suction
The suction from the levelexit is equivalent to a radialforcefield set to type=gravity with forceatcenter=-40 and forceatedge=-40 and with a high dampening factor. [Link to RadialForceField] Note: this forcefield is set to antigrav=true, which produces odd effects if an antigrav-enabled ball has suckable

Custom Pipes

In addition to the 4 "normal" pipes ('Grey','BLACK','BEAUTY' and 'ISH') it is possible to add your own custom pipes.
You could simply override the original graphics with your own, but this would also change the pipes throughout the original levels. So if you want to keep your special pipes "to yourself" and only use them in your levels... here's how.

Choose a name for your pipe

Something descriptive and "unique"... certainly nothing that has been used before. I used LEMON and since it is case-sensitive you are best sticking to UPPERCASE like the original types.

Create the new graphics

You will almost certainly need to create images for the open and closed mouth and the pipe itself, and it will be easiest if you keep the original naming convention for these images


You could also create new images for the bends or corners, although for LEMON I just used the original black corner graphics that are used on the Grey,Black and Beauty pipes.

Add the Pipe Resources

If you plan to use this pipe in just 1 or 2 levels, you should add the resources to the level directly. Import the pipe images into your level then change the resource ids to match the list below. WooGLE will then automatically include the pipe resources and graphics in the goomod.

If you plan to make a level pack or chapter which uses the custom pipe many times, you should add the resources to the global properties/resources.xml.bin. However, you will need to add a merge file and all the necessary graphics to the goomod yourself.


Notes about image files:
The paths shown above are for example only, you may use any valid image file for any of the pipe resources.
The image files do not have to be in res/images/levelimages, and if this pipe will only be used in one level it would be best if you put the images in the level folder.
You can use the original black bend images by simply omitting the _{PIPENAME} from the paths for the BEND resources.

Set the pipe type

Finally you need to set the pipe's type attribute.
This must exactly match the {PIPENAME} you used in the resource ids.
NB: You can only enter a "custom" name into type in WooGLE v0.74 and above. If you use a "custom" pipe then it will display as bright red in the level view.

If you want a closer look, or a reference for creating your own pipe, you can download my Lemon Pipe Demo below

lemonpipe.goomod15.38 KB

Ending Levels

There are a number of ways you can complete a level in World of Goo, by far the commonest is the pipe, but if you want something a little different there are several other options.

In the original game these other types of "exit" were used almost exclusively on the final level of a chapter. If you use any of these exits you should be aware that on "completion" the player will not be returned to the Chapter 1 Island screen, but to the main World screen. Also these other exits do not display the normal end-of-level sequence (Continue Handle -> Tank -> Level Stats), they jump immediately to any cutscene* then to the World screen.


This type of exit was used in "Reguritation Pumping Station", it has a single attribute y which specifies a height.
The level will end if any attached Goo Ball is above this height.
NB: If an attached Goo Ball begins the level above this height, the level will end immediately.


This type of exit was used in "Product Launcher" and "Observatory Observation Station".
The level will end when two particular geometry objects collide (touch).
id1 and id2 are the ids of the geometry objects which must collide. There is one other attribute delay, this specifies the number of seconds after the objects collide, until the level actually ends. During this time the level remains completely playable.

endonnogeom *NEW*

This end condition was not used in any of the original levels, but is in the game code and does work.
Simply, the level ends when there are no dynamic geometry objects remaining.
Dynamic objects can be destroyed in 2 ways...

  • Bombs and exploding Goos, if the geometry is tagged with break=
  • By other geometry tagged as geomkiller

Multiple End Conditions

You may add more than one end condition to your level. In this case if any one of the possible conditions are achieved.. the level will end.


This end condition is used in "Deliverance" and "MOM", and ends the level after a particular message is displayed. If an UndeletePill hits a Ballbuster or a [Mostly]Deadly, it shows the popup, and ends the level if you have endonmessage set to END_DELIVERANCE. Otherwise, it will crash.

*Note: cutscenes are unavailable in the current version of GooTool.

Multiple Exits

It is possible to have multiple levelexit items in a level - but if you don't understand exactly how they work, the results will be confusing, both to you and to the player.

Multiple Pipes

Even if you add multiple pipes to your level, World of Goo will only display the first one you add. WOG Editor now only allows you to add 1 pipe item.

That's not to say you can't have more than one pipe appearing in your level. You can add as many pipe images as you like using SceneLayers, but only the pipe item will be a "real" pipe, and only the "real" pipe will change from closed to "open mouth" when the exit is triggered.

But Remember.. Pipes don't DO anything

Pipes do not SUCK, Pipes do not COLLECT Goo... even 'real' pipes. It's the levelexits that DO things... pipes just look pretty.

Multiple levelexits

In a normal level, with a single levelexit item, the levelexit performs 3 different actions:

  • Trigger: Opens the exit and changes the pipe to the animated "open mouth"
  • Sucker: Pulls goos (free or attached) towards its centre
  • Collector: Accepts Goos and takes them out of the level (providing they match the filter property)

If you have two or more levelexit items in your level though, the first levelexit listed will only be the Sucker. It will not open the pipe when the Goo Balls get close, it will not collect any Goo Balls, and it will ONLY suck when the other exit tells it to. This exit is completely invisible.

The last levelexit listed will be the Trigger and the Collector. When the Goo Balls build close to this exit, it will open the pipe and collect balls. It will not Suck, but it will tell the first exit to suck. This exit will also show the little white "puffs" of air sucking into it.

Any additional levelexits do absolutely nothing.

So what use is an exit that doesn't suck? or one that ONLY sucks?

Well, both exits activate at the same time, when the Goos get to the last exit. This means that an action in one place (triggering the last exit) causes an effect somewhere else (Sucking at the first exit)

I used this effect to create a trap in Gotcha! but it could be used for other things, maybe even helping the Goo Balls somehow.

To be clear:

  • Only ONE exit can ever open the pipe (The last levelexit item added)
  • Only ONE exit can ever Suck (The first levelexit item added)
  • Only ONE exit can ever collect any Goos (The last levelexit item added)

If you only have one levelexit, then first and last are the same, so it does everything. If you have two: know which is which, and what they do.

This video explains the behaviour in the case of multiple exits:

Explored Area

By default the camera is allowed to roam anywhere within the defined [Scenebounds], however if you set the autobounds attribute of the level to true, things get a little more complicated.

The game has the concept of an "explored area".
Put simply this area begins surrounding just the starting area and any initial Goo Ball structure and expands as you build to reveal more and more of the level.
Note: The explored area will not contract if the player dismantles their structure.

However there is a bit more to it than that...

The explored area expands to enclose..
Any awake Goo Balls attached to a structure (including single ball + balloon)
Any ball tagged autoboundsunattached=true *see note
The explored area does not expand to enclose..
Sleeping Balls whether they are part of a structure or not
Walking or Thrown Goo Balls not tagged autoboundsunattached=true

The camera is allowed to move anywhere within the explored area and can show up to 800pixels either side horizontally and 600pixels above or below, although it will not go outside the defined scenebounds.

Note on Wide-Angle Cameras

If the initial zoom of the camera is "small" and the camera would show areas outside the explored area, the game automatically zooms in until only the explored area is visible. Each time the explored area expands the camera zooms out until it reaches its nominal zoom setting.

* Balls that are tagged autoboundsunattached=true
Beauty, BeautyProduct, Ugly and UglyProduct
Drained and DrainedIsh
UndeletePill and UndeletePillFizz
WindowRect and WindowSquare


You can add particle effects that look like fire easily, see particles, but if you actually want to set Goo Balls on fire, you need a fire object.

Fire objects are circular so have a center and a radius. Any Goo Balls with a non-zero burntime attribute are flammable*, and will catch fire if they enter a fire object.

Note: Thrown balls do not catch fire, unless they bounce off something first.

You can control what the fire looks like using the particles attribute. You can select any local particle effect, although for playability you should choose

  • an effect that looks like fire
  • an effect that approximately matches the size of the fire object.

* Balls that are flammable

  • Fuse
  • Ivy
  • Bit, Pixel, PixelProduct
  • BombMini, BombShaft, BombSticky, ZBomb
  • Drained, DrainedIsh
  • BeautyProduct (but not BeautyProductEye, or UglyProduct)

Ivy balls are "flammable" in that the same "fire" property is used for "poisoned", just with different particle effects. Therefore it is inadvisable to use Ivy balls on levels containing real fire.

Goos and Strands

What is a Goo Ball?

The answer may seem obvious, but if you're new to editing World of Goo levels then there are some types of Goo Ball you probably won't be familiar with.
Things that you might not know are Goo Balls, but are.

  • The Squares and Rectangles in "Graceful Failure"
  • Timebugs
  • Fixed Anchor Points
  • The UndeletePill and the mass of Spam Envelopes in "Deliverance"
  • The Applications and Games folders that create the window blocks in "MOM"

All these things are Goo Balls, along with the ones you'll know like "Ivy" and "Fuse". The different types of Goo Balls

Adding Goo Balls (aka BallInstance) to your level

The Goo-lbar allows you add any of the common types of Goo Ball from the original game. You can also add any other type of Goo Ball that came with the game, or a custom one you have made yourself, just add any Goo Ball from the toolbar, then change its type attribute to the type you want.

Goo Balls can be selected and moved with the mouse in the Level View. Square balls (Bone, BlockHead, RectHead etc) can also be rotated using the mouse.
You can Cut, Copy, Paste and Delete the selected Goo Ball using the toolbars, menus or the usual keyboard shortcut. Note: Pasted Goo Balls will appear exactly on top of the Copied one. So you should spread them out afterwards.

Connecting them together

Goo Balls can be connected together using Strands. The easiest way to do this is using the new "Strand Mode"
All you need to do is click on a Goo Ball and drag the rubberband line to another Goo Ball. If a Strand is too long, it be shown in red.
Some types of Goo Ball cannot have Strands (Beauty's, Blocks etc) the editor will prevent you from connecting these types of Goo Ball together.
Strands can be removed by simply selecting them and pressing {Delete} or from the Edit menu / toolbar

Note on deleting Goo Balls
If you delete a Goo Ball which is connected to another then the Strand will remain. Strands with only one (or no) Goo Balls attached will be highlighted in the Level Tree Tab.

discovered or sleeping

Goo Balls have a discovered attribute, this sets whether they begin the level awake or asleep. If this is left blank or set to true then the Goo Ball will begin the level awake. If discovered is set to false the Goo Ball will begin the level asleep.
Hint: By default Goo Balls are added awake. If you want a lot of sleeping Goo Balls, it is easier to add one, set it to be asleep, then Copy and Paste it as many times as you need.

Utility Balls

There is yet another type of Goo Ball; the Utility ball. These balls are used for many different things in the game, some you will have seen (the black support chain in Genetic Sorting Machine). Others you will not because they are invisible, and are used to do something "special" like playing a sound-effect or producing a cloud of other utility balls that each produce a particle effect. More information on Utility Balls

Music and Sound

There are two background sounds that can be played during your level: music and an additional loopsound. Both can be set from buttons on the WooGLE toolbar or from the Resources menu.

What music does should be obvious. loopsound provides additional background sound effects.. like wind, water or squeaky windmills.

You can select any ogg sound file to be either music or loopsound - see below for lists of those used in the original game. If you want to use your own music or sound effects you will need to convert them to Vorbis ogg format... [more information on sound files]

Music files

Sound files

Music by Level Name

Level Music File Loop Sound
AB3 Overture98Excerpt1 loop_strongwind
BeautyAndTheTentacle screamer loop_rainLite
BeautySchool temp_CarnivalLoop
BlusteryDay temp_jelly loop_strongwind
BulletinBoardSystem Overture98Excerpt1 loop_squeaksInTheWind
BurningMan stratloop
Chain temp_jelly
Deliverance temp_DWtD1
Drool temp_CarnivalLoop loop_waterPond
EconomicDivide temp_DWtD2
FistyReachesOut RainRainWindyWindy
FlyAwayLittleOnes RainRainWindyWindy
FlyingMachine temp_jelly
GeneticSortingMachine temp_DWtD1
GoingUp temp_CarnivalLoop
GracefulFailure ReveilleDNT
GrapeVineVirus temp_DWtD2 loop_bubbles
GraphicProcessingUnit ReveilleDNT
HangLow RainRainWindyWindy
HelloWorld YearsOfWork
HTInnovationCommittee temp_islandam loop_superbirds
ImmigrationNaturalizationUnit temp_miniottbb loop_shore
ImpaleSticky temp_miniottbb
IncinerationDestination temp_DWtD1 loop_fire
InfestyTheWorm RainRainWindyWindy loop_beforeItRains
island1 temp_islandam loop_firewater
island2 threadcutter loop_squeaksInTheWind
island3 notld_anthem_excerpt1 loop_strongwind
island4 YearsOfWork loop_strongwind
island5 alwaysdestroythethingsilove(excerpt) loop_strongwind
IvyTower temp_DWtD2
LeapHole temp_CarnivalLoop
MapWorldView temp_main
MistysLongBonyRoad RainRainWindyWindy loop_strongwind
MOM bigcomputer1
ObservatoryObservationStation alwaysdestroythethingsilove(excerpt) loop_eveningWater
OdeToBridgeBuilder OdeToTheBridgeBuilder
ProductLauncher notld_anthem_excerpt1 loop_celebrityCrowd
RedCarpet n2 loop_celebrityCrowd
RegurgitationPumpingStation temp_DWtD1
RoadBlocks screamer loop_strongwind
SecondHandSmoke temp_DWtD2
SuperFuseChallengeTime kaptainpolka
TheServer temp_CarnivalLoop loop_eveningWater
ThirdWheel OdeToTheBridgeBuilder loop_squeaksInTheWind
TowerOfGoo kaptainpolka
Tumbler kaptainpolka
UpperShaft stratloop loop_fire
VolcanicPercolatorDaySpa temp_DWtD2 loop_bubbles
WaterLock temp_miniottbb loop_waterPond
WeatherVane threadcutter loop_squeaksInTheWind
Whistler temp_jelly
wogc RainRainWindyWindy loop_squeaksInTheWind
wogc3d DikkiPainguinLoop(rev-1) loop_celebrityCrowd
wogcd bigcomputer2 loop_superbirds
YouHaveToExplodeTheHead screamer loop_fire

Scene Tree

The scene tree holds information about how the level looks (graphics, particle effects etc), the geometry (solid things) and other physics-related items (like gravity and wind) that affect the Goo Balls.

The Scene Root item has a few properties of its own. Full Details Here

Scene Bound : minx,maxx,miny,maxy

These four values define the visual scene bounds - how far the level can be scrolled. No part of the level outside this area will ever be displayed on screen. Placing essential items (like the exit) outside these bounds could mean your level is unplayable. Placing balls outside this area is highly discouraged, since you won't be able to see them, or pick them up.

See also [Scene Bounds vs autobounds=true]

The Scene Tree contains....

Force Fields

There are 2 types of forcefield, linear and radial, these can provide effect like gravity, wind and water.
linearforcefields can simulate a number of very different effects depending on their settings.

Ambient Fields (Gravity)

If a linearforcefield has no size attribute (or it is left blank) then it is an ambient field, and it affects the entire level. Almost all of the original levels have an ambient field providing the gravity.

Local Fields (Wind)

linearforcefields can also be localized by giving them a size and a center. In this case only objects inside the field are affected by it. This is used most commonly to simulate wind or to support the Goo Balls when they are sitting on a cloud.


When the water attribute is set to true, the game displays the water effect within the field in the given color. The top edge of the field is given surface ripples and makes little splashes when objects enter or leave at speed. However beyond these visual differences the field's physics operates in the same way as any other Local field.

This attribute sets both the direction and strength of the force field. The standard "gravity" field in most levels is set to 0,-10 => 10ms2 straight down.
This affects the speed of the Goo Balls as they move, and can be used to give the effect of moving through water, or some other "sticky" substance.
This is normally set to 0 for most fields, and water fields have values between 0.1 and 0.5.
Normally set to true, this attribute allows Goo balls with the antigrav attribute (balloons etc) to float upwards when attached. If this is set to false, antigrav balls do not float and act like normal Goo balls.
This can be set to either force or gravity. When set to gravity the field will accelerate all the Goo Balls at the same rate, regardless of their mass. When set to force the field applies the same force to each object, so lighter ones will accelerate faster, heavier ones slower. See video below for a demonstration


These fields are also used to provide a gravity effect, but on a larger scale. Used in Graphics Processing Unit and Main World View to give the orbiting effect. These fields cannot be ambient, so they must always have a center and a radius specified. The type,antigrav and dampeningfactor attributes work the same as linearforcefields see above

forceatcenter and forceatedge
Since the direction of the force is always towards (or away from) the center of the field, the force attributes only give the strength of the field. Negative values specify a force pulling towards the center point (like gravity), positive values specify a force pushing away from the center.
If forceatcenter and forceatedge values are different, then the force varies linearly between them.

Note on geomonly

This attribute can be applied to linear fields. When set to true the field only affects dynamic geometry objects and not Goo Balls. This can be useful in the construction of mechanisms - [link to...]
Note: geomonly tag was present on all radialforcefields in the original levels, but doesn't have any effect when set to true, so was removed from WooGLE in v0.74


In the World of Goo, the geometry objects are what make things solid. Geometry is what the Goo Balls can sit on, walk on, attach to, bounce off etc.

There are several different kinds of geometry object you can include in your level, but no matter how complicated your level is, it's all built out of very simple shapes (rectangles and circles).

Geometry objects can be fixed in space (static) or moveable/moving (dynamic). They can be made of various materials, and can have a whole host of different effects on the balls and other things.

Geometry objects can also have images attached to them. This is unnecessary on static geometry - it is usually simpler to use a separate SceneLayer item for the image. But if you want the geometry to move, and you want the image to move with it, you must add the image to the geometry object.

Geometry IDs

Every geometry object has an id attribute. When you add a geometry object to your level, WoG Editor will automatically assign it a unique id of the form geometry{number}.

You can change these IDs to whatever you like, and the game is quite flexible in that regard. It will allow objects with duplicate IDs and blank IDs without complaint. However, this can cause you endless problems whilst you're editing the level.

WoG Editor will report any problems by refering to an object's ID. If you have many objects with the same (or blank) ID, you won't know which object actually has the problem.

Once you start designing larger levels, with dozens or hundreds of geometry objects, it can be useful to start giving them "meaningful" names: platform1, leftwall, killerwheel or whatever. As long as you keep these names unique, you will be fine.

Basic Shapes

There are only two basic shapes that Geometry objects can be; rectangles and circles. Most of the solid objects in your levels will be built using just these items.


These shapes can be positioned, resized and rotated using the mouse in the Level View window, or you can enter values directly into the Properties Pane.

Options / Attributes

Static or Dynamic
tag attribute
[Applying Images to Geometry]
[Making Geometry less Solid]


compositegeom objects are very similar to the Basic Shapes objects, with a couple of crucial differences and a few "quirks".

The basics of a compositegeom are most easily explained with a short video.

Whilst you can add as many children as you like to a compositegeom, and build a something fantastically complicated, it is still a single object, and it will move and act as such. Like other geometry objects it can have a material, tags and an image, and the compositegeom passes on these properties to all of its children.

So why is that useful?

The main uses of these objects are:

  • Moving Objects which are 'complex' shapes
    The Third Wheel in "Third Wheel" is a compositegeom object, as are the fingers in Genetic Sorting Machine.
  • Grouping a number of basic shapes together so that they share certain attributes.
    Most of the platforms in "Alice and Bob" are parts of the same object, and all the walls and ledges in "Grape Vine Virus" are one big compositegeom.

Another crucial difference between compositegeom and other geometry objects is that compositegeom objects do not have a mass attribute. Their mass (and centre of gravity) are calculated from the masses and positions of all their child objects.
NB: This only matters when you are using [Dynamic objects].


compositegeom objects also have a few "quirks" (steming from bugs in the game engine):

  • Incorrect handling of deadly and mostlydeadly tags with "sticky" Goo Balls - see note in tag attribute
  • Incorrect handling of nocontacts attribute with "sticky" Goo Balls - see note in [Making Geometry less Solid]
  • Unexpected Displacement of Rotated, Dynamic compositegeom objects - [link TBA]


Dynamic Geometry is any geometry object that is set to static=false or {blank}. Dynamic objects can move or be moved, they will respond to forcefields (including gravity), they will react when Goo Balls or other geometry hits them. In short they behave as if they were real solid objects in your level.

Important Note: All Dynamic objects require a mass

If you set static=false you must enter a value for the mass of the object.

Despite what you might remember less than half the original World of Goo levels contained Dynamic Geometry.
If you're looking for information on how to create any of the following...

  • spinning cogs
  • wheels that will pop a Beauty Ball
  • windmills that kills Goo Balls
  • the wobbly head in "Chain"
  • the lifting wheels from "Third Wheel"

then you should probably read this instead - Making things Spin!

There are a number of categories of Dynamic Geometry.

Free Standing

These are objects which are not fixed to anything, and are free to move or fall as the physics engine dictates.
Examples of Free Standing Objects

  • The head block in "Burning Man"
  • The Bomb Carriage in "Upper Shaft"
  • All those explodable blocks in "Deliverance"

Free standing objects are the simplest to set up. Once you have set the object to static=false and given it mass.. you're done. Although you'll probably want to apply an image to it, so that the player can see it. see [Applying Images to Geometry]


These objects can move, but they are constrained to rotating about a point, a hinge. The hinge can be a fixed point or can be attached to another dynamic object.
Examples of simple objects using fixed position hinges

  • The platform in "Server Farm" - View Image
  • The liftable bars/gates in "Flying Machine" - View Image

To create an object like this, set it to be static=false and give it a mass, then add a hinge object to the level. Move the hinge into the correct position and set its body1 attribute to the id of the geometry object.
[Full details on hinge and its attributes]

Examples of more complex hinged objects

  • The Red Carpet Extend-o-matic machine in "Red Carpet" - View Image
  • The machine/robot/thing at the bottom of "Deliverence" - View Image

Notes on Hinged objects

  • When two dynamic objects are hinged together, they will not collide with each other.
    However they will still collide with other geometry objects and Goo Balls.
    And if A is hinged with B, and B is also hinged with C.. A and C can still collide. In the case of the Deliverance "robot".. the fingers could collide with the head, because they are not directly connected by a hinge.
  • Hinges cannot be attached to compositegeom child objects.
    If you attempt to attach a hinge to a compositegeom child, the connection will be ignored, and the hinge will be in a fixed position. To hinge a compositegeom object you must attach the hinge to the parent object.
  • Hinges cannot be attached to Static Geometry
    Again, if you try the connection will be ignored and the hinge will be a fixed position. This will not affect the dynamic object directly, since it was being hinged to a fixed body anyway. However, since the 2 objects are not connected by a hinge, they will collide as normal.
  • Bug in the game: Timebugs vs 2 body hinges
    If you have a hinge which connects 2 dynamic bodies, then its position is not correctly reset when a timebug is popped, this can cause some very undesirable effects. Fixed position hinges are fine, but hinges that move get badly messed up.


Line objects are used to define the edges of the level, as far as the Goo Balls and dynamic geometry are concerned. Lines are the simplest type of geometry object, however if you don't understand how they work, they can cause you all sorts of problems.

Lines have a position (anchor) and a normal direction (normal). Together these tell the game where the line is and what its rotation is. The normal dictates which way the line points and defines the front and a back. It's the front and back which are important, because Goo Balls and dynamic geometry objects can only ever be in front of a line.

In fact, they must be in front of all the lines in a level. You must always have the normal's pointing inwards towards the middle of your level. If they face outwards then Goo Balls are not allowed to be in your level.

If a ball or dynamic geometry is placed the wrong side of a line, the physics simulation will go berserk due to the illegal placement.

Lines have a tag attribute and a material, so they can affect Goo Balls, Structures and Dynamic Geometry in many different ways.

Unlike circles and rectangles, lines can't be placed into a compositegeom - not that this would make sense anyway.


[Under Construction]


A Geometry object can be made fixed and unmovable by setting its static attribute to true.
Static objects are used for Walls, Cliffs, Platforms and the other things in your level that will never move. The vast majority of the geometry in your level will usually be static, so WoG Editor sets static=true on geometry objects when you add them.

The static attribute only affects the "fixed" nature of the Geometry object, it can still be assigned a [material] and tags.
You can also apply images to static geometry, however you are normally better using a separate image object. The only time that static geometry requires an image is when it can be destroyed - see [Making Geometry less Solid]

Note on Building Walls and Cliffs

There is a bug (more a "weakness") in the World of Goo game engine which allows fast moving Goo Balls to pass through thin walls. This has been used to great advantage by many players in order to beat levels faster or better.

However it can also be annoying and problematic if a level is designed "poorly" and Goo Balls can accidentally pass through thin walls and become stuck or die. The best way to avoid this problem is to make your geometry as big and solid as possible, rather than building thin walls around the edges of the images. Overlapping regions are fine, in fact they are encouraged, since Goo Balls can get stuck in small gaps between geometry that almost touches.


Image objects, known as SceneLayers in World of Goo and WoG Editor, are how you get graphics into your level. It is important to realise that images are not solid. Just because you add a picture of a cliff to your level, this doesn't mean the Goo Balls will sit on it. You need geometry objects to make things solid.

SceneLayers let you build up the visuals in a level, from the background image to what the walls and cliffs look like, and they let you add foreground objects, like bushes, which come between the player and the Goo Balls.

You cannot import image files directly onto a SceneLayer object, the image file must first be added to the resource list and given a unique id. You can then select this id from a list in the image attribute of the SceneLayer.

Once you have assigned an image the SceneLayer can be moved, rotated and resized using the mouse in the Level view, or by changing the center, rotation and scale attributes.

Images also have depth

This allows you to control which images appear in front or behind other images, the geometry and the Goo Balls. depth can be positive or negative (positive values are in front of the Goo Balls, negative values are behind), and can be a fractional number (1.234).

It also controls the "distance" to the image. Over a limited range (where depth is between -2 to +2) the only apparent effect is which things are in front and which are behind. On a larger scale a parallax scrolling effect can be seen. Objects with large negative depth (-1000 say) will appear to move more slowly around the screen as you scroll, simulating being further away. Objects with positive depth (+200) will be in the foreground, will move faster as you scroll and will appear between the player and the Goo Balls. [Embed Video]

Other useful SceneLayer attributes

alpha allows you to control the overall transparency of the image.

colorize allows you to change the color of an image.
The image will become tinted by the RGB color you enter [Technical Details Here]
A value of 255,255,255 will display the image unchanged, and 0,0,0 will display a completely black image.

tilex and tiley repeat the image across the whole level.
Used in the original World of Goo Corporation levels for the "infinite" sky and ground. Note:tilex and tiley should not be used with rotated images, see this example showing why not.

SceneLayers can also rotate/spin, see Making things spin, or can be animated. However, whilst this may make the images move, they will still not interact with the Goo Balls or Geometry objects. If you want to create a moving object which can affect things, see [Applying Images to Geometry]

Full details of all the SceneLayer attributes and their functions [Here]

Notes on depth

  • Images representing walls, cliffs should be as close to depth=0 as possible.
    This applies to all SceneLayers showing the image for any solid object created using geometry. If these images have a large positive or negative depth, then they will move relative to the geometry, and Goo Balls may appear to bounce off thin air, or fall through a cliff, rather than off the edge. This is because the balls and geometry themselves are at depth 0.
  • The absolute maximum foreground depth is +700
    This is where the camera is. Beyond this, the game considers the image to be behind the camera, but will still attempt to display the image. This causes some rather odd and disorientating effects.
    For foreground objects such as bushes, trees and rafters etc. depths in the range +100 - +300 are best.


SceneLayer objects can be animated by setting their anim attribute. There are many different animations available to choose from, however only a few of these will be of any real use in a level.

"Useful" Animations Library

Animation Speed animspeed

Most animations run quite quickly at their default speed (animspeed=1), so you will usually need to slow them down by setting the this to a number less than 1. You can use negative values to make the animation run in reverse.

In particular, rot_1rps is an animation with precisely 1 rotation per second. To make something rotate once every 10 seconds, set animspeed=0.1.

Animation "Delay" animdelay

This appears to be named incorrectly, as it actually appears to do animation advance. In the video below, the object with animdelay=0.1 is ahead of the object with animdelay=0.

You may also notice that animdelay=0 and animdelay=1 give identical results.. in fact animdelay={x} seems to be the same as animdelay={x+1} (presumably the animdelay is a specified as a fraction of the animation duration).

Note on Animations and Scale

SceneLayer items can have both a scaling factor and an animation set.
However the game seems only to support uniform (x=y) scaling in conjuction with animations, and if presented with non-uniform scaling, will use the larger scaling factor on both axes.

So scale=2,2 or 0.5,0.5 appear as expected, but scale=0.5,2 will appear in the game as if you entered scale=2,2


Before you can use an image in WoG Editor you must import it into the Resource List. To do this click the Import Images button and select the file (or files) you want to import in the standard file dialog.
Each file that you select will be given a unique id and added to the resources list, if it's not there already. The id will be automatically generated and will be something like IMAGE_{FOLDERNAME}_{FILENAME}
When you edit the image property of any object, a list of the ids of all the image resources will be displayed.

Image File Format

World of Goo uses png files for all its graphics. It will accept any "flavour" of png file (paletted, grey-scale or 16m colour) and supports both alpha-channel and single-colour transparency.

Importing "external" images

All the image files that World of Goo uses must be located within (or below) {Game_Folder}/res/ If you import files from anywhere within this folder then WoG Editor will just add the filename and id into the resource list.
However, you can import images from anywhere on your system.
If you import files from outside the res folder WoG Editor will take a copy of each file and place it in the [Level Folder], and add the copies into the resources list.

Note on Images for Mac

On Mac, World of Goo uses graphic files in a "non-standard" and substantially different format Details here. GooTool will convert standard png images to this format when it installs a level.
(TODO: State whether GooTool will also convert jpg renamed as png correctly on Mac)


labels can be used to add text to your level. In the original levels they were only used in Alice and Bob and MOM.

labels have a position atrribute called center, which is slightly misleading since it is not always the centre of the text. The final positioning of the text is also affected by the align attribute.

In the image the tip of the arrow is at the center coordinates.

labels have a rotation and a scale factor which can enlarge or reduce the text.

They also have a depth which operates in the normal way, but this can be overriden using the overlay attribute. If overlay is set to true, the text will be display on top of (in front of) everything else, regardless of the depth setting of the label, or the depths of the other elements in the scene.


The actual text for the label is held in a [Text Resource], so that it can be multi-lingual. The id of the text resource is selected using the text attribute of the label.


There are a number of fonts you can choose from, however not all the fonts can display the full character set.


particles items generally provide the background effects for a level like falling leaves, or snow or mist, but they are also used to provide effects such as fire, the signpost !'s and the musical notes created by the whistle.

There are 2 types of particle effect

  • Ambient which cover the entire level
  • Point-Source which eminate from a particular location

particles items have a position pos which only affects the Point-Source effects, and a depth attribute which allows you to control whether the effect appears in the foreground or the background.

The pretick attribute allows the particle effect to be virtually "run" for a time before the level begins. This time allows effects to "get going" or cover the level before it is displayed to the player. It was used very rarely in the original levels. The value is in milliseconds (1000 = 1second) and 1 second seems more than adequate for most cases.

Point-Source (non-ambient) Particles Library

Any of these effects could be used on a fire or signpost object, or as a particles item.

Ambient Particles Library

Any of these effects can be used on a particles item.

Guide: Spinning

There are several ways you can make something spin. The correct to do it depends on exactly what you want it to do.

If you just want a spinning background/foreground image

Use this method if you want a spinning image that looks pretty but doesn't affect the Goo Balls, like the small windmills in Blustery Day, or the black cogs in Upper Shaft.

Add a SceneLayer item, apply the image then set:

  • anim = rot_1rps
  • animspeed = 0.1 for example

In the above example, the image will rotate at 0.1 rotations per second, and thus complete its rotation once every ten seconds.

If you want a spinning cog or gear

If you want something to spin and also kill balls or pop a Beauty ball, like the main windmill in Blustery Day or the "buster" cogs, you are best doing it with two items:

  • Add a SceneLayer exactly the same as the above. (this gives you the spinning image)
  • Add a circle that's a similar size as the image and move it to the same place and set:
    • static = true
    • tag = {whatever} deadly or ballbuster - see tag attribute

If you want something that balls can grab hold of, or get hit by

Something that interacts with the balls and has physics effects, like the wobbly head in Chain or the wheels in Third Wheel, is achieved as follows:

  • Add a Geometry object (Rectangle, Circle or Composite).
  • Move it into place, set its image property and position the image.
  • Set the object to be static=false and give it some mass - More information on Dynamic Geometry.
  • Add a hinge and set body1={id of geometry object}.
  • Move the hinge the centre of the object (or the point you want to it to spin around).

If you're happy with something that is moveable but doesn't rotate on its own, like the wobbly head in Chain, then you're done.

If you want it to spin on its own or lift balls, then on the geometry object set
rotspeed = 0.1.

Note about the mass of the object

In this last case, the mass you give to the object affects the power of the motor spinning it. If you set the hinge dead centre in the object it will spin fine regardless of its mass. But if you put the hinge off center, you will find that the motor may struggle to lift the object up one side, but it will drop down quickly on the other.

Also, if you have a "low" mass (like 10), as soon as a ball attaches, the motor will struggle to lift it. If you have a "high" mass (like 10,000), the wheel will grind on regardless and will lift many balls without slowing down at all.

If I can make it spin by just setting the rotspeed, what are motors for?

Well it's a good question. In fact there is only one proper motor object in the whole of the original game - on the robot's head in You Have to Explode The Head.

It seems that even 2D Boy found motors problematic / annoying / mostly pointless, and that using rotspeed and automatically setting the motor's power based on the mass of the object (discussed above) was far easier in most cases, than actually using a separate motor item.

The only time you really need a motor is if you want something that spins weakly but is also heavy, like the Robot's head.

You can't use rotspeed because that would automatically use a strong motor for a heavy object, so this is the only time you really need to use them.

Note: Since motors don't have a size or a position or anything else we could meaningfully draw, they don't show up in the Level View, so you must add and select them in the scene tab.

Errors and Warnings

When you Save, Play or Make a goomod in the editor, it performs a series of checks to ensure that the level 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 level 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 next version of 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

Scene Tree

{Composite Geometry id} not static and rotated. It won't be where you think!
Problem: There is a bug in the game which means dynamic composite geometry items which have a rotation do not appear in the correct position in the level.
Solution: Reset the rotation to 0, and reposition the children one at a time if necessary.
{Composite Geometry child id} : Images on compgeom children do not show in the game.
Problem: The game does not display images assigned to composite geometry child objects
Solution: Add any image to the parent composite geometry object, remove any images from children
{Geometry id} is spinning but has no hinge!
Problem: Spinning items without hinges tend to fly around all over the place
Solution: Add hinges to spinning objects unless you really need them to be free moving
{SceneLayer id} has non-uniform scaling and animation.
Problem: The game cannot apply animations to Scenelayers which have different x and y scale values. It will change both the values to be the average of the two.
Solution: Change the scale of this SceneLayer so that the x and y values are the same.
{Geometry id} has very low rotspeed, and will not rotate.
Problem: The game has some internal rounding or threshold on rotspeed. Values less than 0.0005 ( + or - ) actually set the rotspeed to 0
Solution: Increase the rotspeed to at least 0.0005

Level Tree

{camera aspect} poi traveltime will cause a delay starting the level
Problem: There is only one poi for this camera, and it has a large travel time set. This will delay the start of the level with the camera stationary.
Solution: Reduce the traveltime on the poi to 0 or 1
The pipe is not at exit!
Problem: The level has an exit and a pipe but they are not in the same place. This can be very confusing for the player.
Solution: Unless you have a good reason for them to be in different places, move the exit or the pipe mouth so that they are in the same place.
Pipe vertexes are too close together
Problem: Some bends in the pipe are very close together, this will cause the corners images to overlap.
Solution: Move the pipe vertexes further apart
Multiple end conditions {list-of-End Conditions}
Problem: There are a number of different ways to end this level.
Solution: Unless you meant to do that, remove all but one of the exits / end conditions

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.
Text resource {Resource Id} unused
Problem: A text string is defined in the text 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 Custom balls used in this level
Custom Materials used {list-of-Materials}
These are the Custom materials used in this level, or by the custom balls
Custom Particles used {list-of-Particle Effects}
These are the Custom particle effects used in this level, or by the custom balls

Warning Messages

Scene Tree

{Composite Geometry id} is static and has no children.
Problem: A Composite Geometry item has no children, so it's completely pointless.
Solution: Remove the Composite Geometry item, or add some children
{Geometry Child Id} is a compgeom child so cannot have a hinge!
Problem: If you attached a hinge to a composite geometry child it won't work in the game
Solution: If you need the object to be hinged, attach the hinge to the composite geometry parent item.

Level Tree

Level has no normal camera
Problem: Without a normal camera this level will not work on many systems
Solution: add a camera item and set its aspect to normal
Level has no widescreen camera
Problem: Without a widescreen camera this level will not work on many systems
Solution: add a camera item and set its aspect to widescreen
Gooballs start above the targetheight
Problem: You have set a targetheight end condition but there are attached gooballs which begin the level above this height. The level will finish as soon as it begins.
Solution: Increase the targetheight value, or move all the gooballs to below the height[link to targetheight]

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


the levelexit is outside scene bounds
Problem: the levelexit is positioned outside the scene bounds so the player will not be able to see it.
Solution: Move the levelexit, and the pipe mouth, inside the scene bounds or changes the bounds. [Link to Scene Bound]
Custom Pipe resource {Resource Id} is missing
Problem: You have specified a custom type for the pipe, but you have not added the necessary resources to the level.
Solution: Add the missing resources to the resource tree, or change the pipe to a standard type. {Link to custom pipes}

Critical Errors / Problems

Scene Tree

{Geometry id} is not static and has no mass
Problem: If a geometry object is not static it must have a mass >= 1
Solution: If the geometry object needs to move, set a mass. If the object does not need to move set static=true
{Composite Geometry id} is non-static and total mass is 0
Problem: If a composite geometry is not static then a least one child needs to have a mass.
Solution: Add a mass to one or more children, or make the composite geometry item static
{Composite Geometry id} is non-static and has no children
Problem: If a composite geometry object is not static and also has no children, the game will crash.
Solution: Add at least 1 child item, and give it a mass value, or remove the composite geometry object.
{Geometry id} is static and has a motor
Problem: You have attached a motor to a static geometry object, this will crash the game.
Solution: Make the object dynamic, or remove the motor.
{Geometry id} is at the centre of rff {Radial Forcefield id}
Problem: Setting a geometry object exactly in the centre of a radial forcefield will cause the game to crash.
Solution: Move the geometry object, or force field, so the centres are not exactly the same (the difference can be "small")
linearforcefield {id} has size but no center
Problem: Linear forcefields can have a centre but no size, if the forcefield has a size specified, it must also have a centre.
Solution: Set the center position for this forcefield.

Level Tree

has levelexit but no pipe
Problem: If a levelexit is activated, but there is no pipe, the game crashes.
Solution: Add a pipe.
There is a pipe vertex that does not turn
Problem: If there is a pipe vertex, but the direction of the pipe does not change, and continues on in the same direction, the game crashes.
Solution: Remove the "straight on" vertex, or move then next vertex so that the pipe does turn.
There is a pipe vertex that turns 180deg
Problem: If there is a pipe vertex set so that the pipe goes back on itself, the game crashes.
Solution: Move the vertexes so that the pipe always turns 90° at every vertex.
You can't connect {Goo Id} (GooType) to {Goo Id} (GooType)
Problem: Neither of these GooTypes has a strand defined, if you connect them the game will crash.
Solution: Do not connect 2 Goo Balls of these types
{Goo Id} (GooType) cannot have any strands!
Problem: You have connected a strand to a GooType which cannot have any strands.
Solution: Remove the strand.
Signpost {Name} uses an Ambient Particle effect {Effect Name}
Problem: You have specifed a particle effect for the signpost which is not a point-source effect. This will crash the game.
Solution: Change the particle effect to one which is point-source [link to point-source particles]
Fire object uses an Ambient Particle effect {Effect Name}
Problem: You have specifed a particle effect which is not a point-source effect. This will crash the game.
Solution: Change the particle effect to one which is point-source [link to point-source particles]

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.

Chapters and Islands

Once you’ve made a few levels, you might start thinking about making a complete chapter, before we start let's define some stuff and clear up a few misconceptions.

Chapter: A collection of levels, usually with a similar theme or graphics style.

Map Level: A level which defines and arranges the level buttons for a chapter.

Island: The game’s mechanism for creating a Chapter, linking a Map level and the list of levels in the Chapter.
An island is defined in the [ island.xml ] file.

Island and Chapter Numbers

There are 5 islands (1 -> 5) ignoring the mythical / non-functional Island6

There is no connection between Chapter Number and Island Number… the Chapter Number shown for any island is just specified as text in the Global Text file.
OK… 2DBoy set up the original in the "sensible" way; Chapter 1 uses Island1, Chapter 2 uses Island 2 etc.
However there is no absolute need to do this, the Chapter assigned to Island1 can be given any number in its title text.

Open Chapters and Pointer Arrows in MapWorldView

There is no direct relationship between Island Number and the order in which the levels can / must be played, or the order in which the Islands become available in the [ MapWorldView ]

A level is playable if its depends requirements given in the island.xml, are met.
If a level has no "depends" attribute, it is always playable.

An Island button is enabled if the first level entry in the island.xml is playable.
NB: "First" means the first <level> tag found in the file.
In MapWorldView the game sets the enabled / disabled state of the corresponding button id="islandx" based on this.
A black arrow pointer is displayed next to an island button if the island contains a playable level that has not been completed.


Requirements: island.xml must have...
map must be a valid Map Level
icon must give a valid Image Resource ID from the global resources.xml
At least one <level> tag defining a valid level.

Map Levels

Requirements: For each <level> tag in island there must be…
button with id="lb_{levelid}" This is invisible until level is playable
SceneLayer with id="ocd_{levelid}" This is invisible until OCD achieved

Optional:For each level tag in island there can be one or more..
SceneLayer with id="levelpipe_{levelid}" This is invisible until level is playable.

What happens when levels become playable…

When you finish a level, this may make 1 (or more) other levels playable. When this happens the game will display the unlockfuse particle effect which moves from the completed level button, to the newly playable button. When the effect reaches the target button, that button becomes visible, as do any levelpipe_ scenelayers for that level.
If a level depends on more than one level, the unlock particles travel from each depends level only when the final dependant level is completed.

How a Chapter Ends

When the 'last' level in a chapter is completed, the player is returned to the MapWorldView screen rather than island.
NB: Last means simple the last <level> tag appearing in the island.xml. This need not be the last playable level, based on depends, but normally it should be.

Special Islands

Island4 has one special thing.. the signposts. Any signpost, in any level, launched from island4 will display the green terminal sign, rather than the normal wooden one. This appears to be hard-coded into the game.

Island1 should also be considered as special and treated with care. Not because of there’s anything hard-coded in the game for it, but because this is the island that GooTool places custom levels into. Guidelines for redesign of island1

Commands and Actions that can be used in island maps

Action: wogcorp_from_island, zoomout, pl_{levelname}, pm_{moviename}
Display: ss_{levelname}, hs_{levelname}
For more details see [ Commands and Actions ]


Also known as the Main menu, if you are considering a re-design or a “mod” to the MapWorldView level, you will need to make sure that you follow certain rules and include all the items which the game exe will attempt to access and manipulate.

It is recommended, if you are distributing a goomod, you merge your changes into the MapWorldView rather than compiling a new one, so that your mod will interact nicely with other mods that affect this screen.


All the following items are required in the MapWorldView level. If any are missing the game will crash, usually right at the start.

buttongroup id="mainbuttongroup" (must contain at least 1 button)
button id="island1"
button id="island2"
button id="island3"
button id="island4"
button id="island5"
button id="island6" (Always invisible, can't be used but must be there)
button id="wogcorp_intact"
button id="wogcorp_3d"
button id="wogcorp_destroyed"

buttongroup id="boringmenugroup" (must contain at least 1 button)
button id="quit" onclick="quit"
button id="changename" onclick="selectprofile"
button id ="credits" onclick="credits"

label id="newballs" text="LABEL_PLUS_X"
SceneLayer id="newmail"


So long as the above items are all present, you can modify the MapWorldView layout / level however you wish.

Commands and Actions

Action: island{Number}, selectprofile, credits, quit , wogcorp
Display: island{Number}showtext, islandhidetext
wogcorpshowtext, wogcorpdshowtext, showtooltip, hidetooltip

For more details see [ Commands and Actions ]

WoG Corp

The World of Goo Corporation consists of 3 separate levels; wogc , wogc3d & wogcd
We all know and understand the differences, and in the original game which one is available and when. However the rules the game applies to activate and switch between the different versions could be used in different ways.

The buttons in MapWorldView

The 3 wogcorp buttons are displayed (or not) using the following rules.

Visible if island4 is NOT enabled and island5 is NOT enabled and WoG Corp is not destroyed. Also it is disabled until WoG Corp is unlocked

Visible if island4 is open and island5 is not open and WoG Corp is not destroyed

Visible if WoG Corp is destroyed.

Which level is played

The actual level that will be played when the wogcorp command is executed, matches the button which is visible.

The hole in the logic

It may not be obvious from the above, but there can be a gap in the wogcorp sequence.
If chapter 5 is enabled but WoG Corp is not destroyed… none of the buttons are visible.
In this case if you have an additional button which can access WoG Corp, then it will play the original "intact" level.

It is important to note that.. island4 need not be the fourth chapter played, nor island5 the fifth. So WoG Corp could change to "3d mode" immediately, or once the 1st chapter is completed, and could remain in that mode for anywhere from just 1 level, to the remainder of the game… since there is no requirement that WoG Corp is ever destroyed. Whilst changing the order in which the wogcorp levels become available is not possible, you can move through the sequence in different ways.

The Full Sequence

Disabled -> Intact -> 3d -> Invisible (but plays intact) -> Destroyed

By controlling when, and if, WoG Corp is unlocked and destroyed and when island4 becomes available, you can effectively skip various stages.
If WoG Corp is never unlocked, it is inaccessible until island4 is open, then the 3d mode is available, essential you have skipped the "intact" phase.
If WoG Corp is destroyed before island4 is open, you skip the 3d mode entirely.

[More Information about the WoG Corp Levels themselves]


Guidelines and Requirements for redesign of Island1

Island1 is special, mainly because this is the island into which GooTool places custom levels. If you plan to do a large mod, or multi-chapter level pack, or "WoG2" that will require you to redesign / reuse island1 then you should read and obey the following.

Advanced - Not for the faint hearted or the easily confused

The Rules

Leave the map alone!
You should not redirect the map for island1 to a different level, it should be left as island1.
You must use a merge XSL for modifying islands\island1.xml
A handy template is available below.
You must use a merge XSL for modifying levels\island1\island1.scene
Another handy template is available below.

You may use compile XML versions of island1.resrc and island1.level

island1.resrc must contain the following resource ids
Your island design must have nothing "important" above y=1100
GooTool will modify the maxy of your island1.scene based on the number of custom levels installed. This value will range from 1100 to 1500.
However, if your design has object above this the player will not be able to see them and may not be able to access level button which are placed above 1100.
If you require more than 1100 units vertically for your design, simply set the miny to a negative value, and move your whole design down.
Your island design must have a background which extends to at least y=1500
Otherwise the player will see solid backgroundcolor when there are many custom levels installed.
Leave a “clear” area for the custom level buttons
GooTool will add the level buttons and labels beginning at approx (-600,1000) extending upwards and as far to the right as it requires to include all the levels.
In your design for the map level, you should leave this area clear of foreground objects (depth > -0.5)
island1.scene_.xsl_.template.txt1.75 KB
island1.xml_.xsl_.template.txt1.6 KB

Special Levels

Most of the original levels are normal and everything about them is defined and configurable within the xml.
However there are a few exceptions, where the game exe is coded to do things a little differently. These tests and actions cannot be changed in the exe, so you will need to account for / avoid them as necessary.

The following are all the known “special” things.

Genetic Sorting Machine Music Change

If the level id is GeneticSortingMachine, then when a Beauty ball pops the level music is changed to a resource called SOUND_LEVEL_GENETICSORTINGMACHINE_ALTERNATE

Beauty and the Electric Tentacle Signpost

When a signpost with text="SIGNPOST_BEAUTYANDTHETENTACLE_3" is read, this unlocks a Steam achievement.
Note: This appears to work even if the signpost is in another level.


There are (obviously) many special things in this level, so many in fact that it really deserves its own page. [TBA]

Deliverance : Access denied Popup

When the player attempts to play a level with id Deliverance the game checks whether the "Terms and Conditions Accepted" flag is set in their profile.
If it is the level plays.
If not then a Popup Message box appears instead, which only allows the player to click OK, and the level does not play.
The popup uses the following Global Text resources

Undelete Pill

When an UndeletePill goo ball pops, the game displays a popup message (described in detail below) When the player clicks either button, the game executes the command undeletenow, which does the following.. in this order...

Modifies a linearforcefield
It enables a force field called skeletonfield (see Deliverance level).
Obviously if this field was already enabled then this has no effect, but if the level does not contain a linearforcefield item called skeletonfield, then the game crashes.

Switch to "movie" mode
It displays the letterbox bars, and prevents any further interaction with the Goo Balls, and prevents clicking on the Continue Handle, if already down.

Moves the camera
It pans the camera to a fixed position 0,1000
Pauses for about 5 seconds then pans again to 0,5550.
The camera will not leave the scene so if scenebounds maxy is less than 5850, then camera will stop when it reaches the top of the scene.

Sends an internal message : END_DELIVERANCE
If the level end condition is set to endonmessage END_DELIVERANCE the level ends normally.
If the level end condition is set to anything else… then the level is now stuck, and the player cannot finish it..
or retry or quit.

Undelete Pill Popup
Uses the following images and sounds.
IMAGE_GLOBAL_WIDEBUTTON_OVER res/images/widebutton_over
IMAGE_GLOBAL_WIDEBUTTON_UP res/images/widebutton_up
SOUND_GLOBAL_DIALOG res/sounds/popup

And these global text resources


There are number of commands and actions you can execute in the game, these mostly control the GUI and where a button takes you, but there are other commands which perform specific actions like setting flags in the players profile.

Each command seems only to work at the appropriate stage ofthe game.

Commands available in MapWorldView

These commands are normally used in the onclick event of a button.
island{number} : Go to island{number}
selectprofile : Display the profile select screen.
credits : Show the credits movie
quit : Exit the game
wogcorp : Play the active WoG Corp level

Display commands
These commands are normally used in the onmouseenter and onmouseexit events of buttons
island{number}showtext : Show the CHAPTERx_NAME and CHAPTERx_DESCRIPTION text
islandhidetext : Hide the Chapter Name and Description Text
wogcorpshowtext : Show the Name and Description for WoG Corp
wogcorpdshowtext : Show the Name and Description for WoG Corp Destroyed
showtooltip : Show the text specified in the tooltip attribute
hidetooltip : Hide the tooltip

Commands available in Map Levels (Chapters / Islands)

These commands are normally used in the onclick event of a button.
pl_{levelname} : Play the level {levelname}
pm_{moviename} : Play the movie {moviename}
wogcorp_from_island : Play the WoG Corp level, but return to this island when finished.
zoomout : In effect "back".. return to the MapWorldView

Display commands
These commands are normally used in the onmouseenter and onmouseexit events of buttons
ss_{levelname} : Show the Level Name and Number of Goos collected for {levelname}
hs_{levelname} : hide the level name and number of goos collected

Commands available in / after levels

Profile Flags
The commands are used in the onclick event of a button, or in the oncomplete attribute of the <level> in the island.xml
oncomplete actions are executed when the level is "complete".
If the level is "normal" (ie. Pipe collecting Goos) the command is executed when the drop-down continue handle is clicked. ie before the scores are displayed.
If the level has any other type of endcondition, the command is executed when that condition is met.

unlockwogcorp : Set the WoG Corp Unlock Profile Flag (2)
This controls the enabled / disable state of the wogcorp_intact button in MapWorldView

undeletenow : Set the WoG Corp Destroyed Profile Flag (4)
See Special Levels - Undelete Pill for details.
NB: Executing this command in the "oncomplete" does work, however there is then a 20second delay before another button can be pressed.

unlockwhistle : Set the Whistle Found Profile Flag ( 8 )
The whistle becomes active immediately.

accepttermsandconditions : Set the Terms Accepted Profile Flag (16)
This unlocks the Deliverance level see Special Levels - Deliverance

Other Actions
restartlevelyes and restartlevelrightnow
These both appear to do the same thing, which is immediately restart / retry the level.

expandchapter4 : This command appears in the island4.xml as an oncomplete for the Hello World! level. However it does not appear in the game exe, and does nothing.

Mechanisms (Gotcha)

aka Tricks and Traps... the making of Gotcha!


What follows explains in detail the creation of my Gotcha! level.

If you haven't played it yet, you should, and you certainly should before reading on... otherwise it'll spoil the surpises!

Get it here

First a couple of basic building blocks...

compositegeom objects

Pretty much exclusively in the original levels, compositegeom objects were used to either
i) Produce more complicated movable shapes than just a circle or a rectangle.
(The lifting fingers in Genetic Sorting Machine, the Third Wheel in Third Wheel)
ii) To collect together a load of static items (walls, platforms etc) from all over a level, so they could all be tagged and moved together.

It's the third possibility that you can exploit when making traps, and I'm sure it'll have other uses as well.

A compositegeom object is built from a number of child rectangles and circles. Each one is positioned relative to the "center" of the compgeom object, so that when the main object moves or turns all the children move and turn in exactly the same way... as if they were a single solid object.

But... it doesn't mean that any / all of the children have to be close together or even touching. So, you can have multiple objects that move, turn, spin, act together (as if they were a single object).. but that aren't connected together by anything "solid".
This is a VERY useful "feature" of compgeom

The same is true for hinges

When dealing with any non-static (moving/movable) object you need a hinge to fix it to "the world".. otherwise they just free-fall.
The hinge has an "anchor" position and an object it attaches to (the "body")
If you want something to spin about its center (like the Wobbly head in Chain) you position the circle, put the hinge at its center point.. and hey presto.

But there's nothing that means the anchor has to be in the center of the object, or even inside it, or anywhere near it!
Like compositegeom objects, the hinge and the body act as if they are firmly connected together, without having anything solid actually connecting them.
This is also VERY useful

Using Linear Forcefields to throw / move stuff

I spotted this in Product Launcher, it's how they got the gun to rise up at the end.
The gun was just a normal rectangle, non-static with a mass and a material and an the image of the gun applied to it.
Initially it's sitting below the Z, and has a big Forcefield pushing up on it, but it can't move because the blocks that make the Z are in the way.
Once the Z blocks have exploded, the Gun rectangle is pushed up slowly by the forcefield.
Note: There is a very useful property of a linearforcefield.. geomonly
When set to true it means that the force field only acts on geometry objects, and NOT Goos. So you make huge and/or strong force fields wherever you need them, but they don't affect the goos, so the player doesn't know they are there... until it's too late! Evil

Trap #1

The Fakey Pipe and the Spikey Bar

The inspiration for this trap, came from a prototype level made by momo1526 which had 2 pipes and 2 levelexit's. It didn't work how he wanted it, but it gave me an idea.

Before you read on...
To understand how this trap works.. you should read [Wog Editor Reference : Multiple Exits and Pipes (Advanced)]

The Trap!

The mechanics of the trap are quite simple, although a bit fiddly to get just right.
View Trap Setup
The Spikey Bar is supported by the tiny rectangle (Latch) just below it.
The Latch is part of a compgeom object which also contains the Anchor_Support block... and there's an AnchorStickyInvisible Goo sitting on that.

The compgeom object is non-static and hinged. In this case I put the center point and the hinge in the same place, so that I could see how things would move by rotating the compgeom object in WoG Editor.

But that's it!

View Trap Triggered
When the lower exit is triggered, the Sucker (upper exit) pulls the Anchor Goo towards the center, the compgeom rotates, pulls the latch out from under the Spikey Bar.. and "Gotcha!"

Note: Normally the lower exit (the "Out of Order" pipe) would also collect Goos.
Because I didn't want that to happen in this level... I set the exit Filter to collect GooProduct only, so Ivys, Fuses and Commons will not go in. This means that NO Goo's can be collected in this level...ever!
Which is why I added the "targetheight" to the level, so there IS a way to finish.

I had to be a little careful about what happened after the trap was triggered, and if the exit closed and the sucking stopped.
I didn't want the latch block swinging back to its original position and getting in the way. So I adjusted the mass of the Anchor Support and the position of the hinge, to ensure that once it was triggered it would remain in the triggered position.

In v0.3 I removed the fire object that was covering the "workings" and put a big pipe graphic over it instead. I also put some geometry around the pipe, so the player wouldn't get caught on the top block, and also to make it easier to build up to the second pipe.
Also I set strandgeom = true (level root) so that you can't build through this new pipe, and strands don't try to attach to the AnchorStickyInvisible

Trap #2

The Pressplate and the Block Thrower

In Trap #1 we used gravity to do our dirty work. Once the latch was released, the Spikey bar just fell on its own.
Here I didn't want the killing object to just fall... I wanted it to be "Spring-Loaded" and fly sideways... and for that we use the "geomonly" Linear Forcefields I mentioned earlier.

It's a Trap!

Again the mechanism here is quite simple, but took a bit a tweaking to get right.
View Trap Setup I have reduced the size of forces in the image, for clarity

The killer block starts inside Forcefield #1, and is held in place by the latch.
The killer block is just a normal rectangle, with an image and tagged as deadly.
Note: In the final level the wall graphic is set to depth=1 so that it hides the block, I changed it here so you could see it.

The latch and the pressplate are parts of the same compgeom object, so that they move together, and the compogeom is hinged. The part of the floor image which moves, is applied to this compgeom object, and I cut out that bit from the "background".

Even though the pressplate is bigger than the latch, the latch is actually much heavier. This is needed to ensure that the latch stays in place, even through the killer block is pushing on it, and to stop the pressplate just falling on its own and releasing the block without the player touching it.
The Endstop holds the pressplate in place, without it the latch is heavy enough to lift the pressplate out of the floor.

I balanced it so that the whole trap is "lightly weighted".. so that even a single Goo would set it off.

View Trap Release
Goo steps on..the pressplate drops, the compgeom rotates and the latch lifts upwards.

Forcefield #1 pushes the block to the right and into Forcefield #2.. which really WANGS it.
You'll notice that ForceField #2 is in the shaft... but it's set to "geomonly=true" so won't affect the goos if they go into it.
Both fields have an upward component to lift the block a bit, and get the firing angle just right.

Originally I had one large force field, but I found that it also pushed on the latch.. and could trigger the trap on it's own. So I split the field into 2, and left a gap where the latch is.

When the killer block hits the far wall it's going fast. I found using the default material "rock".. made it bounce off to much. The killer block is now "fruit" and the back wall is "swamp". This really deadens the bounce nicely, so even though the block is going fast, it only bounces just enough to land on the pressplate.

In v0.3 I put the Endstop at an angle and changed its material to "ice", because sometimes the killer block would get caught on it. Now the block almost always slides off and kills any remaining Goos... Evil

Trap #3

Blocks Crossing!

This one's more of an obstacle than a "trap" since it's not triggered by anything and it's active and running right from the start.

The "trick" is, how to get a block to move across the shaft, and then go back to where it started and go across again.
A couple of early ideas...
Something like "PONG", where the block goes across one way, then comes back.
Something like a machine gun, with a load of blocks on one side, that drop into the "barrel" and get fired across one after the other. I think this would have worked, but you have a finite amount of "ammo", so if the player takes ages to get there, you'll have run out by the time they do.
(Editor's comment: Maybe that would have worked, if you route the blocks around the level, like the Goo Balls in "Alice and Bob and the Third Party" [AB3])

Make it Spin!

The "neat" answer: Have just one block, and make it spin in a very large circle.
So it goes across the shaft, then moves round (outside the game area) and back where it started and then goes across again.

Despite the fact that this should be simple to make, it was in fact rather annoying. The problem seems to be.. WoG's physics engine doesn't handle rotating, unbalanced objects very well.

Original Setup

Just a single rectangle and a hinge a LONG way above it, and set it to rotate, so the rectangle moves in a big circle. But it was juddery and the rectangle kept moving away from the hinge and catching on other geometry and getting stuck.


View Setup I did say the hinge was a LONG way above it.

The new setup has a compgoem object which has 2 rectangles in it (block #1 and #2) These are a long way apart (about 7500 px) and there's a hinge in the middle.
The important thing is that its nicely balanced, and spins great!

The complication with doing it this way, is you can only have 1 image on any compgeom object, so I had to make a tall picture with a little block at the top and one at the bottom.


Having written this guide, I decided that it would be nice to show that these "mechanisms" could also be used to help you, rather than just killing Goo Balls.
So I added a new "feature" to the level, the "Do Not Pull" handle.
The idea was simple; add a lever that can be pulled to stop the blocks. Doing it proved less simple.
View Setup Image
The problem was I wanted a moving lever that would push a "killer" block (tagged geomkiller) into the path of the fast moving blocks, and destroy them. However, because the lever is also a dynamic object the "killer" block killed the lever as well. The key was [DIY compositegeom] so that the pushed block and killer block move as a single object, but can have different tags. A similar idea was used in a few of the original levels, Red Carpet for one, but for different reasons.
View Image

The lever is pulled, this pushes the "pushed and killer" blocks into the support field, which keeps them in position, and the next time one of the fast moving block comes around.. the whole "spinner" object is destroyed.
The killer block is also tagged deadly so kills the UtilNuker Goo, which makes the "siren,shut down, hiss" noise.
The "Damping Field" is there to stop the "Do Not Pull" sign from swinging really wildly when the lever is pulled. It is a normal linearforcefield, but it applies no force and just has a dampeningfactor


I found another "bug" in WoG..
The nogeomcollisions attribute doesn't work when applied non-static compgeom objects, but it's fine on static ones.

So instead.... View Solution
I split the walls on both sides, and added nogeomcollisions rectangle over each pipe mouth.
This stops Goo Balls going into, or getting stuck on, the mouth of the pipe, but it lets the blocks through to kill them just fine Evil

Trap #4

Watch out for the....!

Just when you thought you were in the clear... a blooming great spikey wheel lands on you!

This trap is one of the most complicated and was one of the hardest to set up. Although I think there's a simpler way to do it.. which I might put in a later version of the level.

But for now....
View Trap Setup
There where several issues to consider when I was designing this trap ...
I want it to be triggered as soon as a Goo (balloon probably) comes out of the shaft
I want it to trigger no matter where (left - right) the Goo comes out
I don't want there to be any visible effect on the Goo when the trap is triggered

To cover these 3 things, the Trigger Bar rectangle seemed a good solution.
It's light (mass=1) so it doesn't affect the Goos, it's long and covers the whole shaft, and without an image it's invisible.

The problem is.. because it's so light, it can't do much... and because the Goo won't be going very fast, it doesn't have enough momentum to make very much happen.

View Trap Release (Part 1)

That's where the Thrower Field comes in. It's geomonly again, so doesn't work on the Goos, but it's also a "force" field, rather than a "gravity" field, so as soon as the trigger bar moves up into it, it gets chucked nice and fast, which is enough to make something happen.

View Trap Release (Part 2)

I wanted the Wheel to come from above, so the Pusher bar had to be nice and long and hinged above its center so it just hangs still to begin with.

The Ramp and Hurryup Field are just to guide the wheel and give it a bigger push... otherwise the goos have got up and out before the wheel arrives.

The final touch to this trap is the Quaker Goo (UtilEarthquake)
I got this idea from Product Launcher too...

The Quaker Goo is invisible and doesn't interact with anything and the player can't do anything with it...
What it does do... ALL it does in fact... is make the Earthquake sound when it dies.
The Pusher Bar is tagged as deadly.. so as soon as it moves the Goo dies and the rumbling sound begins... and moments later... Gotcha! Evil

Trap #5

What now!?

Well first... here's a video....
It shows all 4 traps in action, using Visual Debug Mode.
So you can see all the hidden stuff, and all the important geometry is nicely highlighted.

My aim in designing Gotcha! was not to trick you, trap you and kill a lot of unsuspecting Goos....
although I'll admit it was fun... Evil

I know some of you are already thinking about designing similar levels.. or levels that do similar things...and I look forward to playing them... but consider this....

My aim was to show that you can use the physics stuff in World of Goo to create some quite complex "mechanisms".
OK I used them for traps, but that's not the only thing they could be used for.
I can think of plenty of situations where very similar setups could be used to HELP the Goos not just to HURT them.
(See the "Do Not Pull" lever in Trap #3)

They can now open doors, without needing a Bomb to blow them up. They can pull levels and push buttons that actually DO something. A group of goos in one area could complete a small task and open a trap door for other goos in another area.

In short, I believe this is the start of something wonderful... we can now set proper "problems" for the Goos solve...
the possiblities ARE endless.

Have fun! Smile


These are listed approximately in the order in which you might encounter them.
So ones about creating a level are first, then problems editing a level, then playing a level, then making a goomod... and so on.

[ I clicked New Level and...]       [ I clicked Play and... ]       [ How do I... ]

It's asking me to select a folder to edit. Which folder should I choose?

Actually that's a personal choice, but you should NOT (NEVER EVER) edit the original WorldofGoo game folder!
The popular choice is just to edit your Gootool "modded" folder. This will usually work fine, but there a couple of things that can catch you out.
Like - If you run GooTool with an old version of your level enabled... it'll overwrite any changes you have made.
For this reason some people prefer to create yet another World of Goo folder just for editting purposes.

I clicked New Level and...

...It won't let me have spaces in my level name. Why?

The level name you enter when you first create/clone a level is actually the folder name.
For compatability with other platforms you are not allowed to include spaces.
The name that will appear on the title screen for your level, and the addin name, are separate and can both be set in the Addin tab, and do allow spaces.

... I enter the name, click OK and it comes up with a error. Why?

The most common cause of this is lack of "permissions" or "rights" in the WorldofGoo folder you have selected to edit.
To create new level, or clone existing ones, you must be able to create folders, and read / write / create / delete files, under the main folder you are editting.
Try creating a new WorldOfGoo folder in "Your Space" (My Documents / Home Directory or whatever) or on a separate drive.
Then use Change World of Goo Directory from the file menu to select the new folder.

...What are these greeny/blue boxes?

They are representations of camera positions and POI's [Link to Camera's and Pois].
To begin with you won't need to worry about them at all. In fact, you're probably better off just hiding them. Use Hide Camera/Poi's on the top toolbar.

I've added a SceneLayer, but I can't enter anything into the "image" property. Why?

Before you can apply an image to a SceneLayer (or a rectangle or a circle) you must have imported the image into the Resources list.
Use the Import Images button on the top toolbar.. find the image files you want, select them and click Open.
They will now appear in the Resources Tab, and when you type something into an "image" property you will get a list of all the available images. Pick one.
If the one you want isn't there, go and import it as well.

I can't see the Goo strands (or other things in) in my level.

The main cause of this is having a background image set to depth = 0.
Strands are always at depth of 0 so if the background image (or any image) is also set to depth=0 or more, it will cover them up.
You should always set your background images to a depth less than 0 : -1 will do, but -100 or -200 is usually better.

I clicked Play and...

...It starts the game normally and I can't see my level anywhere.

To play levels directly from the Editor, Windows users need to upgrade to v1.3 of the game.
Patch Available here ->
Note: If you are editing your "modified" folder ( which you should be ) then you will need to run GooTool and click Save after you apply the patch. This will copy the updated files into your modified folder as well.

...Nothing happens.

This is usually because the game has crashed, and is still open and displaying the "Fatal Error" window.
Close that window, and try again.

...It shows the Title screen and then just stops. What's wrong?

There are lots of ways to crash the game, and we're finding new and interesting ones all the time.

Are you using the latest version of the Editor?
Check Here [ Download Page ] We try to add protection and checks for as many of these problems as we can, so the latest version of the Editor may be able to tell you what's wrong.

Try loading one of the Original levels
But don't make any changes, and just click Play. If that doesn't work, then it's something about your system... post in the forums. If the original level works fine.. but yours still doesn't, then the problem is something in your level.

There are a few things we can't detect, warn about or prevent
So may be it's one of those... check the list below.

Missing Ball resources
If you have used a custom Gooball in your level, and it uses a custom image or sound and the file isn't where World of Goo has been told it is... the game Crashes

Missing Custom Particle Effects
If you have used a custom Gooball in your level, and it uses a custom particle effect, and you don't have the addin that Goo came from installed and enabled at the moment.... the game Crashes

If you checked all the above problems...


You've might have found a new bug / weakness / problem with World of Goo that no one else has found / reported.
Your best bet is, make a goomod of your level.. upload it somewhere, then post for help in the forums. We're always interested in finding new ways to break the game, so we can add protection into the Editor and stop it happening again.

I clicked "End level" and the game crashed... what's the problem?

Yup, it does that.. we don't know for sure why, and we can't stop it.
If play through the Editor and you finish the level "properly" and click the Continue Handle.. the game ends fine.
If you quit by using "End Level".. the game crashes.. just close the Fatal Error Window and carry on editing.

It says my Addin Id is invalid... what is valid?

To be safe, always make your Addin Id something like com.goofans.YourName.LevelName
If you're interested... the rules are...
It can only contain letters, numbers and . (dots) No spaces or other symbols are allowed
It must contain at least one . (dot)
It cannot start or end with a . (dot) and cannot have .. (2 dots together)
If you're REALLY interested... RegExp: ^([a-zA-Z0-9]([a-zA-Z0-9]+)?\.)+[a-zA-Z0-9]+$

How do I...

...Set OCD for my level?

OCD is set in the Addin tab under Levels -> Level -> ocd
If you do not see an ocd entry, right-click Level in the tree, and choose 'Add child ocd' from the menu.
Note: You can never get OCD when playing directly through the Editor...
Sure you can meet the criteria.. but it won't go "ooohhh.. OCD!"