<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hedgedocs.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Skyth</id>
	<title>HedgeDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://hedgedocs.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Skyth"/>
	<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php/Special:Contributions/Skyth"/>
	<updated>2026-04-13T18:15:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://hedgedocs.com/index.php?title=HedgeBake&amp;diff=1169</id>
		<title>HedgeBake</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=HedgeBake&amp;diff=1169"/>
		<updated>2025-09-14T08:00:27Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=warn|content=This page is unfinished.}}{{ToolInfobox|title=HedgeBake|author=cosagets|website=https://github.com/cosagets/HedgeBake|download=https://github.com/cosagets/HedgeBake/releases/tag/v1.0.0}}&#039;&#039;&#039;HedgeBake&#039;&#039;&#039; is a Blender addon that allows you to bake global illumination data for Hedgehog Engine 1 games using the Cycles engine.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=612</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=612"/>
		<updated>2025-05-11T22:07:12Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers possible troubleshooting steps for custom levels in &#039;&#039;&#039;Sonic Generations&#039;&#039;&#039; and &#039;&#039;&#039;Sonic Unleashed.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Visual Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
==== Black Textures ====&lt;br /&gt;
Textures must have power-of-two resolutions &#039;&#039;(e.g. 512x512, 1024x1024, 2048x2048, etc)&#039;&#039;. Arbitrary resolutions like 507x631 are not supported when using compressed textures. &lt;br /&gt;
&lt;br /&gt;
==== Randomly Switching Textures ====&lt;br /&gt;
The material doesn&#039;t have any textures assigned. The game expects at least a diffuse texture to be present for nearly every shader.&lt;br /&gt;
&lt;br /&gt;
==== Missing Transparency On Textures ====&lt;br /&gt;
You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See the [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|terrain importing guide]] for more info. Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt;, which doesn&#039;t support alpha channels, you should use &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;StageGuidePath.path.xml&amp;lt;/code&amp;gt; leftover from another level can cause wonky terrain streaming or not render some of your terrain models, as it wouldn&#039;t follow the path of your stage. To disable stage guide path, you can simply remove the &amp;lt;code&amp;gt;StageGuidePath.path.xml&amp;lt;/code&amp;gt; file or set &amp;lt;code&amp;gt;g_UseGuidePath&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Missing Direct Light ====&lt;br /&gt;
&lt;br /&gt;
If you add a new direct light, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the light:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Missing Sky Model ====&lt;br /&gt;
&lt;br /&gt;
If you made a new sky model, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the sky model:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure the sky model&#039;s materials use sky shaders like &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Enemies From Other Stages Not Appearing ====&lt;br /&gt;
&lt;br /&gt;
Some enemies are only loaded in specific stages. You can fix that by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, allowing egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The same method applies to Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt; to values like &#039;&#039;&#039;100000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999999&#039;&#039;&#039; are not going to work correctly. If editing the memory sizes does not work, you can try changing &amp;lt;code&amp;gt;g_EnableFrustumCulling&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_EnableOcclusionCulling&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; as a last resort. Note that disabling these two options might cause a performance hit in-game! &lt;br /&gt;
&lt;br /&gt;
==== File Replacements Not Working ====&lt;br /&gt;
The title update and DLC override files in the base game archives by including them in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder. These files are going to always take priority over your modded files. This is a common problem with &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; and&amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; files. To override them, include the modified files in your mod in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder using the same file structure.&lt;br /&gt;
&lt;br /&gt;
==== Invisible Materials ====&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader.ar&amp;lt;/code&amp;gt; in the base game directory and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Low Quality or Missing GI Textures ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly. When DLC is enabled, the game looks inside the &amp;lt;code&amp;gt;Additional&amp;lt;/code&amp;gt; folder to load HD GI, the parameter for it is named &amp;lt;code&amp;gt;g_Xbox360LimitSizeWithAdditional&amp;lt;/code&amp;gt;, which you also should try to increase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
&lt;br /&gt;
==== Rainbow Flashing Textures ====&lt;br /&gt;
A rainbow flashing texture is displayed when a texture assigned to a material is missing. Ensure you included the texture in the archive and didn&#039;t make a typo in the material. Texture names are &#039;&#039;&#039;case-sensitive&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly.  &lt;br /&gt;
&lt;br /&gt;
==== Red Materials ====&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt; and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Low Quality or Missing GI Textures ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Crashes or Infinite Loading ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
==== Missing Material Files ====&lt;br /&gt;
Unlike newer games, missing materials can crash Generations/Unleashed. For Sonic Unleashed, only having the &amp;lt;code&amp;gt;.material&amp;lt;/code&amp;gt; file isn&#039;t enough, you also need the matching &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Periods in File Names ====&lt;br /&gt;
File names with extra periods break stuff. For example, &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; gets read as &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt;, and the game won&#039;t recognize it properly.&lt;br /&gt;
&lt;br /&gt;
==== Instance Names Starting with &amp;quot;ins&amp;quot; ====&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
==== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ====&lt;br /&gt;
Run [[GI Atlas Converter]] on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
==== Missing &amp;quot;light-list.light-list&amp;quot; File ====&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest [[Hedgehog Converter]] can import direct lights, so ensure your tools are up to date. Use [[HedgeGI]] for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
==== Mismatching PFD/PFI Files ====&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with [[HedgeArcPack]] using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
==== Light Field File Too Large ====&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s light field (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the light field&#039;s file size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
&lt;br /&gt;
==== Incorrect Material Format ====&lt;br /&gt;
Unleashed uses a different material version (V1) compared to Generations (V3), and if you try to load a material from Generations in Unleashed, it&#039;ll crash. Check the version in a hex editor (7th byte), or look for &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt;, those usually mean it&#039;s V1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
&lt;br /&gt;
==== Unloaded Sonic Animations ====&lt;br /&gt;
&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=594</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=594"/>
		<updated>2025-05-07T14:07:32Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all you need terrain for your level, you can create the terrain yourself or you can use pre-existing terrain. If your level contains transparent materials you will need to add a layer tag, pick the one that&#039;s best suited for your use case in order to avoid visual issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (&amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dae&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gltf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;obj&amp;lt;/code&amp;gt; work). When exporting it as &amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Notice|type=warn|content=When converting for Sonic Unleashed, Hedgehog Converter saves &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files by navigating two levels up from the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039;. For example, if you pick &amp;lt;code&amp;gt;C:\folder1\folder2\ActD_MykonosAct1&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files will be saved to &amp;lt;code&amp;gt;folder1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion or misplaced files, it’s strongly recommended to follow the original &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder structure used by the game in your mod directory.}}&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;will not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game. For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here. However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You need to copy the following file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &#039;&#039;&#039;File&#039;&#039;&#039; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
The materials of your skybox need to be assigned to sky shaders such as &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;, otherwise they will not appear in-game correctly. You can assign the shaders by loading the model in SonicGLvl&#039;s material editor under &#039;&#039;&#039;Materials&#039;&#039;&#039;. After changing the shaders, you can save the materials by saving the model from the material editor.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stageID.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]]. For any potential issues you may run into after creating your level, please take a look at the [[Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed|Troubleshooting]] page.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=593</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=593"/>
		<updated>2025-05-03T11:27:35Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers possible troubleshooting steps for custom levels in &#039;&#039;&#039;Sonic Generations&#039;&#039;&#039; and &#039;&#039;&#039;Sonic Unleashed.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Visual Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
==== Black Textures ====&lt;br /&gt;
Textures must have power-of-two resolutions &#039;&#039;(e.g. 512x512, 1024x1024, 2048x2048, etc)&#039;&#039;. Arbitrary resolutions like 507x631 are not supported when using compressed textures. &lt;br /&gt;
&lt;br /&gt;
==== Randomly Switching Textures ====&lt;br /&gt;
The material doesn&#039;t have any textures assigned. The game expects at least a diffuse texture to be present for nearly every shader.&lt;br /&gt;
&lt;br /&gt;
==== Missing Transparency On Textures ====&lt;br /&gt;
You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See the [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|terrain importing guide]] for more info. Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt;, which doesn&#039;t support alpha channels, you should use &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;StageGuidePath.path.xml&amp;lt;/code&amp;gt; leftover from another level can cause wonky terrain streaming or not render some of your terrain models, as it wouldn&#039;t follow the path of your stage. To disable stage guide path, you can simply remove the &amp;lt;code&amp;gt;.path.xml&amp;lt;/code&amp;gt; file or set &amp;lt;code&amp;gt;g_UseGuidePath&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Missing Direct Light ====&lt;br /&gt;
&lt;br /&gt;
If you add a new direct light, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the light:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Missing Sky Model ====&lt;br /&gt;
&lt;br /&gt;
If you made a new sky model, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the sky model:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure the sky model&#039;s materials use sky shaders like &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Enemies From Other Stages Not Appearing ====&lt;br /&gt;
&lt;br /&gt;
Some enemies are only loaded in specific stages. You can fix that by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, allowing egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The same method applies to Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt; to values like &#039;&#039;&#039;100000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999999&#039;&#039;&#039; are not going to work correctly. If editing the memory sizes does not work, you can try changing &amp;lt;code&amp;gt;g_EnableFrustumCulling&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_EnableOcclusionCulling&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; as a last resort. Note that disabling these two options might cause a performance hit in-game! &lt;br /&gt;
&lt;br /&gt;
==== File Replacements Not Working ====&lt;br /&gt;
The title update and DLC override files in the base game archives by including them in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder. These files are going to always take priority over your modded files. This is a common problem with &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; and&amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; files. To override them, include the modified files in your mod in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder using the same file structure.&lt;br /&gt;
&lt;br /&gt;
==== Invisible Materials ====&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader.ar&amp;lt;/code&amp;gt; in the base game directory and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Low Quality or Missing GI Textures ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly. When DLC is enabled, the game looks inside the &amp;lt;code&amp;gt;Additional&amp;lt;/code&amp;gt; folder to load HD GI, the parameter for it is named &amp;lt;code&amp;gt;g_Xbox360LimitSizeWithAdditional&amp;lt;/code&amp;gt;, which you also should try to increase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
&lt;br /&gt;
==== Rainbow Flashing Textures ====&lt;br /&gt;
A rainbow flashing texture is displayed when a texture assigned to a material is missing. Ensure you included the texture in the archive and didn&#039;t make a typo in the material. Texture names are &#039;&#039;&#039;case-sensitive&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly.  &lt;br /&gt;
&lt;br /&gt;
==== Red Materials ====&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt; and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Low Quality or Missing GI Textures ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Crashes or Infinite Loading ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
==== Missing Material Files ====&lt;br /&gt;
Unlike newer games, missing materials can crash Generations/Unleashed. For Sonic Unleashed, only having the &amp;lt;code&amp;gt;.material&amp;lt;/code&amp;gt; file isn&#039;t enough, you also need the matching &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Periods in File Names ====&lt;br /&gt;
File names with extra periods break stuff. For example, &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; gets read as &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt;, and the game won&#039;t recognize it properly.&lt;br /&gt;
&lt;br /&gt;
==== Instance Names Starting with &amp;quot;ins&amp;quot; ====&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
==== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ====&lt;br /&gt;
Run [[GI Atlas Converter]] on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
==== Missing &amp;quot;light-list.light-list&amp;quot; File ====&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest [[Hedgehog Converter]] can import direct lights, so ensure your tools are up to date. Use [[HedgeGI]] for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
==== Mismatching PFD/PFI Files ====&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with [[HedgeArcPack]] using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
==== Light Field File Too Large ====&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s light field (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the light field&#039;s file size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
&lt;br /&gt;
==== Incorrect Material Format ====&lt;br /&gt;
Unleashed uses a different material version (V1) compared to Generations (V3), and if you try to load a material from Generations in Unleashed, it&#039;ll crash. Check the version in a hex editor (7th byte), or look for &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt;, those usually mean it&#039;s V1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
&lt;br /&gt;
==== Unloaded Sonic Animations ====&lt;br /&gt;
&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=592</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=592"/>
		<updated>2025-05-03T11:26:40Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers possible troubleshooting steps for custom levels in &#039;&#039;&#039;Sonic Generations&#039;&#039;&#039; and &#039;&#039;&#039;Sonic Unleashed.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Visual Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
==== Black Textures ====&lt;br /&gt;
Textures must have power-of-two resolutions &#039;&#039;(e.g. 512x512, 1024x1024, 2048x2048, etc)&#039;&#039;. Arbitrary resolutions like 507x631 are not supported when using compressed textures. &lt;br /&gt;
&lt;br /&gt;
==== Randomly Switching Textures ====&lt;br /&gt;
The material doesn&#039;t have any textures assigned. The game expects at least a diffuse texture to be present for nearly every shader.&lt;br /&gt;
&lt;br /&gt;
==== Missing Transparency On Textures ====&lt;br /&gt;
You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See the [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|terrain importing guide]] for more info. Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt;, which doesn&#039;t support alpha channels, you should use &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;StageGuidePath.path.xml&amp;lt;/code&amp;gt; leftover from another level can cause wonky terrain streaming and not render some of your terrain models, as it wouldn&#039;t follow the path of your stage. To disable stage guide path, you can simply remove the &amp;lt;code&amp;gt;.path.xml&amp;lt;/code&amp;gt; file or set &amp;lt;code&amp;gt;g_UseGuidePath&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Missing Direct Light ====&lt;br /&gt;
&lt;br /&gt;
If you add a new direct light, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the light:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Missing Sky Model ====&lt;br /&gt;
&lt;br /&gt;
If you made a new sky model, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the sky model:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure the sky model&#039;s materials use sky shaders like &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Enemies From Other Stages Not Appearing ====&lt;br /&gt;
&lt;br /&gt;
Some enemies are only loaded in specific stages. You can fix that by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, allowing egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The same method applies to Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt; to values like &#039;&#039;&#039;100000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999999&#039;&#039;&#039; are not going to work correctly. If editing the memory sizes does not work, you can try changing &amp;lt;code&amp;gt;g_EnableFrustumCulling&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_EnableOcclusionCulling&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; as a last resort. Note that disabling these two options might cause a performance hit in-game! &lt;br /&gt;
&lt;br /&gt;
==== File Replacements Not Working ====&lt;br /&gt;
The title update and DLC override files in the base game archives by including them in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder. These files are going to always take priority over your modded files. This is a common problem with &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; and&amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; files. To override them, include the modified files in your mod in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder using the same file structure.&lt;br /&gt;
&lt;br /&gt;
==== Invisible Materials ====&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader.ar&amp;lt;/code&amp;gt; in the base game directory and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Low Quality or Missing GI Textures ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250000000&#039;&#039;&#039;&amp;lt;small&amp;gt;bytes&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly. When DLC is enabled, the game looks inside the &amp;lt;code&amp;gt;Additional&amp;lt;/code&amp;gt; folder to load HD GI, the parameter for it is named &amp;lt;code&amp;gt;g_Xbox360LimitSizeWithAdditional&amp;lt;/code&amp;gt;, which you also should try to increase.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
&lt;br /&gt;
==== Rainbow Flashing Textures ====&lt;br /&gt;
A rainbow flashing texture is displayed when a texture assigned to a material is missing. Ensure you included the texture in the archive and didn&#039;t make a typo in the material. Texture names are &#039;&#039;&#039;case-sensitive&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Missing Terrain Models ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly.  &lt;br /&gt;
&lt;br /&gt;
==== Red Materials ====&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt; and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Low Quality or Missing GI Textures ====&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. To fix this, edit &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt; to values such as &#039;&#039;&#039;100&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt; or &#039;&#039;&#039;250&#039;&#039;&#039;&amp;lt;small&amp;gt;mb&amp;lt;/small&amp;gt;. Make sure to use sensible values as absurd values like &#039;&#039;&#039;999999999&#039;&#039;&#039; are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Crashes or Infinite Loading ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
==== Missing Material Files ====&lt;br /&gt;
Unlike newer games, missing materials can crash Generations/Unleashed. For Sonic Unleashed, only having the &amp;lt;code&amp;gt;.material&amp;lt;/code&amp;gt; file isn&#039;t enough, you also need the matching &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== Periods in File Names ====&lt;br /&gt;
File names with extra periods break stuff. For example, &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; gets read as &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt;, and the game won&#039;t recognize it properly.&lt;br /&gt;
&lt;br /&gt;
==== Instance Names Starting with &amp;quot;ins&amp;quot; ====&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
==== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ====&lt;br /&gt;
Run [[GI Atlas Converter]] on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
==== Missing &amp;quot;light-list.light-list&amp;quot; File ====&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest [[Hedgehog Converter]] can import direct lights, so ensure your tools are up to date. Use [[HedgeGI]] for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
==== Mismatching PFD/PFI Files ====&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with [[HedgeArcPack]] using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
==== Light Field File Too Large ====&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s light field (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the light field&#039;s file size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
&lt;br /&gt;
==== Incorrect Material Format ====&lt;br /&gt;
Unleashed uses a different material version (V1) compared to Generations (V3), and if you try to load a material from Generations in Unleashed, it&#039;ll crash. Check the version in a hex editor (7th byte), or look for &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt;, those usually mean it&#039;s V1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
&lt;br /&gt;
==== Unloaded Sonic Animations ====&lt;br /&gt;
&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=585</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=585"/>
		<updated>2025-05-02T18:03:13Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This page covers both Sonic Generations and Sonic Unleashed. Game-specific explanations will be indicated by the game name in parentheses. If no game is specified, the explanation applies to both games.}}&lt;br /&gt;
