<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vg-resource.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Boilingpot</id>
	<title>The VG Resource Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vg-resource.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Boilingpot"/>
	<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/Special:Contributions/Boilingpot"/>
	<updated>2026-10-10T02:56:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2722</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2722"/>
		<updated>2022-02-03T23:08:42Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
===Images===&lt;br /&gt;
Images are contained in &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; archives. These archives are documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here], [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here] and [https://github.com/david47k/mmex here].&lt;br /&gt;
It is recommended to extract them with Aluigi&amp;#039;s [http://aluigi.altervista.org/quickbms.htm Millionaire3 script].&lt;br /&gt;
&lt;br /&gt;
Extraction should result in a series of named files, most or all with the &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; extension. Open them in [https://github.com/puggsoy/tiledggd-pe- TiledGGD] to take a look.&lt;br /&gt;
&lt;br /&gt;
These .PICT files will come in several different variations:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Uncompressed:&amp;#039;&amp;#039;&amp;#039; Images that come in uncompressed, 32 bits/pixel ARGB format. You can convert them into PNG with [https://paste.gg/p/anonymous/de3b499381c14fca86d024038a782ea0 this Python script] by Racoon Sam (which has comments added by myself).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transparency Compressed:&amp;#039;&amp;#039;&amp;#039; Images with a &amp;quot;swirled&amp;quot; appearance, despite having recognizable aspects. Their compression is a type of transparency-only compression. You can convert them into PNG with [https://paste.gg/p/anonymous/aed4d92adb5d4eaa9d760c76dfb5a962 this Python script], also by Raccoon Sam.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Compressed:&amp;#039;&amp;#039;&amp;#039; [https://ctrl-v.app/1TU2q8H Format notes.]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;quot;Gray&amp;quot; Uncompressed:&amp;#039;&amp;#039;&amp;#039; 8 bits/pixel with a 4 bytes/color RGB header.&lt;br /&gt;
&lt;br /&gt;
View a visual example of all of these formats [https://files.catbox.moe/umzoky.png here].&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
Sounds are  &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files contained in &amp;#039;&amp;#039;&amp;#039;.MMS&amp;#039;&amp;#039;&amp;#039; archives, which are documented [https://zenhax.com/viewtopic.php?t=12338 here]. They can be extracted with the [http://aluigi.altervista.org/quickbms.htm Millionaire3 script].&lt;br /&gt;
&lt;br /&gt;
These .AIF files are not your &amp;quot;standard&amp;quot; .AIF files. Their format is unknown, but if you import them as raw data into Audacity as mono, 8-bit signed integer PCM at 22050 Hz they sound recognizable. [https://github.com/dressupgeekout/lunapurpura/blob/8171b52a6443924d7e6c06e25e5d105e92b5f67f/techdoc/aif.md Possibly more documentation.]&lt;br /&gt;
&lt;br /&gt;
===Films===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039; files contain a single &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file. Curiously, they are not true FMVs/videos like you would expect. Instead, they are a container format for image files and likely sound files as well. Some of the image files are uncompressed and some are transparency compressed. It is not yet possible to extract them individually.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
* Furby: Big Fun in Furbyland&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Shrek: Game Land Activity Center&lt;br /&gt;
* [https://www.mobygames.com/company/imagebuilder-software-inc Various other games developed by Imagebuilder]&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyHKP.MMP = Ambient effects, ending and credits.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyLCP.MMP = Images from Lord Licorice&amp;#039;s activities.&lt;br /&gt;
* CandyLWP.MMP = Images from Princess Lolly&amp;#039;s activities.&lt;br /&gt;
* CandyMSP.MMP = Images from Gloppy&amp;#039;s activities.&lt;br /&gt;
* CandyPc2.MMP = Still images of the game board.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
* CandyPTP.MMP = Images from Plumpy&amp;#039;s activities.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2720</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2720"/>
		<updated>2022-02-02T19:15:33Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
===Images===&lt;br /&gt;
Images are contained in &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; archives. These archives are documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here], [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here] and [https://github.com/david47k/mmex here].&lt;br /&gt;
It is recommended to extract them with Aluigi&amp;#039;s [http://aluigi.altervista.org/quickbms.htm Millionaire3 script].&lt;br /&gt;
&lt;br /&gt;
Extraction should result in a series of named files, most or all with the &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; extension. Open them in [https://github.com/puggsoy/tiledggd-pe- TiledGGD] to take a look.&lt;br /&gt;
&lt;br /&gt;
These .PICT files will come in several different variations:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Uncompressed:&amp;#039;&amp;#039;&amp;#039; Images that come in uncompressed, 32 bits/pixel ARGB format. You can convert them into PNG with [https://paste.gg/p/anonymous/de3b499381c14fca86d024038a782ea0 this Python script] by Racoon Sam (which has comments added by myself).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transparency Compressed:&amp;#039;&amp;#039;&amp;#039; Images with a &amp;quot;swirled&amp;quot; appearance, despite having recognizable aspects. Their compression is a type of transparency-only compression. You can convert them into PNG with [https://paste.gg/p/anonymous/aed4d92adb5d4eaa9d760c76dfb5a962 this Python script], also by Raccoon Sam.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Compressed:&amp;#039;&amp;#039;&amp;#039; Compressed images whose compression type is unknown.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;quot;Gray&amp;quot; Uncompressed:&amp;#039;&amp;#039;&amp;#039; Uncompressed images with a gray appearance. Their image data is 8 bits/pixel with a 4 bytes/color RGB header.&lt;br /&gt;
&lt;br /&gt;
View a visual example of all of these formats [https://files.catbox.moe/umzoky.png here].&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
Sounds are contained in &amp;#039;&amp;#039;&amp;#039;.MMS&amp;#039;&amp;#039;&amp;#039; archives, which are documented [https://zenhax.com/viewtopic.php?t=12338 here]. They can also be extracted with the [http://aluigi.altervista.org/quickbms.htm Millionaire3 script]. The result of extracting should be &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
&lt;br /&gt;
These .AIF files are not your &amp;quot;standard&amp;quot; .AIF files, however, and can&amp;#039;t be played in an audio player. Their format is unknown, but if you import them as raw data into Audacity as Signed 8-bit PCM and turn the sample rate way down, you should hear something recognizable.&lt;br /&gt;
&lt;br /&gt;
===Films===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039; files contain a single &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file. Curiously, they are not true FMVs/videos like you would expect. Instead, they are a container format for image and sound files. Some of the image files are uncompressed and some are transparency compressed. It is not yet possible to extract these individually&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyHKP.MMP = Ambient effects, ending and credits.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyLCP.MMP = Images from Lord Licorice&amp;#039;s activities.&lt;br /&gt;
* CandyLWP.MMP = Images from Princess Lolly&amp;#039;s activities.&lt;br /&gt;
* CandyMSP.MMP = Images from Gloppy&amp;#039;s activities.&lt;br /&gt;
* CandyPc2.MMP = Still images of the game board.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
* CandyPTP.MMP = Images from Plumpy&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
* Furby: Big Fun in Furbyland&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Shrek: Game Land Activity Center&lt;br /&gt;
* [https://www.mobygames.com/company/imagebuilder-software-inc Various other games developed by Imagebuilder]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2667</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2667"/>
		<updated>2021-09-10T20:28:00Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
===Images===&lt;br /&gt;
Images are contained in &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; archives. These archives are documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here], [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here] and [https://github.com/david47k/mmex here].&lt;br /&gt;
It is recommended to extract them with Aluigi&amp;#039;s [http://aluigi.altervista.org/quickbms.htm Millionaire3 script].&lt;br /&gt;
&lt;br /&gt;
Extraction should result in a series of named files, most or all with the &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; extension. When you have them, open them in [https://github.com/puggsoy/tiledggd-pe- TiledGGD] to take a look at them.&lt;br /&gt;
&lt;br /&gt;
These .PICT files will come in several different variations:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Uncompressed:&amp;#039;&amp;#039;&amp;#039; Images that come in uncompressed, 32 bits/pixel ARGB format. You can convert them into PNG with [https://paste.gg/p/anonymous/de3b499381c14fca86d024038a782ea0 this Python script] by Racoon Sam (which has comments added by myself).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transparency Compressed:&amp;#039;&amp;#039;&amp;#039; Images with a distinctly &amp;quot;swirled&amp;quot; or garbled appearance, despite having the correct colors or recognizable aspects. Their compression type is unknown, but is a type of transparency-only compression.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Compressed:&amp;#039;&amp;#039;&amp;#039; Compressed images whose compression type is unknown.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;quot;Gray&amp;quot; Uncompressed:&amp;#039;&amp;#039;&amp;#039; Uncompressed images with a gray appearance, without any of the colors it shows up with in-game. These images have a header to them that may contain the image&amp;#039;s true colors.&lt;br /&gt;
&lt;br /&gt;
View a visual example of all of these formats [https://files.catbox.moe/umzoky.png here].&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
Sounds are contained in &amp;#039;&amp;#039;&amp;#039;.MMS&amp;#039;&amp;#039;&amp;#039; archives, which are documented [https://zenhax.com/viewtopic.php?t=12338 here]. They can also be extracted with the [http://aluigi.altervista.org/quickbms.htm Millionaire3 script]. The result of extracting should be &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
&lt;br /&gt;
These .AIF files are not your &amp;quot;standard&amp;quot; .AIF files, however, and can&amp;#039;t be played in an audio player. Their format is unknown, but if you import them as raw data into Audacity as Signed 8-bit PCM and turn the sample rate way down, you should hear something recognizable.&lt;br /&gt;
&lt;br /&gt;
===Films===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039; files contain a single &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file. Curiously, they are not true FMVs/videos like you would expect. Instead, they are a container format for image and sound files. Some of the image files are uncompressed and some are transparency compressed. It is not yet possible to extract these individually&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyHKP.MMP = Ambient effects, ending and credits.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyLCP.MMP = Images from Lord Licorice&amp;#039;s activities.&lt;br /&gt;
* CandyLWP.MMP = Images from Princess Lolly&amp;#039;s activities.&lt;br /&gt;
* CandyMSP.MMP = Images from Gloppy&amp;#039;s activities.&lt;br /&gt;
* CandyPc2.MMP = Still images of the game board.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
* CandyPTP.MMP = Images from Plumpy&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
* Furby: Big Fun in Furbyland&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Shrek: Game Land Activity Center&lt;br /&gt;
* [https://www.mobygames.com/company/imagebuilder-software-inc Various other games developed by Imagebuilder]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2666</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2666"/>
		<updated>2021-09-10T20:24:14Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
===Images===&lt;br /&gt;
Images are contained in &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; archives. These archives are documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here], [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here] and [https://github.com/david47k/mmex here].&lt;br /&gt;
It is recommended to extract them with Aluigi&amp;#039;s [http://aluigi.altervista.org/quickbms.htm Millionaire3 script].&lt;br /&gt;
&lt;br /&gt;
Extraction should result in a series of named files, most or all with the &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; extension. When you have them, open them in [https://github.com/puggsoy/tiledggd-pe- TiledGGD] to take a look at them.&lt;br /&gt;
&lt;br /&gt;
These .PICT files will come in several different variations:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Uncompressed:&amp;#039;&amp;#039;&amp;#039; Images that come in uncompressed, 32 bits/pixel ARGB format. You can convert them into PNG with [https://paste.gg/p/anonymous/de3b499381c14fca86d024038a782ea0 this Python script] by Racoon Sam.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transparency Compressed:&amp;#039;&amp;#039;&amp;#039; Images with a distinctly &amp;quot;swirled&amp;quot; or garbled appearance, despite having the correct colors or recognizable aspects. Their compression type is unknown.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Compressed:&amp;#039;&amp;#039;&amp;#039; Compressed images whose compression type is unknown.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;quot;Gray&amp;quot; Uncompressed:&amp;#039;&amp;#039;&amp;#039; Uncompressed images with a gray appearance, without any of the colors it shows up with in-game. These images have a header to them that may contain the image&amp;#039;s true colors.&lt;br /&gt;
&lt;br /&gt;
View a visual example of all of these formats [https://files.catbox.moe/umzoky.png here].&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
Sounds are contained in &amp;#039;&amp;#039;&amp;#039;.MMS&amp;#039;&amp;#039;&amp;#039; archives, which are documented [https://zenhax.com/viewtopic.php?t=12338 here]. They can also be extracted with the [http://aluigi.altervista.org/quickbms.htm Millionaire3 script]. The result of extracting should be &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
&lt;br /&gt;
These .AIF files are not your &amp;quot;standard&amp;quot; .AIF files, however, and can&amp;#039;t be played in an audio player. Their format is unknown, but if you import them as raw data into Audacity as Signed 8-bit PCM and turn the sample rate way down, you should hear something recognizable.&lt;br /&gt;
&lt;br /&gt;
===Films===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039; files contain a single &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file. Curiously, they are not true FMVs/videos like you would expect. Instead, they are a container format for image and sound files. Some of the image files are uncompressed and some are transparency compressed. It is not yet possible to extract these individually&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyHKP.MMP = Ambient effects, ending and credits.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyLCP.MMP = Images from Lord Licorice&amp;#039;s activities.&lt;br /&gt;
* CandyLWP.MMP = Images from Princess Lolly&amp;#039;s activities.&lt;br /&gt;
* CandyMSP.MMP = Images from Gloppy&amp;#039;s activities.&lt;br /&gt;
* CandyPc2.MMP = Still images of the game board.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
* CandyPTP.MMP = Images from Plumpy&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
* Furby: Big Fun in Furbyland&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Shrek: Game Land Activity Center&lt;br /&gt;
* [https://www.mobygames.com/company/imagebuilder-software-inc Various other games developed by Imagebuilder]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2639</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2639"/>
		<updated>2021-04-08T21:51:52Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
File Formats:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Pictures&amp;quot; image archive, containing &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Sounds&amp;quot; sounds archive, containing &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Films&amp;quot; video file, containing a &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; format is documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here] and [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here].&lt;br /&gt;
&lt;br /&gt;
The format is supported in Game Extractor, and when extracted through it, the result is a series of what are likely compressed image files. GE doesn&amp;#039;t give them their internal names when extracting. The [https://github.com/david47k/mmex mmex tool] and the [http://aluigi.altervista.org/quickbms.htm Millionaire3 script] also support the format.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039; format is documented [https://zenhax.com/viewtopic.php?t=12338 here].&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyHKP.MMP = Ambient effects, ending and credits.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyLCP.MMP = Images from Lord Licorice&amp;#039;s activities.&lt;br /&gt;
* CandyLWP.MMP = Images from Princess Lolly&amp;#039;s activities.&lt;br /&gt;
* CandyMSP.MMP = Images from Gloppy&amp;#039;s activities.&lt;br /&gt;
* CandyPc2.MMP = Still images of the game board.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
* CandyPTP.MMP = Images from Plumpy&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
* Furby: Big Fun in Furbyland&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Shrek: Game Land Activity Center&lt;br /&gt;
* [https://www.mobygames.com/company/imagebuilder-software-inc Various other games developed by Imagebuilder]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2636</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2636"/>
		<updated>2021-04-06T20:00:22Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m going to keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m going to focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (2 zips, one containing the essentials and the other containing all assets). These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date. Also, be sure to read the readme file in the HedgeEdit DL!&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/drive/folders/1kC9ri9mauTIRVbHYfowleC1HJtlDSgP_?usp=sharing HedgeEdit] [V5 UPDATED 4/6/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re going to want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘OK’. This will open &amp;#039;&amp;#039;another&amp;#039;&amp;#039; dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
===HedgeEdit Controls===&lt;br /&gt;
* Right Click + WASD/Movement Arrows:  Move Camera (+Ctrl for slow movement, +Shift for fast movement)&lt;br /&gt;
* Right Click + Mouse Movement: Aim Camera&lt;br /&gt;
* Ctrl+S: Save Set Data&lt;br /&gt;
* Ctrl+Shift+S: Save All (Set Data &amp;amp; Materials)&lt;br /&gt;
* Ctrl+A: Select All&lt;br /&gt;
* Ctrl+D: Select None&lt;br /&gt;
* Ctrl+X: Cut selected&lt;br /&gt;
* Del: Delete selected&lt;br /&gt;
* Ctrl+F: View Selected&lt;br /&gt;
* Ctrl+N: New&lt;br /&gt;
* Ctrl+O: Open&lt;br /&gt;
* Alt+F4: Exit (Close HedgeEdit)&lt;br /&gt;
* Ctrl+Click multiple objects: Select multiple objects&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (anything that uses the default checkerboard cube). You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You &amp;#039;&amp;#039;should&amp;#039;&amp;#039; be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are going to start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Enemies &amp;amp; Stage Objects==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| ID of the badnik&amp;#039;s path.&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Walker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See Egg Walker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Stage Objects===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d recommend just using Line though because it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualizing the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll, based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Similar to the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that functions similarly to the Infinite object in Capital City, but without Infinite. Keep in mind that a second RGB table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as placeholders for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but these objects control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Laser Turrets in Metropolis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LaserLength&lt;br /&gt;
| The length of the laser beam.&lt;br /&gt;
|-&lt;br /&gt;
| FireType&lt;br /&gt;
| 0 = All lasers fire at the same time. 1 = Each laser fires depending on the phase value. 2 = Same as 1, but inversed.&lt;br /&gt;
|-&lt;br /&gt;
| turretNum&lt;br /&gt;
| The number of turrets to place.&lt;br /&gt;
|-&lt;br /&gt;
| firstSpeed&lt;br /&gt;
| The speed of the turret’s laser during its first attack.&lt;br /&gt;
|-&lt;br /&gt;
| secondSpeed&lt;br /&gt;
| The speed of the turret’s laser during its second attack.&lt;br /&gt;
|-&lt;br /&gt;
| Phase&lt;br /&gt;
| The phase of the turret&amp;#039;s movement.&lt;br /&gt;
|-&lt;br /&gt;
| ShotPhase&lt;br /&gt;
| The phase of the turret&amp;#039;s attack.&lt;br /&gt;
|-&lt;br /&gt;
| BeforeShotWait&lt;br /&gt;
| How long to wait before firing.&lt;br /&gt;
|-&lt;br /&gt;
| AfterShotWait&lt;br /&gt;
| How long to wait before the turret deactivates once it fires.&lt;br /&gt;
|-&lt;br /&gt;
| waitDownKeep&lt;br /&gt;
| How long to keep the turret disabled before it activates again.&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| The distance between each turret.&lt;br /&gt;
|-&lt;br /&gt;
| shotNum&lt;br /&gt;
| How many times this object should fire.&lt;br /&gt;
|-&lt;br /&gt;
| checkBarricade&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Likely detects if something is blocking its view?&lt;br /&gt;
|-&lt;br /&gt;
| Cycle&lt;br /&gt;
| Whether or not the turret’s lasers should cycle.&lt;br /&gt;
|-&lt;br /&gt;
| eventDriven&lt;br /&gt;
| Whether this object is active by default, or must be triggered by something first.&lt;br /&gt;
|-&lt;br /&gt;
| noFrame&lt;br /&gt;
| Whether or not to disable the turret’s frame. (IDK why this exists lol)&lt;br /&gt;
|-&lt;br /&gt;
| hitEffect&lt;br /&gt;
| Whether or not to play the particle effect for being hit?&lt;br /&gt;
|-&lt;br /&gt;
| Sideview&lt;br /&gt;
| Hhether or not this turret is in 2D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Size&lt;br /&gt;
| The size of the platform. This varies between 2D and 3D.&lt;br /&gt;
|-&lt;br /&gt;
| VisualType&lt;br /&gt;
| The model to use. Only works in Guardian Rock and Arsenal Pyramid, but can probably be set up for other stages.&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| How the platform will move. 0 = No movement. 1 = Uses MoveVector parameter. 2 = Uses a SetPath.&lt;br /&gt;
|-&lt;br /&gt;
| PatrolType&lt;br /&gt;
| How the floor moves. See object description in-editor for elaboration.&lt;br /&gt;
|-&lt;br /&gt;
| TimeType&lt;br /&gt;
| 0 = This object is timed to itself. 1 = This object is timed to the stage timer.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Whether this object is active by default or must be triggered first.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether or not this object is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| IsOneWay&lt;br /&gt;
| Whether or not you can jump through this floor from below.&lt;br /&gt;
|-&lt;br /&gt;
| DoesFall&lt;br /&gt;
| Whether or not this object falls after standing on it. (Usually this takes 3 seconds, but if you really want it to fall faster, have it set to move and trigger it using a switchvolume once you’re ready.)&lt;br /&gt;
|-&lt;br /&gt;
| DoesBreak&lt;br /&gt;
| Whether or not this platform can be broken from taking damage (Iron Fortress).&lt;br /&gt;
|-&lt;br /&gt;
| IsSyncRot&lt;br /&gt;
| Whether or not to sync this platform’s movement to the rotation of the path.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothMove&lt;br /&gt;
| Whether or not this floor’s movement is smoothed (It basically accelerates/decelerates if set to true).&lt;br /&gt;
|-&lt;br /&gt;
| IsReverse&lt;br /&gt;
| Whether or not this floor&amp;#039;s movement is reversed.&lt;br /&gt;
|-&lt;br /&gt;
| IsPressDead&lt;br /&gt;
| Whether or not this platform can crush you.&lt;br /&gt;
|-&lt;br /&gt;
| MoveVector&lt;br /&gt;
| How far you want this platform to move on an axis.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| The path this floor uses if MoveType is set to 2.&lt;br /&gt;
|-&lt;br /&gt;
| LocatorList&lt;br /&gt;
| I don’t think this does anything.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTime&lt;br /&gt;
| How long this platform waits after it reaches its destination before moving again.&lt;br /&gt;
|-&lt;br /&gt;
| InitialDelay&lt;br /&gt;
| How long to wait before this object starts moving.&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| The speed of this floor’s movement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or its function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase value to 1 will make the object behave as though it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Camera&lt;br /&gt;
| Has two values, ID and GroupID, which as you&amp;#039;d expect need to match the ID and GroupID of the camera object you want to assign.&lt;br /&gt;
|-&lt;br /&gt;
| Priority&lt;br /&gt;
| When volumes intersect the camera with a higher Priority value will be used over the one with a lower value.&lt;br /&gt;
|-&lt;br /&gt;
| UseHighPriority&lt;br /&gt;
| I believe if set to True the camera will override all other cameras with UseHighPriority set to False regardless of their priority.&lt;br /&gt;
|-&lt;br /&gt;
| EaseTimeEnter and EaseTimeLeave&lt;br /&gt;
| Controls how long it takes to transition to and away from the camera when entering/exiting the volume.&lt;br /&gt;
|-&lt;br /&gt;
| InterpolateTypeEnter and InterpolateTypeLeave&lt;br /&gt;
| These control how the game interpolates the movement as it transitions to/away from the camera. I can&amp;#039;t really describe the difference between the interpolation types but they do affect the camera&amp;#039;s movement somewhat.&lt;br /&gt;
|-&lt;br /&gt;
| DefaultState&lt;br /&gt;
| If set to 1, the camera won&amp;#039;t activate until a SwitchVolume or other type of event-triggering object sends a signal to turn it on first.&lt;br /&gt;
|-&lt;br /&gt;
| Action&lt;br /&gt;
| If set to 0 the game will let you enter and exit the volume as many times as you please; if set to 1 you can only activate it once and then never again upon exiting the volume. If the volume is triggered by an event, it can be re-activated each time the event-triggering object sends a signal to it.&lt;br /&gt;
|-&lt;br /&gt;
| Shape&lt;br /&gt;
| Determines whether the volume will be shaped like a box (which is what you&amp;#039;re going to want to use 99% of the time), sphere or cylinder.&lt;br /&gt;
|-&lt;br /&gt;
| BasePoint&lt;br /&gt;
| Determines the origin point of the volume. 0 sets it to be in the center while 1 sets it to be at the start of the object&amp;#039;s Z plane.&lt;br /&gt;
|-&lt;br /&gt;
| Width, Height and Depth&lt;br /&gt;
| Controls the size of the volume in distance units. There&amp;#039;s no way to preview the volume size in HedgeEdit so you have to guess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses (aside from its BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Somewhat hard to explain, but it controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly. If it&amp;#039;s set to a higher value it will follow the path more exactly, and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can just use Object Path, it doesn’t really matter), and grind path which—you guessed it—is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use a value of 1, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Similar to a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2635</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2635"/>
		<updated>2021-04-06T01:14:25Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m going to keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m going to focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V4 UPDATED 4/5/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re going to want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘OK’. This will open &amp;#039;&amp;#039;another&amp;#039;&amp;#039; dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (anything that uses the default checkerboard cube). You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You &amp;#039;&amp;#039;should&amp;#039;&amp;#039; be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are going to start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Enemies &amp;amp; Stage Objects==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Walker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See Egg Walker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Stage Objects===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d recommend just using Line though because it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualizing the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll, based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Similar to the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that functions similarly to the Infinite object in Capital City, but without Infinite. Keep in mind that a second RGB table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as placeholders for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but these objects control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Laser Turrets in Metropolis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LaserLength&lt;br /&gt;
| The length of the laser beam.&lt;br /&gt;
|-&lt;br /&gt;
| FireType&lt;br /&gt;
| 0 = All lasers fire at the same time. 1 = Each laser fires depending on the phase value. 2 = Same as 1, but inversed.&lt;br /&gt;
|-&lt;br /&gt;
| turretNum&lt;br /&gt;
| The number of turrets to place.&lt;br /&gt;
|-&lt;br /&gt;
| firstSpeed&lt;br /&gt;
| The speed of the turret’s laser during its first attack.&lt;br /&gt;
|-&lt;br /&gt;
| secondSpeed&lt;br /&gt;
| The speed of the turret’s laser during its second attack.&lt;br /&gt;
|-&lt;br /&gt;
| Phase&lt;br /&gt;
| The phase of the turret&amp;#039;s movement.&lt;br /&gt;
|-&lt;br /&gt;
| ShotPhase&lt;br /&gt;
| The phase of the turret&amp;#039;s attack.&lt;br /&gt;
|-&lt;br /&gt;
| BeforeShotWait&lt;br /&gt;
| How long to wait before firing.&lt;br /&gt;
|-&lt;br /&gt;
| AfterShotWait&lt;br /&gt;
| How long to wait before the turret deactivates once it fires.&lt;br /&gt;
|-&lt;br /&gt;
| waitDownKeep&lt;br /&gt;
| How long to keep the turret disabled before it activates again.&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| The distance between each turret.&lt;br /&gt;
|-&lt;br /&gt;
| shotNum&lt;br /&gt;
| How many times this object should fire.&lt;br /&gt;
|-&lt;br /&gt;
| checkBarricade&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Likely detects if something is blocking its view?&lt;br /&gt;
|-&lt;br /&gt;
| Cycle&lt;br /&gt;
| Whether or not the turret’s lasers should cycle.&lt;br /&gt;
|-&lt;br /&gt;
| eventDriven&lt;br /&gt;
| Whether this object is active by default, or must be triggered by something first.&lt;br /&gt;
|-&lt;br /&gt;
| noFrame&lt;br /&gt;
| Whether or not to disable the turret’s frame. (IDK why this exists lol)&lt;br /&gt;
|-&lt;br /&gt;
| hitEffect&lt;br /&gt;
| Whether or not to play the particle effect for being hit?&lt;br /&gt;
|-&lt;br /&gt;
| Sideview&lt;br /&gt;
| Hhether or not this turret is in 2D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Size&lt;br /&gt;
| The size of the platform. This varies between 2D and 3D.&lt;br /&gt;
|-&lt;br /&gt;
| VisualType&lt;br /&gt;
| The model to use. Only works in Guardian Rock and Arsenal Pyramid, but can probably be set up for other stages.&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| How the platform will move. 0 = No movement. 1 = Uses MoveVector parameter. 2 = Uses a SetPath.&lt;br /&gt;
|-&lt;br /&gt;
| PatrolType&lt;br /&gt;
| How the floor moves. See object description in-editor for elaboration.&lt;br /&gt;
|-&lt;br /&gt;
| TimeType&lt;br /&gt;
| 0 = This object is timed to itself. 1 = This object is timed to the stage timer.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Whether this object is active by default or must be triggered first.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether or not this object is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| IsOneWay&lt;br /&gt;
| Whether or not you can jump through this floor from below.&lt;br /&gt;
|-&lt;br /&gt;
| DoesFall&lt;br /&gt;
| Whether or not this object falls after standing on it. (Usually this takes 3 seconds, but if you really want it to fall faster, have it set to move and trigger it using a switchvolume once you’re ready.)&lt;br /&gt;
|-&lt;br /&gt;
| DoesBreak&lt;br /&gt;
| Whether or not this platform can be broken from taking damage (Iron Fortress).&lt;br /&gt;
|-&lt;br /&gt;
| IsSyncRot&lt;br /&gt;
| Whether or not to sync this platform’s movement to the rotation of the path.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothMove&lt;br /&gt;
| Whether or not this floor’s movement is smoothed (It basically accelerates/decelerates if set to true).&lt;br /&gt;
|-&lt;br /&gt;
| IsReverse&lt;br /&gt;
| Whether or not this floor&amp;#039;s movement is reversed.&lt;br /&gt;
|-&lt;br /&gt;
| IsPressDead&lt;br /&gt;
| Whether or not this platform can crush you.&lt;br /&gt;
|-&lt;br /&gt;
| MoveVector&lt;br /&gt;
| How far you want this platform to move on an axis.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| The path this floor uses if MoveType is set to 2.&lt;br /&gt;
|-&lt;br /&gt;
| LocatorList&lt;br /&gt;
| I don’t think this does anything.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTime&lt;br /&gt;
| How long this platform waits after it reaches its destination before moving again.&lt;br /&gt;
|-&lt;br /&gt;
| InitialDelay&lt;br /&gt;
| How long to wait before this object starts moving.&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| The speed of this floor’s movement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or its function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase value to 1 will make the object behave as though it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Camera&lt;br /&gt;
| Has two values, ID and GroupID, which as you&amp;#039;d expect need to match the ID and GroupID of the camera object you want to assign.&lt;br /&gt;
|-&lt;br /&gt;
| Priority&lt;br /&gt;
| When volumes intersect the camera with a higher Priority value will be used over the one with a lower value.&lt;br /&gt;
|-&lt;br /&gt;
| UseHighPriority&lt;br /&gt;
| I believe if set to True the camera will override all other cameras with UseHighPriority set to False regardless of their priority.&lt;br /&gt;
|-&lt;br /&gt;
| EaseTimeEnter and EaseTimeLeave&lt;br /&gt;
| Controls how long it takes to transition to and away from the camera when entering/exiting the volume.&lt;br /&gt;
|-&lt;br /&gt;
| InterpolateTypeEnter and InterpolateTypeLeave&lt;br /&gt;
| These control how the game interpolates the movement as it transitions to/away from the camera. I can&amp;#039;t really describe the difference between the interpolation types but they do affect the camera&amp;#039;s movement somewhat.&lt;br /&gt;
|-&lt;br /&gt;
| DefaultState&lt;br /&gt;
| If set to 1, the camera won&amp;#039;t activate until a SwitchVolume or other type of event-triggering object sends a signal to turn it on first.&lt;br /&gt;
|-&lt;br /&gt;
| Action&lt;br /&gt;
| If set to 0 the game will let you enter and exit the volume as many times as you please; if set to 1 you can only activate it once and then never again upon exiting the volume. If the volume is triggered by an event, it can be re-activated each time the event-triggering object sends a signal to it.&lt;br /&gt;
|-&lt;br /&gt;
| Shape&lt;br /&gt;
| Determines whether the volume will be shaped like a box (which is what you&amp;#039;re going to want to use 99% of the time), sphere or cylinder.&lt;br /&gt;
|-&lt;br /&gt;
| BasePoint&lt;br /&gt;
| Determines the origin point of the volume. 0 sets it to be in the center while 1 sets it to be at the start of the object&amp;#039;s Z plane.&lt;br /&gt;
|-&lt;br /&gt;
| Width, Height and Depth&lt;br /&gt;
| Controls the size of the volume in distance units. There&amp;#039;s no way to preview the volume size in HedgeEdit so you have to guess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses (aside from its BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Somewhat hard to explain, but it controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly. If it&amp;#039;s set to a higher value it will follow the path more exactly, and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can just use Object Path, it doesn’t really matter), and grind path which—you guessed it—is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use a value of 1, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Similar to a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2634</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2634"/>
		<updated>2021-04-06T00:55:04Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m going to keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m going to focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re going to want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘OK’. This will open &amp;#039;&amp;#039;another&amp;#039;&amp;#039; dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (anything that uses the default checkerboard cube). You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You &amp;#039;&amp;#039;should&amp;#039;&amp;#039; be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are going to start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Enemies &amp;amp; Stage Objects==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Stage Objects===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d recommend just using Line though because it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualizing the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Similar to the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that functions similarly to the Infinite object in Capital City, but without Infinite. Keep in mind that a second RGB table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but these objects control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Laser Turrets in Metropolis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LaserLength&lt;br /&gt;
| The length of the laser beam.&lt;br /&gt;
|-&lt;br /&gt;
| FireType&lt;br /&gt;
| 0 = All lasers fire at the same time. 1 = Each laser fires depending on the phase value. 2 = Same as 1, but inversed.&lt;br /&gt;
|-&lt;br /&gt;
| turretNum&lt;br /&gt;
| The number of turrets to place.&lt;br /&gt;
|-&lt;br /&gt;
| firstSpeed&lt;br /&gt;
| The speed of the turret’s laser during its first attack.&lt;br /&gt;
|-&lt;br /&gt;
| secondSpeed&lt;br /&gt;
| The speed of the turret’s laser during its second attack.&lt;br /&gt;
|-&lt;br /&gt;
| Phase&lt;br /&gt;
| The phase of the turret&amp;#039;s movement.&lt;br /&gt;
|-&lt;br /&gt;
| ShotPhase&lt;br /&gt;
| The phase of the turret&amp;#039;s attack.&lt;br /&gt;
|-&lt;br /&gt;
| BeforeShotWait&lt;br /&gt;
| How long to wait before firing.&lt;br /&gt;
|-&lt;br /&gt;
| AfterShotWait&lt;br /&gt;
| How long to wait before the turret deactivates once it fires.&lt;br /&gt;
|-&lt;br /&gt;
| waitDownKeep&lt;br /&gt;
| How long to keep the turret disabled before it activates again.&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| The distance between each turret.&lt;br /&gt;
|-&lt;br /&gt;
| shotNum&lt;br /&gt;
| How many times this object should fire.&lt;br /&gt;
|-&lt;br /&gt;
| checkBarricade&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Likely detects if something is blocking its view?&lt;br /&gt;
|-&lt;br /&gt;
| Cycle&lt;br /&gt;
| Whether or not the turret’s lasers should cycle.&lt;br /&gt;
|-&lt;br /&gt;
| eventDriven&lt;br /&gt;
| Whether this object is active by default, or must be triggered by something first.&lt;br /&gt;
|-&lt;br /&gt;
| noFrame&lt;br /&gt;
| Whether or not to disable the turret’s frame. (IDK why this exists lol)&lt;br /&gt;
|-&lt;br /&gt;
| hitEffect&lt;br /&gt;
| Whether or not to play the particle effect for being hit?&lt;br /&gt;
|-&lt;br /&gt;
| Sideview&lt;br /&gt;
| Hhether or not this turret is in 2D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Size&lt;br /&gt;
| The size of the platform. This varies between 2D and 3D.&lt;br /&gt;
|-&lt;br /&gt;
| VisualType&lt;br /&gt;
| The model to use. Only works in Guardian Rock and Arsenal Pyramid, but can probably be set up for other stages.&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| How the platform will move. 0 = No movement. 1 = Uses MoveVector parameter. 2 = Uses a SetPath.&lt;br /&gt;
|-&lt;br /&gt;
| PatrolType&lt;br /&gt;
| How the floor moves. See object description in-editor for elaboration.&lt;br /&gt;
|-&lt;br /&gt;
| TimeType&lt;br /&gt;
| 0 = This object is timed to itself. 1 = This object is timed to the stage timer.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Whether this object is active by default or must be triggered first.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether or not this object is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| IsOneWay&lt;br /&gt;
| Whether or not you can jump through this floor from below.&lt;br /&gt;
|-&lt;br /&gt;
| DoesFall&lt;br /&gt;
| Whether or not this object falls after standing on it. (Usually this takes 3 seconds, but if you really want it to fall faster, have it set to move and trigger it using a switchvolume once you’re ready.)&lt;br /&gt;
|-&lt;br /&gt;
| DoesBreak&lt;br /&gt;
| Whether or not this platform can be broken from taking damage (Iron Fortress).&lt;br /&gt;
|-&lt;br /&gt;
| IsSyncRot&lt;br /&gt;
| Whether or not to sync this platform’s movement to the rotation of the path.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothMove&lt;br /&gt;
| Whether or not this floor’s movement is smoothed (It basically accelerates/decelerates if set to true).&lt;br /&gt;
|-&lt;br /&gt;
| IsReverse&lt;br /&gt;
| Whether or not this floor&amp;#039;s movement is reversed.&lt;br /&gt;
|-&lt;br /&gt;
| IsPressDead&lt;br /&gt;
| Whether or not this platform can crush you.&lt;br /&gt;
|-&lt;br /&gt;
| MoveVector&lt;br /&gt;
| How far you want this platform to move on an axis.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| The path this floor uses if MoveType is set to 2.&lt;br /&gt;
|-&lt;br /&gt;
| LocatorList&lt;br /&gt;
| I don’t think this does anything.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTime&lt;br /&gt;
| How long this platform waits after it reaches its destination before moving again.&lt;br /&gt;
|-&lt;br /&gt;
| InitialDelay&lt;br /&gt;
| How long to wait before this object starts moving.&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| The speed of this floor’s movement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Camera&lt;br /&gt;
| Has two values, ID and GroupID, which as you&amp;#039;d expect need to match the ID and GroupID of the camera object you want to assign.&lt;br /&gt;
|-&lt;br /&gt;
| Priority&lt;br /&gt;
| When volumes intersect the camera with a higher Priority value will be used over the one with a lower value.&lt;br /&gt;
|-&lt;br /&gt;
| UseHighPriority&lt;br /&gt;
| I believe if set to True the camera will override all other cameras with UseHighPriority set to False regardless of their priority.&lt;br /&gt;
|-&lt;br /&gt;
| EaseTimeEnter and EaseTimeLeave&lt;br /&gt;
| Controls how long it takes to transition to and away from the camera when entering/exiting the volume.&lt;br /&gt;
|-&lt;br /&gt;
| InterpolateTypeEnter and InterpolateTypeLeave&lt;br /&gt;
| These control how the game interpolates the movement as it transitions to/away from the camera. I can&amp;#039;t really describe the difference between the interpolation types but they do affect the camera&amp;#039;s movement somewhat.&lt;br /&gt;
|-&lt;br /&gt;
| DefaultState&lt;br /&gt;
| If set to 1, the camera won&amp;#039;t activate until a SwitchVolume or other type of event-triggering object sends a signal to turn it on first.&lt;br /&gt;
|-&lt;br /&gt;
| Action&lt;br /&gt;
| If set to 0 the game will let you enter and exit the volume as many times as you please; if set to 1 you can only activate it once and then never again upon exiting the volume. If the volume is triggered by an event, it can be re-activated each time the event-triggering object sends a signal to it.&lt;br /&gt;
|-&lt;br /&gt;
| Shape&lt;br /&gt;
| Determines whether the volume will be shaped like a box (which is what you&amp;#039;re going to want to use 99% of the time), sphere or cylinder.&lt;br /&gt;
|-&lt;br /&gt;
| BasePoint&lt;br /&gt;
| Determines the origin point of the volume, 0 sets it to be in the center while 1 sets it to be at the start of the object&amp;#039;s Z plane.&lt;br /&gt;
|-&lt;br /&gt;
| Width, Height and Depth&lt;br /&gt;
| Controls the size of the volume in distance units. There&amp;#039;s no way to preview the volume size in HedgeEdit so you just kinda have to guess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Somewhat hard to explain, but it controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly. If it&amp;#039;s set to a higher value it will follow the path more exactly, and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can just use Object Path, it doesn’t really matter), and grind path which—you guessed it—is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use a value of 1, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Similar to a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2633</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2633"/>
		<updated>2021-04-06T00:41:32Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Stage Objects &amp;amp; Enemies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m going to keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m going to focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re going to want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘OK’. This will open &amp;#039;&amp;#039;another&amp;#039;&amp;#039; dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You &amp;#039;&amp;#039;should&amp;#039;&amp;#039; be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are going to start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Enemies &amp;amp; Stage Objects==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Stage Objects===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Laser Turrets in Metropolis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LaserLength&lt;br /&gt;
| The length of the laser beam.&lt;br /&gt;
|-&lt;br /&gt;
| FireType&lt;br /&gt;
| 0 = All lasers fire at the same time. 1 = Each laser fires depending on the phase value. 2 = Same as 1, but inversed.&lt;br /&gt;
|-&lt;br /&gt;
| turretNum&lt;br /&gt;
| The number of turrets to place.&lt;br /&gt;
|-&lt;br /&gt;
| firstSpeed&lt;br /&gt;
| The speed of the turret’s laser during its first attack.&lt;br /&gt;
|-&lt;br /&gt;
| secondSpeed&lt;br /&gt;
| The speed of the turret’s laser during its second attack.&lt;br /&gt;
|-&lt;br /&gt;
| Phase&lt;br /&gt;
| The phase of the turret&amp;#039;s movement.&lt;br /&gt;
|-&lt;br /&gt;
| ShotPhase&lt;br /&gt;
| The phase of the turret&amp;#039;s attack.&lt;br /&gt;
|-&lt;br /&gt;
| BeforeShotWait&lt;br /&gt;
| How long to wait before firing.&lt;br /&gt;
|-&lt;br /&gt;
| AfterShotWait&lt;br /&gt;
| How long to wait before the turret deactivates once it fires.&lt;br /&gt;
|-&lt;br /&gt;
| waitDownKeep&lt;br /&gt;
| How long to keep the turret disabled before it activates again.&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| The distance between each turret.&lt;br /&gt;
|-&lt;br /&gt;
| shotNum&lt;br /&gt;
| How many times this object should fire.&lt;br /&gt;
|-&lt;br /&gt;
| checkBarricade&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Likely detects if something is blocking its view?&lt;br /&gt;
|-&lt;br /&gt;
| Cycle&lt;br /&gt;
| Whether or not the turret’s lasers should cycle.&lt;br /&gt;
|-&lt;br /&gt;
| eventDriven&lt;br /&gt;
| Whether this object is active by default, or must be triggered by something first.&lt;br /&gt;
|-&lt;br /&gt;
| noFrame&lt;br /&gt;
| Whether or not to disable the turret’s frame. (IDK why this exists lol)&lt;br /&gt;
|-&lt;br /&gt;
| hitEffect&lt;br /&gt;
| Whether or not to play the particle effect for being hit?&lt;br /&gt;
|-&lt;br /&gt;
| Sideview&lt;br /&gt;
| Hhether or not this turret is in 2D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Size&lt;br /&gt;
| The size of the platform. This varies between 2D and 3D.&lt;br /&gt;
|-&lt;br /&gt;
| VisualType&lt;br /&gt;
| The model to use. Only works in Guardian Rock and Arsenal Pyramid, but can probably be set up for other stages.&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| How the platform will move. 0 = No movement. 1 = Uses MoveVector parameter. 2 = Uses a SetPath.&lt;br /&gt;
|-&lt;br /&gt;
| PatrolType&lt;br /&gt;
| How the floor moves. See object description in-editor for elaboration.&lt;br /&gt;
|-&lt;br /&gt;
| TimeType&lt;br /&gt;
| 0 = This object is timed to itself. 1 = This object is timed to the stage timer.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Whether this object is active by default or must be triggered first.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether or not this object is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| IsOneWay&lt;br /&gt;
| Whether or not you can jump through this floor from below.&lt;br /&gt;
|-&lt;br /&gt;
| DoesFall&lt;br /&gt;
| Whether or not this object falls after standing on it. (Usually this takes 3 seconds, but if you really want it to fall faster, have it set to move and trigger it using a switchvolume once you’re ready.)&lt;br /&gt;
|-&lt;br /&gt;
| DoesBreak&lt;br /&gt;
| Whether or not this platform can be broken from taking damage (Iron Fortress).&lt;br /&gt;
|-&lt;br /&gt;
| IsSyncRot&lt;br /&gt;
| Whether or not to sync this platform’s movement to the rotation of the path.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothMove&lt;br /&gt;
| Whether or not this floor’s movement is smoothed (It basically accelerates/decelerates if set to true).&lt;br /&gt;
|-&lt;br /&gt;
| IsReverse&lt;br /&gt;
| Whether or not this floor&amp;#039;s movement is reversed.&lt;br /&gt;
|-&lt;br /&gt;
| IsPressDead&lt;br /&gt;
| Whether or not this platform can crush you.&lt;br /&gt;
|-&lt;br /&gt;
| MoveVector&lt;br /&gt;
| How far you want this platform to move on an axis.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| The path this floor uses if MoveType is set to 2.&lt;br /&gt;
|-&lt;br /&gt;
| LocatorList&lt;br /&gt;
| I don’t think this does anything.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTime&lt;br /&gt;
| How long this platform waits after it reaches its destination before moving again.&lt;br /&gt;
|-&lt;br /&gt;
| InitialDelay&lt;br /&gt;
| How long to wait before this object starts moving.&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| The speed of this floor’s movement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Camera&lt;br /&gt;
| Has two values, ID and GroupID, which as you&amp;#039;d expect need to match the ID and GroupID of the camera object you want to assign.&lt;br /&gt;
|-&lt;br /&gt;
| Priority&lt;br /&gt;
| When volumes intersect the camera with a higher Priority value will be used over the one with a lower value.&lt;br /&gt;
|-&lt;br /&gt;
| UseHighPriority&lt;br /&gt;
| I believe if set to True the camera will override all other cameras with UseHighPriority set to False regardless of their priority.&lt;br /&gt;
|-&lt;br /&gt;
| EaseTimeEnter and EaseTimeLeave&lt;br /&gt;
| Controls how long it takes to transition to and away from the camera when entering/exiting the volume.&lt;br /&gt;
|-&lt;br /&gt;
| InterpolateTypeEnter and InterpolateTypeLeave&lt;br /&gt;
| These control how the game interpolates the movement as it transitions to/away from the camera. I can&amp;#039;t really describe the difference between the interpolation types but they do affect the camera&amp;#039;s movement somewhat.&lt;br /&gt;
|-&lt;br /&gt;
| DefaultState&lt;br /&gt;
| If set to 1, the camera won&amp;#039;t activate until a SwitchVolume or other type of event-triggering object sends a signal to turn it on first.&lt;br /&gt;
|-&lt;br /&gt;
| Action&lt;br /&gt;
| If set to 0 the game will let you enter and exit the volume as many times as you please; if set to 1 you can only activate it once and then never again upon exiting the volume. If the volume is triggered by an event, it can be re-activated each time the event-triggering object sends a signal to it.&lt;br /&gt;
|-&lt;br /&gt;
| Shape&lt;br /&gt;
| Determines whether the volume will be shaped like a box (which is what you&amp;#039;re going to want to use 99% of the time), sphere or cylinder.&lt;br /&gt;
|-&lt;br /&gt;
| BasePoint&lt;br /&gt;
| Determines the origin point of the volume, 0 sets it to be in the center while 1 sets it to be at the start of the object&amp;#039;s Z plane.&lt;br /&gt;
|-&lt;br /&gt;
| Width, Height and Depth&lt;br /&gt;
| Controls the size of the volume in distance units. There&amp;#039;s no way to preview the volume size in HedgeEdit so you just kinda have to guess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it basically controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Kind of hard to explain, but basically controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly, while if it&amp;#039;s set to a higher value it will follow the path more exactly and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2632</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2632"/>
		<updated>2021-04-06T00:39:05Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m going to keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m going to focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re going to want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘OK’. This will open &amp;#039;&amp;#039;another&amp;#039;&amp;#039; dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You &amp;#039;&amp;#039;should&amp;#039;&amp;#039; be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are going to start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Laser Turrets in Metropolis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LaserLength&lt;br /&gt;
| The length of the laser beam.&lt;br /&gt;
|-&lt;br /&gt;
| FireType&lt;br /&gt;
| 0 = All lasers fire at the same time. 1 = Each laser fires depending on the phase value. 2 = Same as 1, but inversed.&lt;br /&gt;
|-&lt;br /&gt;
| turretNum&lt;br /&gt;
| The number of turrets to place.&lt;br /&gt;
|-&lt;br /&gt;
| firstSpeed&lt;br /&gt;
| The speed of the turret’s laser during its first attack.&lt;br /&gt;
|-&lt;br /&gt;
| secondSpeed&lt;br /&gt;
| The speed of the turret’s laser during its second attack.&lt;br /&gt;
|-&lt;br /&gt;
| Phase&lt;br /&gt;
| The phase of the turret&amp;#039;s movement.&lt;br /&gt;
|-&lt;br /&gt;
| ShotPhase&lt;br /&gt;
| The phase of the turret&amp;#039;s attack.&lt;br /&gt;
|-&lt;br /&gt;
| BeforeShotWait&lt;br /&gt;
| How long to wait before firing.&lt;br /&gt;
|-&lt;br /&gt;
| AfterShotWait&lt;br /&gt;
| How long to wait before the turret deactivates once it fires.&lt;br /&gt;
|-&lt;br /&gt;
| waitDownKeep&lt;br /&gt;
| How long to keep the turret disabled before it activates again.&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| The distance between each turret.&lt;br /&gt;
|-&lt;br /&gt;
| shotNum&lt;br /&gt;
| How many times this object should fire.&lt;br /&gt;
|-&lt;br /&gt;
| checkBarricade&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Likely detects if something is blocking its view?&lt;br /&gt;
|-&lt;br /&gt;
| Cycle&lt;br /&gt;
| Whether or not the turret’s lasers should cycle.&lt;br /&gt;
|-&lt;br /&gt;
| eventDriven&lt;br /&gt;
| Whether this object is active by default, or must be triggered by something first.&lt;br /&gt;
|-&lt;br /&gt;
| noFrame&lt;br /&gt;
| Whether or not to disable the turret’s frame. (IDK why this exists lol)&lt;br /&gt;
|-&lt;br /&gt;
| hitEffect&lt;br /&gt;
| Whether or not to play the particle effect for being hit?&lt;br /&gt;
|-&lt;br /&gt;
| Sideview&lt;br /&gt;
| Hhether or not this turret is in 2D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Size&lt;br /&gt;
| The size of the platform. This varies between 2D and 3D.&lt;br /&gt;
|-&lt;br /&gt;
| VisualType&lt;br /&gt;
| The model to use. Only works in Guardian Rock and Arsenal Pyramid, but can probably be set up for other stages.&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| How the platform will move. 0 = No movement. 1 = Uses MoveVector parameter. 2 = Uses a SetPath.&lt;br /&gt;
|-&lt;br /&gt;
| PatrolType&lt;br /&gt;
| How the floor moves. See object description in-editor for elaboration.&lt;br /&gt;
|-&lt;br /&gt;
| TimeType&lt;br /&gt;
| 0 = This object is timed to itself. 1 = This object is timed to the stage timer.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Whether this object is active by default or must be triggered first.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether or not this object is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| IsOneWay&lt;br /&gt;
| Whether or not you can jump through this floor from below.&lt;br /&gt;
|-&lt;br /&gt;
| DoesFall&lt;br /&gt;
| Whether or not this object falls after standing on it. (Usually this takes 3 seconds, but if you really want it to fall faster, have it set to move and trigger it using a switchvolume once you’re ready.)&lt;br /&gt;
|-&lt;br /&gt;
| DoesBreak&lt;br /&gt;
| Whether or not this platform can be broken from taking damage (Iron Fortress).&lt;br /&gt;
|-&lt;br /&gt;
| IsSyncRot&lt;br /&gt;
| Whether or not to sync this platform’s movement to the rotation of the path.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothMove&lt;br /&gt;
| Whether or not this floor’s movement is smoothed (It basically accelerates/decelerates if set to true).&lt;br /&gt;
|-&lt;br /&gt;
| IsReverse&lt;br /&gt;
| Whether or not this floor&amp;#039;s movement is reversed.&lt;br /&gt;
|-&lt;br /&gt;
| IsPressDead&lt;br /&gt;
| Whether or not this platform can crush you.&lt;br /&gt;
|-&lt;br /&gt;
| MoveVector&lt;br /&gt;
| How far you want this platform to move on an axis.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| The path this floor uses if MoveType is set to 2.&lt;br /&gt;
|-&lt;br /&gt;
| LocatorList&lt;br /&gt;
| I don’t think this does anything.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTime&lt;br /&gt;
| How long this platform waits after it reaches its destination before moving again.&lt;br /&gt;
|-&lt;br /&gt;
| InitialDelay&lt;br /&gt;
| How long to wait before this object starts moving.&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| The speed of this floor’s movement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Camera&lt;br /&gt;
| Has two values, ID and GroupID, which as you&amp;#039;d expect need to match the ID and GroupID of the camera object you want to assign.&lt;br /&gt;
|-&lt;br /&gt;
| Priority&lt;br /&gt;
| When volumes intersect the camera with a higher Priority value will be used over the one with a lower value.&lt;br /&gt;
|-&lt;br /&gt;
| UseHighPriority&lt;br /&gt;
| I believe if set to True the camera will override all other cameras with UseHighPriority set to False regardless of their priority.&lt;br /&gt;
|-&lt;br /&gt;
| EaseTimeEnter and EaseTimeLeave&lt;br /&gt;
| Controls how long it takes to transition to and away from the camera when entering/exiting the volume.&lt;br /&gt;
|-&lt;br /&gt;
| InterpolateTypeEnter and InterpolateTypeLeave&lt;br /&gt;
| These control how the game interpolates the movement as it transitions to/away from the camera. I can&amp;#039;t really describe the difference between the interpolation types but they do affect the camera&amp;#039;s movement somewhat.&lt;br /&gt;
|-&lt;br /&gt;
| DefaultState&lt;br /&gt;
| If set to 1, the camera won&amp;#039;t activate until a SwitchVolume or other type of event-triggering object sends a signal to turn it on first.&lt;br /&gt;
|-&lt;br /&gt;
| Action&lt;br /&gt;
| If set to 0 the game will let you enter and exit the volume as many times as you please; if set to 1 you can only activate it once and then never again upon exiting the volume. If the volume is triggered by an event, it can be re-activated each time the event-triggering object sends a signal to it.&lt;br /&gt;
|-&lt;br /&gt;
| Shape&lt;br /&gt;
| Determines whether the volume will be shaped like a box (which is what you&amp;#039;re going to want to use 99% of the time), sphere or cylinder.&lt;br /&gt;
|-&lt;br /&gt;
| BasePoint&lt;br /&gt;
| Determines the origin point of the volume, 0 sets it to be in the center while 1 sets it to be at the start of the object&amp;#039;s Z plane.&lt;br /&gt;
|-&lt;br /&gt;
| Width, Height and Depth&lt;br /&gt;
| Controls the size of the volume in distance units. There&amp;#039;s no way to preview the volume size in HedgeEdit so you just kinda have to guess.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it basically controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Kind of hard to explain, but basically controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly, while if it&amp;#039;s set to a higher value it will follow the path more exactly and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2631</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2631"/>
		<updated>2021-04-06T00:30:13Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Stage Objects &amp;amp; Enemies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Laser Turrets in Metropolis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LaserLength&lt;br /&gt;
| The length of the laser beam.&lt;br /&gt;
|-&lt;br /&gt;
| FireType&lt;br /&gt;
| 0 = All lasers fire at the same time. 1 = Each laser fires depending on the phase value. 2 = Same as 1, but inversed.&lt;br /&gt;
|-&lt;br /&gt;
| turretNum&lt;br /&gt;
| The number of turrets to place.&lt;br /&gt;
|-&lt;br /&gt;
| firstSpeed&lt;br /&gt;
| The speed of the turret’s laser during its first attack.&lt;br /&gt;
|-&lt;br /&gt;
| secondSpeed&lt;br /&gt;
| The speed of the turret’s laser during its second attack.&lt;br /&gt;
|-&lt;br /&gt;
| Phase&lt;br /&gt;
| The phase of the turret&amp;#039;s movement.&lt;br /&gt;
|-&lt;br /&gt;
| ShotPhase&lt;br /&gt;
| The phase of the turret&amp;#039;s attack.&lt;br /&gt;
|-&lt;br /&gt;
| BeforeShotWait&lt;br /&gt;
| How long to wait before firing.&lt;br /&gt;
|-&lt;br /&gt;
| AfterShotWait&lt;br /&gt;
| How long to wait before the turret deactivates once it fires.&lt;br /&gt;
|-&lt;br /&gt;
| waitDownKeep&lt;br /&gt;
| How long to keep the turret disabled before it activates again.&lt;br /&gt;
|-&lt;br /&gt;
| Interval&lt;br /&gt;
| The distance between each turret.&lt;br /&gt;
|-&lt;br /&gt;
| shotNum&lt;br /&gt;
| How many times this object should fire.&lt;br /&gt;
|-&lt;br /&gt;
| checkBarricade&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Likely detects if something is blocking its view?&lt;br /&gt;
|-&lt;br /&gt;
| Cycle&lt;br /&gt;
| Whether or not the turret’s lasers should cycle.&lt;br /&gt;
|-&lt;br /&gt;
| eventDriven&lt;br /&gt;
| Whether this object is active by default, or must be triggered by something first.&lt;br /&gt;
|-&lt;br /&gt;
| noFrame&lt;br /&gt;
| Whether or not to disable the turret’s frame. (IDK why this exists lol)&lt;br /&gt;
|-&lt;br /&gt;
| hitEffect&lt;br /&gt;
| Whether or not to play the particle effect for being hit?&lt;br /&gt;
|-&lt;br /&gt;
| Sideview&lt;br /&gt;
| Hhether or not this turret is in 2D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Size&lt;br /&gt;
| The size of the platform. This varies between 2D and 3D.&lt;br /&gt;
|-&lt;br /&gt;
| VisualType&lt;br /&gt;
| The model to use. Only works in Guardian Rock and Arsenal Pyramid, but can probably be set up for other stages.&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| How the platform will move. 0 = No movement. 1 = Uses MoveVector parameter. 2 = Uses a SetPath.&lt;br /&gt;
|-&lt;br /&gt;
| PatrolType&lt;br /&gt;
| How the floor moves. See object description in-editor for elaboration.&lt;br /&gt;
|-&lt;br /&gt;
| TimeType&lt;br /&gt;
| 0 = This object is timed to itself. 1 = This object is timed to the stage timer.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Whether this object is active by default or must be triggered first.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Whether or not this object is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| IsOneWay&lt;br /&gt;
| Whether or not you can jump through this floor from below.&lt;br /&gt;
|-&lt;br /&gt;
| DoesFall&lt;br /&gt;
| Whether or not this object falls after standing on it. (Usually this takes 3 seconds, but if you really want it to fall faster, have it set to move and trigger it using a switchvolume once you’re ready.)&lt;br /&gt;
|-&lt;br /&gt;
| DoesBreak&lt;br /&gt;
| Whether or not this platform can be broken from taking damage (Iron Fortress).&lt;br /&gt;
|-&lt;br /&gt;
| IsSyncRot&lt;br /&gt;
| Whether or not to sync this platform’s movement to the rotation of the path.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothMove&lt;br /&gt;
| Whether or not this floor’s movement is smoothed (It basically accelerates/decelerates if set to true).&lt;br /&gt;
|-&lt;br /&gt;
| IsReverse&lt;br /&gt;
| Whether or not this floor&amp;#039;s movement is reversed.&lt;br /&gt;
|-&lt;br /&gt;
| IsPressDead&lt;br /&gt;
| Whether or not this platform can crush you.&lt;br /&gt;
|-&lt;br /&gt;
| MoveVector&lt;br /&gt;
| How far you want this platform to move on an axis.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| The path this floor uses if MoveType is set to 2.&lt;br /&gt;
|-&lt;br /&gt;
| LocatorList&lt;br /&gt;
| I don’t think this does anything.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTime&lt;br /&gt;
| How long this platform waits after it reaches its destination before moving again.&lt;br /&gt;
|-&lt;br /&gt;
| InitialDelay&lt;br /&gt;
| How long to wait before this object starts moving.&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| The speed of this floor’s movement.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it basically controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Kind of hard to explain, but basically controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly, while if it&amp;#039;s set to a higher value it will follow the path more exactly and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2630</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2630"/>
		<updated>2021-04-05T22:09:47Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re going to want to copy its assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| FOV&lt;br /&gt;
| Controls the camera&amp;#039;s FOV&lt;br /&gt;
|-&lt;br /&gt;
| ZRotation&lt;br /&gt;
| Tilts the camera on the Z axis.&lt;br /&gt;
|-&lt;br /&gt;
| Distance&lt;br /&gt;
| Controls how far away the camera is from the player.&lt;br /&gt;
|-&lt;br /&gt;
| TargetOffset, PlayerOffset and WorldOffset&lt;br /&gt;
| By default most cameras directly target the player, so you can use these parameters to offset the camera&amp;#039;s target on the X, Y, and Z axis. I&amp;#039;m not entirely sure as to what the difference is between these three types.&lt;br /&gt;
|-&lt;br /&gt;
| GravityOffset&lt;br /&gt;
| Offsets the camera target upward (I believe the direction it&amp;#039;s offset in is also influenced by the stage&amp;#039;s gravity direction but I&amp;#039;m not entirely sure about that).&lt;br /&gt;
|-&lt;br /&gt;
| FollowType&lt;br /&gt;
| Features two types, Simple and Intelligent. As far as i can tell the only difference between the two is that when set to Intelligent the camera waits to start scrolling up until the player gets closer to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Only seen on CameraRail objects. As you might expect, this needs to match the ID of the path you want to use.&lt;br /&gt;
|-&lt;br /&gt;
| Azimuth&lt;br /&gt;
| Generally only seen on CameraRail objects, it basically controls how the camera is rotated left/right around the target.&lt;br /&gt;
|-&lt;br /&gt;
| Elevation&lt;br /&gt;
| Generally only seen on CameraRail objects, it controls how the camera is rotated up/down around the target.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| EnableLimitAngle&lt;br /&gt;
| If set to true, a limit will be placed on how far the camera will rotate to look at the player, based on the AzimuthLimitAngle and ElevationLimitAngle parameters.&lt;br /&gt;
|-&lt;br /&gt;
| AzimuthLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate left/right?&lt;br /&gt;
|-&lt;br /&gt;
| ElevationLimitAngle&lt;br /&gt;
| Controls how far the camera will rotate up/down?&lt;br /&gt;
|-&lt;br /&gt;
| PositionMode&lt;br /&gt;
| There are two options for this parameter, &amp;quot;Fixed point&amp;quot; and &amp;quot;Maintain some distance.&amp;quot; &amp;quot;Fixed point&amp;quot; means the camera will look at the player from wherever the object is placed without following along with the player&amp;#039;s movement. &amp;quot;Maintain some distance&amp;quot; means that the camera will follow along with the player&amp;#039;s movement instead of staying where it was originally placed. If the camera is set to this value, then the Distance parameter will also control how far the camera is from the player instead of the object&amp;#039;s position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathOffset&lt;br /&gt;
| Controls the vertical offset of the camera from the path.&lt;br /&gt;
|-&lt;br /&gt;
| ReversePathFront&lt;br /&gt;
| If set to rrue, the camera follows from the end of the path instead of the start.&lt;br /&gt;
|-&lt;br /&gt;
| UsePathVerticalComponent&lt;br /&gt;
| If set to True the camera will rotate to follow slopes in the path.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivity&lt;br /&gt;
| Kind of hard to explain, but basically controls how sensitive the camera is to turns and slopes in the path. If you set it to a low value, the camera is slow to rotate with the path and moves more smoothly, while if it&amp;#039;s set to a higher value it will follow the path more exactly and become more jerky unless the path is very smooth.&lt;br /&gt;
|-&lt;br /&gt;
| AngleSensitivityBoost&lt;br /&gt;
| Ditto, but only affects the sensitivity when you are boosting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| LimitLeftRatio and LimitRightRatio&lt;br /&gt;
| These are a bit weird, but they seem to control how far you can move before the camera will start scrolling left or right. The values are also generally set very small, somewhere between 0.1 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollRatio and DownScrollRatio&lt;br /&gt;
| Ditto, but they control how far you have to go before they scroll up or down. Use negative values for DownScrollRatio.&lt;br /&gt;
|-&lt;br /&gt;
| UpScrollDistance and DownScrollDistance&lt;br /&gt;
| These control in distance units how far the camera will scroll up or down before locking in place. Use negative values for DownScrollDistance.&lt;br /&gt;
|-&lt;br /&gt;
| IsLimitPathDistance&lt;br /&gt;
| You can set this to true or false (usually it&amp;#039;s set to false) but I don&amp;#039;t know what it actually does.&lt;br /&gt;
|-&lt;br /&gt;
| LimitPathDistanceMin and LimitPathDistanceMax&lt;br /&gt;
| Related to the above value but I don&amp;#039;t know what it does.&lt;br /&gt;
|-&lt;br /&gt;
| OrientationMode&lt;br /&gt;
| Has two settings, Gravity and Path Normal. I believe if set to Gravity then the rotation of the camera is determined by the stage&amp;#039;s gravity, while if set to Path Normal the rotation is based on the sloping and curving of the path the camera is attached to.&lt;br /&gt;
|-&lt;br /&gt;
| IsEnableAzimuthOffset&lt;br /&gt;
| Makes it where the camera will rotate when moving at high speed to show a better view of what&amp;#039;s ahead.&lt;br /&gt;
|-&lt;br /&gt;
| IsSmoothPath&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;. Possibly the equivalent of a dividelength on a setpath?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2629</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2629"/>
		<updated>2021-04-05T21:27:09Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1k9OMGJ3R764qK21SEbSxrtgxR5engCFx/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Back to what I was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to its own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override HedgeEdit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use Casino Forest objects (such as bumpers) with Modern Sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a very small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed &amp;lt;s&amp;gt;in 10 years.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the Classic buzzbombers, where it will fire, and then fly away. This badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This badnik’s attacks are based on timing. 1 = This badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (IDK why Sonic Team called it this, because the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes Classic Sonic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2628</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2628"/>
		<updated>2021-04-05T21:19:16Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from Sunset Heights to the final boss. Wars_dlc01 contains all of the Episode Shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume DLCs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a DLC stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic Sonic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into &amp;#039;&amp;#039;its&amp;#039;&amp;#039; wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or WASD keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this Badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the badnik will land after being hit. Note that the locators must be rotated to face the direction the badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this badnik will move to after it spawns. These can be used as pathnodes in order to make the badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039;, likely just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this Badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this Badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this Badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This Badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This Badnik’s attacks are based on timing. 1 = This Badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this Badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this Badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike Badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this Badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this Badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2627</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2627"/>
		<updated>2021-04-05T21:00:12Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Bugs &amp;amp; Other Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039; (fixed?):&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&amp;lt;/s&amp;gt; Fixed as of V4.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this Badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this Badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this Badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this Badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the Badnik will land after being hit. Note that the locators must be rotated to face the direction the Badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this Badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| Unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this Badnik will move to after it spawns. These can be used as pathnodes in order to make the Badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this Badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| Unknown. Possibly just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this Badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this Badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this Badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This Badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This Badnik’s attacks are based on timing. 1 = This Badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this Badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this Badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike Badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this Badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this Badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2626</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2626"/>
		<updated>2021-04-05T20:48:00Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this Badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this Badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this Badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this Badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the Badnik will land after being hit. Note that the locators must be rotated to face the direction the Badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this Badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| Unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this Badnik will move to after it spawns. These can be used as pathnodes in order to make the Badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this Badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| Unknown. Possibly just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this Badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this Badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this Badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This Badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This Badnik’s attacks are based on timing. 1 = This Badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this Badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this Badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike Badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this Badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this Badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==Cameras==&lt;br /&gt;
Since the default camera is pretty garbage in Forces, you&amp;#039;re going to be reliant on various camera objects to give the player the ability to actually see where they&amp;#039;re going. Here&amp;#039;s a quick overview of CameraVolumes along with the essential camera types you&amp;#039;ll find yourself using the most.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
In order to activate camera objects they have to be assigned to CameraVolumes, which are basically invisible boxes that activate the cameras when you go inside them. To assign a camera object to a CameraVolume you simply need to put the ID and GroupID of the object into the volume&amp;#039;s Camera parameter.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraSubVolumes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to reuse the same camera repeatedly in a stage you can use a CameraSubVolume. Instead of putting in the ID of a camera object you put in the ID and GroupID of another CameraVolume, and the CameraSubVolume will take on all the parameters the CameraVolume uses(aside from it&amp;#039;s BasePoint and size).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Camera Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraFollow&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
One of the simplest camera types, as you&amp;#039;d expect it simply just follows the player.&lt;br /&gt;
&lt;br /&gt;
* Yaw: Controls the rotation of the camera on the Y axis.&lt;br /&gt;
* Pitch: Controls the rotation of the camera on the X axis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looks at the player from the point the object is placed.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraPoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Stays behind the player while pointing towards wherever the object is placed (essentially the reverse of CameraPan). No unique parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailForwardView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Generally something you want to use in 3D running/boosting sections, it moves along a spline path while following behind the player.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CameraRailSideView&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Best used for 2D sections (unless you want to do something like that psuedo side-scrolling bit in Spaceport), it moves along a spline path while following the player from more of a side view, hence the name. Also this camera is a bit confusing to work with so there&amp;#039;s a couple values I haven&amp;#039;t figured out yet.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DefaultCameraSetting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you set the default camera for the entire stage that gets used when no camera volumes are active. &amp;#039;&amp;#039;&amp;#039;THIS IS NOT A REPLACEMENT FOR THE DEFAULT CAMERA ITSELF, USE ACTUAL CAMERAS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2625</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2625"/>
		<updated>2021-04-05T20:34:44Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Stage Objects &amp;amp; Enemies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this Badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this Badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this Badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this Badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the Badnik will land after being hit. Note that the locators must be rotated to face the direction the Badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this Badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| Unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this Badnik will move to after it spawns. These can be used as pathnodes in order to make the Badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this Badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| Unknown. Possibly just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this Badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this Badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this Badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This Badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This Badnik’s attacks are based on timing. 1 = This Badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this Badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this Badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike Badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this Badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this Badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjLaserTurret&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjWallJumpTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A test object that lets you place walljump collision.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GadgetVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Allows you to restrict/enable the use of Wispons when within its range.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OutOfControlVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Lets you disable the player’s controls once they enter the volume. Keep in mind that Classic Sonic kind of ignores this object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The floating platforms used throughout the games.&lt;br /&gt;
&lt;br /&gt;
[Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;(Custom) scaletest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A custom object I made that acts as a visualizer for range boxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important/Common Parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* Speed: The speed of the object or it’s function.&lt;br /&gt;
* Camera: The ID of the cameravolume the object uses.&lt;br /&gt;
* PathID: The ID of the path the object uses.&lt;br /&gt;
* IsEventDriven: Whether or not the object is triggered by default or must be triggered by something else.&lt;br /&gt;
* phase: It’s basically a time offset. For example, setting the phase to 1 will make the object behave as if it had been activated one second earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object Parenting&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
If you want to connect one object to another, you can put the Object &amp;amp; Group ID’s of the parent object (the one that controls the position of the second object) in the ‘ParentID’ and ‘ParentGroupID’ boxes of your object. The childposoffset tab is the distance that your child object is offset from the parent object. Note that any objects that move cannot be parented to other moving objects (under most circumstances, sometimes the game lets it happen but it’s seemingly random.)&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2624</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2624"/>
		<updated>2021-04-05T19:39:06Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Stage Objects &amp;amp; Enemies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this Badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this Badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this Badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this Badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the Badnik will land after being hit. Note that the locators must be rotated to face the direction the Badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this Badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| Unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this Badnik will move to after it spawns. These can be used as pathnodes in order to make the Badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this Badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| NumBees&lt;br /&gt;
| The number of bees that appear.&lt;br /&gt;
|-&lt;br /&gt;
| NumFirstBees&lt;br /&gt;
| The number of bees that appear during the first interval.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpan&lt;br /&gt;
| The time between spawns.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed the bees travel at.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| StartPosObj&lt;br /&gt;
| The locator that defines this badnik’s start position.&lt;br /&gt;
|-&lt;br /&gt;
| Repat&lt;br /&gt;
| Supposed to be “repeat”, and it determines if this badnik continuously respawns or if they only appear once.&lt;br /&gt;
|-&lt;br /&gt;
| Pad values&lt;br /&gt;
| Unknown. Possibly just padding values.&lt;br /&gt;
|-&lt;br /&gt;
| Repeatspantime&lt;br /&gt;
| The time between respawns.&lt;br /&gt;
|-&lt;br /&gt;
| Homingrebound&lt;br /&gt;
| Whether you rebound off of the badnik chain?&lt;br /&gt;
|-&lt;br /&gt;
| HomingDir&lt;br /&gt;
| The direction you travel at once you homing attack these badniks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| WeaponType&lt;br /&gt;
| 0 = Silver Machine Gun Egg Pawns, 1 = Standard Egg Pawns.&lt;br /&gt;
|-&lt;br /&gt;
| ApproachLimit&lt;br /&gt;
| How close you can get to this badnik before it can no longer see you (possibly because its gun reaches past you and it has no melee attack like it does in gens in order to avoid this?)&lt;br /&gt;
|-&lt;br /&gt;
| SearchDistance&lt;br /&gt;
| The distance this badnik can see.&lt;br /&gt;
|-&lt;br /&gt;
| SearchAngle&lt;br /&gt;
| The angle this badnik can see at.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| How far this badnik can move.&lt;br /&gt;
|-&lt;br /&gt;
| ShotCoolDown&lt;br /&gt;
| Whether or not this Badnik stops firing briefly in between attack intervals.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConst&lt;br /&gt;
| Whether or not this Badnik is always attacking.&lt;br /&gt;
|-&lt;br /&gt;
| AttackConstAngle&lt;br /&gt;
| The angle this badnik fires at if AttackConst is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventDriven&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Whether or not gravity affects this Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| IsFallStart&lt;br /&gt;
| Whether or not this Badnik is in the air when spawning (Note: This sometimes conflicts with IsEventDriven.)&lt;br /&gt;
|-&lt;br /&gt;
| IsTreadGrass&lt;br /&gt;
| Whether or not this Badnik emits grass particles when walking.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| See EggWalker.&lt;br /&gt;
|-&lt;br /&gt;
| IsStatic&lt;br /&gt;
| Whether or not this Badnik has its AI disabled, basically.&lt;br /&gt;
|-&lt;br /&gt;
| BehaviorType&lt;br /&gt;
| I don’t really know if there’s a difference between any of these values, feel free to enlighten me.&lt;br /&gt;
|-&lt;br /&gt;
| ToSVPathDistance&lt;br /&gt;
| This Badnik’s distance from a 2D section if it is in 3D.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| 0 = This Badnik’s attacks are based on timing. 1 = This Badnik will attack when the player enters an EggChaserBeginAttackVolume.&lt;br /&gt;
|-&lt;br /&gt;
| AppearSpeed&lt;br /&gt;
| The speed of this badnik as it enters its path when spawning.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeSpeed&lt;br /&gt;
| Same as above, but when being disabled.&lt;br /&gt;
|-&lt;br /&gt;
| PlayerDistance&lt;br /&gt;
| The distance of this Badnik from the player.&lt;br /&gt;
|-&lt;br /&gt;
| PathHeight&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| isEventTurn&lt;br /&gt;
| Whether or not this badnik is enabled by default.&lt;br /&gt;
|-&lt;br /&gt;
| SwingSpeed&lt;br /&gt;
| The speed of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| SwingPhase&lt;br /&gt;
| The phase of this badnik’s hovering.&lt;br /&gt;
|-&lt;br /&gt;
| Lasertime&lt;br /&gt;
| The amount of time this Badnik is firing for.&lt;br /&gt;
|-&lt;br /&gt;
| Attackinterval&lt;br /&gt;
| The interval between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| Attackphase&lt;br /&gt;
| The phase of this badnik’s attacks.&lt;br /&gt;
|-&lt;br /&gt;
| NumAttack&lt;br /&gt;
| How many time this badnik can fire.&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh.&lt;br /&gt;
|-&lt;br /&gt;
| UseLaserRayCast&lt;br /&gt;
| I’m not exactly sure what this one does, I think it’s just related to the particle effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The wormlike Badniks from Planet Wisp (in Colors) and Metropolis in Forces.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| 0 = Standard (fires lasers in a straight line). 1 = Flame (fires flames.)&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| If this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| CollisionShape&lt;br /&gt;
| The shape of this Badnik’s collision range…?&lt;br /&gt;
|-&lt;br /&gt;
| SearchExtents&lt;br /&gt;
| The search range of this badnik.&lt;br /&gt;
|-&lt;br /&gt;
| SearchOffset&lt;br /&gt;
| The height offset of this Badnik from its path.&lt;br /&gt;
|-&lt;br /&gt;
| HeadAngle&lt;br /&gt;
| The angle this Badnik faces.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventOn&lt;br /&gt;
| If this badnik is triggered by default or not.&lt;br /&gt;
|-&lt;br /&gt;
| HeadPitch&lt;br /&gt;
| The pitch rotation of this badnik’s head.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PlaceNum&lt;br /&gt;
| Places whatever number of springs you define in a row.&lt;br /&gt;
|-&lt;br /&gt;
| PlaceType&lt;br /&gt;
| Has two options, Line and Circle. Line places springs in a row and Circle places them in, well, a circle. I&amp;#039;d probably recommend just using Line though cause it&amp;#039;s basically impossible to tell what you&amp;#039;re doing with Circle until HedgeEdit becomes capable of visualising the spring placement.&lt;br /&gt;
|-&lt;br /&gt;
| CircleRadius&lt;br /&gt;
| Determines the radius of the springs if PlaceType is set to Circle.&lt;br /&gt;
|-&lt;br /&gt;
| Behaviour&lt;br /&gt;
| Has two options, Normal and Path. Normal just functions like a normal spring (and so i&amp;#039;m not going to go into any of the parameters related to it) while Path sends you to a given set of coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| Path_TargetPosition&lt;br /&gt;
| A set of X/Y/Z coordinates that control the position you&amp;#039;re sent to if Behaviour is set to Path.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginAngle and Path_EndAngle&lt;br /&gt;
| Controls the angle of the player upon touching the spring(s) and upon reaching the TargetPosition respectively.&lt;br /&gt;
|-&lt;br /&gt;
| Path_BeginForce and Path_EndForce&lt;br /&gt;
| Controls the movement force upon touching the spring and upon reaching the TargetPosition respectively.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2623</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2623"/>
		<updated>2021-04-05T19:02:39Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Stage Objects &amp;amp; Enemies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Its movement speed. &lt;br /&gt;
|-&lt;br /&gt;
| MaxDistance&lt;br /&gt;
| The maximum distance this badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| Locaterlist&lt;br /&gt;
| The list of locators this badnik uses (you only need one, it is the position that it will spawn at BUT make sure you set the badnik’s X and Z coordinates to match its’ locator or it will spawn off-center for some reason. If you want this badnik to jump, though, place the first locator at the position the jump starts and the second at the position the jump ends.)&lt;br /&gt;
|-&lt;br /&gt;
| JumpSpeed&lt;br /&gt;
| The speed of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpHeight&lt;br /&gt;
| The height of the badnik&amp;#039;s jump.&lt;br /&gt;
|-&lt;br /&gt;
| JumpType&lt;br /&gt;
| I don’t think these do anything but I could be wrong. I just don’t care enough to test because Egg Walkers are assholes.&lt;br /&gt;
|-&lt;br /&gt;
| EndPosObj&lt;br /&gt;
| The object ID that signifies the location the badnik will stop at (overriding the path.)&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| The search range of the Badnik.&lt;br /&gt;
|-&lt;br /&gt;
| Missileriselength&lt;br /&gt;
| The amount of height the missiles rise before homing in on you.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchMissilenum&lt;br /&gt;
| The amount of missiles this badnik fires.&lt;br /&gt;
|-&lt;br /&gt;
| FallOffsetHeight&lt;br /&gt;
| Unsure, might be the offset for the badnik to fall from if isFallStart is set to true.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| IsFV&lt;br /&gt;
| Whether the badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| isFallStart&lt;br /&gt;
| Whether or not this badnik is in freefall when it is spawned.&lt;br /&gt;
|-&lt;br /&gt;
| isTreadGrass&lt;br /&gt;
| Whether or not this badnik kicks up grass when running.&lt;br /&gt;
|-&lt;br /&gt;
| IsEndTrun&lt;br /&gt;
| Misspelled parameter for “IsEndTurn,” which means that it will turn to face the direction it came from once it has finished running.&lt;br /&gt;
|-&lt;br /&gt;
| UpdateMaterial&lt;br /&gt;
| Whether or not this badnik’s mats will update as it runs into different sectors (should be yes if it starts in a bright area but ends in a dark area).&lt;br /&gt;
|-&lt;br /&gt;
| EventDriven&lt;br /&gt;
| Whether or not this badnik is active by default.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveType&lt;br /&gt;
| The direction of this Badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| MoveDistance&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| Self-explanatory.&lt;br /&gt;
|-&lt;br /&gt;
| IsRespawn&lt;br /&gt;
| Whether or not this Badnik respawns. It respawns by materializing in mid air and dropping onto the ground.&lt;br /&gt;
|-&lt;br /&gt;
| BulletSpeed&lt;br /&gt;
| The speed of this badnik’s bullets.&lt;br /&gt;
|-&lt;br /&gt;
| BulletMaxFlyingDistance&lt;br /&gt;
| The maximum distance the bullets can travel.&lt;br /&gt;
|-&lt;br /&gt;
| BulletContinuousShellingNum&lt;br /&gt;
| The amount of bullets this badnik fires during each attack interval.&lt;br /&gt;
|-&lt;br /&gt;
| BulletShellingInterval&lt;br /&gt;
| The time between attacks if the ContinuousShellingNum is set to a value above 1.&lt;br /&gt;
|-&lt;br /&gt;
| BulletCoolDownTime&lt;br /&gt;
| How long this badnik waits before beginning to fire again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed this Badnik moves at.&lt;br /&gt;
|-&lt;br /&gt;
| MaxMoveDist&lt;br /&gt;
| The maximum distance this Badnik can travel.&lt;br /&gt;
|-&lt;br /&gt;
| isFV&lt;br /&gt;
| Whether or not this badnik is in 3D.&lt;br /&gt;
|-&lt;br /&gt;
| LocaterList&lt;br /&gt;
| Each locator correlates to the position the Badnik will land after being hit. Note that the locators must be rotated to face the direction the Badnik is meant to face.&lt;br /&gt;
|-&lt;br /&gt;
| RingType&lt;br /&gt;
| The type of ring this badnik will drop.&lt;br /&gt;
|-&lt;br /&gt;
| RingID&lt;br /&gt;
| The number of the Red Ring or Number Ring this Badnik drops.&lt;br /&gt;
|-&lt;br /&gt;
| isBound&lt;br /&gt;
| Unknown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| StartType&lt;br /&gt;
| Basically just isEventDriven.&lt;br /&gt;
|-&lt;br /&gt;
| MoveSpeed&lt;br /&gt;
| The speed of this badnik’s movement.&lt;br /&gt;
|-&lt;br /&gt;
| Locatelist&lt;br /&gt;
| The locator defines where this Badnik will move to after it spawns. These can be used as pathnodes in order to make the Badnik move around. The potos pauses for a brief moment between locators.&lt;br /&gt;
|-&lt;br /&gt;
| AttackInterval&lt;br /&gt;
| The time between attacks.&lt;br /&gt;
|-&lt;br /&gt;
| SearchBox (Width/Height/Depth)&lt;br /&gt;
| (Width/Height/Depth): Duh.&lt;br /&gt;
|-&lt;br /&gt;
| RespawnTime&lt;br /&gt;
| The amount of time after this Badnik is destroyed before it respawns. Set to 0 in order to have it not respawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters: [Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2622</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2622"/>
		<updated>2021-04-04T22:14:27Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: /* Stage Objects &amp;amp; Enemies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown&amp;#039;&amp;#039; (It may have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Self-explainatory (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| If the valkeen can respawn.&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| If the valkeen attacks.&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
| How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters: [Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PipeMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The movement object that controls the movement of the player through the tunnels in Green Hill and Pipes in Chemical Plant.&lt;br /&gt;
&lt;br /&gt;
PipeMoveTrigger Parameters:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Fix&lt;br /&gt;
| The player’s speed is locked at a fixed value.&lt;br /&gt;
|-&lt;br /&gt;
| SpeedType Min&lt;br /&gt;
| The player’s speed varies as they travel through the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchSpeed&lt;br /&gt;
| The speed of the player as they exit the path.&lt;br /&gt;
|-&lt;br /&gt;
| LaunchAttackTime&lt;br /&gt;
| How long the player is going to be propelled after launching out of the pipe.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShowTimeEffect&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
An object that basically functions like the Infinite object in Capital City, but without Infinite. Keep in mind that a second rgb table must be added to the stage’s terrain common in order for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TerrainBlock/TerrainBlocks&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Placeholder terrain blocks that were used as… placeholders… for terrain during testing. Unfortunately, these only draw in the game’s built-in level editor (presumably). They’re still useful for simple shapes, though.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DebugNote&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically just an object that lets you leave notes for other people looking at the gedit you’re working on. Useful when working with a team (then again, you could just tell them directly).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gravity Objects&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to gloss over this one too due to them being kind of odd, but basically these objects just control gravity based on the direction and position of the object.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjReleaseBox&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Eggman Capsules used in the blue SOS missions. These usually don’t work in modified stages, but I have had rare occurrences where they do appear.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjFan/ObjWaterFan&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The fan objects seen in multiple modern games. I feel like the parameters on these are pretty self-explanatory, so I’m not going to go into them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjGismo&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Gismo Object. This is used for breakable objects like the roadcones in luminous forest and the breakable barricades seen around the game, as well as moving background assets like the signs &amp;amp; cameras in Metropolis. These can be edited using 010 editor &amp;amp; the (unfinished) gismo editor, but they are very very difficult to get working correctly due to their physics behavior being generally unstable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjThornBall&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Thornballs seen in the extra stages and Casino Forest. I only understand some of these values, so I’m only going to cover those for now.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| Type 0&lt;br /&gt;
| Just a non-moving thornball.&lt;br /&gt;
|-&lt;br /&gt;
| Type 1&lt;br /&gt;
| A moving thornball. The distance parameter in the object starts from the position of the object itself, so the object should be in the middle of the area you’d like it to move along.&lt;br /&gt;
|-&lt;br /&gt;
| Type 3&lt;br /&gt;
| It’s a thornball that appears when triggered.&lt;br /&gt;
|-&lt;br /&gt;
| Type 5&lt;br /&gt;
| A rolling thornball that follows a path. It will decelerate and eventually fall out of bounds after it reaches the end of its path. Although this object follows a path, gravity still affects it, so be aware of that.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjHintRing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
It’s a hint ring. You can set it to use specific text as defined in the game’s text_hint pacs, but you cannot add new text strings as of right now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjTargetTest&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A placeable homing attack reticle. You can use these to allow the player to homing attack objects they normally wouldn’t be able to.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2621</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2621"/>
		<updated>2021-04-04T21:54:09Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;I don’t care.&amp;#039;&amp;#039; (In all serious it might have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Duh (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
|How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eggwalker&amp;#039;&amp;#039;&amp;#039; (i’m just guessing for most of these, this badnik is very inconsistent in its behavior):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beeton&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m going to keep this one brief since even I don’t really understand some of the parameters, but just to note: SearchDistance is the distance this badnik can move, not the distance it can see like it is for the other badniks. Checkshielding does nothing. IsEscape makes it function like the classic buzzbombers, where it will fire, and then fly away. This Badnik can also be set to respawn by entering along a path, but note that (I believe) the speed of its flight when flying back to its original position is identical to that of its search speed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Tank&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Golden Motora&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Potos&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GalagaBee&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Pawn&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Egg Chaser&amp;#039;&amp;#039;&amp;#039; (Fun fact: You can use void on these guys.):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Narl&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collectibles&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
While Red Rings function on their own, the Number Rings and Moon Rings require an object manager to function. These managers are named based on the object they activate (ObjNumberRingManager &amp;amp; ObjYellowMoonRingManager). When placing these managers, make sure its rangein and rangeout are large enough to encapsulate all of the ring objects it controls, otherwise the rings will despawn.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;LinkedSprings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
LinkedSprings are pretty much just an alternate version of Springs with a few notable additions: being able to automatically place several springs in a row along with along being able to send the player along a &amp;quot;path&amp;quot; (idk why Sonic Team called it this cause the actual function sends you directly to a given coordinate position and not along a spline).&lt;br /&gt;
&lt;br /&gt;
Unique parameters: [Insert Table]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalPlate&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Classic Variant of the goal. It is very basic, in that it simply causes classic to enter an autorun after it is crossed.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GoalTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
The Modern Goal. DO NOT USE PLATE MODEL TYPE 2, IT CRASHES THE GAME. Also, everything past PlateSpeedType is basically just junk, although you can edit it if you like.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WhiteOutTrigger&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
WhiteOutTriggers are nice for things like stage transitions; as you might think they pretty much just make the screen fade to white. In order to do a complete transition you always need a trigger at the start of the transition to fade to white and then a trigger at whatever the end point is to fade back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ShapeType&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the shape of the trigger; has box, sphere, cylinder, and capsule options.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasePoint&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Determines the origin point of the trigger; has center and Z plane options like with most objects that have this setting along with X and Y plane options for some reason.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CollisionFilter&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Filters what types of objects can activate the trigger; why you&amp;#039;d want anything other than the player to activate the trigger is anyone&amp;#039;s guess.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Has two options: White out, which fades the screen to white, and white in, which fades the screen from white back to normal colors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sound Triggers&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
I’m not going to go into too much depth regarding sound objects, but I’ll go over the basics. You can find the cuenames for the objects by looking in the acb files in the sound folder for the game using a hex editor. The main thing you need to know is that you can’t use sounds that aren’t part of a common acb or are from a different in-game location (for example, w5 sfx won’t work in w2.)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MoveRingBuilder&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
These are also really fucky and A LOT OF THIS MAY BE WRONG so I’m basically going to gloss over them, but here’s what I know: These are the objects that get used in Aqua Road that create the moving ring trails you can collect. BuildType Loop means that the rings will keep looping after they reach their end point. BuildNum is the number of chains of rings (as in respawning? I’m not certain on that). BuildInterval is the amount of time between spawns. ItemId is the id of the Red Ring this object uses if the ring type is set to red ring. PathID is self explanatory (or at least I hope it as this point), Movespeed is the speed of the rings as they travel along their path, the meandering parameters are for the wavy movement patterns, limittime is the maximum time the rings can spawn for, overtime is the time they end at(?), columnnum is the amount of rings in a column, rownum is the amount of rings in a row, column offset is the offset, and the rest is self explanatory. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ObjectLayerTrigger/ObjectLayerVolume&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
ObjectLayerTriggers allow you to enable/disable Set Layers on the fly. Please note that they do not reset if you restart the stage or restart at a checkpoint, so you should place another trigger to account for that atop the checkpoint/spawn position.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallMoveTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
A trigger that causes the player to enter a roll based on the speed of the player when crossing through the trigger. The player will decelerate and uncurl in response to the settings in the physics rfls.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BallLaunchTrigger&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Basically the BallMoveTrigger, but it uses set speed parameters and follows a path.&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2620</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2620"/>
		<updated>2021-04-04T21:36:37Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;I don’t care.&amp;#039;&amp;#039; (In all serious it might have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Duh (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
|How long the object moves for&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==SetPaths &amp;amp; Other Path Objects==&lt;br /&gt;
I’m only going to be going over SetPaths, SetPathNodes, and SetPathLines. As for the others, figure them out yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPath&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
You put a setpath down, and then you put an ID in. This is going to be the path’s ID (obviously). You have 3 pathtypes. The first is Object Path (use this for most cases), 2D path (you can basically just use Object Path it doesn’t really matter), and grind path which-- you guessed it-- is used for grind rails. Theres also a true or false toggle for the path being used for loops, but it’s useless because loops have their own path objects so just pretend that doesn’t exist. StartLineType decides whether or not the path smoothing between nodes will be straight or curved. DivideLength is the distance between the invisible points between each node. Higher values make the path more rigid, whereas lower values make the path smoother. Do NOT use one, it will crash. 10 should be your minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathNode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The nodeID should start at 0 and increase by 1 with each node you add. These should be added into your parent SetPath by their OBJECT ID, NOT their node ID. Linetype is the same as previously described.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetPathLine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SetPathLines are basically just SetPaths… but they’re a line. Sometimes, you may have to fiddle with the path’s rotation in order to get the desired result.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CorrectPathVolume2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This object basically allows you to force the player along a given path. Useful for tight turns (such as that one part in Metropolitan Highway, except that there is one there, it’s just really weak lol).&lt;br /&gt;
&lt;br /&gt;
==Triggers==&lt;br /&gt;
There are various types of triggers in the game, but in this tutorial I’m going to be focusing on triggers for different objects. Triggers often have 3 event groups with their own individual timers (each timer is independent of one another, they do not stack). Each event group can be set to enable (or disable) any number of objects simply by putting in their object IDs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Switchvolume&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Switchvolumes are invisible boxes that can trigger things such as enemies, particles, and sounds so long as their targets are set to be event driven. They have several condition types which have their own functions. On trigger means that the objects will be triggered as soon as you enter the switchvolume’s range. Pulse means that the target objects will be enabled or disabled each time you enter the switchvolume’s range. Timer &amp;amp; Timer Once seem to be completely useless as there’s no box for a time value. On stay will only trigger the objects as long as you are inside the volume. Once you exit the volume, the objects will turn off.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventSetter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Basically a switchvolume, but it is triggered by destroying badniks. There’s not much to explain here, just read the object parameter descriptions. &lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
* To select multiple objects, hold control and click. Keep in mind that this will cause the arrows to disappear, so make sure you know where to click. (The arrows will not move with the objects themselves). &lt;br /&gt;
* Having trouble with organization? You can change the name of an object by clicking the name tab in the Custom Data section.&lt;br /&gt;
* When placing Egg Chasers on slopes, the initial setpath should be the end point, and all path nodes rotated to face the floor’s orientation.&lt;br /&gt;
* The first setpathnode should be behind the main setpath for pulleys &amp;amp; other objects.&lt;br /&gt;
* The object limit is 4000, you can’t go over that, fuck Sonic Team. You can view the number of objects at the top left.&lt;br /&gt;
* Make sure you change the default ranges when you place objects (usually for most gameplay objects, 200 is a good rangeout value. For rangein, 1000 is recommended for 3D, whereas for 2D, 400 is recommended.&lt;br /&gt;
* If copy pasting multiple objects, first select the first object you copied before pasting, then you’ll have an immediate arrow reference for moving them (this will only last until you click into the window). &lt;br /&gt;
* HedgeEdit will load models through ObjGismo. If you’re having trouble loading a model, you can put the model name into the gismo and use it as a position/rotation reference.&lt;br /&gt;
* Some objects may have to be rotated to face a certain direction in order to activate. (The objects that require this should have the “front” text rotated to face the player.&lt;br /&gt;
* You can make the controller rumble by using ObjVibratonTest and setting the name parameter to one of the ones in PlayerCommon’s .vib file.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2619</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2619"/>
		<updated>2021-04-04T21:19:10Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR [https://ci.appveyor.com/project/Radfordhound/hedgelib/build/artifacts HedgeArcPack]&lt;br /&gt;
&lt;br /&gt;
===Using HedgeModManager===&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and UI) as well as all the stage folders for Lost Valley through Aqua Road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains Super Sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is Death Egg, w2 is Chemical Plant, w3 is City, w4 is Mystic Jungle, w5 is Green Hill, w6 is Metropolis, and w7 is Eggman Empire Fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a Classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those.&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. &amp;#039;&amp;#039;This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;#039;&amp;#039;Fix in progress.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Collapsing Tabs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Movement arrows disappearing&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Actstgmission issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;RigidBody parameters&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Crash on Load&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;There’s no undo button&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NormalFloor movement types often break&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Green Hill Mat Issues&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Virton object incompatibilities&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Objects carrying over&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Casino Forest Objects do not work with Modern Sonic or the Avatar&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Particle Limit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages. I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
==Set Layers==&lt;br /&gt;
After you’ve opened and loaded the stage you’re looking to edit in HedgeEdit, hit ‘edit’ at the top and click ‘scene view’. You’ll see a box open up on the right with two groups: ‘Set Layers’ and ‘Terrain Instances’. Terrain instances can be ignored, as it serves no real function currently. What you’ll want to focus on here is the ‘Set Layers’ tab. In each stage, different groups of objects are loaded into their own Set Layers. Whenever you open a stage in HedgeEdit, you’ll need to select one of these layers by clicking on it in order to place objects. The currently selected layer will be shown in parenthesis at the top of the window next to the program’s name. To avoid disorganization, you’ll want to pay attention to whatever set layers you use. If you want to rename or delete a set layer, you can right click a layer and pick an option. Please note that deleting or renaming a set layer does not actually remove or rename it inside your gedit file, so if you need to do that, you’ll want to close HedgeEdit after making that change, open the gedit file in your mod using SFPac, and remove anything you don’t need from there, then repack it by running the folder through SFPac again.&lt;br /&gt;
&lt;br /&gt;
==Stage Objects &amp;amp; Enemies==&lt;br /&gt;
Now that you understand how to open stages and set layers, let’s get to the basics: Object Placement. I’m not gonna be super thorough with this, but I’ll be going over anything that might be confusing in the second half of this video.&lt;br /&gt;
&lt;br /&gt;
Let me start by letting you know that, if there’s a specific object from another stage you want to use, you’re gonna want to copy it’s assets (which may include files from both the object pac AND terrain common) into your mod’s object pac or terrain common. Though, as long as it’s the same in-game location (such as Green Hill) it usually should work without having to add files.&lt;br /&gt;
&lt;br /&gt;
Quick note: You can move the camera in HedgeEdit by holding right click and moving the mouse. You can also press the arrow keys or wasd keys to move, and hold shift to move faster.&lt;br /&gt;
&lt;br /&gt;
Most object descriptions are at the bottom of the object template xmls, unfortunately HedgeEdit doesn’t display object descriptions in-editor and I really don’t want to spend thirty minutes reading all of the object descriptions, so… sorry. You can open up the templates in notepad.&lt;br /&gt;
&lt;br /&gt;
Onto enemies. I’m only going to be focusing on the ones that aren’t self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Valkeen&amp;#039;&amp;#039;&amp;#039; (must be spawned using a trigger):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| PathUID&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackDelay&lt;br /&gt;
| The amount of time before the badnik begins dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| Movespeed&lt;br /&gt;
| The speed of the badnik when in flight.&lt;br /&gt;
|-&lt;br /&gt;
| EscapeMoveSpeed&lt;br /&gt;
| The speed of the badnik when it is disabled and flying away.&lt;br /&gt;
|-&lt;br /&gt;
| Popspeed&lt;br /&gt;
| The speed of the badnik before it reaches its pop position.&lt;br /&gt;
|-&lt;br /&gt;
| PassingAddSpeed&lt;br /&gt;
| How much to increase this badniks flight speed as it passes by you.&lt;br /&gt;
|-&lt;br /&gt;
| DropTime&lt;br /&gt;
| The amount of time the badnik is attacking you for.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistance&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| CaptureDistancePassing&lt;br /&gt;
| &amp;#039;&amp;#039;I don’t care.&amp;#039;&amp;#039; (In all serious it might have to do with how it follows the path.)&lt;br /&gt;
|-&lt;br /&gt;
| TurnRoll&lt;br /&gt;
| How much the object rotates when steering.&lt;br /&gt;
|-&lt;br /&gt;
| PopPosition&lt;br /&gt;
| The position offset where the badnik will spawn in relation to its origin point (ignoring the path). It will begin firing after reaching this position, and despawn once it reaches the path origin.&lt;br /&gt;
|-&lt;br /&gt;
| PathOffsetPosition&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| AttackType&lt;br /&gt;
| Normal = It attacks always, Passing = Attacks as it passes you, Reversal = It turns back the other way before dropping bombs.&lt;br /&gt;
|-&lt;br /&gt;
| CaptureType&lt;br /&gt;
| &amp;#039;&amp;#039;Unknown.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| HasGravity&lt;br /&gt;
| Duh (but I don&amp;#039;t know why you&amp;#039;d ever want to use it.)&lt;br /&gt;
|-&lt;br /&gt;
| In3D&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesRespawn&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| DoesAttack&lt;br /&gt;
| Duh&lt;br /&gt;
|-&lt;br /&gt;
| MoveTime&lt;br /&gt;
|How long the object moves for&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2618</id>
		<title>Modding:Sonic Forces</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Modding:Sonic_Forces&amp;diff=2618"/>
		<updated>2021-04-04T18:45:25Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;==Intro== Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Hi! I’m gonna keep this simple, but seeing as there’s like a very small number of tutorials for anything relating to modding 3D Sonic games, I’m gonna focus on the Sonic Forces corner of HedgeEdit, a level-editing tool made by Radfordhound. Keep in mind that this only covers editing object layouts, since HedgeEdit can’t edit terrain or anything like that. If there’s enough demand, I’ll make more tutorials. Also, some of the object templates in the base download are either missing or broken, so I’ll also be including a download to some updated templates I made in the HedgeEdit DL link (These may be updated from time to time, so check back here every so often. I’ll have a comment detailing the last update date).&lt;br /&gt;
&lt;br /&gt;
To start level modding in Sonic Forces, you’ll need a couple of other tools.&lt;br /&gt;
&lt;br /&gt;
==Tools:==&lt;br /&gt;
* [https://drive.google.com/file/d/1VDHTpPe1MNVlAYblLsDd3Oa1KpsLqLGs/view?usp=sharing HedgeEdit] [V3 UPDATED 4/3/21, Includes resources and templates!]&lt;br /&gt;
* [https://github.com/thesupersonic16/HedgeModManager/releases/tag/7.3-2 HedgeModManager]&lt;br /&gt;
* [https://github.com/PTKickass/ForcesModInstaller PackCPK]&lt;br /&gt;
* [https://gist.github.com/blueskythlikesclouds/887d227301dd3c0ea3c62ab6984388cc SFPac] OR HedgeArcPack&lt;br /&gt;
&lt;br /&gt;
==Using HedgeModManager==&lt;br /&gt;
HedgeModManager has its own installation instructions, so just follow those, and I’ll just continue with the next tool you need.&lt;br /&gt;
&lt;br /&gt;
===Using PackCPK===&lt;br /&gt;
&lt;br /&gt;
PackCPK is what you’ll need to unpack the CPK files in Sonic Forces (which contain all of the game’s assets and such). After downloading PackCPK, right click on Sonic Forces in your Steam Library, and hit properties. This will open a menu. On the left, navigate to Local Files and hit the browse button at the top right. This will open the location of Sonic Forces’ files on your PC. Click into the ‘image’ folder, then ‘x64’, then ‘disk’. Inside the ‘disk’ folder, there are several CPK files. Wars_0 contains all of the essential game assets (such as enemies, characters, and ui) as well as all the stage folders for lost valley through aqua road. Wars_1 contains everything from sunset heights to the final boss. Wars_dlc01 contains all of the episode shadow files, dlc02 contains super sonic’s files, and the rest are all of the other avatar costume dlcs and whatnot. There’s also wars_patch, which contains all of the game’s gedit files and other miscellaneous files. For what we’ll be doing, you’ll want to unpack wars_0, wars_1, and wars_patch. Make sure you do these separately, and they may take a while. Keep in mind that often times, PackCPK sometimes misses files, so to be safe, you may want to run the CPKs through a second time after the first attempt.&lt;br /&gt;
&lt;br /&gt;
===Creating a mod folder===&lt;br /&gt;
&lt;br /&gt;
After the aforementioned CPKs are unpacked, you’re gonna want to open HedgeModManager, and hit ‘Add Mod’ at the bottom left. This will open a dialogue box with several options. You’ll want to hit the last choice (making one), and then hit ‘ok’. This will open *another* dialogue box. For now, you can ignore everything above the ‘description’ tab. For everything in the description tab, you can fill out basically whatever you want, it’s pretty self-explanatory. Once you’re done, you can hit ‘OK’. This will open up a new folder for your mod. Click into the ‘disk’ folder in the new window, and create a folder named ‘wars_patch’ with an underscore between wars and patch. &lt;br /&gt;
&lt;br /&gt;
===Putting your stage files in your mod folder===&lt;br /&gt;
&lt;br /&gt;
Next, navigate back to your unpacked CPKs. We’ll be starting with Lost Valley. Go into your wars_0 folder, and find the folder labeled ‘w5a01’. This actually brings me to something important: You may be confused by the naming scheme of stages, so here’s something to help you out: ‘w’ refers to the ‘world’ number, where w1 is death egg, w2 is chemical plant, w3 is city, w4 is mystic jungle, w5 is green hill, w6 is metropolis, and w7 is eggman empire fortress. The letter and the 2 numbers after the world number represent the type of act and the character. ‘A’ means it is a stage from the main story. ‘D’ means it is a dlc stage, ‘B’ means it’s a boss stage, and ‘X’ or ‘S’ means it’s an extra or secret stage. For stages from the main story, the number 01 means it is a Sonic stage, 02 is an avatar stage, 03 is a tag team stage, and 04 is a classic stage. For boss stages or secret/extra stages, the number refers to the act or stage number. (For example, w7b02 is the final boss, since it’s the second boss in that world).&lt;br /&gt;
&lt;br /&gt;
Anyways, back to what i was saying before: click into the w5a01 folder. You’ll see a bunch of pacs. You won’t need to do much with these for now, but just know that these files are opened using ‘SFPac’. Back out of the w5a01 folder, and copy it into the ‘wars_patch’ folder in your mod. While still in your mod’s wars_patch folder, you’ll want to create a folder named ‘gedit’. Next, navigate back to the folder containing the game’s CPKs, and go into *it’s* wars_patch folder (NOT the one in your mod that you just copied files into!). Once inside, you’ll see a ‘gedit’ folder. Go inside it, and copy ‘w5a01_gedit.pac’ into your mod’s gedit folder. Now, you’re ready to start using HedgeEdit. (If you haven’t already downloaded it, do that now). Next, I’m going to teach you how to open stages in HedgeEdit. Simply go into your mod’s wars_patch folder, and copy that directory. Open hedgeedit, click ‘open’ and paste the directory where it says ‘data directory’. Then, enter the ID of the stage you’re looking to edit in the STAGE ID box (w5a01 in our case). If the game is not already set to Sonic Forces, be sure to set it as such. &lt;br /&gt;
&lt;br /&gt;
One more quick thing: Be aware that HedgeEdit copies anything you load or save to it’s own cache folder (to make loading faster) so if you’re running low on space, you might want to check there every now and then to clean out anything you don’t need.&lt;br /&gt;
&lt;br /&gt;
===Using SFPac/HedgeArcPack===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SFPac&amp;#039;&amp;#039;&amp;#039;: When you need to open a .pac file, simply drag the .pac (NOT the .00s) into SFPac. This will unpack the contents of the pac into a folder of the same name (unless your antivirus registers it as a false positive). To repack, just drag the folder back into SFPac. Be aware that there is a size limit, although you’re not going to hit it unless you’re literally spamming files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HedgeArcPac&amp;#039;&amp;#039;&amp;#039;: Basically the same thing, but… it has its own instructions so just follow those&lt;br /&gt;
&lt;br /&gt;
==Bugs &amp;amp; Other Issues==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DON’T SKIP THIS ONE.&amp;#039;&amp;#039;&amp;#039; I figured I’d put this here since it’s a pretty important one. Since the currently available version of HedgeEdit is unfinished (and basically obsolete as a rewrite is in the works), there are a lot of bugs. Some of these, you’ll be able to get around, but others you’ll have to deal with.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rotation Bug&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
The rotation bug is a really fucking horrible bug that makes it so you can’t accurately rotate under 0 degrees (negative values) or over 89.4 degrees. This also affects object parenting, which I will go over later. Keep in mind that once you deselect or save an object, it’s x and z rotation values will swap for no reason. There is no real way around this one, sadly.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ring bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
When placing or moving Rings using the arrows, their vertical height will be offset by 6 units (this is not reflected visually). If you want to move rings without encountering this issue, you can type the position in manually. This issue has been patched for ObjRing and ObjRedRing as of V3. Other objects that possess this issue will be updated in the future.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Object selection bug&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
I have no idea what causes this, but in a modified Lost Valley &amp;amp; Imperial Tower, you can’t select objects that don’t have a model set (basically, anything that uses the Default checkerboard cube. You’ll have to go into the scene view to fish the object out.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Not having a gedit file in the mod folder...&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
...with a name that matches the one you’re editing before you save will cause a crash when attempting to save.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rendering bugs&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
Fix in progress.&lt;br /&gt;
&lt;br /&gt;
* Collapsing Tabs:&lt;br /&gt;
Whenever you place an object, the scene view tabs will collapse. Whenever you save, the scene view and assets dialogue will close. This gets very annoying very fast, but uh… Too bad, F in the chat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stage-specific issues&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
* Adding objects into Sunset Heights will end up causing camera IDs to conflict (as they have no group IDs of their own). To circumvent this, just add your own group IDs.&lt;br /&gt;
&lt;br /&gt;
* Jumpboard Event Triggers in Metropolitan Highway will always corrupt when loaded, you’ll have to manually replace the object IDs and event types within them by editing the object. Otherwise, this will lead to a crash.&lt;br /&gt;
&lt;br /&gt;
* Final Judgement’s objects are rotated vertically, so the rotation bug fucks all of that up. Final judgement is currently uneditable until HedgeEdit 2 is completed in 10 years.&lt;br /&gt;
&lt;br /&gt;
* Jumpboards break if you try to set their event triggers in some stages:&lt;br /&gt;
I don&amp;#039;t know why. You can’t fix them to my knowledge so… sorry again. Just use switchvolumes.&lt;br /&gt;
&lt;br /&gt;
* Movement arrows disappearing:&lt;br /&gt;
Movement arrows disappear when you select multiple objects.&lt;br /&gt;
&lt;br /&gt;
* Actstgmission issues:&lt;br /&gt;
If using an edited actstgmission, keep in mind that the dynamic &amp;amp; static sectors will override hedgeedit’s defaults, so you’ll want to remove or edit your actstgmission to include all sectors.&lt;br /&gt;
&lt;br /&gt;
* RigidBody parameters:&lt;br /&gt;
The isEventDriven parameter for Rigid Bodies are backwards. (True = False, False = True).&lt;br /&gt;
&lt;br /&gt;
* Crash on Load:&lt;br /&gt;
Sometimes HedgeEdit will crash when loading a stage, to prevent this, just move the camera around like a maniac until it finishes loading.&lt;br /&gt;
&lt;br /&gt;
* There’s no undo button:&lt;br /&gt;
Yep.&lt;br /&gt;
&lt;br /&gt;
* NormalFloor movement types often break:&lt;br /&gt;
In some cases, NormalFloors use the incorrect movement type no matter what you set them to.&lt;br /&gt;
&lt;br /&gt;
* Green Hill Mat Issues:&lt;br /&gt;
Often times, placing grass platforms in Green Hill stages will make the grass appear red and the platform itself white. You *should* be able to fix this by replacing the materials with the originals but I’m not 100% sure.&lt;br /&gt;
&lt;br /&gt;
* Not really a bug, but:&lt;br /&gt;
This isn’t really a bug but I suppose it fits here. The virtron objects from Episode Shadow only work in Guardian Rock, Sunset Heights, or Aqua Road.&lt;br /&gt;
&lt;br /&gt;
* Objects carrying over:&lt;br /&gt;
Hitting new or opening a new gedit while another one is active won’t remove the objects from the previous gedit. Make sure you restart HedgeEdit before changing to a different stage.&lt;br /&gt;
&lt;br /&gt;
* Casino Forest Objects do not work with Modern Sonic or the Avatar:&lt;br /&gt;
This one’s probably obvious, but the game crashes if you try to use casino forest objects with modern sonic or the avatar.&lt;br /&gt;
&lt;br /&gt;
* Particle Limit:&lt;br /&gt;
Sonic Forces has a really small particle limit, so if you hit it, stuff like homing attack and boost particles are gonna start disappearing. This also disables any SFX tied to these particles.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Green_Eggs_and_Ham&amp;diff=2607</id>
		<title>Green Eggs and Ham</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Green_Eggs_and_Ham&amp;diff=2607"/>
		<updated>2021-03-05T03:32:21Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Green Eggs and Ham | developer=    Broderbund | publisher=    Random House | systems=      Windows }} &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Green Eggs an...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Green Eggs and Ham&lt;br /&gt;
| developer=    Broderbund&lt;br /&gt;
| publisher=    Random House&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Green Eggs and Ham&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is the second Dr. Seuss interactive &amp;#039;&amp;#039;Living Books&amp;#039;&amp;#039; video game released on July 15, 1996. It is based on the 1960 book of the same name.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
Green Eggs and Ham is based on the [https://wiki.scummvm.org/index.php/Mohawk Mokawk Engine]. It uses &amp;#039;&amp;#039;&amp;#039;.MHK&amp;#039;&amp;#039;&amp;#039; archives, which are supported in [http://www.watto.org/game_extractor.html Game Extractor]. Inside the archives are regular .wav files, palette files, and compressed bitmap files. No ripping tool for the images currently exists ([https://github.com/suppertails66/allrip allrip] doesn&amp;#039;t support it). Referencing the [https://github.com/scummvm/scummvm/tree/master/engines/mohawk ScummVM] source code may be helpful in writing a tool (see [https://forums.scummvm.org/viewtopic.php?p=84457 ScummVM forum]).&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Ninjabread_Man&amp;diff=2606</id>
		<title>Ninjabread Man</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Ninjabread_Man&amp;diff=2606"/>
		<updated>2021-03-05T00:31:22Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Ninjabread Man | developer=    Data Design Interactive | publisher=    Sega | systems=      Wii }} &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Ninjabread Man&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Ninjabread Man&lt;br /&gt;
| developer=    Data Design Interactive&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Wii Games|Wii]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Ninjabread Man&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;  is a platform video game by developer and publisher Data Design Interactive. Upon release, &amp;#039;&amp;#039;Ninjabread Man&amp;#039;&amp;#039; received universally negative reviews from critics due its camera system, graphics, lack of story, short length and controls; the Wii version received even lower reviews for its use of motion controls, and is often considered one of the worst games of all-time.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
Knuxfan24 wrote incomplete code reverse engineering the game&amp;#039;s &amp;#039;&amp;#039;&amp;#039;.WAD&amp;#039;&amp;#039;&amp;#039; archives: https://github.com/Knuxfan24/Marathon/blob/marathon-master/Marathon.IO/Formats/Archives/WADHArchive.cs&lt;br /&gt;
&lt;br /&gt;
He ended up using a much hackier method to rip the stage models.&lt;br /&gt;
&amp;lt;pre&amp;gt;It was a very clunky process, I found that Game Extractor could pull stuff from the WAD, then Hyper wrote something for me that would inject the model data from a Ninjabread Man DFF into a GTA III one.&lt;br /&gt;
Then I could use the GTA tools to import that into Max.&lt;br /&gt;
It was a mess.&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2604</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2604"/>
		<updated>2021-03-01T03:12:00Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
File Formats:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Pictures&amp;quot; image archive, containing &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Sounds&amp;quot; sounds archive, containing &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Films&amp;quot; video file, containing a &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; format is documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here] and [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here]. It is supported in Game Extractor, and when extracted through it, the result is a series of what are likely compressed image files. GE doesn&amp;#039;t give them their internal names when extracting.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039; format is documented [https://zenhax.com/viewtopic.php?t=12338 here]. It&amp;#039;s said the format is based on a &amp;quot;Millionaire3 script&amp;quot; format (search Millionaire3 [http://aluigi.altervista.org/quickbms.htm here]).&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
* Furby: Big Fun in Furbyland&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Team_Sonic_Racing&amp;diff=2603</id>
		<title>Team Sonic Racing</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Team_Sonic_Racing&amp;diff=2603"/>
		<updated>2021-02-21T20:12:07Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Team_Sonic_Racing_Cover.jpg&lt;br /&gt;
| title=        Team Sonic Racing&lt;br /&gt;
| developer=    Sumo Digital&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]], [[:Category:PlayStation 4 Games|PlayStation 4]], [[:Category:Xbox One Games|Xbox One]], [[:Category:Nintendo Switch Games|Nintendo Switch]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Team Sonic Racing&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (チームソニックレーシング &amp;#039;&amp;#039;Chīmu Sonikku Rēshingu&amp;#039;&amp;#039;) is a kart racing video game and a spin-off from the Sonic the Hedgehog series. The game is developed by Sumo Digital and published by Sega, and was released on 21 May 2019. It received both a physical and digital release for the PlayStation 4, Xbox One, and Nintendo Switch, and a digital-only release on Steam for the PC.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.pck&amp;#039;&amp;#039;&amp;#039; (Sound)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.stz&amp;#039;&amp;#039;&amp;#039; (Sprites/Text Strings package)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sp2&amp;#039;&amp;#039;&amp;#039; (Model/Texture package)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.dat/.zml&amp;#039;&amp;#039;&amp;#039; (Misc data, such as configurations)&lt;br /&gt;
&lt;br /&gt;
==Ripping Tutorials==&lt;br /&gt;
===Sprites===&lt;br /&gt;
# Download Sewer56&amp;#039;s .stz [https://cdn.discordapp.com/attachments/317475533321404416/587588494436597777/net472.7z decompressing tool]. [https://aluigi.altervista.org/mytoolz.htm Offzip] works for this as well.&lt;br /&gt;
# Drag the .stz file onto the program. This results in a file named 72.bin when using Sewer56&amp;#039;s tool.&lt;br /&gt;
# Open the resulting 72.bin file in [https://zenhax.com/viewtopic.php?t=7099 Raw Texture Cooker]. Be sure to have the [https://github.com/Microsoft/DirectXTex/wiki/Texconv texconv] executable, as per the instructions. The texture formats are mostly DXT3.&lt;br /&gt;
#* [https://forum.xentax.com/viewtopic.php?f=33&amp;amp;t=9358 Texturefinder] can assist you in finding the correct width and offset of an image within the 72.bin. Neither Game Extractor or X-Ripper can be used to extract the images directly from the file.&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
[https://forum.xentax.com/viewtopic.php?f=16&amp;amp;t=20690 Team Sonic Racing Tool] has been created for this purpose. It also views textures.&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
This game uses Wwise for its sounds. The sound banks can be found in \data\Sound. They can be opened in [http://www.scampers.org/steve/sms/other.htm Ravioli Tools] and converted into &amp;#039;&amp;#039;&amp;#039;.wav&amp;#039;&amp;#039;&amp;#039; from there. There are several &amp;#039;&amp;#039;&amp;#039;.bnk&amp;#039;&amp;#039;&amp;#039; files included within the main &amp;#039;&amp;#039;&amp;#039;.pck&amp;#039;&amp;#039;&amp;#039; file, which can be opened in foobar2000 provided you have the vgmstream plugin. Unfortunately, due to being Wwise, the filenames given are just random numbers.&lt;br /&gt;
&lt;br /&gt;
The files that hold the internal names for the game&amp;#039;s sound files are audiodat.dat, teamcomms.dat, and tracks.dat. They are in the &amp;#039;&amp;#039;&amp;#039;[http://info.sonicretro.org/SCHG:Sonic_%26_Sega_All-Stars_Racing/Formats/SSRT SSRT]&amp;#039;&amp;#039;&amp;#039; format.&lt;br /&gt;
&lt;br /&gt;
audiodat.dat contains filenames such as &amp;#039;&amp;#039;ASN_AIAI&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Play_VO_PH_Wisp_Callout_Orange_Rocket&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Stop_Wisp_Jade_Ghost_Engine_loop&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;Play_Drift_Boost_Exit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
teamcomms.dat contains filenames such as &amp;#039;&amp;#039;VTC_AMY_WISPHITSOPPONENTGENERIC_03&amp;#039;&amp;#039;, &amp;#039;&amp;#039;TC_OMG_RACEPERFORMANCESTUNTFAILGENERIC_02&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;TC_OMO_RACEINTERACTIONENEMYNEGATIVEREACTION_RGE_01&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
tracks.dat contains filenames such as &amp;#039;&amp;#039;TSR_CasinoPark_BingoPartyPinballHighway&amp;#039;&amp;#039; and &amp;#039;&amp;#039;TSR_Narrative_Zone04_Track03&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
If you just want the textures, this method works: https://www.vg-resource.com/thread-35563.html&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.models-resource.com/pc_computer/teamsonicracing/ The Models Resource]&lt;br /&gt;
* [https://www.sounds-resource.com/pc_computer/teamsonicracing/ The Sounds Resource]&lt;br /&gt;
* [https://www.spriters-resource.com/pc_computer/teamsonicracing/ The Spriters Resource]&lt;br /&gt;
[[Category:Xbox One Games]]&lt;br /&gt;
[[Category:PlayStation 4 Games]]&lt;br /&gt;
[[Category:Windows Games]]&lt;br /&gt;
[[Category:Nintendo Switch Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2602</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2602"/>
		<updated>2021-02-14T20:53:10Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Candy_Land_Game_Cover.jpg&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=        [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
File Formats:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Pictures&amp;quot; image archive, containing &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Sounds&amp;quot; sounds archive, containing &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Films&amp;quot; video file, containing a &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; format is documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here] and [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here]. It is supported in Game Extractor, and when extracted through it, the result is a series of what are likely compressed image files. GE doesn&amp;#039;t give them their internal names when extracting.&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Crayola Make A Masterpiece&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=File:Candy_Land_Game_Cover.jpg&amp;diff=2601</id>
		<title>File:Candy Land Game Cover.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=File:Candy_Land_Game_Cover.jpg&amp;diff=2601"/>
		<updated>2021-02-14T20:45:04Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2600</id>
		<title>Sonic Rush</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2600"/>
		<updated>2021-02-14T04:33:25Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Sonic_Rush_-_Boxart.jpg&lt;br /&gt;
| title=        Sonic Rush&lt;br /&gt;
| developer=    Dimps&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Nintendo DS Games|Nintendo DS]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Rush&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2005 platform video game developed by Sonic Team and Dimps for the Nintendo DS as part of Sega&amp;#039;s Sonic the Hedgehog series. It was released on November 15, 2005 in North America, November 18 in the PAL region, and November 23 in Japan. It is a 2D platform game, similar to earlier games in the series as well as later ones like Sonic Advance. Levels in the game are side-scrolling and displayed using both of the DS&amp;#039;s screens. However, boss battles, the main characters, and a special stage are rendered in 3D, creating a 2.5D effect. The game&amp;#039;s storyline follows the intertwining adventures of a new character, Blaze the Cat, and the series&amp;#039; main character, Sonic the Hedgehog. They respectively battle Doctor Eggman and his doppelgänger Eggman Nega at certain points.&lt;br /&gt;
&lt;br /&gt;
Sonic Rush Adventure and Sonic Colors (DS) would later be made on the same engine.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.narc/.bb&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.nsbmd&amp;#039;&amp;#039;&amp;#039; (Models)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin/.bac&amp;#039;&amp;#039;&amp;#039; (Textures/Sprites)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sdat&amp;#039;&amp;#039;&amp;#039; (Sounds)&lt;br /&gt;
&lt;br /&gt;
==Sprite Ripping==&lt;br /&gt;
Try this [https://www.vg-resource.com/thread-38627.html tutorial] by Chor64.&lt;br /&gt;
&lt;br /&gt;
==Tileset Information==&lt;br /&gt;
The following is taken from #READ ME FIRST#.txt in Techokami&amp;#039;s tileset rips such as [https://www.spriters-resource.com/ds_dsi/sonicrush/sheet/25412/ Leaf Storm]. The &amp;#039;&amp;#039;rush_levelrip.phps&amp;#039;&amp;#039; link leads to a 404, but can also be found &amp;#039;&amp;#039;&amp;#039;[https://github.com/Techokami/RandomCrappage/tree/master/PHP here]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
-----------------------&lt;br /&gt;
SONIC RUSH AND&lt;br /&gt;
SONIC RUSH ADVENTURE &lt;br /&gt;
LEVEL RIP&lt;br /&gt;
-----------------------&lt;br /&gt;
&lt;br /&gt;
1) CREDITS&lt;br /&gt;
The tilesets contained within were originally created by SEGA &lt;br /&gt;
and Dimps.  The rip was created via an automated process by &lt;br /&gt;
Techokami, with information and help from JoseTB &amp;amp; Retriever II.&lt;br /&gt;
&lt;br /&gt;
If you use the contents of this package, you must give credit&lt;br /&gt;
to SEGA, Dimps, and Techokami.&lt;br /&gt;
&lt;br /&gt;
If you did not download this tileset from the following domains:&lt;br /&gt;
http://holenet.info/&lt;br /&gt;
http://www.spriters-resource.com/&lt;br /&gt;
http://www.sonicfangameshq.com/&lt;br /&gt;
http://www.themfz.com/&lt;br /&gt;
then you should immediately start yelling at the webmaster for&lt;br /&gt;
mirroring this file without permission.&lt;br /&gt;
PROTIP: If you ask first, I&amp;#039;ll almost always say yes!&lt;br /&gt;
&lt;br /&gt;
2) THE RIPPING PROCESS&lt;br /&gt;
Sonic Rush levels are stored in the ROM filesystem as .NARC&lt;br /&gt;
(Nintendo/Nitro Archive) files. Inside the archive are several&lt;br /&gt;
files, all LZ77 compressed, that contain the pallete, tile, and&lt;br /&gt;
block data. Once decompressed, the files were fed into a modified&lt;br /&gt;
version of my Sonic Advance level ripper, generating individual&lt;br /&gt;
PNG files. The script is available under a BSD license (e.g. do&lt;br /&gt;
whatever you want, but give credit) from holenet.info at the &lt;br /&gt;
following location:&lt;br /&gt;
http://holenet.info/rush_levelrip.phps&lt;br /&gt;
&lt;br /&gt;
For more information, please read the thread on Sonic Retro:&lt;br /&gt;
http://forums.sonicretro.org/index.php?showtopic=16629&lt;br /&gt;
&lt;br /&gt;
3) EXPLANATION OF TILESET&lt;br /&gt;
Due to a limitation on the DS graphical system, you cannot have&lt;br /&gt;
tile priority, only layer priority. In order to have parts of the&lt;br /&gt;
level appear in front of Sonic, it is formed by combining layers&lt;br /&gt;
BG2 (bottom) and BG3 (top) with the Object layer in between.&lt;br /&gt;
&lt;br /&gt;
The levels are built from 64x64 pixel blocks. Do NOT alter their&lt;br /&gt;
dimensions or they will NOT work correctly!&lt;br /&gt;
&lt;br /&gt;
The background itself is completely separate from the block and&lt;br /&gt;
tile data, so they have not been ripped. They will not be ripped.&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
&lt;br /&gt;
4) CONTACT&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
DO NOT ASK FOR LEVEL EDITING INSTRUCTIONS.&lt;br /&gt;
DO NOT ASK FOR THINGS TO BE RIPPED.&lt;br /&gt;
DO NOT ASK HOW I RIPPED THIS.&lt;br /&gt;
DO NOT ASK HOW TO HACK ROMS.&lt;br /&gt;
DO NOT ASK HOW TO WRITE PHP CODE.&lt;br /&gt;
Email: techokami [AT] gdarcade [D0T] taloncrossing [D0T] com&lt;br /&gt;
&lt;br /&gt;
5) GREETS&lt;br /&gt;
JoseTB, Retriever II, Ainsworth, The Kins, Shadsy, the Something &lt;br /&gt;
Awful goons, Tweaker, Scarred Sun, drx, phugolz, Sazpaimon, Coburn64,&lt;br /&gt;
MatthewPZC, Naoshi, and all the staff at:&lt;br /&gt;
-Mario Fan Games Galaxy&lt;br /&gt;
-Metroid: Fan Mission&lt;br /&gt;
-XCulT&lt;br /&gt;
-Sonic Retro&lt;br /&gt;
-Goshi-Dan&amp;#039;s Arcade&lt;br /&gt;
-The Spriter&amp;#039;s Resource&lt;br /&gt;
-SMW Central&lt;br /&gt;
&lt;br /&gt;
6) THE END&lt;br /&gt;
Enjoy the tilesets.&lt;br /&gt;
-Techokami&lt;br /&gt;
&amp;lt;/poem&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
* [https://forums.sonicretro.org/index.php?threads/so-i-made-something-that-renders-sonic-rush-level-maps.23725/ So I made something that renders Sonic Rush level maps]&lt;br /&gt;
* https://github.com/NotKit/sonic-rush-tools&lt;br /&gt;
* http://info.sonicretro.org/Sonic_Rush/Technical_information&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/ds_dsi/sonicrush/ The Spriters Resource]&lt;br /&gt;
* [https://www.models-resource.com/ds_dsi/sonicrush/ The Models Resource]&lt;br /&gt;
* [https://www.textures-resource.com/ds_dsi/sonicrush/ The Textures Resource]&lt;br /&gt;
* [https://www.sounds-resource.comp/ds_dsi/sonicrush/ The Sounds Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Super_Monkey_Ball_Jr.&amp;diff=2598</id>
		<title>Super Monkey Ball Jr.</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Super_Monkey_Ball_Jr.&amp;diff=2598"/>
		<updated>2021-02-10T23:08:53Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Super Monkey Ball Jr. | developer=    Realism | publisher=    THQ | system=       Game Boy Advance }} Super Monkey Ball Jr. is a platform game, part...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Super Monkey Ball Jr.&lt;br /&gt;
| developer=    Realism&lt;br /&gt;
| publisher=    THQ&lt;br /&gt;
| system=       Game Boy Advance&lt;br /&gt;
}}&lt;br /&gt;
Super Monkey Ball Jr. is a platform game, part of the Super Monkey Ball series, developed by Realism and published by THQ for the Game Boy Advance. It is one of the few games on the system to make use of its 3D graphics capabilities.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The following is a consolidation of romhacking-related forum posts by Yoshimaster96, in order of date posted.&lt;br /&gt;
* [https://www.romhacking.net/forum/index.php?topic=19048 GBA 3D model data (SMBJR)]&lt;br /&gt;
* [https://gbatemp.net/threads/super-monkey-ball-jr-hacking-help.377167 Super Monkey Ball Jr. Hacking Help!]&lt;br /&gt;
* [http://kuribo64.net/board/thread.php?id=2114 Let&amp;#039;s Hack Super Monkey Ball Jr.!]&lt;br /&gt;
* [https://www.smwcentral.net/?p=viewthread&amp;amp;t=81682 SMBJR Hacking!]&lt;br /&gt;
* [https://www.smwcentral.net/?p=viewthread&amp;amp;t=83238 JRSPLIT: Super Monkey Ball JR ROM splitting utility]&lt;br /&gt;
* [http://smbhd.rf.gd/?page=thread&amp;amp;id=5 Super Monkey Ball Jr. Hacking Information]&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/game_boy_advance/supermonkey/ The Spriters Resource]&lt;br /&gt;
* [https://www.models-resource.com/game_boy_advance/supermonkey/ The Models Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sammy%27s_Science_House&amp;diff=2597</id>
		<title>Sammy&#039;s Science House</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sammy%27s_Science_House&amp;diff=2597"/>
		<updated>2021-02-10T05:42:55Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Sammy&amp;#039;s Science House | developer=    Theatrix Interactive | publisher=    Edmark | systems=      Windows }} Early Learn...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Sammy&amp;#039;s Science House&lt;br /&gt;
| developer=    Theatrix Interactive&lt;br /&gt;
| publisher=    Edmark&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
Early Learning House is a collection of four main educational video games and two compilations for the Windows and Macintosh platforms, developed by Theatrix Interactive, Inc. and published by Edmark software. Each different game focuses on a particular major learning category with selectable skill settings for preschooler, kindergarten and elementary learners. &amp;#039;&amp;#039;&amp;#039;Millie&amp;#039;s Math House&amp;#039;&amp;#039;&amp;#039; (1992) on mathematics, &amp;#039;&amp;#039;&amp;#039;Bailey&amp;#039;s Book House&amp;#039;&amp;#039;&amp;#039; (1993) on language, &amp;#039;&amp;#039;&amp;#039;Sammy&amp;#039;s Science House&amp;#039;&amp;#039;&amp;#039; (1994) on science, and &amp;#039;&amp;#039;&amp;#039;Trudy&amp;#039;s Time and Place House&amp;#039;&amp;#039;&amp;#039; (1995) on history and geography. A spin-off, Stanley&amp;#039;s Sticker Stories (1996), sees players create animated storybooks with the series&amp;#039; characters.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
&lt;br /&gt;
[http://aluigi.altervista.org/quickbms.htm Aluigi&amp;#039;s Edmark script] works on this game, and likely on the other games in the series. Using the script on the game&amp;#039;s resource files, &amp;#039;&amp;#039;&amp;#039;SAMMY_.RES&amp;#039;&amp;#039;&amp;#039;, results in folders containing various data, such as sounds (SND), palettes (PAL), and sprites (SPR). &lt;br /&gt;
&lt;br /&gt;
SAMMY0 contains the intro, SAMMY2 contains &amp;quot;let&amp;#039;s make a movie&amp;quot;, SAMMY3 contains the workshop, SAMMY4 contains the sorting station, SAMMY5 contains the weather game, and SAMMY6 contains Acorn Pond.&lt;br /&gt;
&lt;br /&gt;
==Sprite Ripping==&lt;br /&gt;
&lt;br /&gt;
# Use the BMS script to extract a &amp;#039;&amp;#039;&amp;#039;.RES&amp;#039;&amp;#039;&amp;#039; file.&lt;br /&gt;
# Open a file in the SPR folder in TiledGGD. Set the format to 8 Bits per Pixel, big endian, linear.&lt;br /&gt;
# Open a palette file in the PAL folder. Set the format to 3 Bytes per Color, GBR color order, big endian, linear.&lt;br /&gt;
# Skip the image data to offset 0xC to remove the header. There may still be some extra garbage showing on the side of the image.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2596</id>
		<title>Sonic Rush</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2596"/>
		<updated>2021-02-08T18:07:50Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Sonic_Rush_-_Boxart.jpg&lt;br /&gt;
| title=        Sonic Rush&lt;br /&gt;
| developer=    Dimps&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Nintendo DS Games|Nintendo DS]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Rush&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2005 platform video game developed by Sonic Team and Dimps for the Nintendo DS as part of Sega&amp;#039;s Sonic the Hedgehog series. It was released on November 15, 2005 in North America, November 18 in the PAL region, and November 23 in Japan. It is a 2D platform game, similar to earlier games in the series as well as later ones like Sonic Advance. Levels in the game are side-scrolling and displayed using both of the DS&amp;#039;s screens. However, boss battles, the main characters, and a special stage are rendered in 3D, creating a 2.5D effect. The game&amp;#039;s storyline follows the intertwining adventures of a new character, Blaze the Cat, and the series&amp;#039; main character, Sonic the Hedgehog. They respectively battle Doctor Eggman and his doppelgänger Eggman Nega at certain points.&lt;br /&gt;
&lt;br /&gt;
Sonic Rush Adventure and Sonic Colors (DS) would later be made on the same engine.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.narc/.bb&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.nsbmd&amp;#039;&amp;#039;&amp;#039; (Models)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin/.bac&amp;#039;&amp;#039;&amp;#039; (Textures/Sprites)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sdat&amp;#039;&amp;#039;&amp;#039; (Sounds)&lt;br /&gt;
&lt;br /&gt;
==Sprite Ripping==&lt;br /&gt;
Try this [https://www.vg-resource.com/thread-38627.html tutorial] by Chor64.&lt;br /&gt;
&lt;br /&gt;
==Tileset Information==&lt;br /&gt;
The following is taken from #READ ME FIRST#.txt in Techokami&amp;#039;s tileset rips such as [https://www.spriters-resource.com/ds_dsi/sonicrush/sheet/25412/ Leaf Storm]. The &amp;#039;&amp;#039;rush_levelrip.phps&amp;#039;&amp;#039; link leads to a 404.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
-----------------------&lt;br /&gt;
SONIC RUSH AND&lt;br /&gt;
SONIC RUSH ADVENTURE &lt;br /&gt;
LEVEL RIP&lt;br /&gt;
-----------------------&lt;br /&gt;
&lt;br /&gt;
1) CREDITS&lt;br /&gt;
The tilesets contained within were originally created by SEGA &lt;br /&gt;
and Dimps.  The rip was created via an automated process by &lt;br /&gt;
Techokami, with information and help from JoseTB &amp;amp; Retriever II.&lt;br /&gt;
&lt;br /&gt;
If you use the contents of this package, you must give credit&lt;br /&gt;
to SEGA, Dimps, and Techokami.&lt;br /&gt;
&lt;br /&gt;
If you did not download this tileset from the following domains:&lt;br /&gt;
http://holenet.info/&lt;br /&gt;
http://www.spriters-resource.com/&lt;br /&gt;
http://www.sonicfangameshq.com/&lt;br /&gt;
http://www.themfz.com/&lt;br /&gt;
then you should immediately start yelling at the webmaster for&lt;br /&gt;
mirroring this file without permission.&lt;br /&gt;
PROTIP: If you ask first, I&amp;#039;ll almost always say yes!&lt;br /&gt;
&lt;br /&gt;
2) THE RIPPING PROCESS&lt;br /&gt;
Sonic Rush levels are stored in the ROM filesystem as .NARC&lt;br /&gt;
(Nintendo/Nitro Archive) files. Inside the archive are several&lt;br /&gt;
files, all LZ77 compressed, that contain the pallete, tile, and&lt;br /&gt;
block data. Once decompressed, the files were fed into a modified&lt;br /&gt;
version of my Sonic Advance level ripper, generating individual&lt;br /&gt;
PNG files. The script is available under a BSD license (e.g. do&lt;br /&gt;
whatever you want, but give credit) from holenet.info at the &lt;br /&gt;
following location:&lt;br /&gt;
http://holenet.info/rush_levelrip.phps&lt;br /&gt;
&lt;br /&gt;
For more information, please read the thread on Sonic Retro:&lt;br /&gt;
http://forums.sonicretro.org/index.php?showtopic=16629&lt;br /&gt;
&lt;br /&gt;
3) EXPLANATION OF TILESET&lt;br /&gt;
Due to a limitation on the DS graphical system, you cannot have&lt;br /&gt;
tile priority, only layer priority. In order to have parts of the&lt;br /&gt;
level appear in front of Sonic, it is formed by combining layers&lt;br /&gt;
BG2 (bottom) and BG3 (top) with the Object layer in between.&lt;br /&gt;
&lt;br /&gt;
The levels are built from 64x64 pixel blocks. Do NOT alter their&lt;br /&gt;
dimensions or they will NOT work correctly!&lt;br /&gt;
&lt;br /&gt;
The background itself is completely separate from the block and&lt;br /&gt;
tile data, so they have not been ripped. They will not be ripped.&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
&lt;br /&gt;
4) CONTACT&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
DO NOT ASK FOR LEVEL EDITING INSTRUCTIONS.&lt;br /&gt;
DO NOT ASK FOR THINGS TO BE RIPPED.&lt;br /&gt;
DO NOT ASK HOW I RIPPED THIS.&lt;br /&gt;
DO NOT ASK HOW TO HACK ROMS.&lt;br /&gt;
DO NOT ASK HOW TO WRITE PHP CODE.&lt;br /&gt;
Email: techokami [AT] gdarcade [D0T] taloncrossing [D0T] com&lt;br /&gt;
&lt;br /&gt;
5) GREETS&lt;br /&gt;
JoseTB, Retriever II, Ainsworth, The Kins, Shadsy, the Something &lt;br /&gt;
Awful goons, Tweaker, Scarred Sun, drx, phugolz, Sazpaimon, Coburn64,&lt;br /&gt;
MatthewPZC, Naoshi, and all the staff at:&lt;br /&gt;
-Mario Fan Games Galaxy&lt;br /&gt;
-Metroid: Fan Mission&lt;br /&gt;
-XCulT&lt;br /&gt;
-Sonic Retro&lt;br /&gt;
-Goshi-Dan&amp;#039;s Arcade&lt;br /&gt;
-The Spriter&amp;#039;s Resource&lt;br /&gt;
-SMW Central&lt;br /&gt;
&lt;br /&gt;
6) THE END&lt;br /&gt;
Enjoy the tilesets.&lt;br /&gt;
-Techokami&lt;br /&gt;
&amp;lt;/poem&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
* https://github.com/NotKit/sonic-rush-tools&lt;br /&gt;
* http://info.sonicretro.org/Sonic_Rush/Technical_information&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/ds_dsi/sonicrush/ The Spriters Resource]&lt;br /&gt;
* [https://www.models-resource.com/ds_dsi/sonicrush/ The Models Resource]&lt;br /&gt;
* [https://www.textures-resource.com/ds_dsi/sonicrush/ The Textures Resource]&lt;br /&gt;
* [https://www.sounds-resource.comp/ds_dsi/sonicrush/ The Sounds Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2595</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2595"/>
		<updated>2021-02-06T19:06:04Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a simulation game developed by ImageBuilder Software, Inc. and published by Hasbro Interactive, Inc. in 1998.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
File Formats:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Pictures&amp;quot; image archive, containing &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Sounds&amp;quot; sounds archive, containing &amp;#039;&amp;#039;&amp;#039;.AIF&amp;#039;&amp;#039;&amp;#039; files.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Films&amp;quot; video file, containing a &amp;#039;&amp;#039;&amp;#039;.flm&amp;#039;&amp;#039;&amp;#039; file.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; format is documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here] and [https://forum.xentax.com/viewtopic.php?f=10&amp;amp;t=17693 here]. It is supported in Game Extractor, and when extracted through it, the result is a series of what are likely compressed image files, though GE doesn&amp;#039;t give them names when extracting. The Xentax link also contains a BMS script.&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
* CandyCCP.MMP = Images from the game&amp;#039;s finale.&lt;br /&gt;
* CandyGMP.MMP = Images from Jolly&amp;#039;s activities.&lt;br /&gt;
* CandyICP.MMP = Images from Queen Frostine&amp;#039;s activities.&lt;br /&gt;
* CandyPFP.MMP = Images from Mr. Mint&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
==Games Using Similar Formats==&lt;br /&gt;
* Scooby Doo Case Files #1: The Glowing Bug Man&lt;br /&gt;
* Mr. Potato Head Activity Pack&lt;br /&gt;
* Crayola Make A Masterpiece&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2594</id>
		<title>Candy Land</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land&amp;diff=2594"/>
		<updated>2021-02-04T21:14:38Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Candy Land | developer=    ImageBuilder | publisher=    Hasbro Interactive | systems=      Windows }} &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land Ad...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Candy Land&lt;br /&gt;
| developer=    ImageBuilder&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land Adventure&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is an adventure game developed by Realtime Associates and published by Hasbro Interactive in 1996.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
File Formats:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039;: &amp;quot;MMFW Pictures&amp;quot; image archive.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMA&amp;#039;&amp;#039;&amp;#039;: ?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.MMF&amp;#039;&amp;#039;&amp;#039;: ?&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039; format is documented [http://wiki.xentax.com/index.php/Scooby_Doo_Case_Files_MMP_MMFW here]. It is supported in Game Extractor, and when extracted through it, the result is a series of what are likely compressed image files. Judging by the filenames list in the &amp;#039;&amp;#039;&amp;#039;.MMP&amp;#039;&amp;#039;&amp;#039;, the files all have the extension &amp;#039;&amp;#039;&amp;#039;.PICT&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide==&lt;br /&gt;
* CandyBHP.MMP = Images from Gramma Nutt&amp;#039;s activities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Candy_Land_Adventure&amp;diff=2590</id>
		<title>Candy Land Adventure</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Candy_Land_Adventure&amp;diff=2590"/>
		<updated>2021-01-28T03:30:01Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Candy Land Adventure | developer=    Realtime Associates | publisher=    Hasbro Interactive | systems=      Windows, :...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Candy Land Adventure&lt;br /&gt;
| developer=    Realtime Associates&lt;br /&gt;
| publisher=    Hasbro Interactive&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]], [[:Mac OS Classic Games|Mac OS Classic]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Candy Land Adventure&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is an adventure game developed by Realtime Associates and published by Hasbro Interactive in 1996.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The game&amp;#039;s data is stored in the 94KB &amp;#039;&amp;#039;&amp;#039;GAME.RFS&amp;#039;&amp;#039;&amp;#039; file. Suppertails66 wrote the utility [https://github.com/suppertails66/allrip candyadvrip] to extract the game data. Unfortunately, you&amp;#039;ll have to compile it first.&lt;br /&gt;
&lt;br /&gt;
For further reading, check out the game&amp;#039;s [https://tcrf.net/Candy_Land_Adventure TCRF page].&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows Games]]&lt;br /&gt;
[[Category:Mac OS Classic Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(HD)&amp;diff=2589</id>
		<title>Sonic Unleashed (HD)</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(HD)&amp;diff=2589"/>
		<updated>2021-01-27T02:32:21Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Sonic the Hedgehog&lt;br /&gt;
| developer=    Sonic Team&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:PlayStation 4 Games|PlayStation 3]], [[:Category:Xbox 360 Games|Xbox 360]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Unleashed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2008 platform video game in the Sonic the Hedgehog series. The story follows Sonic as he attempts to restore the world after his nemesis Doctor Eggman shatters it with a powerful laser to unleash Dark Gaia, an ancient evil, while dealing with having become a &amp;quot;Werehog&amp;quot;, a werewolf-esque transformation, which he gains after coming into contact with the energy of Dark Gaia. Gameplay features two distinct styles, with each being played either during daytime or nighttime. Daytime stages incorporate Sonic&amp;#039;s traditional platforming and trademark speed, with a combination of behind-the-back third-person viewpoints and 2D side-scroller platforming; gameplay seamlessly transitions between these two views.&lt;br /&gt;
&lt;br /&gt;
This page describes the version released for the Xbox 360 and Playstation 3, commonly referred to as the HD version. The other versions of the game are the [[Sonic_Unleashed_(SD)|SD version]] released for the Wii and Playstation 2, and the [[Sonic_Unleashed_(mobile)|mobile version]] developed by Gameloft.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.arl/ar.0_&amp;#039;&amp;#039;&amp;#039; (Archives)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.model&amp;#039;&amp;#039;&amp;#039; (Models)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.dds&amp;#039;&amp;#039;&amp;#039; (Textures)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.csb&amp;#039;&amp;#039;&amp;#039; (Music and voices)&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
* [https://aluigi.altervista.org/bms/xcompress_file.bms XCompress BMS script] for some .dds textures using a special Xbox compression. The XCompress utilities included in the Xbox 360 SDK work much better for several reasons, but they are copyrighted material and can&amp;#039;t be shared here.&lt;br /&gt;
* [https://github.com/PTKickass/SonicUnleashed_ModToolbox Sonic Unleashed Mod Toolbox] for extracting .arl/ar.0_ archives.&lt;br /&gt;
* [https://github.com/DarioSamo/libgens-sonicglvl/tree/master/bin ModelFBX] for model conversion. &lt;br /&gt;
&lt;br /&gt;
==Filesystem Guide (WIP)==&lt;br /&gt;
* Archives beginning with a # contain only game data such as collision models (&amp;#039;&amp;#039;&amp;#039;.hkx&amp;#039;&amp;#039;&amp;#039;) and object layouts (&amp;#039;&amp;#039;&amp;#039;.xml&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* SystemCommon = Textures for Chip (&amp;quot;Whip&amp;quot;), rings, rainbow rings, sun &amp;amp; moon medals, some particle effects, and some placeholder textures.&lt;br /&gt;
* SystemCommonCore = Some HUD and UI textures.&lt;br /&gt;
* Town_Common = A lone se_object_town_vo_e.csb.&lt;br /&gt;
* Town_EuropeanCity = Many &amp;#039;&amp;#039;&amp;#039;.texture&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;.texset&amp;#039;&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;&amp;#039;.material&amp;#039;&amp;#039;&amp;#039; files corresponding to the Spagonia hub.&lt;br /&gt;
* Town_EuropeanCity_Common = Amy&amp;#039;s animations in &amp;#039;&amp;#039;&amp;#039;.hkx&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;.texture&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;.texset&amp;#039;&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;&amp;#039;.material&amp;#039;&amp;#039;&amp;#039; files, [https://board.sonicstadium.org/topic/11047-the-official-sonic-generations-mods-topic/page/69/?tab=comments#comment-497805 &amp;#039;&amp;#039;&amp;#039;.xtb&amp;#039;&amp;#039;&amp;#039; files] for the townspeople&amp;#039;s dialogue.&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
* http://info.sonicretro.org/SCHG:Sonic_Unleashed_(XBOX_360/PS3)&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.models-resource.com/xbox_360/sonicunleashed/ The Models Resource]&lt;br /&gt;
* [https://www.sounds-resource.com/xbox_360/sonicunleashed/ The Sounds Resource]&lt;br /&gt;
[[Category:Xbox 360 Games]]&lt;br /&gt;
[[Category:PlayStation 3 Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2587</id>
		<title>Lost in Blue</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2587"/>
		<updated>2021-01-22T03:17:59Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Lost in Blue&lt;br /&gt;
| developer=    Konami&lt;br /&gt;
| publisher=    Konami&lt;br /&gt;
| system=      Nintendo DS&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Lost in Blue&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a sandbox style video game for the Nintendo DS handheld system, and is a continuation of Konami&amp;#039;s Survival Kids series. Lost in Blue follows two young teenagers, Keith and Skye, who struggle for survival on a deserted island. The player must learn to use the island&amp;#039;s natural resources to create a makeshift home away from home. The sequel, Lost in Blue 2, was released two years later. A third installment of the series, Lost in Blue 3, was released on December 20, 2007 in Japan.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.lbt&amp;#039;&amp;#039;&amp;#039; (Text files)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.NANR, .NCER, .NCLR...&amp;#039;&amp;#039;&amp;#039; (Image formats common in DS games)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.N_&amp;#039;&amp;#039;&amp;#039; files can be viewed and extracted in Tinke.&lt;br /&gt;
&lt;br /&gt;
Some of the image files are in the root of the rom, but most are in the large all2d.bin archive. It&amp;#039;s uncompressed, and consists of the common DS formats.&lt;br /&gt;
&lt;br /&gt;
User Fluttershy on the VGR Discord extracted the archive, resulting in many files named after their offsets. Their comment: &amp;lt;code&amp;gt;the top of the bin was just {offset} {size} {offset} {size} etc, until offset was 0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download them [https://cdn.discordapp.com/attachments/143402852289609729/802005593333694464/all2d.zip here]. These files can also be viewed in Tinke.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2586</id>
		<title>Lost in Blue</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2586"/>
		<updated>2021-01-22T03:17:39Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Lost in Blue&lt;br /&gt;
| developer=    Konami&lt;br /&gt;
| publisher=    Konami&lt;br /&gt;
| system=      [[:Category:Nintendo DS Games|Nintendo DS]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Lost in Blue&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a sandbox style video game for the Nintendo DS handheld system, and is a continuation of Konami&amp;#039;s Survival Kids series. Lost in Blue follows two young teenagers, Keith and Skye, who struggle for survival on a deserted island. The player must learn to use the island&amp;#039;s natural resources to create a makeshift home away from home. The sequel, Lost in Blue 2, was released two years later. A third installment of the series, Lost in Blue 3, was released on December 20, 2007 in Japan.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.lbt&amp;#039;&amp;#039;&amp;#039; (Text files)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.NANR, .NCER, .NCLR...&amp;#039;&amp;#039;&amp;#039; (Image formats common in DS games)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.N_&amp;#039;&amp;#039;&amp;#039; files can be viewed and extracted in Tinke.&lt;br /&gt;
&lt;br /&gt;
Some of the image files are in the root of the rom, but most are in the large all2d.bin archive. It&amp;#039;s uncompressed, and consists of the common DS formats.&lt;br /&gt;
&lt;br /&gt;
User Fluttershy on the VGR Discord extracted the archive, resulting in many files named after their offsets. Their comment: &amp;lt;code&amp;gt;the top of the bin was just {offset} {size} {offset} {size} etc, until offset was 0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download them [https://cdn.discordapp.com/attachments/143402852289609729/802005593333694464/all2d.zip here]. These files can also be viewed in Tinke.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2585</id>
		<title>Lost in Blue</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2585"/>
		<updated>2021-01-22T03:14:11Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Lost in Blue&lt;br /&gt;
| developer=    Konami&lt;br /&gt;
| publisher=    Konami&lt;br /&gt;
| systems=      [[:Category:Nintendo DS Games|Nintendo DS]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Lost in Blue&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a sandbox style video game for the Nintendo DS handheld system, and is a continuation of Konami&amp;#039;s Survival Kids series. Lost in Blue follows two young teenagers, Keith and Skye, who struggle for survival on a deserted island. The player must learn to use the island&amp;#039;s natural resources to create a makeshift home away from home. The sequel, Lost in Blue 2, was released two years later. A third installment of the series, Lost in Blue 3, was released on December 20, 2007 in Japan.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.lbt&amp;#039;&amp;#039;&amp;#039; (Text files)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.NANR, .NCER, .NCLR...&amp;#039;&amp;#039;&amp;#039; (Image formats common in DS games)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.N_&amp;#039;&amp;#039;&amp;#039; files can be viewed and extracted in Tinke.&lt;br /&gt;
&lt;br /&gt;
Some of the image files are in the root of the rom, but most are in the large all2d.bin archive. It&amp;#039;s uncompressed, and consists of the common DS formats.&lt;br /&gt;
&lt;br /&gt;
User Fluttershy on the VGR Discord extracted the archive, resulting in many files named after their offsets. Their comment: &amp;lt;code&amp;gt;the top of the bin was just {offset} {size} {offset} {size} etc, until offset was 0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download them [https://cdn.discordapp.com/attachments/143402852289609729/802005593333694464/all2d.zip here]. These files can also be viewed in Tinke.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2584</id>
		<title>Lost in Blue</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Lost_in_Blue&amp;diff=2584"/>
		<updated>2021-01-22T03:09:23Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Lost in Blue&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a sandbox style video game for the Nintendo DS handheld system, and is a continuation of Konami&amp;#039;s Survival Kids series. Lost in Blue follows two youn...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Lost in Blue&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a sandbox style video game for the Nintendo DS handheld system, and is a continuation of Konami&amp;#039;s Survival Kids series. Lost in Blue follows two young teenagers, Keith and Skye, who struggle for survival on a deserted island. The player must learn to use the island&amp;#039;s natural resources to create a makeshift home away from home. The sequel, Lost in Blue 2, was released two years later. A third installment of the series, Lost in Blue 3, was released on December 20, 2007 in Japan.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.lbt&amp;#039;&amp;#039;&amp;#039; (Text files)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.NANR, .NCER, .NCLR...&amp;#039;&amp;#039;&amp;#039; (Image formats common in DS games)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;.N_&amp;#039;&amp;#039;&amp;#039; files can be viewed and extracted in Tinke.&lt;br /&gt;
&lt;br /&gt;
Some of the image files are in the root of the rom, but most are in the large all2d.bin archive. It&amp;#039;s uncompressed, and consists of the common DS formats.&lt;br /&gt;
&lt;br /&gt;
User Fluttershy on the VGR Discord extracted the archive, resulting in many files named after their offsets. Their comment: &amp;lt;code&amp;gt;the top of the bin was just {offset} {size} {offset} {size} etc, until offset was 0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download them [https://cdn.discordapp.com/attachments/143402852289609729/802005593333694464/all2d.zip here]. These files can also be viewed in Tinke.&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Team_Sonic_Racing&amp;diff=2580</id>
		<title>Team Sonic Racing</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Team_Sonic_Racing&amp;diff=2580"/>
		<updated>2021-01-17T19:07:36Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Team_Sonic_Racing_Cover.jpg&lt;br /&gt;
| title=        Team Sonic Racing&lt;br /&gt;
| developer=    Sumo Digital&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]], [[:Category:PlayStation 4 Games|PlayStation 4]], [[:Category:Xbox One Games|Xbox One]], [[:Category:Nintendo Switch Games|Nintendo Switch]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Team Sonic Racing&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (チームソニックレーシング &amp;#039;&amp;#039;Chīmu Sonikku Rēshingu&amp;#039;&amp;#039;) is a kart racing video game and a spin-off from the Sonic the Hedgehog series. The game is developed by Sumo Digital and published by Sega, and was released on 21 May 2019. It received both a physical and digital release for the PlayStation 4, Xbox One, and Nintendo Switch, and a digital-only release on Steam for the PC.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.pck&amp;#039;&amp;#039;&amp;#039; (Sound)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.stz&amp;#039;&amp;#039;&amp;#039; (Sprites/Text Strings package)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sp2&amp;#039;&amp;#039;&amp;#039; (Model/Texture package)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.dat/.zml&amp;#039;&amp;#039;&amp;#039; (Misc data, such as object placement)&lt;br /&gt;
&lt;br /&gt;
==Ripping Tutorials==&lt;br /&gt;
===Sprites===&lt;br /&gt;
# Download Sewer56&amp;#039;s .stz [https://cdn.discordapp.com/attachments/317475533321404416/587588494436597777/net472.7z decompressing tool]. [https://aluigi.altervista.org/mytoolz.htm Offzip] works for this as well.&lt;br /&gt;
# Drag the .stz file onto the program. This results in a file named 72.bin when using Sewer56&amp;#039;s tool.&lt;br /&gt;
# Open the resulting 72.bin file in [https://zenhax.com/viewtopic.php?t=7099 Raw Texture Cooker]. Be sure to have the [https://github.com/Microsoft/DirectXTex/wiki/Texconv texconv] executable, as per the instructions. The texture formats are mostly DXT3.&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
[https://forum.xentax.com/viewtopic.php?f=16&amp;amp;t=20690 Team Sonic Racing Tool] has been created for this purpose.&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
This game uses Wwise for its sounds. The sound banks can be found in \data\Sound. They can be opened in [http://www.scampers.org/steve/sms/other.htm Ravioli Tools] and converted into &amp;#039;&amp;#039;&amp;#039;.wav&amp;#039;&amp;#039;&amp;#039; from there. There are several &amp;#039;&amp;#039;&amp;#039;.bnk&amp;#039;&amp;#039;&amp;#039; files included within the main &amp;#039;&amp;#039;&amp;#039;.pck&amp;#039;&amp;#039;&amp;#039; file, which can be opened in foobar2000 provided you have the vgmstream plugin. Unfortunately, due to being Wwise, the filenames are just random numbers.&lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
If you just want the textures, this method works: https://www.vg-resource.com/thread-35563.html&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.models-resource.com/pc_computer/teamsonicracing/ The Models Resource]&lt;br /&gt;
* [https://www.sounds-resource.com/pc_computer/teamsonicracing/ The Sounds Resource]&lt;br /&gt;
* [https://www.spriters-resource.com/pc_computer/teamsonicracing/ The Spriters Resource]&lt;br /&gt;
[[Category:Xbox One Games]]&lt;br /&gt;
[[Category:PlayStation 4 Games]]&lt;br /&gt;
[[Category:Windows Games]]&lt;br /&gt;
[[Category:Nintendo Switch Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2579</id>
		<title>Sonic Rush</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2579"/>
		<updated>2021-01-17T18:58:56Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| altimage = Sonic_Rush_-_Boxart.jpg&lt;br /&gt;
| title=        Sonic Rush&lt;br /&gt;
| developer=    Dimps&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Nintendo DS Games|Nintendo DS]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Rush&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2005 platform video game developed by Sonic Team and Dimps for the Nintendo DS as part of Sega&amp;#039;s Sonic the Hedgehog series. It was released on November 15, 2005 in North America, November 18 in the PAL region, and November 23 in Japan. It is a 2D platform game, similar to earlier games in the series as well as later ones like Sonic Advance. Levels in the game are side-scrolling and displayed using both of the DS&amp;#039;s screens. However, boss battles, the main characters, and a special stage are rendered in 3D, creating a 2.5D effect. The game&amp;#039;s storyline follows the intertwining adventures of a new character, Blaze the Cat, and the series&amp;#039; main character, Sonic the Hedgehog. They respectively battle Doctor Eggman and his doppelgänger Eggman Nega at certain points.&lt;br /&gt;
&lt;br /&gt;
Sonic Rush Adventure and Sonic Colors (DS) would later be made on the same engine.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.narc/.bb&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.nsbmd&amp;#039;&amp;#039;&amp;#039; (Models)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin/.bac&amp;#039;&amp;#039;&amp;#039; (Textures/Sprites)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sdat&amp;#039;&amp;#039;&amp;#039; (Sounds)&lt;br /&gt;
&lt;br /&gt;
==Tileset Information==&lt;br /&gt;
The following is taken from #READ ME FIRST#.txt in Techokami&amp;#039;s tileset rips such as [https://www.spriters-resource.com/ds_dsi/sonicrush/sheet/25412/ Leaf Storm]. The &amp;#039;&amp;#039;rush_levelrip.phps&amp;#039;&amp;#039; link leads to a 404.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
-----------------------&lt;br /&gt;
SONIC RUSH AND&lt;br /&gt;
SONIC RUSH ADVENTURE &lt;br /&gt;
LEVEL RIP&lt;br /&gt;
-----------------------&lt;br /&gt;
&lt;br /&gt;
1) CREDITS&lt;br /&gt;
The tilesets contained within were originally created by SEGA &lt;br /&gt;
and Dimps.  The rip was created via an automated process by &lt;br /&gt;
Techokami, with information and help from JoseTB &amp;amp; Retriever II.&lt;br /&gt;
&lt;br /&gt;
If you use the contents of this package, you must give credit&lt;br /&gt;
to SEGA, Dimps, and Techokami.&lt;br /&gt;
&lt;br /&gt;
If you did not download this tileset from the following domains:&lt;br /&gt;
http://holenet.info/&lt;br /&gt;
http://www.spriters-resource.com/&lt;br /&gt;
http://www.sonicfangameshq.com/&lt;br /&gt;
http://www.themfz.com/&lt;br /&gt;
then you should immediately start yelling at the webmaster for&lt;br /&gt;
mirroring this file without permission.&lt;br /&gt;
PROTIP: If you ask first, I&amp;#039;ll almost always say yes!&lt;br /&gt;
&lt;br /&gt;
2) THE RIPPING PROCESS&lt;br /&gt;
Sonic Rush levels are stored in the ROM filesystem as .NARC&lt;br /&gt;
(Nintendo/Nitro Archive) files. Inside the archive are several&lt;br /&gt;
files, all LZ77 compressed, that contain the pallete, tile, and&lt;br /&gt;
block data. Once decompressed, the files were fed into a modified&lt;br /&gt;
version of my Sonic Advance level ripper, generating individual&lt;br /&gt;
PNG files. The script is available under a BSD license (e.g. do&lt;br /&gt;
whatever you want, but give credit) from holenet.info at the &lt;br /&gt;
following location:&lt;br /&gt;
http://holenet.info/rush_levelrip.phps&lt;br /&gt;
&lt;br /&gt;
For more information, please read the thread on Sonic Retro:&lt;br /&gt;
http://forums.sonicretro.org/index.php?showtopic=16629&lt;br /&gt;
&lt;br /&gt;
3) EXPLANATION OF TILESET&lt;br /&gt;
Due to a limitation on the DS graphical system, you cannot have&lt;br /&gt;
tile priority, only layer priority. In order to have parts of the&lt;br /&gt;
level appear in front of Sonic, it is formed by combining layers&lt;br /&gt;
BG2 (bottom) and BG3 (top) with the Object layer in between.&lt;br /&gt;
&lt;br /&gt;
The levels are built from 64x64 pixel blocks. Do NOT alter their&lt;br /&gt;
dimensions or they will NOT work correctly!&lt;br /&gt;
&lt;br /&gt;
The background itself is completely separate from the block and&lt;br /&gt;
tile data, so they have not been ripped. They will not be ripped.&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
&lt;br /&gt;
4) CONTACT&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
DO NOT ASK FOR LEVEL EDITING INSTRUCTIONS.&lt;br /&gt;
DO NOT ASK FOR THINGS TO BE RIPPED.&lt;br /&gt;
DO NOT ASK HOW I RIPPED THIS.&lt;br /&gt;
DO NOT ASK HOW TO HACK ROMS.&lt;br /&gt;
DO NOT ASK HOW TO WRITE PHP CODE.&lt;br /&gt;
Email: techokami [AT] gdarcade [D0T] taloncrossing [D0T] com&lt;br /&gt;
&lt;br /&gt;
5) GREETS&lt;br /&gt;
JoseTB, Retriever II, Ainsworth, The Kins, Shadsy, the Something &lt;br /&gt;
Awful goons, Tweaker, Scarred Sun, drx, phugolz, Sazpaimon, Coburn64,&lt;br /&gt;
MatthewPZC, Naoshi, and all the staff at:&lt;br /&gt;
-Mario Fan Games Galaxy&lt;br /&gt;
-Metroid: Fan Mission&lt;br /&gt;
-XCulT&lt;br /&gt;
-Sonic Retro&lt;br /&gt;
-Goshi-Dan&amp;#039;s Arcade&lt;br /&gt;
-The Spriter&amp;#039;s Resource&lt;br /&gt;
-SMW Central&lt;br /&gt;
&lt;br /&gt;
6) THE END&lt;br /&gt;
Enjoy the tilesets.&lt;br /&gt;
-Techokami&lt;br /&gt;
&amp;lt;/poem&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
* https://github.com/NotKit/sonic-rush-tools&lt;br /&gt;
* http://info.sonicretro.org/Sonic_Rush/Technical_information&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/ds_dsi/sonicrush/ The Spriters Resource]&lt;br /&gt;
* [https://www.models-resource.com/ds_dsi/sonicrush/ The Models Resource]&lt;br /&gt;
* [https://www.textures-resource.com/ds_dsi/sonicrush/ The Textures Resource]&lt;br /&gt;
* [https://www.sounds-resource.comp/ds_dsi/sonicrush/ The Sounds Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=File:Sonic_Rush_-_Boxart.jpg&amp;diff=2559</id>
		<title>File:Sonic Rush - Boxart.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=File:Sonic_Rush_-_Boxart.jpg&amp;diff=2559"/>
		<updated>2020-12-30T02:12:57Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2553</id>
		<title>Sonic Rush</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Rush&amp;diff=2553"/>
		<updated>2020-11-11T02:35:41Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Sonic Rush | developer=    Dimps | publisher=    Sega | systems=      Nintendo DS }} &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Rush&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2005...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Sonic Rush&lt;br /&gt;
| developer=    Dimps&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Nintendo DS Games|Nintendo DS]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Rush&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2005 platform video game developed by Sonic Team and Dimps for the Nintendo DS as part of Sega&amp;#039;s Sonic the Hedgehog series. It was released on November 15, 2005 in North America, November 18 in the PAL region, and November 23 in Japan. It is a 2D platform game, similar to earlier games in the series as well as later ones like Sonic Advance. Levels in the game are side-scrolling and displayed using both of the DS&amp;#039;s screens. However, boss battles, the main characters, and a special stage are rendered in 3D, creating a 2.5D effect. The game&amp;#039;s storyline follows the intertwining adventures of a new character, Blaze the Cat, and the series&amp;#039; main character, Sonic the Hedgehog. They respectively battle Doctor Eggman and his doppelgänger Eggman Nega at certain points.&lt;br /&gt;
&lt;br /&gt;
Sonic Rush Adventure and Sonic Colors (DS) would later be made on the same engine.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.narc/.bb&amp;#039;&amp;#039;&amp;#039; (Archive)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.nsbmd&amp;#039;&amp;#039;&amp;#039; (Models)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.bin/.bac&amp;#039;&amp;#039;&amp;#039; (Textures/Sprites)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sdat&amp;#039;&amp;#039;&amp;#039; (Sounds)&lt;br /&gt;
&lt;br /&gt;
==Tileset Information==&lt;br /&gt;
The following is taken from #READ ME FIRST#.txt in Techokami&amp;#039;s tileset rips such as [https://www.spriters-resource.com/ds_dsi/sonicrush/sheet/25412/ Leaf Storm].&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
-----------------------&lt;br /&gt;
SONIC RUSH AND&lt;br /&gt;
SONIC RUSH ADVENTURE &lt;br /&gt;
LEVEL RIP&lt;br /&gt;
-----------------------&lt;br /&gt;
&lt;br /&gt;
1) CREDITS&lt;br /&gt;
The tilesets contained within were originally created by SEGA &lt;br /&gt;
and Dimps.  The rip was created via an automated process by &lt;br /&gt;
Techokami, with information and help from JoseTB &amp;amp; Retriever II.&lt;br /&gt;
&lt;br /&gt;
If you use the contents of this package, you must give credit&lt;br /&gt;
to SEGA, Dimps, and Techokami.&lt;br /&gt;
&lt;br /&gt;
If you did not download this tileset from the following domains:&lt;br /&gt;
http://holenet.info/&lt;br /&gt;
http://www.spriters-resource.com/&lt;br /&gt;
http://www.sonicfangameshq.com/&lt;br /&gt;
http://www.themfz.com/&lt;br /&gt;
then you should immediately start yelling at the webmaster for&lt;br /&gt;
mirroring this file without permission.&lt;br /&gt;
PROTIP: If you ask first, I&amp;#039;ll almost always say yes!&lt;br /&gt;
&lt;br /&gt;
2) THE RIPPING PROCESS&lt;br /&gt;
Sonic Rush levels are stored in the ROM filesystem as .NARC&lt;br /&gt;
(Nintendo/Nitro Archive) files. Inside the archive are several&lt;br /&gt;
files, all LZ77 compressed, that contain the pallete, tile, and&lt;br /&gt;
block data. Once decompressed, the files were fed into a modified&lt;br /&gt;
version of my Sonic Advance level ripper, generating individual&lt;br /&gt;
PNG files. The script is available under a BSD license (e.g. do&lt;br /&gt;
whatever you want, but give credit) from holenet.info at the &lt;br /&gt;
following location:&lt;br /&gt;
http://holenet.info/rush_levelrip.phps&lt;br /&gt;
&lt;br /&gt;
For more information, please read the thread on Sonic Retro:&lt;br /&gt;
http://forums.sonicretro.org/index.php?showtopic=16629&lt;br /&gt;
&lt;br /&gt;
3) EXPLANATION OF TILESET&lt;br /&gt;
Due to a limitation on the DS graphical system, you cannot have&lt;br /&gt;
tile priority, only layer priority. In order to have parts of the&lt;br /&gt;
level appear in front of Sonic, it is formed by combining layers&lt;br /&gt;
BG2 (bottom) and BG3 (top) with the Object layer in between.&lt;br /&gt;
&lt;br /&gt;
The levels are built from 64x64 pixel blocks. Do NOT alter their&lt;br /&gt;
dimensions or they will NOT work correctly!&lt;br /&gt;
&lt;br /&gt;
The background itself is completely separate from the block and&lt;br /&gt;
tile data, so they have not been ripped. They will not be ripped.&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
&lt;br /&gt;
4) CONTACT&lt;br /&gt;
DO NOT ASK FOR BACKGROUND RIPS.&lt;br /&gt;
DO NOT ASK FOR LEVEL EDITING INSTRUCTIONS.&lt;br /&gt;
DO NOT ASK FOR THINGS TO BE RIPPED.&lt;br /&gt;
DO NOT ASK HOW I RIPPED THIS.&lt;br /&gt;
DO NOT ASK HOW TO HACK ROMS.&lt;br /&gt;
DO NOT ASK HOW TO WRITE PHP CODE.&lt;br /&gt;
Email: techokami [AT] gdarcade [D0T] taloncrossing [D0T] com&lt;br /&gt;
&lt;br /&gt;
5) GREETS&lt;br /&gt;
JoseTB, Retriever II, Ainsworth, The Kins, Shadsy, the Something &lt;br /&gt;
Awful goons, Tweaker, Scarred Sun, drx, phugolz, Sazpaimon, Coburn64,&lt;br /&gt;
MatthewPZC, Naoshi, and all the staff at:&lt;br /&gt;
-Mario Fan Games Galaxy&lt;br /&gt;
-Metroid: Fan Mission&lt;br /&gt;
-XCulT&lt;br /&gt;
-Sonic Retro&lt;br /&gt;
-Goshi-Dan&amp;#039;s Arcade&lt;br /&gt;
-The Spriter&amp;#039;s Resource&lt;br /&gt;
-SMW Central&lt;br /&gt;
&lt;br /&gt;
6) THE END&lt;br /&gt;
Enjoy the tilesets.&lt;br /&gt;
-Techokami&lt;br /&gt;
&amp;lt;/poem&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
* https://github.com/NotKit/sonic-rush-tools&lt;br /&gt;
* http://info.sonicretro.org/Sonic_Rush/Technical_information&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/ds_dsi/sonicrush/ The Spriters Resource]&lt;br /&gt;
* [https://www.models-resource.com/ds_dsi/sonicrush/ The Models Resource]&lt;br /&gt;
* [https://www.textures-resource.com/ds_dsi/sonicrush/ The Textures Resource]&lt;br /&gt;
* [https://www.sounds-resource.comp/ds_dsi/sonicrush/ The Sounds Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Team_Sonic_Racing&amp;diff=2552</id>
		<title>Team Sonic Racing</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Team_Sonic_Racing&amp;diff=2552"/>
		<updated>2020-10-19T12:58:05Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Team Sonic Racing&lt;br /&gt;
| developer=    Sumo Digital&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:Windows Games|Windows]], [[:Category:PlayStation 4 Games|PlayStation 4]], [[:Category:Xbox One Games|Xbox One]], [[:Category:Nintendo Switch Games|Nintendo Switch]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Team Sonic Racing&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (チームソニックレーシング &amp;#039;&amp;#039;Chīmu Sonikku Rēshingu&amp;#039;&amp;#039;) is a kart racing video game and a spin-off from the Sonic the Hedgehog series. The game is developed by Sumo Digital and published by Sega, and was released on 21 May 2019. It received both a physical and digital release for the PlayStation 4, Xbox One, and Nintendo Switch, and a digital-only release on Steam for the PC.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.pck&amp;#039;&amp;#039;&amp;#039; (Sound)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.stz&amp;#039;&amp;#039;&amp;#039; (Sprites/strings package)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.sp2&amp;#039;&amp;#039;&amp;#039; (Model/Texture package)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.dat/.zml&amp;#039;&amp;#039;&amp;#039; (Game data)&lt;br /&gt;
&lt;br /&gt;
==Ripping Tutorials==&lt;br /&gt;
===Sprites===&lt;br /&gt;
# Download Sewer56&amp;#039;s .stz [https://cdn.discordapp.com/attachments/317475533321404416/587588494436597777/net472.7z decompressing tool]. [https://aluigi.altervista.org/mytoolz.htm Offzip] works for this as well.&lt;br /&gt;
# Drag the .stz file onto the program. This results in a file named 72.bin when using Sewer56&amp;#039;s tool.&lt;br /&gt;
# Open the resulting 72.bin file in [https://zenhax.com/viewtopic.php?t=7099 Raw Texture Cooker]. Be sure to have texconv, as per the instructions. The texture formats are mostly DXT3.&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
[https://forum.xentax.com/viewtopic.php?f=16&amp;amp;t=20690 Team Sonic Racing Tool] has been created for this purpose.&lt;br /&gt;
&lt;br /&gt;
===Sounds===&lt;br /&gt;
This game uses Wwise for its sounds. The sound banks can be found in \data\Sound. They can be opened in Ravioli Tools and converted into .wav from there. There are several .bnk files included within the main .pck file, which can be opened in foobar2000 provided you have the vgmstream plugin. Unfortunately, due to being Wwise, the filenames are just random numbers.&lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
If you just want the textures, this method works: https://www.vg-resource.com/thread-35563.html&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.models-resource.com/pc_computer/teamsonicracing/ The Models Resource]&lt;br /&gt;
* [https://www.sounds-resource.com/pc_computer/teamsonicracing/ The Sounds Resource]&lt;br /&gt;
* [https://www.spriters-resource.com/pc_computer/teamsonicracing/ The Spriters Resource]&lt;br /&gt;
[[Category:Xbox One Games]]&lt;br /&gt;
[[Category:PlayStation 4 Games]]&lt;br /&gt;
[[Category:Windows Games]]&lt;br /&gt;
[[Category:Nintendo Switch Games]]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(mobile)&amp;diff=2550</id>
		<title>Sonic Unleashed (mobile)</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(mobile)&amp;diff=2550"/>
		<updated>2020-10-13T19:36:52Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Sonic the Hedgehog&lt;br /&gt;
| developer=    Gameloft&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=       [[:Category:Mobile Games|Mobile]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Unleashed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2008 platform video game in the Sonic the Hedgehog series. The story follows Sonic as he attempts to restore the world after his nemesis Doctor Eggman shatters it with a powerful laser to unleash Dark Gaia, an ancient evil, while dealing with having become a &amp;quot;Werehog&amp;quot;, a werewolf-esque transformation, which he gains after coming into contact with the energy of Dark Gaia. Gameplay features two distinct styles, with each being played either during daytime or nighttime. Daytime stages incorporate Sonic&amp;#039;s traditional platforming and trademark speed, with a combination of behind-the-back third-person viewpoints and 2D side-scroller platforming; gameplay seamlessly transitions between these two views.&lt;br /&gt;
&lt;br /&gt;
This page describes the version released for mobile phones.The other versions of the game are the [[Sonic Unleashed (HD)|&amp;quot;HD&amp;quot; version]] released for the Xbox 360 and Playstation 3, and the [[Sonic Unleashed (SD)|&amp;quot;SD&amp;quot; version]] developed by Dimps for Wii and Playstation 2.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The following is taken from #READ ME FIRST#.txt in the [https://www.spriters-resource.com/mobile/sonicunleashed/sheet/74879/ Everything submission] by Techokami and Treeki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
-------------------------------&lt;br /&gt;
SONIC UNLEASHED&lt;br /&gt;
EVERYTHING RIP&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
1) CREDITS&lt;br /&gt;
The sprites and tiles contained within were originally created by&lt;br /&gt;
Gameloft for SEGA and Sonic Team.&lt;br /&gt;
The rip was created via an automated process by Techokami and&lt;br /&gt;
Ninji (aka Treeki).&lt;br /&gt;
&lt;br /&gt;
If you use the contents of this package, you must give credit&lt;br /&gt;
to Techokami, Ninji, SEGA, Sonic Team, and Gameloft.&lt;br /&gt;
&lt;br /&gt;
If you did not download this tileset from the following domains:&lt;br /&gt;
http://holenet.info/&lt;br /&gt;
http://www.spriters-resource.com/&lt;br /&gt;
http://www.sonicfangameshq.com/&lt;br /&gt;
then you should immediately start yelling at the webmaster for&lt;br /&gt;
mirroring this file without permission.&lt;br /&gt;
PROTIP: If you ask first, I&amp;#039;ll almost always say yes!&lt;br /&gt;
&lt;br /&gt;
2) THE RIPPING PROCESS&lt;br /&gt;
Gameloft uses a lot of custom formats and obfuscation in an effort&lt;br /&gt;
to protect their games from being cracked. This made ripping from&lt;br /&gt;
the game to be messy, ugly, and complicated. Over the span of an&lt;br /&gt;
entire week, I worked with Ninji on reverse engineering complicated&lt;br /&gt;
obfuscated Java bytecode to get around a completely custom-made&lt;br /&gt;
compression format. THEN we had to reverse engineer the custom-made&lt;br /&gt;
image format. That gave us the contents you see in the data folder.&lt;br /&gt;
From there, I made some PHP scripts to finish piecing things&lt;br /&gt;
together. Literally. That resulted in the contents of the out folder.&lt;br /&gt;
&lt;br /&gt;
3) EXPLANATION OF TILESET&lt;br /&gt;
The levels are built from 20x20 pixel tiles. There&amp;#039;s one map file &lt;br /&gt;
for the background, and one map file for the level layout. There are&lt;br /&gt;
also two palette sets; one for daytime levels, one for nighttime&lt;br /&gt;
levels. I did not bother with distinguishing between the times of&lt;br /&gt;
day for the stages, so I mapped both palette sets for each stage.&lt;br /&gt;
No objects are present on the maps, which is why things like loops&lt;br /&gt;
are missing. They are actually sprites. I have no idea why they did&lt;br /&gt;
it that way, but looking at how the sprites are stored, I don&amp;#039;t think&lt;br /&gt;
they had their heads on straight to begin with. Some tiles are actually&lt;br /&gt;
composite images, and are stored in the same animation format as&lt;br /&gt;
sprites, but on a 20x20 pixel canvas.&lt;br /&gt;
&lt;br /&gt;
4) EXPLANATION OF SPRITES&lt;br /&gt;
Consistent with claims from Badassbill (former tSR admin that once&lt;br /&gt;
worked as a sprite artist for Gameloft), the sprites are stored as&lt;br /&gt;
tiny, arbitrarily-sized pieces for things like heads, arms, etc. with&lt;br /&gt;
sets of palettes for each sprite set. As such, these pieces alone &lt;br /&gt;
aren&amp;#039;t very useful. Thankfully, the animation format was not that hard&lt;br /&gt;
to figure out (save for some oddness with the final boss), and a&lt;br /&gt;
script was created to assemble the animation data. They have been saved&lt;br /&gt;
as resource -&amp;gt; palette index. It should be noted that some sprites&lt;br /&gt;
literally have special effects baked into the animations, so for the&lt;br /&gt;
purpose of making them more usable, animations 215 to 221 for Sonic are&lt;br /&gt;
actually custom animations by Techokami. Yes, everything is in fact&lt;br /&gt;
256x256 pixels when assembled, as that is the canvas size used by the&lt;br /&gt;
animation format.&lt;br /&gt;
&lt;br /&gt;
5) EXPLANATION OF SCRIPTS&lt;br /&gt;
libripper.php - LibRipper is a general purpose library script written &lt;br /&gt;
by Techokami for doing operations on sprite-related imagery.&lt;br /&gt;
sumssa.php - Sonic Unleashed Mobile Super Sprite Assembler is a script&lt;br /&gt;
written by Techokami to parse animation data for a resource set and&lt;br /&gt;
output assembled sprites as PNG images.&lt;br /&gt;
sumlp.php - Sonic Unleashed Mobile Level Parser is a script written by&lt;br /&gt;
Techokami to parse level layout data and export level maps as PNGs.&lt;br /&gt;
There are two missing Python scripts from this package: a script to&lt;br /&gt;
decompress the data files, and a script to convert the image data into&lt;br /&gt;
PNG images. These were created by Ninji and have not been cleared by&lt;br /&gt;
him for release.&lt;br /&gt;
&lt;br /&gt;
6) EXPLANATION OF WHY THE HELL THE FILES HAVE TIMESTAMPS OF 2010 BUT&lt;br /&gt;
THIS THING WAS RELEASED ON CHRISTMAS DAY OF 2015 WHY DID IT TAKE 5&lt;br /&gt;
YEARS FOR THIS THING TO BE RELEASED?????????&lt;br /&gt;
BlazeFireLP. He seems to be gone now, so he&amp;#039;s not going to be stealing&lt;br /&gt;
all of our hard work.&lt;br /&gt;
&lt;br /&gt;
7) CONTACT&lt;br /&gt;
DO NOT ASK FOR LEVEL EDITING INSTRUCTIONS.&lt;br /&gt;
DO NOT ASK FOR THINGS TO BE RIPPED.&lt;br /&gt;
DO NOT ASK HOW I RIPPED THIS.&lt;br /&gt;
DO NOT ASK HOW TO HACK ROMS.&lt;br /&gt;
DO NOT ASK HOW TO WRITE PHP CODE.&lt;br /&gt;
DO NOT ASK WHY IT ISN&amp;#039;T A GIANT SHEET.&lt;br /&gt;
Email: techokami [AT] holenet [D0T] info&lt;br /&gt;
&lt;br /&gt;
8) GREETS&lt;br /&gt;
Texelsaur, Ike Adibe, Kinsie, Shadsy, the Something Awful goons, PC0, &lt;br /&gt;
Scarred Sun, drx, Dazz, asie, Vexatos, Sangar, Naoshi, and the staff at:&lt;br /&gt;
-Mario Fan Games Galaxy&lt;br /&gt;
-Sonic Fan Games HQ&lt;br /&gt;
-Sonic Retro&lt;br /&gt;
-Dynapolitan&lt;br /&gt;
-The Spriter&amp;#039;s Resource&lt;br /&gt;
-SMW Central&lt;br /&gt;
&lt;br /&gt;
9) THE END&lt;br /&gt;
Enjoy the rips. Merry Christmas/Shitscram.&lt;br /&gt;
-Techokami&lt;br /&gt;
&amp;lt;/poem&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/mobile/sonicunleashed/ The Spriters Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(mobile)&amp;diff=2549</id>
		<title>Sonic Unleashed (mobile)</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(mobile)&amp;diff=2549"/>
		<updated>2020-10-13T19:22:18Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: Created page with &amp;quot;{{Gameinfo | title=        Sonic the Hedgehog | developer=    Gameloft | publisher=    Sega | systems=       Mobile }} &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Unleashed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Sonic the Hedgehog&lt;br /&gt;
| developer=    Gameloft&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=       [[:Category:Mobile Games|Mobile]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Unleashed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2008 platform video game in the Sonic the Hedgehog series. The story follows Sonic as he attempts to restore the world after his nemesis Doctor Eggman shatters it with a powerful laser to unleash Dark Gaia, an ancient evil, while dealing with having become a &amp;quot;Werehog&amp;quot;, a werewolf-esque transformation, which he gains after coming into contact with the energy of Dark Gaia. Gameplay features two distinct styles, with each being played either during daytime or nighttime. Daytime stages incorporate Sonic&amp;#039;s traditional platforming and trademark speed, with a combination of behind-the-back third-person viewpoints and 2D side-scroller platforming; gameplay seamlessly transitions between these two views.&lt;br /&gt;
&lt;br /&gt;
This page describes the version released for mobile phones.The other versions of the game are the [[Sonic Unleashed (HD)|&amp;quot;HD&amp;quot; version]] released for the Xbox 360 and Playstation 3, and the [[Sonic Unleashed (SD)|&amp;quot;SD&amp;quot; version]] developed by Dimps for Wii and Playstation 2.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
The following is taken from #READ ME FIRST#.txt in the [https://www.spriters-resource.com/mobile/sonicunleashed/sheet/74879/ Everything submission] by Techokami and Treeki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
-------------------------------&lt;br /&gt;
SONIC UNLEASHED&lt;br /&gt;
EVERYTHING RIP&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
1) CREDITS&lt;br /&gt;
The sprites and tiles contained within were originally created by&lt;br /&gt;
Gameloft for SEGA and Sonic Team.&lt;br /&gt;
The rip was created via an automated process by Techokami and&lt;br /&gt;
Ninji (aka Treeki).&lt;br /&gt;
&lt;br /&gt;
If you use the contents of this package, you must give credit&lt;br /&gt;
to Techokami, Ninji, SEGA, Sonic Team, and Gameloft.&lt;br /&gt;
&lt;br /&gt;
If you did not download this tileset from the following domains:&lt;br /&gt;
http://holenet.info/&lt;br /&gt;
http://www.spriters-resource.com/&lt;br /&gt;
http://www.sonicfangameshq.com/&lt;br /&gt;
then you should immediately start yelling at the webmaster for&lt;br /&gt;
mirroring this file without permission.&lt;br /&gt;
PROTIP: If you ask first, I&amp;#039;ll almost always say yes!&lt;br /&gt;
&lt;br /&gt;
2) THE RIPPING PROCESS&lt;br /&gt;
Gameloft uses a lot of custom formats and obfuscation in an effort&lt;br /&gt;
to protect their games from being cracked. This made ripping from&lt;br /&gt;
the game to be messy, ugly, and complicated. Over the span of an&lt;br /&gt;
entire week, I worked with Ninji on reverse engineering complicated&lt;br /&gt;
obfuscated Java bytecode to get around a completely custom-made&lt;br /&gt;
compression format. THEN we had to reverse engineer the custom-made&lt;br /&gt;
image format. That gave us the contents you see in the data folder.&lt;br /&gt;
From there, I made some PHP scripts to finish piecing things&lt;br /&gt;
together. Literally. That resulted in the contents of the out folder.&lt;br /&gt;
&lt;br /&gt;
3) EXPLANATION OF TILESET&lt;br /&gt;
The levels are built from 20x20 pixel tiles. There&amp;#039;s one map file &lt;br /&gt;
for the background, and one map file for the level layout. There are&lt;br /&gt;
also two palette sets; one for daytime levels, one for nighttime&lt;br /&gt;
levels. I did not bother with distinguishing between the times of&lt;br /&gt;
day for the stages, so I mapped both palette sets for each stage.&lt;br /&gt;
No objects are present on the maps, which is why things like loops&lt;br /&gt;
are missing. They are actually sprites. I have no idea why they did&lt;br /&gt;
it that way, but looking at how the sprites are stored, I don&amp;#039;t think&lt;br /&gt;
they had their heads on straight to begin with. Some tiles are actually&lt;br /&gt;
composite images, and are stored in the same animation format as&lt;br /&gt;
sprites, but on a 20x20 pixel canvas.&lt;br /&gt;
&lt;br /&gt;
4) EXPLANATION OF SPRITES&lt;br /&gt;
Consistent with claims from Badassbill (former tSR admin that once&lt;br /&gt;
worked as a sprite artist for Gameloft), the sprites are stored as&lt;br /&gt;
tiny, arbitrarily-sized pieces for things like heads, arms, etc. with&lt;br /&gt;
sets of palettes for each sprite set. As such, these pieces alone &lt;br /&gt;
aren&amp;#039;t very useful. Thankfully, the animation format was not that hard&lt;br /&gt;
to figure out (save for some oddness with the final boss), and a&lt;br /&gt;
script was created to assemble the animation data. They have been saved&lt;br /&gt;
as resource -&amp;gt; palette index. It should be noted that some sprites&lt;br /&gt;
literally have special effects baked into the animations, so for the&lt;br /&gt;
purpose of making them more usable, animations 215 to 221 for Sonic are&lt;br /&gt;
actually custom animations by Techokami. Yes, everything is in fact&lt;br /&gt;
256x256 pixels when assembled, as that is the canvas size used by the&lt;br /&gt;
animation format.&lt;br /&gt;
&lt;br /&gt;
5) EXPLANATION OF SCRIPTS&lt;br /&gt;
libripper.php - LibRipper is a general purpose library script written &lt;br /&gt;
by Techokami for doing operations on sprite-related imagery.&lt;br /&gt;
sumssa.php - Sonic Unleashed Mobile Super Sprite Assembler is a script&lt;br /&gt;
written by Techokami to parse animation data for a resource set and&lt;br /&gt;
output assembled sprites as PNG images.&lt;br /&gt;
sumlp.php - Sonic Unleashed Mobile Level Parser is a script written by&lt;br /&gt;
Techokami to parse level layout data and export level maps as PNGs.&lt;br /&gt;
There are two missing Python scripts from this package: a script to&lt;br /&gt;
decompress the data files, and a script to convert the image data into&lt;br /&gt;
PNG images. These were created by Ninji and have not been cleared by&lt;br /&gt;
him for release.&lt;br /&gt;
&lt;br /&gt;
6) EXPLANATION OF WHY THE HELL THE FILES HAVE TIMESTAMPS OF 2010 BUT&lt;br /&gt;
THIS THING WAS RELEASED ON CHRISTMAS DAY OF 2015 WHY DID IT TAKE 5&lt;br /&gt;
YEARS FOR THIS THING TO BE RELEASED?????????&lt;br /&gt;
BlazeFireLP. He seems to be gone now, so he&amp;#039;s not going to be stealing&lt;br /&gt;
all of our hard work.&lt;br /&gt;
&lt;br /&gt;
7) CONTACT&lt;br /&gt;
DO NOT ASK FOR LEVEL EDITING INSTRUCTIONS.&lt;br /&gt;
DO NOT ASK FOR THINGS TO BE RIPPED.&lt;br /&gt;
DO NOT ASK HOW I RIPPED THIS.&lt;br /&gt;
DO NOT ASK HOW TO HACK ROMS.&lt;br /&gt;
DO NOT ASK HOW TO WRITE PHP CODE.&lt;br /&gt;
DO NOT ASK WHY IT ISN&amp;#039;T A GIANT SHEET.&lt;br /&gt;
Email: techokami [AT] holenet [D0T] info&lt;br /&gt;
&lt;br /&gt;
8) GREETS&lt;br /&gt;
Texelsaur, Ike Adibe, Kinsie, Shadsy, the Something Awful goons, PC0, &lt;br /&gt;
Scarred Sun, drx, Dazz, asie, Vexatos, Sangar, Naoshi, and the staff at:&lt;br /&gt;
-Mario Fan Games Galaxy&lt;br /&gt;
-Sonic Fan Games HQ&lt;br /&gt;
-Sonic Retro&lt;br /&gt;
-Dynapolitan&lt;br /&gt;
-The Spriter&amp;#039;s Resource&lt;br /&gt;
-SMW Central&lt;br /&gt;
&lt;br /&gt;
9) THE END&lt;br /&gt;
Enjoy the rips. Merry Christmas/Shitscram.&lt;br /&gt;
-Techokami&lt;br /&gt;
&amp;lt;/poem&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/mobile/sonicunleashed/ The Models Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(SD)&amp;diff=2548</id>
		<title>Sonic Unleashed (SD)</title>
		<link rel="alternate" type="text/html" href="https://wiki.vg-resource.com/index.php?title=Sonic_Unleashed_(SD)&amp;diff=2548"/>
		<updated>2020-10-13T17:18:35Z</updated>

		<summary type="html">&lt;p&gt;Boilingpot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gameinfo&lt;br /&gt;
| title=        Sonic the Hedgehog&lt;br /&gt;
| developer=    Dimps&lt;br /&gt;
| publisher=    Sega&lt;br /&gt;
| systems=      [[:Category:PlayStation 2 Games|PlayStation 2]], [[:Category:Wii Games|Wii]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Sonic Unleashed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; is a 2008 platform video game in the Sonic the Hedgehog series. The story follows Sonic as he attempts to restore the world after his nemesis Doctor Eggman shatters it with a powerful laser to unleash Dark Gaia, an ancient evil, while dealing with having become a &amp;quot;Werehog&amp;quot;, a werewolf-esque transformation, which he gains after coming into contact with the energy of Dark Gaia. Gameplay features two distinct styles, with each being played either during daytime or nighttime. Daytime stages incorporate Sonic&amp;#039;s traditional platforming and trademark speed, with a combination of behind-the-back third-person viewpoints and 2D side-scroller platforming; gameplay seamlessly transitions between these two views.&lt;br /&gt;
&lt;br /&gt;
This page describes the version released for the the Wii and Playstation 2, commonly referred to as the SD version. The other versions of the game are the [[Sonic Unleashed (HD)|&amp;quot;HD&amp;quot; version]] released for the Xbox 360 and Playstation 3, and the mobile version developed by Gameloft.&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.onz/.one&amp;#039;&amp;#039;&amp;#039; (Archives)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.gno&amp;#039;&amp;#039;&amp;#039; (Models)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.gvr&amp;#039;&amp;#039;&amp;#039; (Textures)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.adx&amp;#039;&amp;#039;&amp;#039; (Music and voices)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.nut&amp;#039;&amp;#039;&amp;#039; (Squirrel scripts)&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
* [https://github.com/blueskythlikesclouds/SkythTools Skyth&amp;#039;s xno2dae] (listed in the Sonic &amp;#039;06 section), to convert models.&lt;br /&gt;
* [https://github.com/nickworonekin/puyotools Puyo Tools] for browsing/extracting .onz/.one archives, and viewing/converting textures. This tool doesn&amp;#039;t seem to open some textures from the Wii version however, though it works with those from the PS2 version.&lt;br /&gt;
* [https://cdn.discordapp.com/attachments/493153125968904214/741689469245063309/Sonic_Unleashed_Wii.zip DKDave&amp;#039;s GCAX tool] for the extraction of sounds in GCAX audio packs. You can play them back in foobar2000 if the .txth is in the same directory as the files, and you have the vgmstream plugin.&lt;br /&gt;
&lt;br /&gt;
==Filesystem (Wii)==&lt;br /&gt;
* \adx - Music and most voice clips.&lt;br /&gt;
* \one_wii&lt;br /&gt;
** \capital - Files for each &amp;quot;hub&amp;quot;/town area.&lt;br /&gt;
** \load_etc - Miscellaneous items, cutscene subtitles, NPC talksprites and text (in .fco), models and textures of the world map, etc.&lt;br /&gt;
** \load_main_game&lt;br /&gt;
*** \common - Sonic&amp;#039;s character models.&lt;br /&gt;
*** \etc - Mostly HUD textures, with some scripts and camera movement files.&lt;br /&gt;
*** \stage___ - Stages. Each common_save.onz contains the stage&amp;#039;s models, textures, objects/gimmicks, and enemies. common_dump.onz contains set data, particle data, and .dat GCAX sound packs (including additional voice clips for Sonic/Werehog). Area_.onz contains .hkx collision and splines/paths. &lt;br /&gt;
** \scenario - &amp;quot;SceSeqTbl.nut&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Extra==&lt;br /&gt;
If you want to rip stages from this game in order to port them into another game, here&amp;#039;s all the stage collision ripped by Gotta Play Fast: https://cdn.discordapp.com/attachments/464963211410669579/679839621814943789/SU_Wii_Collision.zip&lt;br /&gt;
&lt;br /&gt;
==VG Resource Pages==&lt;br /&gt;
* [https://www.spriters-resource.com/playstation_2/sonicunleashed/ The Spriters Resource]&lt;br /&gt;
* [https://www.models-resource.com/wii/sonicunleashed/ The Models Resource]&lt;br /&gt;
* [https://www.textures-resource.com/wii/sonicunleashed/ The Textures Resource]&lt;br /&gt;
* [https://www.sounds-resource.com/wii/sonicunleashed/ The Sounds Resource]&lt;/div&gt;</summary>
		<author><name>Boilingpot</name></author>
		
	</entry>
</feed>