This is a quick guide on How's working the Level Editor.
Do not Hesitate to enlarge manually this window or automatically with the Maximize button on the bottom left for better reading.
The built-in Level Editor helps you to create new levels as well as customize any graphics or sounds giving you the opportunity to manage your very own world.
Every Level in Metagolf from the Demo version to the Full version as been created with this Level Editor.
You can access the Level Editor at any given time by pressing the F8 Button.
By default 4 windows are already opened :
>The ToolBar Panel
>The Editor View
>The Object Inspector
>The Tile Map Editor
The ToolBar Panel
The ToolBar Panel is the Main Level Editor window.
Closing this panel or pressing F8 again will exit the Level Editor and un-pause the game.
Be sure to Save your level BEFORE Closing the Level Editor AND Reload your level BEFORE Editing it in order to keep objects unaffected by any movement.
Each button of the ToolBar Panel is linked to a specialized Editor Panel.
Whenever you close a specialized Editor Panel remember that buttons present in this window can restore it.
The 6 First buttons are covered later on this guide. Please proceed to each section for more informations on these.
The 3 last buttons are used to Create, Open and Save the currently edited Level.
The Create Button represented by a Blank page will open a Create New Map Panel.
Simply name your new level by giving a name to it and choose its dimension in tile number unity.
Be careful while naming you Level : if the level already exists it will be overwrited without any Warning !
By default, a new Level is coming with 2 Super Sprite Background Parallax, 1 Ambiant Audio Emitter, 2 Audio Emitters event called "Win Jingle" and "Loose Jingle", 4 players and a Golf ball.
The Open Button (represented by an open folder with an arrow) and the Save Button (represented by a disk) works the same.
Except for the input box where you can ask about a list of the existing Level by clicking on the blue Button attached to it.
[ Level Folder Informations (optional reading) ]
>Every Level is saved in a folder of the same name inside the "maps" folder from the Metagolf Installation Path.
>A Level is a combination of various XML files present in the Level Folder.
>background.xml, mainground.xml and foreground.xml are always present inside and represent organized data for each layer.
>entities.xml is always present too and contain every objects present in the level.
>particles.xml, skins.xml or audio.xml are only present if the level requires specifics customizations in regard to these areas.
>settings.xml is only present if the creator of the level specifies different Level Options from the Main Game Menu (Escape while in editor).
This is particularly useful when you decide that this level shall begin with certain option like time attack or a Hedgehog ball type.
>A thumbnail.png file can be provided in order to change the thumbnail in the Level Loader, otherwise a default one will be assigned (thumbnail.png is 160x120 pixels).
>All of these files are "lower cases" and can be edited manually with a text editor (or image editor for the thumbnail of course) !
>You can dristribute your Level on the official Metagolf Forum at : http://www.metagolf.net/forum/
[ Quick Tips ]
>F10 Button will Reload the currently Edited Level. Do this before any modifications or know what you do !
>Before editing a New Level : setup each of the 3 Layer ground with the Tile Map Editor >"Layer Properties" button. You can modify the 3 at once by using the "Apply to all Layer" option.
>Often save your level because wrong input Values could lead to unexpected behavior from the Editor !
The Editor View
The Editor View covers most of the Level Editor and is situated below every other Editor Window.
You can actually be considering the Editor View as a Scene where Layers and Object are taking places.
There is currently 3 Layers rendered in this order : Background, Mainground and Foreground.
Objects are always rendered inside the Mainground and Foreground Layer !
More informations is available on Layer in the Tile Map Editor Section below.
[ Quick Tips ]
>Using the arrow keys you can scroll the entire map. Hold down Shift to scroll faster or Alt to scroll slower.
>Shortcut keys will only work while the Mouse Cursor is over the Editor View.
>Using the Numkey + and - or Page Up and Page Down will zoom or un-zoom the Editor View. Numkey * or Home key will reset the Editor View.
>Abscissa and ordinate 0,0 begin at the Top Left Corner.
The Object Inspector Window
The first button in the ToolBar Panel represented by a moving cursor is the Select and Move Cursor.
Clicking on it will display the Object Inspector window and will also change the Current Mouse cursor in the Editor View.
With this cursor, you can select any objects present in the Editor View by clicking the left or middle mouse button over it.
By doing this the Object Inspector window will be automatically updated with the current object parameters.
This Object Inspector window can be enlarged or reduced by dragging the bottom border.
At the top of this window in the white area is a list of objects that you can create in your level.
To do so, simply choose the object type from the list.
This will change the current Selected Button from the ToolBar Panel and activate the Object Creation Cursor.
Then click somewhere on the Editor View with the Left Mouse Button.
The properties of the Object Inspector will be automatically updated.
Selecting the fourth button in the ToolBar Panel represented by a Square Target Cross will also display the Object Inspector.
The Grid check box presents in this window enable the Positional Helper Grid which covers the Editor View.
While dragging an object with the Right Mouse Button in the Editor View, the enabled Grid option will snap the object regarding to each corner of the grid.
Disabling the Grid option help you to freely move, resize and rotate your object on the scene.
Depending on the selected Properties the other tools present in this window will change.
In most cases the current property value will be shown in the Horizontal Input Box.
You can change this value Manually or, if enabled, use the Cursor Bar just below.
Releasing the Cursor Bar thumb will automatically validate your change.
The Set button is equivalent to a Manual Validation via the Return key.
Sometimes the Horizontal Input Box is filled with pre-disposable values.
It's the case of Properties name beginnings with a bracket.
It is recommended to select one of the proposals by clicking on the Blue Button attached to it.
Sometimes the Horizontal Input Box is replaced with a Text input.
That mean you can enter multiple line of text inside this parameter and valid your change with the Set button.
Behavior of any object can be changed by modifying these Properties.
Properties are colored according to their function type.
>White properties always define the object name.
>Blue properties are related to spatial values such as position or size.
>Pink properties are related to object parameter features such as force or object type.
>Green properties are related to rendering parameters such as color or skin.
>Red properties are related to the physical definition of the object such as density or friction.
>Yellow properties are related to interactions between the object and another object like the player or water field.
>Purple properties are related to audio parameters such as volume or music.
>Orange properties are related to various parameters such as fixed rotation or inter-shape shifting.
You will find documentation on Properties at the end of this Guide.
[ Quick Tips ]
>Using the Delete key while over the Editor View Remove the selected object.
>You can rotate by 90° your object by using [CTRL + Mouse Wheel].
>You can resize the selected object by dragging the mouse while using [CTRL + Right Mouse Button].
>You can modify the Order of Appearance parameters of some object (Super Sprite, Bounding, etc.) by using [SHIFT + Mouse Wheel].
>Resized field or rectangular object like water will and must stay in boundaries in order to be saved !
>There is a different set of parameters for each type of Objects.
>Sometimes you have to uncheck the Grid option to precisely place an object (e.g to prevent Chain breaking while the level's starting)
>The Middle Click Button help you to select object without moving them by error.
>Dragging Objects with the Object Creation Cursor and the Right Mouse Button is also possible.
>Some object (Fence, chain, etc.) use handles to position themselves over the Editor View.
Smalls Red Handles move the object extremities while the Large Blue Handles move the entire object (extremities included).
>Properties beginning by bracket [xx] need Object Name as value.
(Horizontal Input Box provides every related Name available for the Current Level).
The Tile Map Editor
The second button in the ToolBar Panel represented by a brush is the Paint Level Cursor.
Clicking on it will display the Tile Map Editor window and will also change the current Mouse Cursor in the Editor View.
With this cursor, you can paint tiles over each selected layer from the Editor View.
A layer is composed of tiny square images called Tiles.
Layers are simply visual representations of the level and do not contain any informations about collision or special behavior !
The Background Layer is used to draw tiles that will be covered by most objects.
The Mainground is where object landing and where boundaries take effect. Try to make a clear distinction between the Mainground and the Foreground in your level Design.
The Foreground is a layer used to cover part of the level or simply draw things over the mainground.
You can only paint over one layer at a time by selecting the Currently Edited Layer in the Tile Map Editor.
In order to paint a tile you need to select one inside the Tile Map Image (and this each time you change layer since Tile Map Images are unrelated).
The selected tile will be shown in the Tile Map Editor Preview.
Clicking Layer Properties will open the configuration panel of the selected Layer.
This is where you can setup your own Tiles Images, Parallax behavior, shifting or rendering color components.
Here we cover different properties :
>The Tiles Image is a set of tile visible in the Tile Map Editor and used to paint each square of your level.
You can load relative to the maps folder path Images with the "..." button next to it.
>The Tile Width and Height are the size in pixels of the squares.
>Tiles Overlap is a space between each Tile in the Tiles Image (often useless)
>Layer Width and Height are the number of square representing your level surface for the current Layer.
Will extend or shrunk the Editor View.
>The Layer Shift X and Y visually displaces the whole layer with the specified amount of pixels (offset).
>The Scroll Speed X and Y is used to create the Parallax effect. Default value is 1 (will move the layer at the same speed of the player providing no Parallax)
For a slower Parallax (Distant effect) set less than 1.0 (0.5 for example).
For a faster Parallax (Foreground effect, less often used) set over 1.0 (1.5 for example).
Always prefer using a Super Sprite object to create parallax, it's faster and more featured.
>Horizontal and Vertical Layer repeat is the behavior of the layer while reaching is border. Repeating and Tiling itself or no Repeat at all.
> Red, Green, Blue and Blending allow you to change the rendering color components of every tiles of the layer. This is generally used to create lightening effect or simulate night time.
> The "Apply to All Layers" option allow you to apply this settings once and for every layers.
Don't forget to push the Change button to validate your change !
Note that Global Gravity values are also accessible by this Panel.
[ Informations (optional reading) ]
> Parallax is a well known effect in platform games giving the illusion of a distant landscape or foreground by displacing a layer at a different speed.
[ Quick Tips ]
>Pressing the Delete key over the Editor View will clear the selected Tile.
>Clicking the Right Mouse Button over any Tile present in the current Layer will select it in the Tile Map Editor Preview.
>You can check the visibility of each Layer with 3 check box under the visibility Option.
>It's also possible to set various layer transparency levels in percent from the Transparency Option.
>The Objects Check Box option will enable or disable the rendering of every object in the level.
>You can simulate a constant wind effect with the X and Y Values of the Gravity Options.
>It's preferable to provide custom Tiles Image from you level Maps to ensure portability.
>Always prefer using Super Sprite Object to create Parallax effect.
>While painting your layer you can hold down the following keys: Q,S,D,F,G,H,J to mirror and rotate your Tile.
>Expert only : Hit Down CTRL when choosing an animated set of tiles. The selected tile will tell you by a transparent tile that you now directly paint predetermined animations (need animation tile description in the XML layer file).
The Polygonal Bounding Editor
The third button in the ToolBar Panel represented by a multi directional line is the Polygonal Bounding Cursor.
Clicking on it won't display any window but will change the current Mouse Cursor in the Editor View by a Precision Cross.
Since Layers and Tiles are only visual informations, Platforms Collisions informations are created with this special Cursor.
The idea is to create a static virtual "shape" representing the boundaries of platforms in order to interact with objects.
If no polygon shape is selected, clicking the Left Mouse Button will automatically add the first Corner of a new shape.
A Corner is represented by a Red Circle Handle that you can move while dragging it with the Right Mouse Button.
Working on a Polygon Highlight it. Be sure to deselect the current Polygon before starting a new one !
Of course you can remove any corner by pressing the Delete Key while over one of the Red Handles of the Corner.
Deleting the last Corner will automatically Deselecting and Remove trace of the Polygon.
[ Quick Tips ]
>You can Select and Deselect boundary polygons by clicking the Right Mouse Button Inside or Away (clicking left to add a new polygon corner obviously).
>Always draw your boundary polygons in clockwise for platform and un-clockwise for surrounding boundaries.
>Push down CTRL and clicking on the left mouse button will add a new polygon corner to the polygon shape.
>Don't forget to trace a hole inside your boundaries for the golf hole object ;)
>Uncheck the Grid Option from the Object Inspector to achieve greater accuracy.
>Polygonal Shape can overlap each other's, being concave or convex.
>It's not always necessary to be extremely precise when drawing curved shape.
>Crossing Lines from the same Polygon could generate weird behavior.
>Do not confuse the Select and Move Cursor with the Move functionality of the Polygonal Bounding Cursor.
>You can render any Polygon visible with a texture by changing his opacity parameters.
>You can also render Border inside and outside any Polygon by changing opacity and modifying the height value.
The Particles Editor
The fifth button in the ToolBar Panel represented by a Magic Wand is the Particles Emitter Cursor.
Clicking on it will display the Particles Editor window and will also change the current Mouse Cursor in the Editor View.
With this cursor, you can displace the Preview Particles Emitter that appears somewhere in the middle of the Editor View.
To do this simply click the Right Mouse Button somewhere in the Editor View.
You can also emit a single Particle per cycle while pressing down the Left Mouse Button.
The Particles Editor where you manage a list of emitters and particles.
It is separated in 2 sections :
A Particle is simply Images (loaded in the Skin Panel) throw at different Speed, Angle and other Parameters by Emitters.
Both having a huge set of Parameters to realize various kinds of effect.
Most of the Parameters are self-explanatory although you'll have to play with the values a bit in order to get used to it.
Particles and Emitters evolve over time. That's why you have Starting and Ending Values in most Parameters.
Locking Parameters at the top of the window will force the Parameters to only use the Starting Value and improve the performances.
To process this evolution, we are using Tweener. Each Parameter can use is own Tweener function to operate various movements and different Ease to introduce and/or conclude this movement.
Particles and Emitters have a Life Time. When reaching the Life Time end (express in Milliseconds) the Emitter or the Particle die and return to the pool.
By default the main Emitters Tween Type is set to Loop or PingPong in order to generate continuously Particles over the time.
Pressing the Add button will Copy the current Emitter or Particle and changing is name by adding an underscore in front of it.
This Emitter or Particle will be Saved in the particles.xml file when you save the level. That's why is name shall be unique.
You can of course change this name or simply remove the newly created object List.
[ Informations (optional reading) ]
>Tweening is the process of generating intermediate frames between two images to give the appearance that the first image evolves smoothly into the second image.
>Emitter or Particle Pool is where the system re-use pre-created object in order to optimize as much as possible the memory resources. This means that a limited number of Object is provided to process Emitter or Particle. Currently, 60 Emitters and 2000 Particles are allowed (this should be enough for most cases).
[ Quick Tips ]
>Try to Lock as Many Parameters as possible to improve the performances of your Particles.
>PingPong Tween goes from Start to End then from End to Start forever.
>Use the Wheel Mouse over any Cursor Bar to precisely increase or decrease Values.
>Greyed Name Emitters or Particles are system Default and cannot be removed nor saved.
>Cycle is used with Progressive Tween Type. The Emitter will only die after repeated is Life Time cycle from the value indicated.
>Explosion produces the total Quantity of Particles in the very first Cycle and then ending the Emitter.
>Linear Tween Function is the fastest Function above all.
>The Particles Gravity Parameters is unrelated to any other Gravity behavior.
>You can manually set any parameters by clicking on his title. With this feature, you can bypass the cursor limitations.
>The Particle Mask option is use to enlight a particle without blending it with the background.
Warning, this option consumes more processing time and can decrease the general performances.
The Skin and Audio Editor
The sixth button in the ToolBar Panel represented by a Magic Wand with 3 balls is the Media Editor Cursor.
Clicking on it will display the Skin Editor and the Audio Editor but won't change the current Mouse Cursor in the Editor View nor the current selected ToolBar Panel button.
The Skin Editor is where you can load and setup skin in order to change every graphic of the game.
The Audio Editor is where you can load and setup audio files in order to change every sound of the game including music.
Considering these two Editors working the same way we will only discuss about the Skin Editor.
Please refer to the Quick Tips section to learn more about the Audio Editor Options.
Like the Particles Editor, Skin Editor is working with List.
The Add button is working the same way by copying the last selected Skin.
The Delete one will remove the currently edited Skin from the List.
Don't forget to Apply Changes when you have done with the Editors.
[ Quick Tips ]
>Be careful while using these two Editors. Try to only add media via the "..." Button to get a relative path to the file from the level Folder.
>Image format supported are PNG, JPG, TGA and BMP. Try to use the PNG format for best results.
>Sound format supported are WAV and OGG. Try to use the OGG Format for music and tiny WAV files for sound effects.
>Every Skin can be animated via Frames of the provided sizes.
>Greyed skins are system default skins and cannot not be removed nor saved. Add a new one for this purpose.
>Validate a correct Skin URL Image with the Return Key will set default Width and Height in Skin Editor.
>The filter option in skin panel improves the quality of your graphics when resized. Uncheck this option for pixel art.
>The repeat option in skin panel is used by few object (like treadmill, fence, Super sprite, etc.).
>The Loop option in the Audio panel will play continuously the loaded sound. Useful for music.
>The Hardware option in the Audio panel will try to load the sound in memory before playing it for better performances. Useful for tiny sound effects.
[ Various Tips ]
>In the file selector ("..." button) the [..] will redirect you to the parent folder.
>The best way to learn how's working the Level Editor is to load the "99. Level Editor" or "Labotory" Level and analyses or change every Property asset value.
>Properties are sometimes related and require a lot of tweaking before handling them correctly.
>You can Minimize every window by double clicking his title bar.
>The Super Sprite object is handy to display a particular graphic, canvas or texture effects. They can be animated or used as a Parallax, a Dynamic or Static object and much more...
>Angle of 360.0 for the Special Field applies his effect on every side.
>The Player and creatures Skins are the only ones to be multi-sequential and need to respect a precise number of frames.
>Use the physicals parameters of the Polygonal Bounding to create slippy or sticky grounds with a correct texture representation.
[ Properties List ]
Use this Properties List as a basis to understand all the others undocumented (but generally self explanatory) Properties.
Every Object has a Name, which can be defined or not.
The defined Names are listed into [O] ... Properties and is often used to link Objects to each other's.
Every Object has a Life Property.
When Life is reaching 0 the Object is removed from the game.
In connection with the players.
Determine the Player Number for Multi-player Games.
Determine the X abscissa or Y ordinate Position of the Object.
Starting from the Top Left Corner of the Scenery and constraint by Minimal and Maximal sizes of Levels.
[Starting Point X/Y] : Determine the X abscissa or Y ordinate Position of the beginning extremity of the Object.
[Ending Point X/Y] : Determine the X abscissa or Y ordinate Position of the ending extremity of the Object.
Used in Chain, fence, Treadmill, etc. Object and are generally represented by a tiny Red Circle handle.
Generally, from -720.0 to 720.0
Represent the main Direction of Object.
From 0.0 Object is totally transparent to 1.0 Object is totally Opaque.
The Opacity take into account the Alpha Channel present in the Image and will not modify it.
This Property will multiply the Sizes in X and Y of the Object Image.
Will often resize the Object Boundaries too.
From 0 (Black) to 255 (Full Colour Value).
Working for sub Object components. Like particles Opacity.
- 1 MASKBLEND Pixels are drawn only if their alpha component is greater than 0.5
- 2 SOLIDBLEND Pixels will cover any alpha component Pixels
- 3 ALPHABLEND Pixels are alpha blended with existing Pixels.Useful For Image with alpha component.
- 4 LIGHTBLEND Pixel colors are added To existing pixel colors, giving a 'lighting' effect.
- 5 SHADEBLEND Pixel colors are multiplied with existing pixel colors, giving a 'shading' effect.
Only work if the Skin linked with the Animation Speed dispose of Animation Frames.
This value will affect the playing speed of this animation.
Physical Value that represents the overall weight of Object in Kg.
Physical Value that represents the dragging forces of colliding objects.
Physical Value that represents the elasticity of Object.
A Restitution of 1.0 indicates complete elasticity without any loss force.
Physical Value that represents the air friction of Object that slow it down over time.
Physical Value that represents the angular friction of Object that slow his rotation over time.
The Maximal speed of any Player or Motor in action.
The Maximal shooting Power of Player.
The number of cycle a Player will add the Jump Force Value to jump in the air.
The speed at which the Shooting Cursor is filling up.
A Multiplying value of the Shooting Power over the Object.
A Multiplying value to calculate the height of wave when the Object hit water.
A Force added to each Buoyancy Atom that forces the Object to move while in water.
[Buoyancy Atom X/Y]
The Number of Atom present in the Object while immerse in water.
The More Atoms and Buoyancy Force, the more your object will float.
A Large number of Atoms will have an impact on the simulation speed.
Represent the Volume of any sounds.
From 0.0 (mute) to 1.0 (full volume).
Set to 1 the linked sound will be considered as Music or Ambient and will not calculate the spatial coordinates.
Set to 1 the Chain will add several more joint to constraint every link.
Generally used to simulate tiny bridge. Can have a small impact on the simulation speed.
If you want to manually set the number of link for a chain. Could potentially break the Links.
[Damping Ratio] and [Frequency Hz]
Expert user only.
Refreshing rate to resolve every joint constraint.
Can result in weird behavior if set incorrectly.
The amount of stress the chain can handle before Breaking (generally between 60 and 120 for tiny chain).
If set to 0.0 the chain is unbreakable.
Be careful as this could lead to unexpected behavior while supporting heavy object.
The amount of Force the object will use to interact with external objects.
- 0 One Way Field : The Player can only pass this field in the indicated arrow direction.
- 1 Skull Head Field : The Player touching this Field will respawn at his initial position.
- 2 Golf Ball Only Field : Only the Golf Ball can cross this Field.
- 3 Golf Ball One Way Field : The Golf Ball can only pass this field in the indicated arrow direction.
- 4 Universal Repulsive Field : Any object is Repulsed or Attracted (depending on the force sign) around this Field.
- 5 Object Only Field : Object cannot cross this type of Field.
Will back and reverse the Object Movement if Set to 1.
Otherwise the object pushes in one way only.
[Lower Translation].[Upper Translation]
The amount of pixels that Object will travel from the Lower Translation to the Upper Translation.