&lt;br /&gt;
== Common Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Black Textures ===&lt;br /&gt;
Textures must have power-of-two resolutions (like 512x512, 1024x1024, 2048x2048, etc). Arbitrary resolutions like 507x631 are not supported when using compressed textures. &lt;br /&gt;
&lt;br /&gt;
=== Rainbow Flashing Textures (Sonic Generations) ===&lt;br /&gt;
A rainbow flashing texture is displayed when a texture assigned to a material is missing. Ensure you included the texture in the archive and didn&#039;t make a typo in the material. Texture names are &#039;&#039;&#039;case-sensitive&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Randomly Switching Textures ===&lt;br /&gt;
The material doesn&#039;t have any textures assigned. The game expects at least a diffuse texture to be present for nearly every shader.&lt;br /&gt;
&lt;br /&gt;
=== Missing Transparency On Textures ===&lt;br /&gt;
You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See the [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|terrain importing guide]] for more info.&lt;br /&gt;
&lt;br /&gt;
Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt;, which doesn&#039;t support alpha channels. Use &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
=== Missing Terrain Models ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. &lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; parameters to values like 100 or 250. The unit of the value is MB. Make sure to use sensible values as absurd values like 999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Unleashed ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; to values like 100000000 or 250000000. The unit of the value is byte. Make sure to use sensible values as absurd values like 999999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
If editing the memory sizes does not work, you can try changing &amp;lt;code&amp;gt;g_EnableFrustumCulling&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_EnableOcclusionCulling&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; as a last resort. Note that disabling these two options might cause a performance hit in-game!&lt;br /&gt;
&lt;br /&gt;
=== File Replacements Not Working (Sonic Unleashed) ===&lt;br /&gt;
The title update and DLC override files in the base game archives by including them in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder. These files are going to always take priority over your modded files. This is a common problem with &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; and&amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
To override them, include the modified files in your mod in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder using the same file structure.&lt;br /&gt;
&lt;br /&gt;
=== Red Materials (Sonic Generations) ===&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt; and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Invisible Materials (Sonic Unleashed) ===&lt;br /&gt;
This happens when a material points to a shader that doesn&#039;t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader.ar&amp;lt;/code&amp;gt; in the base game directory and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Low Quality or Missing GI Textures ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; parameters to values like 100 or 250. The unit of the value is MB. Make sure to use sensible values as absurd values like 999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Unleashed ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; to values like 100000000 or 250000000. The unit of the value is byte. Make sure to use sensible values as absurd values like 999999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
When DLC is enabled, the game looks inside the &amp;lt;code&amp;gt;Additional&amp;lt;/code&amp;gt; folder to load HD GI. The parameter for it is named &amp;lt;code&amp;gt;g_Xbox360LimitSizeWithAdditional&amp;lt;/code&amp;gt;, which you also should try to increase. &lt;br /&gt;
&lt;br /&gt;
=== Missing Direct Light ===&lt;br /&gt;
If you add a new direct light, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the light:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Sky Model ===&lt;br /&gt;
If you made a new sky model, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the sky model:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure the sky model&#039;s materials use sky shaders like &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Enemies From Other Stages Not Appearing ===&lt;br /&gt;
Some enemies are only loaded in specific stages. You can fix that by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, allowing egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The same method applies to Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
== Common Crash or Infinite Loading Reasons ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Material Files ===&lt;br /&gt;
Unlike newer games, missing materials can crash Generations/Unleashed. For Sonic Unleashed, only having the &amp;lt;code&amp;gt;.material&amp;lt;/code&amp;gt; file isn&#039;t enough, you also need the matching &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Incorrect Material Format (Sonic Unleashed) ===&lt;br /&gt;
Unleashed uses V1 materials while Generations uses V3. If you try to load a V3 material in Unleashed, it&#039;ll crash. Check the version in a hex editor (7th byte), or look for &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt;, those usually mean it&#039;s V1.&lt;br /&gt;
&lt;br /&gt;
=== Periods in File Names ===&lt;br /&gt;
File names with extra periods break stuff. For example, &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; gets read as &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt;, and the game won&#039;t recognize it properly.&lt;br /&gt;
&lt;br /&gt;
=== Instance Names Starting with &amp;quot;ins&amp;quot; ===&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ===&lt;br /&gt;
Run [[GI Atlas Converter]] on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;light-list.light-list&amp;quot; File ===&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest [[Hedgehog Converter]] can import direct lights, so ensure your tools are up to date. Use [[HedgeGI]] for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
=== Mismatching PFD/PFI Files ===&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with [[HedgeArcPack]] using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
=== Unloaded Sonic Animations (Sonic Generations) ===&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Light Field File Too Large ===&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s light field (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the light field&#039;s file size.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Unleashed&amp;diff=584</id>
		<title>Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Unleashed&amp;diff=584"/>
		<updated>2025-05-02T17:59:56Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[pfdpackUnleashed]] (*.pfd)&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Use Sonic GLvl with Sonic Unleashed|SonicGLvl]]&lt;br /&gt;
* [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|Importing Terrain]]&lt;br /&gt;
* [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|Importing Collision]]&lt;br /&gt;
* [[Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed|Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Unleashed Stage IDs|Stage IDs]]&lt;br /&gt;
* [[Sonic Unleashed Event IDs|Event IDs]]&lt;br /&gt;
* [[Unleashed-Generations Havok Collision Attributes|Havok Collision Attributes]]&lt;br /&gt;
&lt;br /&gt;
== Discoveries ==&lt;br /&gt;
&lt;br /&gt;
=== PlayStation 3 ===&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Unleashed Install Screen|Install Screen]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations&amp;diff=583</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations&amp;diff=583"/>
		<updated>2025-05-02T17:59:39Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Skyth moved page Troubleshooting Custom Level Issues in Sonic Generations to Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed: Guide now mentions both Sonic Unleashed and Sonic Generations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=582</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=582"/>
		<updated>2025-05-02T17:59:38Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Skyth moved page Troubleshooting Custom Level Issues in Sonic Generations to Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed: Guide now mentions both Sonic Unleashed and Sonic Generations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This page covers both Sonic Generations and Sonic Unleashed. Game-specific explanations will be indicated by the game name in parentheses. If no game is specified, the explanation applies to both games.}}&lt;br /&gt;
&lt;br /&gt;
== Common Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Black Textures ===&lt;br /&gt;
Textures must have power-of-two resolutions (like 512x512, 1024x1024, 2048x2048, etc). Arbitrary resolutions like 507x631 are not supported when using compressed textures. &lt;br /&gt;
&lt;br /&gt;
=== Rainbow Flashing Textures (Sonic Generations) ===&lt;br /&gt;
A rainbow flashing texture is displayed when a texture assigned to a material is missing. Ensure you included the texture in the archive and didn&#039;t make a typo in the material. Texture names are &#039;&#039;&#039;case-sensitive&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Randomly Switching Textures ===&lt;br /&gt;
The material doesn&#039;t have any textures assigned. The game expects at least a diffuse texture to be present for nearly every shader.&lt;br /&gt;
&lt;br /&gt;
=== Missing Transparency On Textures ===&lt;br /&gt;
You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See the [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|terrain importing guide]] for more info.&lt;br /&gt;
&lt;br /&gt;
Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt;, which doesn’t support alpha channels. Use &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
=== Missing Terrain Models ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. &lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; parameters to values like 100 or 250. The unit of the value is MB. Make sure to use sensible values as absurd values like 999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Unleashed ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; to values like 100000000 or 250000000. The unit of the value is byte. Make sure to use sensible values as absurd values like 999999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
If editing the memory sizes does not work, you can try changing &amp;lt;code&amp;gt;g_EnableFrustumCulling&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_EnableOcclusionCulling&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; as a last resort. Note that disabling these two options might cause a performance hit in-game!&lt;br /&gt;
&lt;br /&gt;
=== File Replacements Not Working (Sonic Unleashed) ===&lt;br /&gt;
The title update and DLC override files in the base game archives by including them in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder. These files are going to always take priority over your modded files. This is a common problem with &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; and&amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
To override them, include the modified files in your mod in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder using the same file structure.&lt;br /&gt;
&lt;br /&gt;
=== Red Materials (Sonic Generations) ===&lt;br /&gt;
This happens when a material points to a shader that doesn’t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt; and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Invisible Materials (Sonic Unleashed) ===&lt;br /&gt;
This happens when a material points to a shader that doesn’t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader.ar&amp;lt;/code&amp;gt; in the base game directory and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Low Quality or Missing GI Textures ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; parameters to values like 100 or 250. The unit of the value is MB. Make sure to use sensible values as absurd values like 999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Unleashed ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; to values like 100000000 or 250000000. The unit of the value is byte. Make sure to use sensible values as absurd values like 999999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
When DLC is enabled, the game looks inside the &amp;lt;code&amp;gt;Additional&amp;lt;/code&amp;gt; folder to load HD GI. The parameter for it is named &amp;lt;code&amp;gt;g_Xbox360LimitSizeWithAdditional&amp;lt;/code&amp;gt;, which you also should try to increase. &lt;br /&gt;
&lt;br /&gt;
=== Missing Direct Light ===&lt;br /&gt;
If you add a new direct light, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the light:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Sky Model ===&lt;br /&gt;
If you made a new sky model, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the sky model:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure the sky model&#039;s materials use sky shaders like &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Enemies From Other Stages Not Appearing ===&lt;br /&gt;
Some enemies are only loaded in specific stages. You can fix that by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, allowing egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The same method applies to Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
== Common Crash or Infinite Loading Reasons ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Material Files ===&lt;br /&gt;
Unlike newer games, missing materials can crash Generations/Unleashed. For Sonic Unleashed, only having the &amp;lt;code&amp;gt;.material&amp;lt;/code&amp;gt; file isn’t enough, you also need the matching &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Incorrect Material Format (Sonic Unleashed) ===&lt;br /&gt;
Unleashed uses V1 materials while Generations uses V3. If you try to load a V3 material in Unleashed, it’ll crash. Check the version in a hex editor (7th byte), or look for &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt;, those usually mean it&#039;s V1.&lt;br /&gt;
&lt;br /&gt;
=== Periods in File Names ===&lt;br /&gt;
File names with extra periods break stuff. For example, &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; gets read as &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt;, and the game won’t recognize it properly.&lt;br /&gt;
&lt;br /&gt;
=== Instance Names Starting with &amp;quot;ins&amp;quot; ===&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ===&lt;br /&gt;
Run [[GI Atlas Converter]] on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;light-list.light-list&amp;quot; File ===&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest [[Hedgehog Converter]] can import direct lights, so ensure your tools are up to date. Use [[HedgeGI]] for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
=== Mismatching PFD/PFI Files ===&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with [[HedgeArcPack]] using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
=== Unloaded Sonic Animations (Sonic Generations) ===&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Light Field File Too Large ===&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s light field (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the light field&#039;s file size.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=581</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=581"/>
		<updated>2025-05-02T17:59:24Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This page covers both Sonic Generations and Sonic Unleashed. Game-specific explanations will be indicated by the game name in parentheses. If no game is specified, the explanation applies to both games.}}&lt;br /&gt;
&lt;br /&gt;
== Common Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Black Textures ===&lt;br /&gt;
Textures must have power-of-two resolutions (like 512x512, 1024x1024, 2048x2048, etc). Arbitrary resolutions like 507x631 are not supported when using compressed textures. &lt;br /&gt;
&lt;br /&gt;
=== Rainbow Flashing Textures (Sonic Generations) ===&lt;br /&gt;
A rainbow flashing texture is displayed when a texture assigned to a material is missing. Ensure you included the texture in the archive and didn&#039;t make a typo in the material. Texture names are &#039;&#039;&#039;case-sensitive&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Randomly Switching Textures ===&lt;br /&gt;
The material doesn&#039;t have any textures assigned. The game expects at least a diffuse texture to be present for nearly every shader.&lt;br /&gt;
&lt;br /&gt;
=== Missing Transparency On Textures ===&lt;br /&gt;
You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See the [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|terrain importing guide]] for more info.&lt;br /&gt;
&lt;br /&gt;
Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt;, which doesn’t support alpha channels. Use &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
=== Missing Terrain Models ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher. &lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; parameters to values like 100 or 250. The unit of the value is MB. Make sure to use sensible values as absurd values like 999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Unleashed ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Terrain-Model&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; to values like 100000000 or 250000000. The unit of the value is byte. Make sure to use sensible values as absurd values like 999999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
If editing the memory sizes does not work, you can try changing &amp;lt;code&amp;gt;g_EnableFrustumCulling&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_EnableOcclusionCulling&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; as a last resort. Note that disabling these two options might cause a performance hit in-game!&lt;br /&gt;
&lt;br /&gt;
=== File Replacements Not Working (Sonic Unleashed) ===&lt;br /&gt;
The title update and DLC override files in the base game archives by including them in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder. These files are going to always take priority over your modded files. This is a common problem with &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; and&amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
To override them, include the modified files in your mod in a &amp;lt;code&amp;gt;work&amp;lt;/code&amp;gt; folder using the same file structure.&lt;br /&gt;
&lt;br /&gt;
=== Red Materials (Sonic Generations) ===&lt;br /&gt;
This happens when a material points to a shader that doesn’t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt; and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Invisible Materials (Sonic Unleashed) ===&lt;br /&gt;
This happens when a material points to a shader that doesn’t exist. To see all available shaders, unpack &amp;lt;code&amp;gt;shader.ar&amp;lt;/code&amp;gt; in the base game directory and check for &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Low Quality or Missing GI Textures ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; likely requires memory sizes to be higher.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; parameters to values like 100 or 250. The unit of the value is MB. Make sure to use sensible values as absurd values like 999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
==== Sonic Unleashed ====&lt;br /&gt;
Under &amp;lt;code&amp;gt;DynamicLoad&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GI-Texture&amp;lt;/code&amp;gt;, increase the &amp;lt;code&amp;gt;g_LimitSize&amp;lt;/code&amp;gt; to values like 100000000 or 250000000. The unit of the value is byte. Make sure to use sensible values as absurd values like 999999999999 are not going to work correctly.&lt;br /&gt;
&lt;br /&gt;
When DLC is enabled, the game looks inside the &amp;lt;code&amp;gt;Additional&amp;lt;/code&amp;gt; folder to load HD GI. The parameter for it is named &amp;lt;code&amp;gt;g_Xbox360LimitSizeWithAdditional&amp;lt;/code&amp;gt;, which you also should try to increase. &lt;br /&gt;
&lt;br /&gt;
=== Missing Direct Light ===&lt;br /&gt;
If you add a new direct light, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the light:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Sky Model ===&lt;br /&gt;
If you made a new sky model, update &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt; in Sonic Unleashed) with the name of the sky model:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Make sure the sky model&#039;s materials use sky shaders like &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Enemies From Other Stages Not Appearing ===&lt;br /&gt;
Some enemies are only loaded in specific stages. You can fix that by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, allowing egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The same method applies to Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
== Common Crash or Infinite Loading Reasons ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Material Files ===&lt;br /&gt;
Unlike newer games, missing materials can crash Generations/Unleashed. For Sonic Unleashed, only having the &amp;lt;code&amp;gt;.material&amp;lt;/code&amp;gt; file isn’t enough, you also need the matching &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Incorrect Material Format (Sonic Unleashed) ===&lt;br /&gt;
Unleashed uses V1 materials while Generations uses V3. If you try to load a V3 material in Unleashed, it’ll crash. Check the version in a hex editor (7th byte), or look for &amp;lt;code&amp;gt;.texset&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.texture&amp;lt;/code&amp;gt;, those usually mean it&#039;s V1.&lt;br /&gt;
&lt;br /&gt;
=== Periods in File Names ===&lt;br /&gt;
File names with extra periods break stuff. For example, &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; gets read as &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt;, and the game won’t recognize it properly.&lt;br /&gt;
&lt;br /&gt;
=== Instance Names Starting with &amp;quot;ins&amp;quot; ===&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ===&lt;br /&gt;
Run [[GI Atlas Converter]] on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;light-list.light-list&amp;quot; File ===&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest [[Hedgehog Converter]] can import direct lights, so ensure your tools are up to date. Use [[HedgeGI]] for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
=== Mismatching PFD/PFI Files ===&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with [[HedgeArcPack]] using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
=== Unloaded Sonic Animations (Sonic Generations) ===&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Light Field File Too Large ===&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s light field (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the light field&#039;s file size.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=577</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=577"/>
		<updated>2025-05-02T16:15:13Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all you need terrain for your level, you can create the terrain yourself or you can use pre-existing terrain. If your level contains transparent materials you will need to add a layer tag, pick the one that&#039;s best suited for your use case in order to avoid visual issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (&amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dae&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gltf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;obj&amp;lt;/code&amp;gt; work). When exporting it as &amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Notice|type=warn|content=When converting for Sonic Unleashed, Hedgehog Converter saves &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files by navigating two levels up from the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039;. For example, if you pick &amp;lt;code&amp;gt;C:\folder1\folder2\ActD_MykonosAct1&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files will be saved to &amp;lt;code&amp;gt;folder1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion or misplaced files, it’s strongly recommended to follow the original &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder structure used by the game in your mod directory.}}&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;will not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game. For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here. However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You need to copy the following file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &#039;&#039;&#039;File&#039;&#039;&#039; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
The materials of your skybox need to be assigned to sky shaders such as &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;, otherwise they will not appear in-game correctly. You can assign the shaders by loading the model in SonicGLvl&#039;s material editor under &#039;&#039;&#039;Materials&#039;&#039;&#039;. After changing the shaders, you can save the materials by saving the model from the material editor.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stageID.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]].&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=576</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=576"/>
		<updated>2025-05-02T16:12:17Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all you need terrain for your level, you can create the terrain yourself or you can use pre-existing terrain. If your level contains transparent materials you will need to add a layer tag, pick the one that&#039;s best suited for your use case in order to avoid visual issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (&amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dae&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gltf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;obj&amp;lt;/code&amp;gt; work). When exporting it as &amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Notice|type=warn|content=When converting for Sonic Unleashed, Hedgehog Converter saves &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files by navigating two levels up from the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039;. For example, if you pick &amp;lt;code&amp;gt;C:\folder1\folder2\ActD_MykonosAct1&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files will be saved to &amp;lt;code&amp;gt;folder1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion or misplaced files, it’s strongly recommended to follow the original &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder structure used by the game in your mod directory.}}&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game. For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here. However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You need to copy the following file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &#039;&#039;&#039;File&#039;&#039;&#039; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
The materials of your skybox need to be assigned to sky shaders such as &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;, otherwise they will not appear in-game correctly. You can assign the shaders by loading the model in SonicGLvl&#039;s material editor under &#039;&#039;&#039;Materials&#039;&#039;&#039;. After changing the shaders, you can save the materials by saving the model from the material editor.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stageID.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]].&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=575</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=575"/>
		<updated>2025-05-02T16:04:26Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all you need terrain for your level, you can create the terrain yourself or you can use pre-existing terrain. If your level contains transparent materials you will need to add a layer tag, pick the one that&#039;s best suited for your use case in order to avoid visual issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (&amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dae&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gltf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;obj&amp;lt;/code&amp;gt; work). When exporting it as &amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Notice|type=warn|content=When converting for Sonic Unleashed, Hedgehog Converter saves &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files by navigating two levels up from the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039;. For example, if you pick &amp;lt;code&amp;gt;C:\folder1\folder2\ActD_MykonosAct1&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files will be saved to &amp;lt;code&amp;gt;folder1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion or misplaced files, it’s strongly recommended to follow the original &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder structure used by the game in your mod directory.}}&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game. For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here. However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You need to copy the following file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &#039;&#039;&#039;File&#039;&#039;&#039; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stageID.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]].&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations/Sonic_Unleashed&amp;diff=574</id>
		<title>How To Import Custom Collision in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations/Sonic_Unleashed&amp;diff=574"/>
		<updated>2025-05-02T15:55:44Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[Havok Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Havok Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Collision in Blender) ==&lt;br /&gt;
You&#039;ll need a separate model for the collision, while it is possible to use your stage&#039;s model files as collision, we still recommend that you create a separate project or model for it. You can specify tags for your collision in Blender, these tags change the properties of the collision mesh in the game. You&#039;ll need a special &#039;&#039;&#039;ini&#039;&#039;&#039; file for [[Havok Converter]] to change these tags, which you can download [https://gist.github.com/TheExentist151/8e4896b807d49cd86ff2b643d34c7aa2 here]. To apply these tags to your collision model, you have to rename the individual meshes and add a &#039;&#039;&#039;@&#039;&#039;&#039; followed by the tag name, below is an example of how you can do this in case you want a mesh to have the &amp;quot;Stone&amp;quot; collision tag.[[File:Collision tag example blender.png|center|thumb|385x385px|Example of a collision tag in Blender]]&lt;br /&gt;
You can find all the available tags by opening [[Havok Converter]] after placing the mentioned &#039;&#039;&#039;ini&#039;&#039;&#039; file in the same folder as the executable. If you want to use the tags for Sonic Unleashed, you&#039;ll have to rename the &#039;&#039;&#039;ini&#039;&#039;&#039; file to &amp;lt;code&amp;gt;HavokConverter_Unleashed.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Converting Your Model Into a Collision File) ==&lt;br /&gt;
Open &amp;lt;code&amp;gt;HavokConverter.exe&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;HavokConverter_Unleashed.exe&amp;lt;/code&amp;gt; if you are converting for Sonic Unleashed), and fill in the following options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your collision model files&lt;br /&gt;
* &#039;&#039;&#039;Output file&#039;&#039;&#039; - Directory which will contain the converted collision (add &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; in the end of the name)&lt;br /&gt;
&lt;br /&gt;
[[File:Havok converter window.png|center|thumb|730x730px]]&lt;br /&gt;
Now you can click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Importing Your Collision into the Game) ==&lt;br /&gt;
When the conversion process finishes, extract your custom stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file, and place the generated &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; file there. Afterwards, open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to edit the collision file information. This is mentioned in the &amp;lt;code&amp;gt;RigidBodyContainer&amp;lt;/code&amp;gt; tag. Change its value to your &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; filename, without the extension. Below is an example for a file name &amp;lt;code&amp;gt;MyCollision.phy.hkx&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Terrain&amp;gt;&lt;br /&gt;
    &amp;lt;RigidBodyContainer&amp;gt;MyCollision&amp;lt;/RigidBodyContainer&amp;gt;&lt;br /&gt;
    &amp;lt;IsCollisionRender&amp;gt;false&amp;lt;/IsCollisionRender&amp;gt;&lt;br /&gt;
