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.

Island.XML

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 ]

MapWorldView

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.

Requirements

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"

Customizing

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.

wogcorp_intact
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

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

wogcorp_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]

Island1

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
IMAGE_SCENE_ISLAND1_LEVELMARKERA_UP
IMAGE_SCENE_ISLAND1_LEVELMARKERA_OVER
IMAGE_SCENE_ISLAND1_OCD_FLAG1
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)
AttachmentSize
island1.scene_.xsl_.template.txt1.75 KB
island1.xml_.xsl_.template.txt1.6 KB