SonicGLvl
SonicGLvl is a LibGens tool for editing levels for Sonic Unleashed and Sonic Generations. Developed originally to assist in the development of the Unleashed Project mod, it has been a staple of level editing for Generations mods over the years.
Its main purpose is to modify dynamic objects, though earlier versions supported importing terrain models into the program to convert to game formats. This functionality has since been improved on with Hedgehog Converter, and Havok Converter for collision.
Features

SonicGLvl is designed to modify set object data from Unleashed and Generations. As such, it offers a full 3D viewport to navigate levels with 3D manipulators for changing position and rotation data. GLvl provides object palettes of different types of objects, such as common, stage-specific, and enemy objects, and helper objects such as "SonicSpawn" which can assist in iterating on level design. Each object has a collection of parameters that can be modified with live feedback depending on the type of object. How these parameters affect what is displayed in-editor can be configured by the user on a per-object basis, through modifying its "template," which will be explained later.
Levels in both games use "Layers" which categorize and organize objects of different types. In Generations, this is limited to a certain amount of layers that are always active (such as base
, effect
, sound
, etc.), along with layers numbered 00
to 09
which can be enabled and disabled through trigger objects. In Unleashed, users can define as many layers as they want in Stage.stg.xml
. These layers can be set as the "active layer" through the option on the bottom left of the window, titled "Current Object Set," along with a visibility toggle--for particularly large levels, this can be quite useful for removing visual noise while editing.

SonicGLvl also features a material editor, with a live preview window utilizing translated shaders from the original games to provide an accurate view of what the user's materials will look like in-game. This window also allows the user to import a skeletal mesh and preview any animation, useful when designing new designs for set objects and decorations.
Object Templates

SonicGLvl uses "object templates" to define dynamic objects that can be placed in the game world. These are manually defined by the user based on the object definitions in a given setdata
XML file. Note that if SonicGLvl does not recognize an object present in a level's setdata
files, the program will generate a default template based on the available information. This template will be incomplete, however--it will assume default values based on what it's presented in the given file, will assume all values are "floats" when some may in fact be integer values, and it will not have a model reference or support extra features such as collision previews. These features must be added manually by the user after-the-fact in order to take full advantage of the template system.