&amp;lt;/Terrain&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Now re-pack this file and replace the original. After booting into the game, you should now notice that your level has working collision. If this is not the case, you can open your level in [[SonicGLvl]] and enable the collision mesh through the &#039;&#039;&#039;View&#039;&#039;&#039; menu to see how it got converted&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
{{Notice|type=warn|content=While repacking the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive carries no risks in Sonic Generations, it&#039;s very easy to accidentally pack outdated terrain info files in Sonic Unleashed. This can happen if you convert your stage using [[Hedgehog Converter]] but forget to unpack the updated &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive back into your already-extracted folder. As a result, outdated files can overwrite Hedgehog Converter&#039;s output, potentially breaking your level.&lt;br /&gt;
&lt;br /&gt;
To avoid this, it&#039;s highly recommended that you modify the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive by opening the level in [[SonicGLvl]], editing the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; folder inside SonicGLvl&#039;s cache, and saving your changes using &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=573</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=573"/>
		<updated>2025-05-02T15:50:27Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all you need terrain for your level, you can create the terrain yourself or you can use pre-existing terrain. If your level contains transparent materials you will need to add a layer tag, pick the one that&#039;s best suited for your use case in order to avoid visual issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (&amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dae&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gltf&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;obj&amp;lt;/code&amp;gt; work). When exporting it as &amp;lt;code&amp;gt;fbx&amp;lt;/code&amp;gt;, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Notice|type=warn|content=When converting for Sonic Unleashed, Hedgehog Converter saves &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files by navigating two levels up from the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039;. For example, if you pick &amp;lt;code&amp;gt;C:\folder1\folder2\ActD_MykonosAct1&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files will be saved to &amp;lt;code&amp;gt;folder1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion or misplaced files, it’s strongly recommended to follow the original &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder structure used by the game in your mod directory.}}&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game. For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here. However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You need to copy the following file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &#039;&#039;&#039;File&#039;&#039;&#039; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stage.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]].&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=572</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=572"/>
		<updated>2025-05-02T15:36:31Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]&lt;br /&gt;
* [[HedgeArcPack]]}}&lt;br /&gt;
&lt;br /&gt;
The latest [[SonicGLvl]] can now open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &#039;&#039;&#039;&amp;quot;File &amp;gt; Open Level&amp;quot;&#039;&#039;&#039; and select the # archive of a level of your choice. Refer to the [[Sonic Unleashed Stage IDs|Stage IDs]] page to find the level that you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &#039;&#039;&#039;&amp;quot;shader.ar&amp;quot;&#039;&#039;&#039; file from your game installation to SonicGLvl&#039;s &#039;&#039;&#039;&amp;quot;database/shaders&amp;quot;&#039;&#039;&#039; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Packed/ActD_MykonosAct2/Stage.pfd&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#ActD_MykonosAct2.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#ActD_MykonosAct2.arl&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ActD_MykonosAct2.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ActD_MykonosAct2.arl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
Note that if you simply want to view the levels in SonicGLvl without making any changes, opening them from the base game files is fine. This advice is for when you want to make modifications to the level.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &#039;&#039;&#039;&amp;quot;cache/country_name/slot_resources&amp;quot;&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from a DLC or your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your DLC or mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CmnActD_Terrain_Mykonos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CmnActN_Terrain_Mykonos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CmnMykonos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Missing Models ==&lt;br /&gt;
SonicGLvl does not come with the game assets, so objects are going to appear as cubes. To solve this, you need to extract the relevant AR files to SonicGLvl&#039;s &amp;quot;database/resources&amp;quot; folder. Most required assets are stored in &amp;lt;code&amp;gt;SonicActionCommon/EvilActionCommon&amp;lt;/code&amp;gt; archives in the base game. [[HedgeArcPack]] can be used to directly extract the archives to the resources folder.&lt;br /&gt;
&lt;br /&gt;
If you are unable to find the model for an object, you can open the corresponding object template from &amp;quot;database/objects&amp;quot; folder, and look for an Extra parameter with model as the type:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Extra type=&amp;quot;model&amp;quot; name=&amp;quot;cmn_obj_sk2_hintring.model&amp;quot; /&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;In this example, the HintRing object uses the &amp;lt;code&amp;gt;cmn_obj_sk2_hintring.model&amp;lt;/code&amp;gt; file. You can then search for this file name in the [https://raw.githubusercontent.com/blueskythlikesclouds/SkythTools/refs/heads/master/Sonic%20Unleashed/File%20Index.txt Sonic Unleashed File Index] to find the archive it&#039;s stored in, and extract it.&lt;br /&gt;
{{Notice|type=warn|content=If you extract SonicActionCommon_Petra, a material file with invalid characters in its file name is going to crash SonicGLvl! Make sure to remove the faulty file to make it work: ptr_sk_dart01__NSP_CMN_ChaoTexSpecNrmTanVC____NPR_XB_������__.material}}{{Notice|type=warn|content=Some Sonic Unleashed object templates are currently incorrectly configured to load Sonic Generations model names. If you have the 2011 version of Sonic Generations installed, you can extract cmn100/cmn200 to the resources folder as a temporary workaround.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=566</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=566"/>
		<updated>2025-05-02T13:50:17Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]&lt;br /&gt;
* [[HedgeArcPack]]}}&lt;br /&gt;
&lt;br /&gt;
The latest [[SonicGLvl]] can now open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &#039;&#039;&#039;&amp;quot;File &amp;gt; Open Level&amp;quot;&#039;&#039;&#039; and select the # archive of a level of your choice. Refer to the [[Sonic Unleashed Stage IDs|Stage IDs]] page to find the level that you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &#039;&#039;&#039;&amp;quot;shader.ar&amp;quot;&#039;&#039;&#039; file from your game installation to SonicGLvl&#039;s &#039;&#039;&#039;&amp;quot;database/shaders&amp;quot;&#039;&#039;&#039; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Packed/ActD_MykonosAct2/Stage.pfd&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#ActD_MykonosAct2.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;#ActD_MykonosAct2.arl&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ActD_MykonosAct2.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ActD_MykonosAct2.arl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &#039;&#039;&#039;&amp;quot;cache/country_name/slot_resources&amp;quot;&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from a DLC or your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your DLC or mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CmnActD_Terrain_Mykonos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CmnActN_Terrain_Mykonos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CmnMykonos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Missing Models ==&lt;br /&gt;
SonicGLvl does not come with the game assets, so objects are going to appear as cubes. To solve this, you need to extract the relevant AR files to SonicGLvl&#039;s &amp;quot;database/resources&amp;quot; folder. Most required assets are stored in &amp;lt;code&amp;gt;SonicActionCommon/EvilActionCommon&amp;lt;/code&amp;gt; archives in the base game. [[HedgeArcPack]] can be used to directly extract the archives to the resources folder.&lt;br /&gt;
&lt;br /&gt;
If you are unable to find the model for an object, you can open the corresponding object template from &amp;quot;database/objects&amp;quot; folder, and look for an Extra parameter with model as the type:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Extra type=&amp;quot;model&amp;quot; name=&amp;quot;cmn_obj_sk2_hintring.model&amp;quot; /&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;In this example, the HintRing object uses the &amp;lt;code&amp;gt;cmn_obj_sk2_hintring.model&amp;lt;/code&amp;gt; file. You can then search for this file name in the [https://raw.githubusercontent.com/blueskythlikesclouds/SkythTools/refs/heads/master/Sonic%20Unleashed/File%20Index.txt Sonic Unleashed File Index] to find the archive it&#039;s stored in, and extract it.&lt;br /&gt;
{{Notice|type=warn|content=If you extract SonicActionCommon_Petra, a material file with invalid characters in its file name is going to crash SonicGLvl! Make sure to remove the faulty file to make it work: ptr_sk_dart01__NSP_CMN_ChaoTexSpecNrmTanVC____NPR_XB_������__.material}}{{Notice|type=warn|content=Some Sonic Unleashed object templates are currently incorrectly configured to load Sonic Generations model names. If you have the 2011 version of Sonic Generations installed, you can extract cmn100/cmn200 to the resources folder as a temporary workaround.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=564</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=564"/>
		<updated>2025-05-02T13:46:01Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all, you need terrain for your level. You can do the terrain yourself, or take already created terrain. If your level contains transparent materials you need to add a proper layer tag to it. For transparency, you have two available layers, and you should pick the one that&#039;s best suited for your use case in order to avoid issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (FBX, DAE, GLTF or OBJ work). When exporting FBX, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game. For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here. However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You need to copy the following file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &#039;&#039;&#039;File&#039;&#039;&#039; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stage.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]].&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=562</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=562"/>
		<updated>2025-05-02T13:35:07Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all, you need terrain for your level. You can do the terrain yourself, or take already created terrain. If your level contains transparent materials you need to add a proper layer tag to it. For transparency, you have two available layers, and you should pick the one that&#039;s best suited for your use case in order to avoid issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (FBX, DAE, GLTF or OBJ work).&lt;br /&gt;
&lt;br /&gt;
When exporting FBX, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.&lt;br /&gt;
[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game.&lt;br /&gt;
&lt;br /&gt;
For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here.&lt;br /&gt;
&lt;br /&gt;
However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You can copy these file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &amp;quot;File&amp;quot; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stage.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This concludes this guide. If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|here]].&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Unleashed&amp;diff=559</id>
		<title>Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Unleashed&amp;diff=559"/>
		<updated>2025-05-02T13:29:23Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[pfdpackUnleashed]] (*.pfd)&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Use Sonic GLvl with Sonic Unleashed|SonicGLvl]]&lt;br /&gt;
* [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|Importing Terrain]]&lt;br /&gt;
* [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed|Importing Collision]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Unleashed Stage IDs|Stage IDs]]&lt;br /&gt;
* [[Unleashed-Generations Havok Collision Attributes|Havok Collision Attributes]]&lt;br /&gt;
&lt;br /&gt;
== Discoveries ==&lt;br /&gt;
&lt;br /&gt;
=== PlayStation 3 ===&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Unleashed Install Screen|Install Screen]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations&amp;diff=558</id>
		<title>How To Import Custom Collision in Sonic Generations</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations&amp;diff=558"/>
		<updated>2025-05-02T13:28:57Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Skyth moved page How To Import Custom Collision in Sonic Generations to How To Import Custom Collision in Sonic Generations/Sonic Unleashed: Guide now mentions both Sonic Unleashed and Sonic Generations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[How To Import Custom Collision in Sonic Generations/Sonic Unleashed]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations/Sonic_Unleashed&amp;diff=557</id>
		<title>How To Import Custom Collision in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations/Sonic_Unleashed&amp;diff=557"/>
		<updated>2025-05-02T13:28:57Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Skyth moved page How To Import Custom Collision in Sonic Generations to How To Import Custom Collision in Sonic Generations/Sonic Unleashed: Guide now mentions both Sonic Unleashed and Sonic Generations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
&lt;br /&gt;
* [[Havok Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Collision in Blender) ==&lt;br /&gt;
You&#039;ll need a separate model for the collision. While it is possible to use your stage&#039;s model files as a collision, we still recommend that you create a separate project/model for it, even if it&#039;s a copy of it.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify tags for your collision, which control the type of collision it has. For this, you&#039;ll need a special INI file for Havok Converter with tags. You can download it [https://gist.github.com/TheExentist151/8e4896b807d49cd86ff2b643d34c7aa2 here]. To apply these tags to your collision model, you can simply rename the meshes and add the tag as a prefix to its name. Below is an example of how you can do this, in case you want a mesh to have the &amp;quot;Stone&amp;quot; collision tag:&lt;br /&gt;
[[File:Collision tag example blender.png|center|thumb|385x385px|Example of a collision tag in Blender]]&lt;br /&gt;
You can find all the available tags by opening Havok Converter after placing the mentioned INI file in the same folder as its executable. If you want to use the tags for Sonic Unleashed, you&#039;ll have to rename the INI file to &amp;lt;code&amp;gt;HavokConverter_Unleashed.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Converting Your Model Into a Collision File) ==&lt;br /&gt;
Open &amp;lt;code&amp;gt;HavokConverter.exe&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;HavokConverter_Unleashed.exe&amp;lt;/code&amp;gt; if you are converting for Sonic Unleashed), and fill in the following options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your collision model files&lt;br /&gt;
* &#039;&#039;&#039;Output file&#039;&#039;&#039; - Directory which will contain the converted collision (add &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; in the end of the name)&lt;br /&gt;
&lt;br /&gt;
[[File:Havok converter window.png|center|thumb|730x730px]]&lt;br /&gt;
Now you can click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Importing Your Collision into the Game) ==&lt;br /&gt;
When the conversion process finishes, extract your custom stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file, and place the generated &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; file there. Afterwards, open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to edit the collision file information. This is mentioned in the &amp;lt;code&amp;gt;RigidBodyContainer&amp;lt;/code&amp;gt; tag. Change its value to your &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; filename, without the extension. Below is an example for a file name &amp;lt;code&amp;gt;MyCollision.phy.hkx&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Terrain&amp;gt;&lt;br /&gt;
    &amp;lt;RigidBodyContainer&amp;gt;MyCollision&amp;lt;/RigidBodyContainer&amp;gt;&lt;br /&gt;
    &amp;lt;IsCollisionRender&amp;gt;false&amp;lt;/IsCollisionRender&amp;gt;&lt;br /&gt;
