Skip to content

An all in one software suite for randomising various elements in Sonic '06 on the Xbox 360 and PlayStation 3.

License

Notifications You must be signed in to change notification settings

Knuxfan24/Sonic-06-Randomiser-Suite

Repository files navigation

Sonic '06 Randomiser Suite

An all in one software suite for randomising various elements in Sonic '06 on the Xbox 360 and PlayStation 3.

Building

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 arguments and Dereferences of a possibly null reference but both of those have never caused any problem for me.

Usage

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.

Features

Object Placement Randomisation

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.

Event Randomisation

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

Scene Parameter Randomisation

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

Animation Randomisation

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

Model Randomisation

Randomisation of colouring elements within Ninja models, alongside the option to apply a random cosmetic scale value to player models.

Texture Randomisation

Shuffling of textures, with options for cross archive randomisation.

Audio Randomisation

Shuffling of ingame stage music and sound effects.

Text Randomisation

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

User Interface Randomisation

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

Random Episode Generation

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.

Miscellaneous Randomisation

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

Custom Elements

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