Jump to content

SonicGLvl: Difference between revisions

From HedgeDocs
Skyth (talk | contribs)
Created page with "{{Notice|type=info|content=This page is incomplete.}}{{ToolInfobox|title=SonicGLvl|author=DarioSamo|website=https://github.com/DarioSamo/libgens-sonicglvl|image=|download=https://github.com/DarioSamo/libgens-sonicglvl/releases}} '''SonicGLvl''' is a LibGens tool that allows you to edit levels from Sonic Unleashed and Sonic Generations."
 
Dan (talk | contribs)
First draft on a rewrite of the "SonicGLvl" page. Will need another pass to add more information and fix any formatting issues.
Line 1: Line 1:
{{Notice|type=info|content=This page is incomplete.}}{{ToolInfobox|title=SonicGLvl|author=DarioSamo|website=https://github.com/DarioSamo/libgens-sonicglvl|image=|download=https://github.com/DarioSamo/libgens-sonicglvl/releases}}
{{Notice|type=info|content=This page is incomplete.}}{{ToolInfobox|title=SonicGLvl|author=DarioSamo|website=https://github.com/DarioSamo/libgens-sonicglvl|image=GLVL Logo.png|download=https://github.com/DarioSamo/libgens-sonicglvl/releases}}


'''SonicGLvl''' is a LibGens tool that allows you to edit levels from Sonic Unleashed and Sonic Generations.
'''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|Hedgehog Converter,]]'' and ''[[Havok Converter]]'' for collision.
 
== Features ==
[[File:GLVL WindowExample.webp|alt=An example of Jungle Joyride Act 1 (Night) in SonicGLVL, showcasing several features of the editor including game-accurate shaders, object templates, and more.|left|thumb|272x272px|The SonicGLvl main window]]
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 <code>base</code>, <code>effect</code>, <code>sound</code>, etc.), along with layers numbered <code>00</code> to <code>09</code> which can be enabled and disabled through trigger objects. In ''Unleashed,'' users can define as many layers as they want in <code>Stage.stg.xml</code>. 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.
[[File:GLVL MaterialEditor.webp|alt=A view of the material editor for SonicGLVL showing an animated Sonic with game-accurate shaders.|thumb|SonicGLvl's material editor]]
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 ===
[[File:GLVL ObjectTemplate.webp|alt=An example of a SonicGLvl object template for the object "ChangeMode_3DtoForward" as seen in Sublime Text 3.  |left|thumb|An example of a SonicGLvl object template.]]
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 <code>setdata</code> XML file. Note that if SonicGLvl does not recognize an object present in a level's <code>setdata</code> 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.

Revision as of 02:22, 25 April 2025

Info
This page is incomplete.
SonicGLvl
SonicGLvl
Author(s) DarioSamo


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

An example of Jungle Joyride Act 1 (Night) in SonicGLVL, showcasing several features of the editor including game-accurate shaders, object templates, and more.
The SonicGLvl main window

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.

A view of the material editor for SonicGLVL showing an animated Sonic with game-accurate shaders.
SonicGLvl's material editor

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

An example of a SonicGLvl object template for the object "ChangeMode_3DtoForward" as seen in Sublime Text 3.
An example of a SonicGLvl object template.

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.

Cookies help us deliver our services. By using our services, you agree to our use of cookies.