&amp;lt;/Terrain&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Now re-pack this file and replace the original. After booting into the game, you should now notice that your level has working collision. If this is not the case, you can open your level in [[SonicGLvl]] and enable the collision mesh through the &#039;&#039;&#039;View&#039;&#039;&#039; menu to see how it got converted&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
{{Notice|type=warn|content=While repacking the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive carries no risks in Sonic Generations, it&#039;s very easy to accidentally pack outdated terrain info files in Sonic Unleashed. This can happen if you convert your stage using [[Hedgehog Converter]] but forget to unpack the updated &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive back into your already-extracted folder. As a result, outdated files can overwrite Hedgehog Converter&#039;s output, potentially breaking your level.&lt;br /&gt;
&lt;br /&gt;
To avoid this, it&#039;s highly recommended that you modify the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive by opening the level in [[SonicGLvl]], editing the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; folder inside SonicGLvl&#039;s cache, and saving your changes using &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations/Sonic_Unleashed&amp;diff=556</id>
		<title>How To Import Custom Collision in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Collision_in_Sonic_Generations/Sonic_Unleashed&amp;diff=556"/>
		<updated>2025-05-02T13:28:45Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
&lt;br /&gt;
* [[Havok Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Collision in Blender) ==&lt;br /&gt;
You&#039;ll need a separate model for the collision. While it is possible to use your stage&#039;s model files as a collision, we still recommend that you create a separate project/model for it, even if it&#039;s a copy of it.&lt;br /&gt;
&lt;br /&gt;
It is possible to specify tags for your collision, which control the type of collision it has. For this, you&#039;ll need a special INI file for Havok Converter with tags. You can download it [https://gist.github.com/TheExentist151/8e4896b807d49cd86ff2b643d34c7aa2 here]. To apply these tags to your collision model, you can simply rename the meshes and add the tag as a prefix to its name. Below is an example of how you can do this, in case you want a mesh to have the &amp;quot;Stone&amp;quot; collision tag:&lt;br /&gt;
[[File:Collision tag example blender.png|center|thumb|385x385px|Example of a collision tag in Blender]]&lt;br /&gt;
You can find all the available tags by opening Havok Converter after placing the mentioned INI file in the same folder as its executable. If you want to use the tags for Sonic Unleashed, you&#039;ll have to rename the INI file to &amp;lt;code&amp;gt;HavokConverter_Unleashed.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Converting Your Model Into a Collision File) ==&lt;br /&gt;
Open &amp;lt;code&amp;gt;HavokConverter.exe&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;HavokConverter_Unleashed.exe&amp;lt;/code&amp;gt; if you are converting for Sonic Unleashed), and fill in the following options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your collision model files&lt;br /&gt;
* &#039;&#039;&#039;Output file&#039;&#039;&#039; - Directory which will contain the converted collision (add &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; in the end of the name)&lt;br /&gt;
&lt;br /&gt;
[[File:Havok converter window.png|center|thumb|730x730px]]&lt;br /&gt;
Now you can click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Importing Your Collision into the Game) ==&lt;br /&gt;
When the conversion process finishes, extract your custom stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file, and place the generated &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; file there. Afterwards, open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to edit the collision file information. This is mentioned in the &amp;lt;code&amp;gt;RigidBodyContainer&amp;lt;/code&amp;gt; tag. Change its value to your &amp;lt;code&amp;gt;.phy.hkx&amp;lt;/code&amp;gt; filename, without the extension. Below is an example for a file name &amp;lt;code&amp;gt;MyCollision.phy.hkx&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Terrain&amp;gt;&lt;br /&gt;
    &amp;lt;RigidBodyContainer&amp;gt;MyCollision&amp;lt;/RigidBodyContainer&amp;gt;&lt;br /&gt;
    &amp;lt;IsCollisionRender&amp;gt;false&amp;lt;/IsCollisionRender&amp;gt;&lt;br /&gt;
&amp;lt;/Terrain&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;Now re-pack this file and replace the original. After booting into the game, you should now notice that your level has working collision. If this is not the case, you can open your level in [[SonicGLvl]] and enable the collision mesh through the &#039;&#039;&#039;View&#039;&#039;&#039; menu to see how it got converted&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
{{Notice|type=warn|content=While repacking the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive carries no risks in Sonic Generations, it&#039;s very easy to accidentally pack outdated terrain info files in Sonic Unleashed. This can happen if you convert your stage using [[Hedgehog Converter]] but forget to unpack the updated &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive back into your already-extracted folder. As a result, outdated files can overwrite Hedgehog Converter&#039;s output, potentially breaking your level.&lt;br /&gt;
&lt;br /&gt;
To avoid this, it&#039;s highly recommended that you modify the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive by opening the level in [[SonicGLvl]], editing the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; folder inside SonicGLvl&#039;s cache, and saving your changes using &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Unleashed&amp;diff=555</id>
		<title>Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Unleashed&amp;diff=555"/>
		<updated>2025-05-02T13:01:49Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[pfdpackUnleashed]] (*.pfd)&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Use Sonic GLvl with Sonic Unleashed|SonicGLvl]]&lt;br /&gt;
* [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed|Importing Terrain]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Unleashed Stage IDs|Stage IDs]]&lt;br /&gt;
* [[Unleashed-Generations Havok Collision Attributes|Havok Collision Attributes]]&lt;br /&gt;
&lt;br /&gt;
== Discoveries ==&lt;br /&gt;
&lt;br /&gt;
=== PlayStation 3 ===&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Unleashed Install Screen|Install Screen]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations&amp;diff=554</id>
		<title>How To Import Custom Terrain in Sonic Generations</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations&amp;diff=554"/>
		<updated>2025-05-02T13:00:41Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Skyth moved page How To Import Custom Terrain in Sonic Generations to How To Import Custom Terrain in Sonic Generations/Sonic Unleashed: Guide now mentions both Sonic Unleashed and Sonic Generations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[How To Import Custom Terrain in Sonic Generations/Sonic Unleashed]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=553</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=553"/>
		<updated>2025-05-02T13:00:41Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Skyth moved page How To Import Custom Terrain in Sonic Generations to How To Import Custom Terrain in Sonic Generations/Sonic Unleashed: Guide now mentions both Sonic Unleashed and Sonic Generations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all, you need terrain for your level. You can do the terrain yourself, or take already created terrain. If your level contains transparent materials you need to add a proper layer tag to it. For transparency, you have two available layers, and you should pick the one that&#039;s best suited for your use case in order to avoid issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (FBX, DAE, GLTF or OBJ work).&lt;br /&gt;
