An all in one software suite for randomising various elements in Sonic '06 on the Xbox 360 and PlayStation 3.
To build the Randomiser Suite, simply clone the project and its submodules using a git based solution (such as GitHub Desktop) and open the MarathonRandomiser.sln
file in a recent version of Visual Studio (anything supporting .NET 6 should work fine, all the development was done using versions of Visual Studio 2022) and then compile it as normal, if the build fails it may be due to missing Nuget Packages, as the project uses Marathon for interfacing with Sonic '06's file formats, HandyControl for much nicer looking UI controls, Ookii Dialogs for better file and folder browsing, SharpCompress for extracting Voice Pack zip archives and NAudio for WAV Normalisation; ensuring that all five of those are present and accounted for should resolve any compile errors. Also check that XNCPLib and Amicitia.IO are both building as well, as they are needed for the User Interface Randomisation.
Compile warnings will be thrown regarding Possible null reference argument
s and Dereferences of a possibly null reference
but both of those have never caused any problem for me.
For a proper run down on the features and information on configuring and using the Randomiser Suite, check out the Wiki. For the basic functionality, see below.
Randomisation of various elements within '06's Object Placement (.set) files, these are:
-
Enemy types and their behaviours
-
The characters that get used in stages
-
The contents of item capsules
-
Types of props
-
Voice lines that play throughout gameplay
-
Types of doors
-
Object draw/activation distance
-
Miscellaneous cosmetic details
-
Types of particles
-
Use of an unused jump board
-
Shuffling object positions
-
Duplicating enemies
A lot of the Object Placement features can be further randomised, see the Wiki for more information.
Randomisation of various elements within the EventPlaybook.epb file that handles various factors of the game's cutscenes, these are:
-
The scene parameter file used in cutscenes
-
The rotation of the scene
-
The position in the map to base the scene around
-
The voice lines used in cutscenes
-
The map to play the scene in
-
The order that cutscenes play in the game's story progression
Randomisation of various values within the game's scene lua binaries (.lub) files, these are:
-
The colour and strength of the three light types (including secondary lights)
-
The direction of a scene's light source(s)
-
The colour and density of the scene's fog
-
The environment map the scene should use
-
The skybox a stage map should use
Randomisation of various animation elements, such as:
-
Shuffling animations between states
-
Shuffling animations between cutscenes
-
Shuffling cameras between cutscenes
-
Randomising the framerate of animations
-
T-Posing animations
Randomisation of colouring elements within Ninja models, alongside the option to apply a random cosmetic scale value to player models.
Shuffling of textures, with options for cross archive randomisation.
Shuffling of ingame stage music and sound effects.
Modification of various attributes relating to the game's text within the message tabe (.mst) files. These are:
-
Randomisation of Button Icons
-
Random text generation, with optional word length enforcement and text to speech
-
Random text colouration, with configurable chance
-
Shuffling text between different message tables
Randomisation of various bits of data within the game's User Interface (.xncp) files. These are:
-
Randomisation of the UI Element Colours
-
Randomisation of the UI Element's Scale
-
Shuffling of the UI Element's Depth
-
Randomisation of the texture coordinates used by elements on the UI
Generates an episode that plays through all 45 stages in a random order (A configurable amount of Town Missions can also be included in this episode), starting from a custom stage select. If the Very Hard Mode DLC archives are provided, then there is a 1/3 chance for each stage to swap its DLC version in.
Randomisation of miscellaneous elements across one off files, these are:
-
The minimum and maximum health that enemies and bosses can have
-
The surface type for stage collision
-
Enabling random patches from the user's Mod Manager Patches Directory
-
Optionally automatically unlocking Shadow and Silver's episodes from the start
-
Randomising how props interact with Silver's PSI
-
Randomising the debris spawned when a prop breaks
Allows the user to add custom elements to the Randomisation, these being:
-
Custom Music and Hint Voice Lines, supporting basically any format that vgmstream can convert
-
Textures
-
Voice Packs