&lt;br /&gt;
When exporting FBX, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.&lt;br /&gt;
[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game.&lt;br /&gt;
&lt;br /&gt;
For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here.&lt;br /&gt;
&lt;br /&gt;
However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You can copy these file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &amp;quot;File&amp;quot; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stage.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This concludes this guide. If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide here.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=552</id>
		<title>How To Import Custom Terrain in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Import_Custom_Terrain_in_Sonic_Generations/Sonic_Unleashed&amp;diff=552"/>
		<updated>2025-05-02T12:59:45Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Updating with guides for Sonic Unleashed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
* [https://www.blender.org Blender]&lt;br /&gt;
* [[HedgeArcPack]]&lt;br /&gt;
* [[PackCpk]]&lt;br /&gt;
* [[Model Converter]]&lt;br /&gt;
You can use a different 3D software of your choice as long as you export to a format that Hedgehog Converter supports.}}&lt;br /&gt;
&lt;br /&gt;
== Part 1 (Creating Terrain in Blender) ==&lt;br /&gt;
First of all, you need terrain for your level. You can do the terrain yourself, or take already created terrain. If your level contains transparent materials you need to add a proper layer tag to it. For transparency, you have two available layers, and you should pick the one that&#039;s best suited for your use case in order to avoid issues.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Layers&lt;br /&gt;
!Usage&lt;br /&gt;
|-&lt;br /&gt;
|punch&lt;br /&gt;
|Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass&lt;br /&gt;
|-&lt;br /&gt;
|trans&lt;br /&gt;
|Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)&lt;br /&gt;
|}&lt;br /&gt;
In order to specify a layer for a material, use the &amp;lt;code&amp;gt;@LYR&amp;lt;/code&amp;gt; prefix, with the layer name between parenthesis after it.&lt;br /&gt;
[[File:Transparent material example terrain import generations.png|center|thumb|357x357px|Example of a transparent material in Blender]]&lt;br /&gt;
You can then export your terrain from Blender into an Assimp compatible format (FBX, DAE, GLTF or OBJ work).&lt;br /&gt;
&lt;br /&gt;
When exporting FBX, make sure to set &#039;&#039;&#039;Apply Scalings&#039;&#039;&#039; to &#039;&#039;&#039;FBX Units Scale&#039;&#039;&#039;, otherwise your level is going to appear 100x larger in-game.&lt;br /&gt;
[[File:Blender FBX Units Scale.png|center|thumb|FBX Units Scale in FBX exporter window.]]&lt;br /&gt;
&lt;br /&gt;
== Part 2 (Importing the Level to the Game) ==&lt;br /&gt;
Download [[Hedgehog Converter]] and run &amp;lt;code&amp;gt;bin/HedgehogConverter.exe&amp;lt;/code&amp;gt;. Fill in the following fields:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Game engine&#039;&#039;&#039; - The game you are converting for&lt;br /&gt;
* &#039;&#039;&#039;Source 3D model files&#039;&#039;&#039; - Your terrain model files&lt;br /&gt;
* &#039;&#039;&#039;Source textures directory&#039;&#039;&#039; - The directory containing the texture files for your terrain&lt;br /&gt;
* &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; - The directory that will contain the converted terrain&lt;br /&gt;
* &#039;&#039;&#039;Merge with existing files&#039;&#039;&#039; - Turn this off as we are creating a brand new stage&lt;br /&gt;
&lt;br /&gt;
Make sure to create a folder inside the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; directory, named according to your stage.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, use the folder name &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), use the folder name &amp;lt;code&amp;gt;ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can refer to the [[Sonic Generations Stage IDs]] or [[Sonic Unleashed Stage IDs]] pages to find the ID of the stage you are going to replace.&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to first set up a mod and create these folders within it. If you&#039;ve set up the folder structure correctly and browsed to it, the &#039;&#039;&#039;Terrain output directory&#039;&#039;&#039; should show something like the following examples:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;D:\Steam\steamapps\common\Sonic Generations\mods\MyStageMod\disk\bb\Packed\ghz200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;C:\Games\UnleashedRecomp\mods\MyStageMod\Packed\ActD_MykonosAct1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to also turn on the following options under &#039;&#039;&#039;Materials&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Generate materials&lt;br /&gt;
* Copy and convert materials&lt;br /&gt;
* Force tags from Source 3D models&#039; material names as submesh layer&lt;br /&gt;
&lt;br /&gt;
In the end, you should have something similar to this:&lt;br /&gt;
[[File:Hedgehog Converter Example.png|center|thumb|625x625px]]&lt;br /&gt;
Next, click the &#039;&#039;&#039;Convert&#039;&#039;&#039; button and wait.&lt;br /&gt;
{{Notice|type=warn|content=You should normally disable the &#039;&#039;&#039;Merge existing files&#039;&#039;&#039; option when creating a brand-new stage. However, if you&#039;re appending more terrain to a stage you&#039;ve already created, make sure to enable this option, otherwise, &#039;&#039;&#039;you may permanently lose any changes&#039;&#039;&#039; you&#039;ve previously made to your level. &#039;&#039;&#039;This action is irreversible&#039;&#039;&#039;, so proceed with caution!}}&lt;br /&gt;
&lt;br /&gt;
== Part 3 (Getting Missing Files) ==&lt;br /&gt;
Once the conversion is complete, you may need to add files that are missing from your stage. These are stored in the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive, located next to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* For Green Hill Act 2, the archive will be named &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* For Windmill Isle Act 1 (Day), the archive will be named &amp;lt;code&amp;gt;#ActD_MykonosAct1.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive contains important data such as set data, stage settings, collision information, and more. &#039;&#039;&#039;Your level will not function correctly without it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Sonic Generations ===&lt;br /&gt;
When creating a brand-new stage in Sonic Generations, Hedgehog Converter &#039;&#039;&#039;does not&#039;&#039;&#039; generate the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. To get started quickly, you can copy this archive from the base game.&lt;br /&gt;
&lt;br /&gt;
For example, if you are replacing &#039;&#039;Green Hill Act 2&#039;&#039;, you can copy the &amp;lt;code&amp;gt;#ghz200.ar.00&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#ghz200.arl&amp;lt;/code&amp;gt; files from the &amp;lt;code&amp;gt;disk/bb.cpk&amp;lt;/code&amp;gt; file (extracted using [[PackCpk]]) to your mod directory.&lt;br /&gt;
&lt;br /&gt;
=== Sonic Unleashed ===&lt;br /&gt;
When creating a brand-new stage in Sonic Unleashed, Hedgehog Converter &#039;&#039;&#039;will&#039;&#039;&#039; create the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. That&#039;s because unlike Sonic Generations, Sonic Unleashed expects terrain-related files to be stored here.&lt;br /&gt;
&lt;br /&gt;
However, you can&#039;t just copy the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive files from the base game into your mod, doing that will override your custom level and break it. Instead, you&#039;ll need to merge the base game files into your mod&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive. You can use [[HedgeArcPack]] to unpack/pack the .ar.00 files.&lt;br /&gt;
&lt;br /&gt;
You can copy these file types from the base game&#039;s archive:&lt;br /&gt;
&lt;br /&gt;
* .xml&lt;br /&gt;
* .hkx&lt;br /&gt;
&lt;br /&gt;
You can &#039;&#039;&#039;NOT&#039;&#039;&#039; copy the following, or your custom level will break completely:&lt;br /&gt;
&lt;br /&gt;
* .gil&lt;br /&gt;
* .gi-texture-group-info&lt;br /&gt;
* .light&lt;br /&gt;
* .light-list&lt;br /&gt;
* .terrain&lt;br /&gt;
* .terrain-group&lt;br /&gt;
* .tbst&lt;br /&gt;
&lt;br /&gt;
== Part 4 (SonicGLvl Basic Setup) ==&lt;br /&gt;
Next up, we need to do some very basic setup of your level&#039;s set data in [[SonicGLvl]]. Open the app, and open your stage&#039;s &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; archive from there. Once the level has been imported into SonicGLvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level&#039;s set data, which are the original objects from the stage we are replacing. Now, find &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the &amp;quot;Active&amp;quot; property to &amp;quot;true&amp;quot; in the settings of the &amp;lt;code&amp;gt;&amp;quot;SonicSpawn&amp;quot;&amp;lt;/code&amp;gt; object.&lt;br /&gt;
[[File:SonicSpawn SonicGLvl.png|center|thumb]]&lt;br /&gt;
After that, go to &amp;quot;File&amp;quot; and press &#039;&#039;&#039;Save Stage Data&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Part 5 (Creating Skybox - Optional but Recommended) ==&lt;br /&gt;
Skyboxes are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.&lt;br /&gt;
&lt;br /&gt;
=== Making one yourself ===&lt;br /&gt;
Export your skybox model from Blender into an Assimp compatible file format. Then, using [[Model Converter]], drag and drop the model file onto the respective game&#039;s .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing one from a level ===&lt;br /&gt;
&lt;br /&gt;
==== Sonic Generations ====&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;Packed&amp;lt;/code&amp;gt; folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; archive, and look for the sky&#039;s &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file. The name should have something to do with &amp;quot;sky&amp;quot;. If you don&#039;t manage to find it, look at the stage&#039;s &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; file, as it will mention the skybox&#039;s model name there. You will need the .model file, the textures (&amp;lt;code&amp;gt;.dds&amp;lt;/code&amp;gt; files) and the materials of the sky model.&lt;br /&gt;
&lt;br /&gt;
=== Using the Skybox files ===&lt;br /&gt;
After getting the necessary skybox model files, place them inside your stage&#039;s resources file:&lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Packed/stageID/stage.ar.00&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;StageID.ar.00&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then, open &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; file of your stage, and open the respective &amp;lt;code&amp;gt;.stg.xml&amp;lt;/code&amp;gt; file: &lt;br /&gt;
&lt;br /&gt;
* Sonic Generations: &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
* Sonic Unleashed: &amp;lt;code&amp;gt;Stage.stg.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to create a &amp;lt;code&amp;gt;Sky&amp;lt;/code&amp;gt; tag and write the name of the &amp;lt;code&amp;gt;.model&amp;lt;/code&amp;gt; file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named &amp;lt;code&amp;gt;MySkybox.model&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
    &amp;lt;Model&amp;gt;MySkybox&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This concludes this guide. If you boot your stage now, you&#039;ll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide here.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=File:Hedgehog_Converter_Example.png&amp;diff=551</id>
		<title>File:Hedgehog Converter Example.png</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=File:Hedgehog_Converter_Example.png&amp;diff=551"/>
		<updated>2025-05-02T12:12:52Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hedgehog Converter Example&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=File:Blender_FBX_Units_Scale.png&amp;diff=550</id>
		<title>File:Blender FBX Units Scale.png</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=File:Blender_FBX_Units_Scale.png&amp;diff=550"/>
		<updated>2025-05-02T11:01:57Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image showing the FBX Units Scale setting for Blender FBX Export window.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Ar0pack-ar0unpack&amp;diff=548</id>
		<title>Ar0pack-ar0unpack</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Ar0pack-ar0unpack&amp;diff=548"/>
		<updated>2025-04-28T13:33:17Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=warn|content=This page is unfinished.}}{{ToolInfobox|title=ar0pack|author=Skyth|website=https://github.com/blueskythlikesclouds/SkythTools|download=https://github.com/blueskythlikesclouds/SkythTools/blob/master/Sonic%20Generations/ar0pack.exe}}&lt;br /&gt;
{{ToolInfobox|title=ar0unpack|author=Skyth|website=https://github.com/blueskythlikesclouds/SkythTools|download=https://github.com/blueskythlikesclouds/SkythTools/blob/master/Sonic%20Generations/ar0unpack.exe}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ar0pack&#039;&#039;&#039; and &#039;&#039;&#039;ar0unpack&#039;&#039;&#039; are SkythTools tools designed to pack and extract &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files from Sonic Unleashed and Sonic Generations. To use them, drag a file ending with &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.ar.00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;.pfd&amp;lt;/code&amp;gt;. Please note however that ar0pack cannot repack .pfd files. For that, use [[pfdpack]] or [[pfdpackUnleashed]].&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=warn|content=This tool cannot extract Xbox compressed archives. For such archives, please use the latest version of [[HedgeArcPack]] instead.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Ar0pack-ar0unpack&amp;diff=547</id>
		<title>Ar0pack-ar0unpack</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Ar0pack-ar0unpack&amp;diff=547"/>
		<updated>2025-04-28T13:32:51Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=warn|content=This page is unfinished.}}{{ToolInfobox|title=ar0pack|author=Skyth|website=https://github.com/blueskythlikesclouds/SkythTools|download=https://github.com/blueskythlikesclouds/SkythTools/blob/master/Sonic%20Generations/ar0pack.exe}}&lt;br /&gt;
{{ToolInfobox|title=ar0unpack|author=Skyth|website=https://github.com/blueskythlikesclouds/SkythTools|download=https://github.com/blueskythlikesclouds/SkythTools/blob/master/Sonic%20Generations/ar0unpack.exe}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ar0pack&#039;&#039;&#039; and &#039;&#039;&#039;ar0unpack&#039;&#039;&#039; are SkythTools tools designed to pack and extract &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt; files from Sonic Unleashed and Sonic Generations. To use them, drag a file ending with &amp;lt;code&amp;gt;.ar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.ar.00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;.pfd&amp;lt;/code&amp;gt;. Please note however that ar0pack cannot repack .pfd files. For that, use [[pfdpack]] or [[pfdpackUnleashed]].&lt;br /&gt;
&lt;br /&gt;
{{Notice|type=warn|content=This tool cannot extract Xbox compressed archives. For such archives, please use the latest version of HedgeArcPack instead.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=546</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=546"/>
		<updated>2025-04-27T12:34:16Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
Latest [[SonicGLvl]] now can open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &amp;quot;File -&amp;gt; Open Level&amp;quot; and select the # archive of a level of your choice. Refer to [[Sonic Unleashed Stage IDs|stage IDs]] to find the level you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &amp;quot;shader.ar&amp;quot; file from your game installation to SonicGLvl&#039;s &amp;quot;database/shaders&amp;quot; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* Packed/ActD_MykonosAct2/Stage.pfd&lt;br /&gt;
* #ActD_MykonosAct2.ar.00&lt;br /&gt;
* #ActD_MykonosAct2.arl&lt;br /&gt;
* ActD_MykonosAct2.ar.00&lt;br /&gt;
* ActD_MykonosAct2.arl&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &amp;quot;cache/country_name/slot_resources&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from a DLC or your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your DLC or mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* CmnActD_Terrain_Mykonos&lt;br /&gt;
* CmnActN_Terrain_Mykonos&lt;br /&gt;
* CmnMykonos&lt;br /&gt;
&lt;br /&gt;
== Missing Models ==&lt;br /&gt;
SonicGLvl does not come with the game assets, so objects are going to appear as cubes. To solve this, you need to extract the relevant AR files to SonicGLvl&#039;s &amp;quot;database/resources&amp;quot; folder. Most required assets are stored in SonicActionCommon/EvilActionCommon archives in the base game.&lt;br /&gt;
&lt;br /&gt;
If you are unable to find the model for an object, you can open the corresponding object template from &amp;quot;database/objects&amp;quot; folder, and look for an Extra parameter with model as the type:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Extra type=&amp;quot;model&amp;quot; name=&amp;quot;cmn_obj_sk2_hintring.model&amp;quot; /&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;In this example, the HintRing object uses the &amp;lt;code&amp;gt;cmn_obj_sk2_hintring.model&amp;lt;/code&amp;gt; file. You can then search for this file name in the [https://raw.githubusercontent.com/blueskythlikesclouds/SkythTools/refs/heads/master/Sonic%20Unleashed/File%20Index.txt Sonic Unleashed File Index] to find the archive it&#039;s stored in, and extract it.&lt;br /&gt;
{{Notice|type=warn|content=If you extract SonicActionCommon_Petra, a material file with invalid characters in its file name is going to crash SonicGLvl! Make sure to remove the faulty file to make it work: ptr_sk_dart01__NSP_CMN_ChaoTexSpecNrmTanVC____NPR_XB_������__.material}}{{Notice|type=warn|content=Some Sonic Unleashed object templates are currently incorrectly configured to load Sonic Generations model names. If you have the 2011 version of Sonic Generations installed, you can extract cmn100/cmn200 to the resources folder as a temporary workaround.}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=545</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=545"/>
		<updated>2025-04-27T12:30:54Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
Latest [[SonicGLvl]] now can open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &amp;quot;File -&amp;gt; Open Level&amp;quot; and select the # archive of a level of your choice. Refer to [[Sonic Unleashed Stage IDs|stage IDs]] to find the level you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &amp;quot;shader.ar&amp;quot; file from your game installation to SonicGLvl&#039;s &amp;quot;database/shaders&amp;quot; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* Packed/ActD_MykonosAct2/Stage.pfd&lt;br /&gt;
* #ActD_MykonosAct2.ar.00&lt;br /&gt;
* #ActD_MykonosAct2.arl&lt;br /&gt;
* ActD_MykonosAct2.ar.00&lt;br /&gt;
* ActD_MykonosAct2.arl&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &amp;quot;cache/country_name/slot_resources&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from a DLC or your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your DLC or mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* CmnActD_Terrain_Mykonos&lt;br /&gt;
* CmnActN_Terrain_Mykonos&lt;br /&gt;
* CmnMykonos&lt;br /&gt;
&lt;br /&gt;
== Missing Models ==&lt;br /&gt;
SonicGLvl does not come with the game assets, so objects are going to appear as cubes. To solve this, you need to extract the relevant AR files to SonicGLvl&#039;s &amp;quot;database/resources&amp;quot; folder. Most required assets are stored in SonicActionCommon/EvilActionCommon archives in the base game.&lt;br /&gt;
&lt;br /&gt;
If you are unable to find the model for an object, you can open the corresponding object template from &amp;quot;database/objects&amp;quot; folder, and look for an Extra parameter with model as the type:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Extra type=&amp;quot;model&amp;quot; name=&amp;quot;cmn_obj_sk2_hintring.model&amp;quot; /&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;In this example, the HintRing object uses the &amp;lt;code&amp;gt;cmn_obj_sk2_hintring.model&amp;lt;/code&amp;gt; file. You can then search for this file name in the [https://raw.githubusercontent.com/blueskythlikesclouds/SkythTools/refs/heads/master/Sonic%20Unleashed/File%20Index.txt Sonic Unleashed File Index] to find the archive it&#039;s stored in, and extract it.&lt;br /&gt;
{{Notice|type=warn|content=If you extract SonicActionCommon_Petra, a material file with invalid characters in its file name is going to crash SonicGLvl! Make sure to remove the faulty file to make it work: ptr_sk_dart01__NSP_CMN_ChaoTexSpecNrmTanVC____NPR_XB_������__.material}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=544</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=544"/>
		<updated>2025-04-27T12:30:23Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
Latest [[SonicGLvl]] now can open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &amp;quot;File -&amp;gt; Open Level&amp;quot; and select the # archive of a level of your choice. Refer to [[Sonic Unleashed Stage IDs|stage IDs]] to find the level you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &amp;quot;shader.ar&amp;quot; file from your game installation to SonicGLvl&#039;s &amp;quot;database/shaders&amp;quot; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* Packed/ActD_MykonosAct2/Stage.pfd&lt;br /&gt;
* #ActD_MykonosAct2.ar.00&lt;br /&gt;
* #ActD_MykonosAct2.arl&lt;br /&gt;
* ActD_MykonosAct2.ar.00&lt;br /&gt;
* ActD_MykonosAct2.arl&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &amp;quot;cache/country_name/slot_resources&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from a DLC or your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your DLC or mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* CmnActD_Terrain_Mykonos&lt;br /&gt;
* CmnActN_Terrain_Mykonos&lt;br /&gt;
* CmnMykonos&lt;br /&gt;
&lt;br /&gt;
== Missing Models ==&lt;br /&gt;
SonicGLvl does not come with the game assets, so objects are going to appear as cubes. To solve this, you need to extract the relevant AR files to SonicGLvl&#039;s &amp;quot;database/resources&amp;quot; folder. Most required assets are stored in SonicActionCommon/EvilActionCommon archives in the base game.&lt;br /&gt;
&lt;br /&gt;
If you are unable to find the model for an object, you can open the corresponding object template from &amp;quot;database/objects&amp;quot;, and look for an Extra parameter with model as the type:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Extra type=&amp;quot;model&amp;quot; name=&amp;quot;cmn_obj_sk2_hintring.model&amp;quot; /&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;In this example, the HintRing object uses the &amp;lt;code&amp;gt;cmn_obj_sk2_hintring.model&amp;lt;/code&amp;gt; file. You can then search for this file name in the [https://raw.githubusercontent.com/blueskythlikesclouds/SkythTools/refs/heads/master/Sonic%20Unleashed/File%20Index.txt Sonic Unleashed File Index] to find the archive it&#039;s stored in, and extract it.&lt;br /&gt;
{{Notice|type=warn|content=If you extract SonicActionCommon_Petra, a material file with invalid characters in its file name is going to crash SonicGLvl! Make sure to remove the faulty file to make it work: ptr_sk_dart01__NSP_CMN_ChaoTexSpecNrmTanVC____NPR_XB_������__.material}}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Tools&amp;diff=543</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Tools&amp;diff=543"/>
		<updated>2025-04-27T11:45:07Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains tools that aren&#039;t specific to any Sonic game. Below you can see the tools divided by the engine they target and their purpose.&lt;br /&gt;
&lt;br /&gt;
== Various Engines ==&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicAudioTools]] (.csb / .acb)&lt;br /&gt;
&lt;br /&gt;
== Hedgehog Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
* [[Frontiers Animation Tools]] (.skl.pxd / .anm.pxd)&lt;br /&gt;
* [[KwasTools (Hedgehog Engine)|io_kwastools]] (.cam-anim / .uv-anim)&lt;br /&gt;
* [[Havok Animation Exporter]] (.skl.hkx / .anm.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Archives ===&lt;br /&gt;
&lt;br /&gt;
* [[PackCpk]] (.cpk)&lt;br /&gt;
* [[YACpkTool]] (.cpk)&lt;br /&gt;
&lt;br /&gt;
* [[HedgeArchiveEditor]] (.ar / .pfd / .pac)&lt;br /&gt;
* [[HedgeArcPack]] (.ar / .pfd / .pac)&lt;br /&gt;
* [[ar0pack-ar0unpack]] (.ar / .pfd)&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Havok Converter]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[GI Atlas Converter]]&lt;br /&gt;
* [[HedgeGI]]&lt;br /&gt;
* [[SonicLightTools]]&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Engine Blender I/O]]&lt;br /&gt;
* [[Model Converter]] (.model)&lt;br /&gt;
* [[modelfbx]] (.model / .terrain-model / .skl.hkx / .anm.hkx)&lt;br /&gt;
* [[terrain2fbx]] (.terrain-model)&lt;br /&gt;
* [[terrain2fbx-png]] (.terrain-model)&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[Converse]] (.fco / .fte)&lt;br /&gt;
=== UI ===&lt;br /&gt;
* [[Shuriken]] (.xncp / .yncp)&lt;br /&gt;
* [[Kunai]] (.xncp / .yncp / .gncp / .sncp)&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Model_Converter&amp;diff=542</id>
		<title>Model Converter</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Model_Converter&amp;diff=542"/>
		<updated>2025-04-27T11:44:28Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Created page with &amp;quot;{{ToolInfobox|title=Model Converter|author=Skyth|website=https://github.com/blueskythlikesclouds/ModelConverter|download=https://github.com/blueskythlikesclouds/ModelConverter/releases}}  Model Converter is a tool that converts 3D model formats like FBX to Hedgehog Engine .model files.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ToolInfobox|title=Model Converter|author=Skyth|website=https://github.com/blueskythlikesclouds/ModelConverter|download=https://github.com/blueskythlikesclouds/ModelConverter/releases}}&lt;br /&gt;
&lt;br /&gt;
Model Converter is a tool that converts 3D model formats like FBX to Hedgehog Engine .model files.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Havok_Animation_Exporter&amp;diff=541</id>
		<title>Havok Animation Exporter</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Havok_Animation_Exporter&amp;diff=541"/>
		<updated>2025-04-27T11:43:03Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Created page with &amp;quot;{{ToolInfobox|title=Havok Animation Exporter|author=Skyth|website=https://github.com/blueskythlikesclouds/HavokAnimationExporter|download=https://github.com/blueskythlikesclouds/HavokAnimationExporter/releases}}  Havok Animation Exporter is a tool that allows you to generate skeleton and animation data for Sonic games that use Havok.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ToolInfobox|title=Havok Animation Exporter|author=Skyth|website=https://github.com/blueskythlikesclouds/HavokAnimationExporter|download=https://github.com/blueskythlikesclouds/HavokAnimationExporter/releases}}&lt;br /&gt;
&lt;br /&gt;
Havok Animation Exporter is a tool that allows you to generate skeleton and animation data for Sonic games that use Havok.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Tools&amp;diff=540</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Tools&amp;diff=540"/>
		<updated>2025-04-27T11:42:14Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains tools that aren&#039;t specific to any Sonic game. Below you can see the tools divided by the engine they target and their purpose.&lt;br /&gt;
&lt;br /&gt;
== Various Engines ==&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicAudioTools]] (.csb / .acb)&lt;br /&gt;
&lt;br /&gt;
== Hedgehog Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
* [[Frontiers Animation Tools]] (.skl.pxd / .anm.pxd)&lt;br /&gt;
* [[KwasTools (Hedgehog Engine)|io_kwastools]] (.cam-anim, .uv-anim)&lt;br /&gt;
* [[Havok Animation Exporter]] (.skl.hkx / .anm.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Archives ===&lt;br /&gt;
&lt;br /&gt;
* [[PackCpk]] (.cpk)&lt;br /&gt;
* [[YACpkTool]] (.cpk)&lt;br /&gt;
&lt;br /&gt;
* [[HedgeArchiveEditor]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[HedgeArcPack]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[ar0pack-ar0unpack]] (.ar, .pfd)&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Havok Converter]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[GI Atlas Converter]]&lt;br /&gt;
* [[HedgeGI]]&lt;br /&gt;
* [[SonicLightTools]]&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Engine Blender I/O]]&lt;br /&gt;
* [[Model Converter]] (.model)&lt;br /&gt;
* [[modelfbx]] (.model / .terrain-model / .skl.hkx / .anm.hkx)&lt;br /&gt;
* [[terrain2fbx]] (.terrain-model)&lt;br /&gt;
* [[terrain2fbx-png]] (.terrain-model)&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[Converse]] (.fco / .fte)&lt;br /&gt;
=== UI ===&lt;br /&gt;
* [[Shuriken]] (.xncp / .yncp)&lt;br /&gt;
* [[Kunai]] (.xncp / .yncp / .gncp / .sncp)&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Hedgehog_Engine_Blender_I/O&amp;diff=539</id>
		<title>Hedgehog Engine Blender I/O</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Hedgehog_Engine_Blender_I/O&amp;diff=539"/>
		<updated>2025-04-27T11:40:11Z</updated>

		<summary type="html">&lt;p&gt;Skyth: Created page with &amp;quot;{{ToolInfobox|title=Hedgehog Engine Blender I/O|author=Justin113D|website=https://hedge-dev.github.io/HedgehogEngineBlenderIO/index.html}}  The Hedgehog Engine Blender I/O Addon, short “&amp;#039;&amp;#039;&amp;#039;HEIO&amp;#039;&amp;#039;&amp;#039;”, is an addon for Blender, adding the ability to import and export 3D related file formats used by Hedgehog Engine and Hedgehog Engine 2 games.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ToolInfobox|title=Hedgehog Engine Blender I/O|author=Justin113D|website=https://hedge-dev.github.io/HedgehogEngineBlenderIO/index.html}}&lt;br /&gt;
&lt;br /&gt;
The Hedgehog Engine Blender I/O Addon, short “&#039;&#039;&#039;HEIO&#039;&#039;&#039;”, is an addon for Blender, adding the ability to import and export 3D related file formats used by Hedgehog Engine and Hedgehog Engine 2 games.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Tools&amp;diff=538</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Tools&amp;diff=538"/>
		<updated>2025-04-27T11:38:33Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains tools that aren&#039;t specific to any Sonic game. Below you can see the tools divided by the engine they target and their purpose.&lt;br /&gt;
&lt;br /&gt;
== Various Engines ==&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicAudioTools]] (.csb / .acb)&lt;br /&gt;
&lt;br /&gt;
== Hedgehog Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
* [[Frontiers Animation Tools]] (.skl.pxd / .anm.pxd)&lt;br /&gt;
* [[KwasTools (Hedgehog Engine)|io_kwastools]] (.cam-anim, .uv-anim)&lt;br /&gt;
* [[HavokAnimationExporter]] (.skl.hkx / .anm.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Archives ===&lt;br /&gt;
&lt;br /&gt;
* [[PackCpk]] (.cpk)&lt;br /&gt;
* [[YACpkTool]] (.cpk)&lt;br /&gt;
&lt;br /&gt;
* [[HedgeArchiveEditor]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[HedgeArcPack]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[ar0pack-ar0unpack]] (.ar, .pfd)&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Havok Converter]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[GI Atlas Converter]]&lt;br /&gt;
* [[HedgeGI]]&lt;br /&gt;
* [[SonicLightTools]]&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Engine Blender I/O]]&lt;br /&gt;
* [[Model Converter]] (.model)&lt;br /&gt;
* [[modelfbx]] (.model / .terrain-model / .skl.hkx / .anm.hkx)&lt;br /&gt;
* [[terrain2fbx]] (.terrain-model)&lt;br /&gt;
* [[terrain2fbx-png]] (.terrain-model)&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[Converse]] (.fco / .fte)&lt;br /&gt;
=== UI ===&lt;br /&gt;
* [[Shuriken]] (.xncp / .yncp)&lt;br /&gt;
* [[Kunai]] (.xncp / .yncp / .gncp / .sncp)&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Tools&amp;diff=537</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Tools&amp;diff=537"/>
		<updated>2025-04-27T11:38:11Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains tools that aren&#039;t specific to any Sonic game. Below you can see the tools divided by the engine they target and their purpose.&lt;br /&gt;
&lt;br /&gt;
== Various Engines ==&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicAudioTools]] (.csb / .acb)&lt;br /&gt;
&lt;br /&gt;
== Hedgehog Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
* [[Frontiers Animation Tools]] (.skl.pxd / .anm.pxd)&lt;br /&gt;
* [[KwasTools (Hedgehog Engine)|io_kwastools]] (.cam-anim, .uv-anim)&lt;br /&gt;
* [[HavokAnimationExporter]] (.skl.hkx / .anm.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Archives ===&lt;br /&gt;
&lt;br /&gt;
* [[PackCpk]] (.cpk)&lt;br /&gt;
* [[YACpkTool]] (.cpk)&lt;br /&gt;
&lt;br /&gt;
* [[HedgeArchiveEditor]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[HedgeArcPack]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[ar0pack-ar0unpack]] (.ar, .pfd)&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Havok Converter]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[GI Atlas Converter]]&lt;br /&gt;
* [[HedgeGI]]&lt;br /&gt;
* [[SonicLightTools]]&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Engine I/O|Hedgehog Engine Blender I/O]]&lt;br /&gt;
* [[Model Converter]] (.model)&lt;br /&gt;
* [[modelfbx]] (.model / .terrain-model / .skl.hkx / .anm.hkx)&lt;br /&gt;
* [[terrain2fbx]] (.terrain-model)&lt;br /&gt;
* [[terrain2fbx-png]] (.terrain-model)&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[Converse]] (.fco / .fte)&lt;br /&gt;
=== UI ===&lt;br /&gt;
* [[Shuriken]] (.xncp / .yncp)&lt;br /&gt;
* [[Kunai]] (.xncp / .yncp / .gncp / .sncp)&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Tools&amp;diff=536</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Tools&amp;diff=536"/>
		<updated>2025-04-27T11:35:05Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains tools that aren&#039;t specific to any Sonic game. Below you can see the tools divided by the engine they target and their purpose.&lt;br /&gt;
&lt;br /&gt;
== Various Engines ==&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicAudioTools]] (.csb / .acb)&lt;br /&gt;
&lt;br /&gt;
== Hedgehog Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
&lt;br /&gt;
* [[Frontiers Animation Tools]] (.skl.pxd / .anm.pxd)&lt;br /&gt;
* [[KwasTools (Hedgehog Engine)|io_kwastools]] (.cam-anim, .uv-anim)&lt;br /&gt;
* [[HavokAnimationExporter]] (.skl.hkx / .anm.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Archives ===&lt;br /&gt;
&lt;br /&gt;
* [[PackCpk]] (.cpk)&lt;br /&gt;
* [[YACpkTool]] (.cpk)&lt;br /&gt;
&lt;br /&gt;
* [[HedgeArchiveEditor]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[HedgeArcPack]] (.ar, .pfd, .pac)&lt;br /&gt;
* [[ar0pack-ar0unpack]] (.ar, .pfd)&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Havok Converter]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[GI Atlas Converter]]&lt;br /&gt;
* [[HedgeGI]]&lt;br /&gt;
* [[SonicLightTools]]&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Engine I/O]]&lt;br /&gt;
* [[Model Converter]] (.model)&lt;br /&gt;
* [[modelfbx]] (.model / .terrain-model / .skl.hkx / .anm.hkx)&lt;br /&gt;
* [[terrain2fbx]] (.terrain-model)&lt;br /&gt;
* [[terrain2fbx-png]] (.terrain-model)&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
&lt;br /&gt;
* [[Hedgehog Converter]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[Converse]] (.fco / .fte)&lt;br /&gt;
=== UI ===&lt;br /&gt;
* [[Shuriken]] (.xncp / .yncp)&lt;br /&gt;
* [[Kunai]] (.xncp / .yncp / .gncp / .sncp)&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=535</id>
		<title>Troubleshooting Custom Level Issues in Sonic Generations/Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Troubleshooting_Custom_Level_Issues_in_Sonic_Generations/Sonic_Unleashed&amp;diff=535"/>
		<updated>2025-04-27T11:24:57Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Common Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Black Textures ===&lt;br /&gt;
Textures must have power of two resolutions. For example, 512x512, 1024x1024, 2048x4096, etc. An arbitrary resolution like 600x600 is not supported by the game when using compressed textures.&lt;br /&gt;
&lt;br /&gt;
=== Rainbow Flashing Textures ===&lt;br /&gt;
The game shows a rainbow flashing texture if the texture assigned to a material is missing. Ensure you included the texture in the AR and didn&#039;t make a typo in the material.&lt;br /&gt;
&lt;br /&gt;
=== Randomly Switching Textures ===&lt;br /&gt;
The material might not have any textures assigned at all. You need to at least assign one diffuse texture, otherwise the game is going to use the texture of whatever was rendered last.&lt;br /&gt;
&lt;br /&gt;
=== Missing Transparency On Textures ===&lt;br /&gt;
&lt;br /&gt;
* You might need &amp;lt;code&amp;gt;@LYR(trans)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@LYR(punch)&amp;lt;/code&amp;gt; tags on your material names. See terrain importing guide for more information.&lt;br /&gt;
* Your texture might be compressed using &amp;lt;code&amp;gt;BC1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT1&amp;lt;/code&amp;gt; format. This format does not support alpha channels. For transparent textures, use the &amp;lt;code&amp;gt;BC3&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;DXT5&amp;lt;/code&amp;gt; compression format instead.&lt;br /&gt;
&lt;br /&gt;
=== Missing Terrain Models ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; file might require higher memory sizes. Look for the &amp;lt;code&amp;gt;g_TerrainModelLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_TerrainModelLimitSizeWin32&amp;lt;/code&amp;gt; parameters, and increase them. If your stage requires more memory than what is defined in this file, some of your models might not render.&lt;br /&gt;
** Do not increase these values too much! The values are represented in MB, and inputting insane values like 99999999 won&#039;t allow the game to parse the value correctly. Start small like 100 or 250 MB.&lt;br /&gt;
* There is a limit of 8192 instances in the game. If you are trying to render more instances, the game is going to hit this limit and stop rendering.&lt;br /&gt;
* Material files might be missing. There is a chance it might not crash and display nothing instead.&lt;br /&gt;
* You might have a &amp;lt;code&amp;gt;visibility-tree.vt&amp;lt;/code&amp;gt; file leftover from another level in your files. This file controls occlusion culling, and it needs to be created specifically for the level it&#039;s used in. Remove this file to solve potential pop-in problems.&lt;br /&gt;
** Similarly, if you are porting a level from Sonic Unleashed to Sonic Generations or vice versa, you might experience issues if your set object cameras don&#039;t exactly match with the original game. If they do, you can safely keep this file.&lt;br /&gt;
&lt;br /&gt;
=== Red Materials ===&lt;br /&gt;
The game fallbacks to displaying a red emissive material if the shader assigned to a material does not exist. If you want to see every available shader in the game, unpack &amp;lt;code&amp;gt;shader_r_add.ar.00&amp;lt;/code&amp;gt; located inside &amp;lt;code&amp;gt;bb3.cpk&amp;lt;/code&amp;gt;, and look for files with &amp;lt;code&amp;gt;.shader-list&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
=== Low Quality or Missing GI Textures ===&lt;br /&gt;
&amp;lt;code&amp;gt;Terrain.prm.xml&amp;lt;/code&amp;gt; file might require higher memory sizes. Look for the &amp;lt;code&amp;gt;g_GITextureLimitSizeDefault&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;g_GITextureLimitSizeWin32&amp;lt;/code&amp;gt; parameters, and increase them.&lt;br /&gt;
&lt;br /&gt;
Do not increase these values too much! The values are represented in MB, and inputting insane values like 99999999 won&#039;t allow the game to parse the value correctly. Start small like 100 or 250 MB.&lt;br /&gt;
&lt;br /&gt;
=== Missing Direct Light ===&lt;br /&gt;
If you add a new direct light with a different name, you need to edit &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; to make the stage use it. For example:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Light&amp;gt;&lt;br /&gt;
  &amp;lt;DataName&amp;gt;MyDirectLight&amp;lt;/DataName&amp;gt;&lt;br /&gt;
&amp;lt;/Light&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Missing Sky Model ===&lt;br /&gt;
If you add a new sky model with a different name, you need to edit &amp;lt;code&amp;gt;Terrain.stg.xml&amp;lt;/code&amp;gt; to make the stage use it. For example:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Sky&amp;gt;&lt;br /&gt;
  &amp;lt;Model&amp;gt;MySkyModel&amp;lt;/Model&amp;gt;&lt;br /&gt;
&amp;lt;/Sky&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Ensure that the materials of the sky model also use sky shaders such as &amp;lt;code&amp;gt;Sky_d&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Enemies From Other Stages Not Appearing ===&lt;br /&gt;
Certain enemies are loaded manually in stages to save memory. If an enemy does not appear in your stage, you can fix it by editing &amp;lt;code&amp;gt;EnemyArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;ghz_cmn&amp;lt;/code&amp;gt; entry was modified to include data from &amp;lt;code&amp;gt;EnemyEFighter&amp;lt;/code&amp;gt;, which allows egg fighters to be used in both &amp;lt;code&amp;gt;ghz100&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;ghz_cmn&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyCommon&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBeeton&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyBatabata&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyGanigani&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyMotora&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;EnemyEFighter&amp;lt;/Archive&amp;gt;&lt;br /&gt;
&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Common Crash Reasons ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Material Files ===&lt;br /&gt;
Unlike later games, missing materials can cause a crash in Sonic Generations and Sonic Unleashed.&lt;br /&gt;
&lt;br /&gt;
=== Periods in File Names ===&lt;br /&gt;
Having periods in your file names can confuse the game and cause crashes. For example, having a material named &amp;lt;code&amp;gt;Material.000.material&amp;lt;/code&amp;gt; would make the game think the file has a &amp;lt;code&amp;gt;.000.material&amp;lt;/code&amp;gt; extension, and not recognize it as a material file.&lt;br /&gt;
&lt;br /&gt;
=== Instance Names Starting with &amp;quot;ins&amp;quot; ===&lt;br /&gt;
Instances starting with &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;gi-texture.gi-texture-group-info&amp;quot; File ===&lt;br /&gt;
Run GI Atlas Converter on Pre-Render mode to have this file created automatically.&lt;br /&gt;
&lt;br /&gt;
=== Missing &amp;quot;light-list.light-list&amp;quot; File ===&lt;br /&gt;
Copy paste &amp;lt;code&amp;gt;.light&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.light-list&amp;lt;/code&amp;gt; files from another stage, or add a direct light to your level in the 3D software you use. Latest Hedgehog Converter can import direct lights, so ensure your tools are up to date. Use HedgeGI for advanced light editing.&lt;br /&gt;
&lt;br /&gt;
=== Mismatching PFD/PFI Files ===&lt;br /&gt;
PFD files are loaded through PFI files. If the &amp;lt;code&amp;gt;Stage.pfi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfi&amp;lt;/code&amp;gt; files don&#039;t match with the &amp;lt;code&amp;gt;Stage.pfd&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;Stage-Add.pfd&amp;lt;/code&amp;gt; files in the stage, this causes a crash. Unpack the PFD files, and repack them back with HedgeArcPack using &amp;lt;code&amp;gt;-T=pfd&amp;lt;/code&amp;gt; command-line option to generate matching PFI files.&lt;br /&gt;
&lt;br /&gt;
=== Unloaded Sonic Animations ===&lt;br /&gt;
The game doesn&#039;t load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in &amp;lt;code&amp;gt;SonicDiving.ar.00&amp;lt;/code&amp;gt; are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing &amp;lt;code&amp;gt;ArchiveTree.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;#Application.ar.00&amp;lt;/code&amp;gt;. In this example, &amp;lt;code&amp;gt;SonicDiving&amp;lt;/code&amp;gt; entry was edited to load in the &amp;lt;code&amp;gt;ghz200&amp;lt;/code&amp;gt; stage slot:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Node&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;SonicDiving&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Archive&amp;gt;SonicDiving&amp;lt;/Archive&amp;gt;&lt;br /&gt;
  &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;DefAppend&amp;gt;SonicDiving&amp;lt;/DefAppend&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;bne&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;bne&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;cpz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;cpz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;pla200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;pla200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;sph200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;sph200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;&lt;br /&gt;
  &amp;lt;Node&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;ghz200&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Archive&amp;gt;ghz200&amp;lt;/Archive&amp;gt;&lt;br /&gt;
    &amp;lt;Order&amp;gt;0&amp;lt;/Order&amp;gt;&lt;br /&gt;
  &amp;lt;/Node&amp;gt;  &lt;br /&gt;
&amp;lt;/Node&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lightfield File Too Large ===&lt;br /&gt;
Your game might crash randomly when booting your level if the level&#039;s lightfield (.lft) file is too large. Try increasing the minimum cell radius in HedgeGI to reduce the lightfield&#039;s file size.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Unleashed_Stage_IDs&amp;diff=523</id>
		<title>Sonic Unleashed Stage IDs</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Unleashed_Stage_IDs&amp;diff=523"/>
		<updated>2025-04-24T12:05:07Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains a list of all the Stage IDs&amp;lt;ref&amp;gt;Credits to archxe and Hedgeturd for making a list of all the stage IDs!&amp;lt;/ref&amp;gt; used in Sonic Unleashed. Stages don&#039;t follow a strict format, but they&#039;re generally like this:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;Act{Day/Night}_{country}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Notice|type=note|content=The tables are divided into 4 columns, the &amp;quot;Stage&amp;quot; is the name of the stage, the &amp;quot;ID&amp;quot; is the name of the #archive, and the &amp;quot;Geometry ID&amp;quot; is the archive the stage uses for the actual terrain, if it is blank then it means that the terrain archive it uses has the same name as the ID.}}&lt;br /&gt;
&lt;br /&gt;
== Country ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Country&lt;br /&gt;
!ID&lt;br /&gt;
|-&lt;br /&gt;
|Apotos&lt;br /&gt;
|Mykonos&lt;br /&gt;
|-&lt;br /&gt;
|Mazuri&lt;br /&gt;
|Africa&lt;br /&gt;
|-&lt;br /&gt;
|Spagonia&lt;br /&gt;
|EU / EuropeanCity&lt;br /&gt;
|-&lt;br /&gt;
|Chun-Nan&lt;br /&gt;
|China&lt;br /&gt;
|-&lt;br /&gt;
|Holoska&lt;br /&gt;
|Snow&lt;br /&gt;
|-&lt;br /&gt;
|Shamar&lt;br /&gt;
|Petra&lt;br /&gt;
|-&lt;br /&gt;
|Empire City&lt;br /&gt;
|NY / NYCity&lt;br /&gt;
|-&lt;br /&gt;
|Adabat&lt;br /&gt;
|Beach / SouthEastAsia&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Daytime ==&lt;br /&gt;
&lt;br /&gt;
=== Apotos ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 1&lt;br /&gt;
|ActD_MykonosAct1 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 1-2&lt;br /&gt;
|ActD_SubMykonos_04 &lt;br /&gt;
|X&lt;br /&gt;
|ActD_MykonosAct1 &lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 2&lt;br /&gt;
|ActD_MykonosAct2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 2-2&lt;br /&gt;
|ActD_SubMykonos_05&lt;br /&gt;
|X&lt;br /&gt;
|ActD_MykonosAct2&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 3&lt;br /&gt;
|ActD_SubMykonos_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 4&lt;br /&gt;
|ActD_SubMykonos_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_Mykonos&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_MykonosETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mazuri ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 1&lt;br /&gt;
|ActD_Africa&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 1-2&lt;br /&gt;
|ActD_SubAfrica_05&lt;br /&gt;
|X&lt;br /&gt;
|ActD_Africa&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 2&lt;br /&gt;
|ActD_SubAfrica_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 3&lt;br /&gt;
|ActD_SubAfrica_03&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 3-2&lt;br /&gt;
|ActD_SubAfrica_06&lt;br /&gt;
|X&lt;br /&gt;
|ActD_SubAfrica_03&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 4&lt;br /&gt;
|ActD_SubAfrica_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 5&lt;br /&gt;
|ActD_SubAfrica_04&lt;br /&gt;
|X&lt;br /&gt;
|BossEggBeetle&lt;br /&gt;
|-&lt;br /&gt;
|Egg Beetle&lt;br /&gt;
|BossEggBeetle&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_Africa&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_AfricaETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Spagonia ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 1&lt;br /&gt;
|ActD_EU&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 1-2&lt;br /&gt;
|ActD_SubEU_05&lt;br /&gt;
|X&lt;br /&gt;
|ActD_EU&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 2&lt;br /&gt;
|ActD_SubEU_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 2-2&lt;br /&gt;
|ActD_SubEU_06&lt;br /&gt;
|X&lt;br /&gt;
|ActD_SubEU_01&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 3&lt;br /&gt;
|ActD_SubEU_02&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 4 &lt;br /&gt;
|ActD_SubEU_03&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 5&lt;br /&gt;
|ActD_SubEU_04&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Egg Devil Ray&lt;br /&gt;
|BossEggRayBird&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tornado Defence Act 1&lt;br /&gt;
|ExStageTails1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_EuropeanCity&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_EuropeanCityETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Professor Pickle’s Lab&lt;br /&gt;
|Town_EULabo&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Chun-Nan ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 1&lt;br /&gt;
|ActD_China &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 1-2&lt;br /&gt;
|ActD_SubChina_05&lt;br /&gt;
|X&lt;br /&gt;
|ActD_China&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 2&lt;br /&gt;
|ActD_SubChina_03 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 2-2&lt;br /&gt;
|ActD_SubChina_06&lt;br /&gt;
|X&lt;br /&gt;
|ActD_SubChina_03 &lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 3&lt;br /&gt;
|ActD_SubChina_04&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 4&lt;br /&gt;
|ActD_SubChina_01 &lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 5&lt;br /&gt;
|ActD_SubChina_02 &lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_China&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_ChinaETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Holoska ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 1&lt;br /&gt;
|ActD_Snow&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 1-2&lt;br /&gt;
|ActD_SubSnow_04 &lt;br /&gt;
|X&lt;br /&gt;
|ActD_Snow&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 2&lt;br /&gt;
|ActD_SubSnow_01 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 2-2&lt;br /&gt;
|ActD_SubSnow_05 &lt;br /&gt;
|X&lt;br /&gt;
|ActD_SubSnow_01 &lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 3&lt;br /&gt;
|ActD_SubSnow_02 &lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 4&lt;br /&gt;
|ActD_SubSnow_03 &lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_Snow&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_SnowETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shamar ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 1&lt;br /&gt;
|ActD_Petra &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 1-2&lt;br /&gt;
|ActD_SubPetra_04&lt;br /&gt;
|X&lt;br /&gt;
|ActD_Petra&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 2&lt;br /&gt;
|ActD_SubPetra_03&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 3&lt;br /&gt;
|ActD_SubPetra_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_PetraCapital&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_PetraCapitalETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Professor Pickle’s Lab&lt;br /&gt;
|Town_PetraLabo&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empire City ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 1&lt;br /&gt;
|ActD_NY&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 1-2&lt;br /&gt;
|ActD_SubNY_03&lt;br /&gt;
|X&lt;br /&gt;
|ActD_NY&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 2&lt;br /&gt;
|ActD_SubNY_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 3&lt;br /&gt;
|ActD_SubNY_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_NYCity&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_NYCityETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Adabat ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 1&lt;br /&gt;
|ActD_Beach &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 1-2&lt;br /&gt;
|ActD_SubBeach_05&lt;br /&gt;
|X&lt;br /&gt;
|ActD_Beach &lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 2&lt;br /&gt;
|ActD_SubBeach_02&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 3&lt;br /&gt;
|ActD_SubBeach_04&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 4&lt;br /&gt;
|ActD_SubBeach_01&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 5&lt;br /&gt;
|ActD_SubBeach_03&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Egg Lancer&lt;br /&gt;
|BossEggLancer&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_SouthEastAsia&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_SouthEastAsiaETF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Night ==&lt;br /&gt;
&lt;br /&gt;
=== Apotos ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 1&lt;br /&gt;
|ActN_MykonosEvil&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 1-2&lt;br /&gt;
|ActN_SubMykonos_03 &lt;br /&gt;
|X&lt;br /&gt;
|ActN_MykonosEvil&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 1-3&lt;br /&gt;
|ActN_SubMykonos_04&lt;br /&gt;
|X&lt;br /&gt;
|ActN_MykonosEvil&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 2&lt;br /&gt;
|ActN_SubMykonos_01 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_Mykonos_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_MykonosETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mazuri ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 1&lt;br /&gt;
|ActN_AfricaEvil&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 2&lt;br /&gt;
|ActN_SubAfrica_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 3&lt;br /&gt;
|ActN_SubAfrica_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 4&lt;br /&gt;
|ActN_SubAfrica_03&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_Africa_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_AfricaETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Spagonia ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 1&lt;br /&gt;
|ActN_EUEvil &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 1-2&lt;br /&gt;
|ActN_SubEU_02&lt;br /&gt;
|X&lt;br /&gt;
|ActN_EUEvil &lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 2&lt;br /&gt;
|ActN_SubEU_01&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_EuropeanCity_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_EuropeanCityETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Professor Pickle’s Lab&lt;br /&gt;
|Town_EULabo_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Chun-Nan ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 1&lt;br /&gt;
|ActN_ChinaEvil&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 1-2&lt;br /&gt;
|ActN_SubChina_03&lt;br /&gt;
|X&lt;br /&gt;
|ActN_ChinaEvil&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 2&lt;br /&gt;
|ActN_SubChina_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 3&lt;br /&gt;
|ActN_SubChina_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Gaia Phoenix&lt;br /&gt;
|BossPhoenix&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_China_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_ChinaETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Holoska ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 1&lt;br /&gt;
|ActN_SnowEvil&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 2&lt;br /&gt;
|ActN_SubSnow_01 &lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 3&lt;br /&gt;
|ActN_SubSnow_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Gaia Moray&lt;br /&gt;
|BossDarkGaiaMoray  &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_Snow_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_SnowETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shamar ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 1&lt;br /&gt;
|ActN_PetraEvil &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 2&lt;br /&gt;
|ActN_SubPetra_03&lt;br /&gt;
|X&lt;br /&gt;
|ActN_PetraEvil&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 3&lt;br /&gt;
|ActN_SubPetra_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Guardian&lt;br /&gt;
|BossPetra&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_PetraCapital_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_PetraCapitalETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Professor Pickle’s Lab&lt;br /&gt;
|Town_PetraLabo_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Empire City ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 1&lt;br /&gt;
|ActN_NYEvil&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 2&lt;br /&gt;
|ActN_SubNY_02&lt;br /&gt;
|X&lt;br /&gt;
|ActN_NYEvil&lt;br /&gt;
|-&lt;br /&gt;
|Skyscraper Scamper Act 3&lt;br /&gt;
|ActN_SubNY_01&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_NYCity_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_NYCityETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Adabat ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 1&lt;br /&gt;
|ActN_BeachEvil &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 1-2&lt;br /&gt;
|ActN_SubBeach_03&lt;br /&gt;
|X&lt;br /&gt;
|ActN_BeachEvil &lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 2&lt;br /&gt;
|ActN_SubBeach_01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Jungle Joyride Act 3&lt;br /&gt;
|ActN_SubBeach_02&lt;br /&gt;
|X&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_SouthEastAsia_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Entrance Stage&lt;br /&gt;
|Town_SouthEastAsiaETF_Night&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Eggmanland ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Stage&lt;br /&gt;
!ID&lt;br /&gt;
!DLC&lt;br /&gt;
!Geometry ID&lt;br /&gt;
|-&lt;br /&gt;
|EggmanLand&lt;br /&gt;
|Act_EggmanLand&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Egg Dragoon&lt;br /&gt;
|BossEggDragoon&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Gaia Colossus Sections&lt;br /&gt;
|BossDarkGaia1_1Air&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Gaia Sonic Section 1&lt;br /&gt;
|BossDarkGaia1_1Run &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Gaia Sonic Section 2&lt;br /&gt;
|BossDarkGaia1_2Run &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dark Gaia Sonic Section 3&lt;br /&gt;
|BossDarkGaia1_3Run &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Perfect Dark Gaia&lt;br /&gt;
|BossFinalDarkGaia&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tornado Defence Act 2&lt;br /&gt;
|ExStageTails2 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Town&lt;br /&gt;
|Town_EggManBase&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
== Events ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Area&lt;br /&gt;
!ID&lt;br /&gt;
!Event ID&lt;br /&gt;
|-&lt;br /&gt;
|Spagonia Lab (Ransacked)&lt;br /&gt;
|Event_M2_01_professor_room_new&lt;br /&gt;
|M2_01&lt;br /&gt;
|-&lt;br /&gt;
|Eggman’s Base (Mazuri)&lt;br /&gt;
|Event_afr_hideout&lt;br /&gt;
|M2_02&lt;br /&gt;
|-&lt;br /&gt;
|Gaia Temple (Inside)&lt;br /&gt;
|Event_temple&lt;br /&gt;
|M3_03&lt;br /&gt;
&lt;br /&gt;
M3_05&lt;br /&gt;
&lt;br /&gt;
M6_02&lt;br /&gt;
&lt;br /&gt;
M7_02&lt;br /&gt;
&lt;br /&gt;
S1_05&lt;br /&gt;
&lt;br /&gt;
S3_04&lt;br /&gt;
&lt;br /&gt;
T0_01&lt;br /&gt;
&lt;br /&gt;
T0_02&lt;br /&gt;
|-&lt;br /&gt;
|Eggman’s Base (Inside)&lt;br /&gt;
|Event_M4_01_egb_hideout&lt;br /&gt;
|M4_01&lt;br /&gt;
&lt;br /&gt;
M5_02&lt;br /&gt;
|-&lt;br /&gt;
|Eggman’s Base (Outside)&lt;br /&gt;
|Event_egb_hidout_exterior&lt;br /&gt;
|M5_01&lt;br /&gt;
&lt;br /&gt;
M8_13&lt;br /&gt;
|-&lt;br /&gt;
|Adabat Temple (Outside)&lt;br /&gt;
|Event_M6_01_temple&lt;br /&gt;
|M6_01&lt;br /&gt;
|-&lt;br /&gt;
|EggmanLand Ending Room&lt;br /&gt;
|Event_M8_02_egbHall&lt;br /&gt;
|M7_04&lt;br /&gt;
&lt;br /&gt;
M8_02&lt;br /&gt;
|-&lt;br /&gt;
|Dummy Geometry Slot(?)&lt;br /&gt;
|Event_M8_03&lt;br /&gt;
|M8_03&lt;br /&gt;
|-&lt;br /&gt;
|Ending&lt;br /&gt;
|Event_M8_16_myk&lt;br /&gt;
|M8_16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Unused ==&lt;br /&gt;
These are IDs that are not used in the retail game. Some of these became pre-rendered, while some others come from the Sonic Unleashed Preview Builds.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Stage/Area&lt;br /&gt;
!ID&lt;br /&gt;
!Type&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 1 (Day)&lt;br /&gt;
|ActD_Africa_20080621&lt;br /&gt;
|Stage&lt;br /&gt;
|Version from the leaked trailer and screenshots&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 1 (Night)&lt;br /&gt;
|ActN_AfricaEvil_Dje_20080619&lt;br /&gt;
|Stage&lt;br /&gt;
|Version from leaked screenshots&lt;br /&gt;
|-&lt;br /&gt;
|Savannah Citadel Act 3 (Night)&lt;br /&gt;
|ActN_AfricaEvil_Bao_20080619&lt;br /&gt;
|Stage&lt;br /&gt;
|Version from leaked screenshots&lt;br /&gt;
|-&lt;br /&gt;
|Rooftop Run Act 1 (Night)&lt;br /&gt;
|ActN_EUEvil_20080604&lt;br /&gt;
|Stage&lt;br /&gt;
|Unknown early version&lt;br /&gt;
|-&lt;br /&gt;
|Dragon Road Act 1 (Night)&lt;br /&gt;
|ActN_ChinaEvil_20080609&lt;br /&gt;
|Stage&lt;br /&gt;
|Version from early trailer and leaked screenshots&lt;br /&gt;
|-&lt;br /&gt;
|Cool Edge Act 1 (Day)&lt;br /&gt;
|ActD_Snow_20080618&lt;br /&gt;
|Stage&lt;br /&gt;
|Unknown early version&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 4 (Day)&lt;br /&gt;
|ActD_SubPetra_01&lt;br /&gt;
|Stage&lt;br /&gt;
|Scrapped stage, can be seen in a photo from the credits and an unused World Map thumbnail&lt;br /&gt;
|-&lt;br /&gt;
|Arid Sands Act 4 (Night)&lt;br /&gt;
|ActN_SubPetra_01&lt;br /&gt;
|Stage&lt;br /&gt;
|Scrapped stage, can be seen in an unused World Map thumbnail&lt;br /&gt;
|-&lt;br /&gt;
|Daytime Sonic Test Stage&lt;br /&gt;
|ActD_Test&lt;br /&gt;
|Testing&lt;br /&gt;
|Defined in arcinfo&lt;br /&gt;
|-&lt;br /&gt;
|Werehog Test Stage&lt;br /&gt;
|ActN_Test&lt;br /&gt;
|Testing&lt;br /&gt;
|Defined in arcinfo&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|TestEvilEnemy&lt;br /&gt;
|&lt;br /&gt;
|Defined in arcinfo&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|TestEvilLargeFloor&lt;br /&gt;
|&lt;br /&gt;
|Defined in arcinfo&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|TestEvilPathFinding_01&lt;br /&gt;
|&lt;br /&gt;
|Defined in arcinfo&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|ActN_Test_Dummy&lt;br /&gt;
|&lt;br /&gt;
|Defined in arcinfo&lt;br /&gt;
|-&lt;br /&gt;
|Windmill Isle Act 1 (Dawn)&lt;br /&gt;
|Event_M0_06_myk&lt;br /&gt;
|Event&lt;br /&gt;
|The start area of Windmill Isle Act 1 with the lighting from the first in-engine event baked into the stage, as opposed to being dynamically loaded by the event&lt;br /&gt;
|-&lt;br /&gt;
|Spagonia Lab (Ransacked)&lt;br /&gt;
|Event_M2_01_professor_room&lt;br /&gt;
|Event&lt;br /&gt;
|The ransacked Spagonia lab using the old terrain system&lt;br /&gt;
|-&lt;br /&gt;
|Eggman’s Base (Mazuri)&lt;br /&gt;
|Event_afr_hideout_main&lt;br /&gt;
|Event&lt;br /&gt;
|Eggman’s Mazuri base using the old terrain system&lt;br /&gt;
|-&lt;br /&gt;
|Chun-Nan Town - Cursed&lt;br /&gt;
|Event_M8_08_01chn&lt;br /&gt;
|Event&lt;br /&gt;
|The Chun-Nan scene from the “Dark World” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Mazuri Town - Cursed&lt;br /&gt;
|Event_M8_08_02afr&lt;br /&gt;
|Event&lt;br /&gt;
|The Mazuri scene from the “Dark World” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Spagonia Town - Cursed&lt;br /&gt;
|Event_M8_08_03EU&lt;br /&gt;
|Event&lt;br /&gt;
|The Spagonia scene from the “Dark World” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Holoska Town - Cursed&lt;br /&gt;
|Event_M8_08_04snow&lt;br /&gt;
|Event&lt;br /&gt;
|The Holoska scene from the “Dark World” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Chun-Nan Town - Cured&lt;br /&gt;
|Event_M8_12_01chn&lt;br /&gt;
|Event&lt;br /&gt;
|The Chun-Nan scene from the “Rekindled Light” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Mazuri Town - Cured&lt;br /&gt;
|Event_M8_12_02afr&lt;br /&gt;
|Event&lt;br /&gt;
|The Mazuri scene from the “Rekindled Light” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Spagonia Town - Cured&lt;br /&gt;
|Event_M8_12_03EU&lt;br /&gt;
|Event&lt;br /&gt;
|The Spagonia scene from the “Rekindled Light” event - the final game has this event pre-rendered.&lt;br /&gt;
|-&lt;br /&gt;
|Holoska Town - Cured&lt;br /&gt;
|Event_M8_12_04snow&lt;br /&gt;
|Event&lt;br /&gt;
|The Holoska scene from the “Rekindled Light” event - the final game has this event pre-rendered.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=522</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=522"/>
		<updated>2025-04-24T11:55:57Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
Latest [[SonicGLvl]] now can open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &amp;quot;File -&amp;gt; Open Level&amp;quot; and select the # archive of a level of your choice. Refer to [[Sonic Unleashed Stage IDs|stage IDs]] to find the level you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &amp;quot;shader.ar&amp;quot; file from your game installation to SonicGLvl&#039;s &amp;quot;database/shaders&amp;quot; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* Packed/ActD_MykonosAct2/Stage.pfd&lt;br /&gt;
* #ActD_MykonosAct2.ar.00&lt;br /&gt;
* #ActD_MykonosAct2.arl&lt;br /&gt;
* ActD_MykonosAct2.ar.00&lt;br /&gt;
* ActD_MykonosAct2.arl&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &amp;quot;cache/country_name/slot_resources&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from a DLC or your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your DLC or mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* CmnActD_Terrain_Mykonos&lt;br /&gt;
* CmnActN_Terrain_Mykonos&lt;br /&gt;
* CmnMykonos&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=521</id>
		<title>How To Use Sonic GLvl with Sonic Unleashed</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_Unleashed&amp;diff=521"/>
		<updated>2025-04-24T11:52:04Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=note|content=This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It&#039;s recommended that you also read the [[How To Use Sonic GLvl with Sonic Generations|Sonic Generations GLvl guide]].}}{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
* [[SonicGLvl|SonicGLvl]]}}&lt;br /&gt;
&lt;br /&gt;
Latest [[SonicGLvl]] now can open Sonic Unleashed levels without needing to decompress any archive or move around files. Open a level through &amp;quot;File -&amp;gt; Open Level&amp;quot; and select the # archive of a level of your choice. Refer to [[Sonic Unleashed Stage IDs|stage IDs]] to find the level you need.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Shaders ==&lt;br /&gt;
To display the level with game-accurate graphics, you need to copy the &amp;quot;shader.ar&amp;quot; file from your game installation to SonicGLvl&#039;s &amp;quot;database/shaders&amp;quot; folder. SonicGLvl will warn you about this if you have not done this step.&lt;br /&gt;
&lt;br /&gt;
== Copying Files To Your Mod ==&lt;br /&gt;
If you open a level directly from the game files, you have the risk of corrupting your installation when you save your changes. It&#039;s recommended to first copy the files to a mod, and open the level from your mod directory. As an example, the files you need to copy for Windmill Isle Act 2 (Day) are as follows:&lt;br /&gt;
&lt;br /&gt;
* Packed/ActD_MykonosAct2/Stage.pfd&lt;br /&gt;
* #ActD_MykonosAct2.ar.00&lt;br /&gt;
* #ActD_MykonosAct2.arl&lt;br /&gt;
* ActD_MykonosAct2.ar.00&lt;br /&gt;
* ActD_MykonosAct2.arl&lt;br /&gt;
&lt;br /&gt;
The stage ID and the amount of AR files you need to copy will vary between levels.&lt;br /&gt;
&lt;br /&gt;
== Missing Textures ==&lt;br /&gt;
Sonic Unleashed stores stage textures in different archives to share them between levels and save space. If you open a level from your game directory, SonicGLvl will automatically extract them to its &amp;quot;cache/country_name/slot_resources&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
However, if you open the level from your mod files, and not copy over these archives, SonicGLvl won&#039;t be able to find the textures. To solve this, you can first open a level from the respective country region from the base game folder, then re-open the level from your mod directory.&lt;br /&gt;
&lt;br /&gt;
As an example, for Apotos, the common texture archives are named as follows:&lt;br /&gt;
&lt;br /&gt;
* CmnActD_Terrain_Mykonos&lt;br /&gt;
* CmnActN_Terrain_Mykonos&lt;br /&gt;
* CmnMykonos&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Generations&amp;diff=520</id>
		<title>Sonic Generations</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Generations&amp;diff=520"/>
		<updated>2025-04-24T11:29:00Z</updated>

		<summary type="html">&lt;p&gt;Skyth: The tool is called SonicGLvl, not Sonic GLvl.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Animation ===&lt;br /&gt;
* [[evsxml]] (.evs)&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[cropGIA]]&lt;br /&gt;
* [[SeparateGIA]]&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Collision2fbx (Sonic Generations)|collision2fbx]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
* [[Unleashed2Generations]] (*.model / *.terrain-model / *.material)&lt;br /&gt;
* [[slwModel2Gens]] (*.model)&lt;br /&gt;
* [[TuringFixer]]&lt;br /&gt;
&lt;br /&gt;
=== Stages ===&lt;br /&gt;
* [[TransformGensStage]]&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[fcoEditor]] (.fco / .fte)&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* [[BscPack]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Use Sonic GLvl with Sonic Generations|SonicGLvl]]&lt;br /&gt;
* [[How To Import Custom Terrain in Sonic Generations|Importing Terrain]]&lt;br /&gt;
* [[How To Import Custom Collision in Sonic Generations|Importing Collision]]&lt;br /&gt;
* [[How To Specify Custom Rank Times for Sonic Generations|Custom Rank Times]]&lt;br /&gt;
* [[Troubleshooting Custom Level Issues in Sonic Generations|Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Generations Stage IDs|Stage IDs]]&lt;br /&gt;
* [[Sonic Generations Event List|Set Object Event List]]&lt;br /&gt;
* [[Sonic Generations Camera Types|Camera Types]]&lt;br /&gt;
* [[Unleashed-Generations Havok Collision Attributes|Havok Collision Attributes]]&lt;br /&gt;
* [[Sound File Locations]]&lt;br /&gt;
&lt;br /&gt;
== Discoveries ==&lt;br /&gt;
&lt;br /&gt;
=== Common (2011/2024) ===&lt;br /&gt;
&lt;br /&gt;
==== HUD ====&lt;br /&gt;
&lt;br /&gt;
* [[Unused Time Eater Gauge]]&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
* [[Leftover code from Unleashed in Generations|Unleashed Leftovers]]&lt;br /&gt;
&lt;br /&gt;
=== 2024 ===&lt;br /&gt;
&lt;br /&gt;
==== Stages ====&lt;br /&gt;
&lt;br /&gt;
* [[TestCourse]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Generations&amp;diff=519</id>
		<title>Sonic Generations</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Generations&amp;diff=519"/>
		<updated>2025-04-24T11:28:35Z</updated>

		<summary type="html">&lt;p&gt;Skyth: This tool has been obsolete for a decade.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Animation ===&lt;br /&gt;
* [[evsxml]] (.evs)&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[cropGIA]]&lt;br /&gt;
* [[SeparateGIA]]&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Collision2fbx (Sonic Generations)|collision2fbx]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
* [[Unleashed2Generations]] (*.model / *.terrain-model / *.material)&lt;br /&gt;
* [[slwModel2Gens]] (*.model)&lt;br /&gt;
* [[TuringFixer]]&lt;br /&gt;
&lt;br /&gt;
=== Stages ===&lt;br /&gt;
* [[TransformGensStage]]&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[fcoEditor]] (.fco / .fte)&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* [[BscPack]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Use Sonic GLvl with Sonic Generations|Sonic GLvl]]&lt;br /&gt;
* [[How To Import Custom Terrain in Sonic Generations|Importing Terrain]]&lt;br /&gt;
* [[How To Import Custom Collision in Sonic Generations|Importing Collision]]&lt;br /&gt;
* [[How To Specify Custom Rank Times for Sonic Generations|Custom Rank Times]]&lt;br /&gt;
* [[Troubleshooting Custom Level Issues in Sonic Generations|Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Generations Stage IDs|Stage IDs]]&lt;br /&gt;
* [[Sonic Generations Event List|Set Object Event List]]&lt;br /&gt;
* [[Sonic Generations Camera Types|Camera Types]]&lt;br /&gt;
* [[Unleashed-Generations Havok Collision Attributes|Havok Collision Attributes]]&lt;br /&gt;
* [[Sound File Locations]]&lt;br /&gt;
&lt;br /&gt;
== Discoveries ==&lt;br /&gt;
&lt;br /&gt;
=== Common (2011/2024) ===&lt;br /&gt;
&lt;br /&gt;
==== HUD ====&lt;br /&gt;
&lt;br /&gt;
* [[Unused Time Eater Gauge]]&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
* [[Leftover code from Unleashed in Generations|Unleashed Leftovers]]&lt;br /&gt;
&lt;br /&gt;
=== 2024 ===&lt;br /&gt;
&lt;br /&gt;
==== Stages ====&lt;br /&gt;
&lt;br /&gt;
* [[TestCourse]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=Sonic_Generations&amp;diff=518</id>
		<title>Sonic Generations</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=Sonic_Generations&amp;diff=518"/>
		<updated>2025-04-24T11:08:35Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Animation ===&lt;br /&gt;
* [[evsxml]] (.evs)&lt;br /&gt;
&lt;br /&gt;
=== Lighting ===&lt;br /&gt;
* [[cropGIA]]&lt;br /&gt;
* [[SeparateGIA]]&lt;br /&gt;
* [[FxPipelineResolutionChanger]]&lt;br /&gt;
&lt;br /&gt;
=== Collision ===&lt;br /&gt;
* [[Collision2fbx (Sonic Generations)|collision2fbx]] (.phy.hkx)&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
* [[Unleashed2Generations]] (*.model / *.terrain-model / *.material)&lt;br /&gt;
* [[slwModel2Gens]] (*.model)&lt;br /&gt;
* [[TuringFixer]]&lt;br /&gt;
&lt;br /&gt;
=== Stages ===&lt;br /&gt;
* [[TransformGensStage]]&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
* [[fcoEditor]] (.fco / .fte)&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* [[BscPack]]&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
=== Level Editing ===&lt;br /&gt;
&lt;br /&gt;
* [[How To Use Sonic GLvl with Sonic Generations|Sonic GLvl]]&lt;br /&gt;
* [[How To Import Custom Terrain in Sonic Generations|Importing Terrain]]&lt;br /&gt;
* [[How To Import Custom Collision in Sonic Generations|Importing Collision]]&lt;br /&gt;
* [[How To Specify Custom Rank Times for Sonic Generations|Custom Rank Times]]&lt;br /&gt;
* [[Troubleshooting Custom Level Issues in Sonic Generations|Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Sonic Generations Stage IDs|Stage IDs]]&lt;br /&gt;
* [[Sonic Generations Event List|Set Object Event List]]&lt;br /&gt;
* [[Sonic Generations Camera Types|Camera Types]]&lt;br /&gt;
* [[Unleashed-Generations Havok Collision Attributes|Havok Collision Attributes]]&lt;br /&gt;
* [[Sound File Locations]]&lt;br /&gt;
&lt;br /&gt;
== Discoveries ==&lt;br /&gt;
&lt;br /&gt;
=== Common (2011/2024) ===&lt;br /&gt;
&lt;br /&gt;
==== HUD ====&lt;br /&gt;
&lt;br /&gt;
* [[Unused Time Eater Gauge]]&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
* [[Leftover code from Unleashed in Generations|Unleashed Leftovers]]&lt;br /&gt;
&lt;br /&gt;
=== 2024 ===&lt;br /&gt;
&lt;br /&gt;
==== Stages ====&lt;br /&gt;
&lt;br /&gt;
* [[TestCourse]]&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
	<entry>
		<id>https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_%2706&amp;diff=517</id>
		<title>How To Use Sonic GLvl with Sonic &#039;06</title>
		<link rel="alternate" type="text/html" href="https://hedgedocs.com/index.php?title=How_To_Use_Sonic_GLvl_with_Sonic_%2706&amp;diff=517"/>
		<updated>2025-04-24T11:08:30Z</updated>

		<summary type="html">&lt;p&gt;Skyth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice|type=info|content=This guide uses the following tools:&lt;br /&gt;
&lt;br /&gt;
* [[SonicGLvl]]&lt;br /&gt;
* [[Sonic &#039;06 Stage Editing Archive]]&lt;br /&gt;
* Sonic &#039;06 GLvl Converter (included with Sonic &#039;06 Stage Editing Archive)}}{{Notice|type=note|content=Due to a lack of an actual, dedicated level editor for Sonic &#039;06, we (at the time of writing) use a hacked together solution that allows us to use Sonic GLvl as a stand in. This guide will explain how to set up GLvl for this purpose, with the assumption that the user understands basic usage of the program itself.}}&lt;br /&gt;
&lt;br /&gt;
== Setting Up ==&lt;br /&gt;
Download your preferred version of Sonic GLvl 0.9 and extract the repository to any location. Then, open the database folder and delete the &amp;lt;code&amp;gt;objects&amp;lt;/code&amp;gt; folder. Next, download the [[Sonic &#039;06 Stage Editing Archive]] and extract the &amp;lt;code&amp;gt;SonicGLvl/database&amp;lt;/code&amp;gt; folder to your SonicGLvl location, choosing to merge/replace existing files.&lt;br /&gt;
&lt;br /&gt;
== Converting Stage Terrain ==&lt;br /&gt;
Pre converted copies of the actual Sonic &#039;06 stages are present on the Stage Editing Archive repository (under the &amp;lt;code&amp;gt;SonicGLvl/import&amp;lt;/code&amp;gt; directory). When converting your own terrain (such as for a stage mod) the process is almost identical to the conversion process for Sonic Generations (it&#039;s recommended to use the two &amp;lt;code&amp;gt;#base&amp;lt;/code&amp;gt; files as a template). The crucial step is to remember to set the stage scale in HedgehogConverter to 1% on all three axis, as the scale does not match between both games.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The process of placing and editing objects at this point follows the workflow of using Sonic GLvl for a Generations stage mod, so will not be covered here.&lt;br /&gt;
&lt;br /&gt;
== Groups ==&lt;br /&gt;
Objects in &#039;06 make frequent usage of grouping, allowing objects to influence each other in some way (such as an Egg Chaser commanding a squad of Egg Liners or defeating an enemy unlocking a cage). To set these up, create an XML in your stage&#039;s cache directory called &amp;lt;code&amp;gt;groupdata_[x].group.xml&amp;lt;/code&amp;gt; (where [x] is a name, such as &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;). Then lay them out as shown below.&lt;br /&gt;
[[File:Sonic 2006 Object Groups.png|center|thumb|913x913px]]&lt;br /&gt;
Each &amp;lt;Group&amp;gt; key is... Well... A Group that will be compiled into the converted SET.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;Name&amp;gt; key seems to just be for identification, so here (for Ocean Palace) I called it &amp;lt;code&amp;gt;CageGroup01&amp;lt;/code&amp;gt; as it was the first group I made that unlocked a cage.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;Type&amp;gt; key is the name of the lua event that this group will activate, this key can be left empty if the group doesn&#039;t need to activate anything. In this example, it&#039;s called Cage01, so it will fire the event called Cage01 in the stage&#039;s lua file; which, as you can probably guess, signalled a cage to open.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ObjectCount&amp;gt; key simply lists how many objects this group has (and honestly shouldn&#039;t have even been a thing, but I wrote this thing incredibly badly).&lt;br /&gt;
&lt;br /&gt;
The subkeys within the &amp;lt;ObjectIDs&amp;gt; key simply give the ID of an object that should be in this group. These IDs are shown in the conversion log, and are also patched into the Generations SET if the &amp;lt;code&amp;gt;Patch Generations SET&amp;lt;/code&amp;gt; option is used in the Converter (see below).&lt;br /&gt;
&lt;br /&gt;
== &#039;06 SET Conversion ==&lt;br /&gt;
[[File:Sonic 2006 GLvl Converter.png|center|thumb|668x668px]]&lt;br /&gt;
For converting between Generations and &#039;06, we use the GLvl Converter. In the Source SET, select your Generations &amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; file from your stage&#039;s cache directory in your GLvl location (will be named &amp;lt;code&amp;gt;setdata_base.set.xml&amp;lt;/code&amp;gt; by default). If you&#039;ve created any groups for your object layout (which need to be made manually, see above), then select the approriate &amp;lt;code&amp;gt;groupdata_[x].group.xml&amp;lt;/code&amp;gt; file for the Groups XML option, otherwise, leave it blank.&lt;br /&gt;
&lt;br /&gt;
For the GLvl Templates, select the &amp;lt;code&amp;gt;database\objects&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
Target SET is simply where you want to save the converted object placement to.&lt;br /&gt;
&lt;br /&gt;
Filtered Object Names will prevent the &amp;lt;code&amp;gt;Replace Object Names&amp;lt;/code&amp;gt; option from overwriting objects that have any of the inputted values as part of their names. This object is useful for group events where you&#039;re activating an object by its name.&lt;br /&gt;
&lt;br /&gt;
This converter can also convert from &#039;06 to Generations by simply putting an &#039;06 &amp;lt;code&amp;gt;.set&amp;lt;/code&amp;gt; file as the source and a Generations &amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; as the target. This can also convert &#039;06 groups into an XML if a Groups XML path is specified.&lt;br /&gt;
&lt;br /&gt;
Due to how Sonic GLvl handles object IDs, they will often not match with the IDs that &#039;06 uses. To correct this, choose the &amp;lt;code&amp;gt;Patch Generations SET&amp;lt;/code&amp;gt; option, which will update the Generations &amp;lt;code&amp;gt;.set.xml&amp;lt;/code&amp;gt; to show the correct IDs.&lt;/div&gt;</summary>
		<author><name>Skyth</name></author>
	</entry>
</feed>