Hi guys, I thought I'd make this quick (edit: or maybe not so quick) tutorial to maybe spare some people from frustrations I have experienced while modding Mania. Mainly they come down to things I wish I had known or even things I wish had existed back then when I modded Mania first (like a year ago) and also just all the basics that you need all in one.
1. How to unpack Sonic Mania's files:
The first thing you have to do before you can mod anything is to extract the files from the game: You must download RSDKv5 Extractor from here https://gamebanana.com/tools/6518. Unpack it using WinRar or 7-zip or whatever unzipping software. You can put this anywhere on your PC. I myself have it inside the Sonic Mania folder for simplicity sake. Now to extract the game files you must go to your Sonic Mania folder which should be located in your steam files under X:\Steam\steamapps\common\Sonic Mania (" X " is just a general letter for the partition, for you it might be C or some other letter). Inside the Sonic Mania folder there is a file called "Data.rsdk". This is the file we need to extract. Drag this file ("Data.rsdk") onto the "rsdkv5_extract.exe" which is inside the RSDKv5.zip you downloaded. This will extract all the files from the Data.rsdk and put them inside a new folder called "Data". Inside this are all the sprites, sounds, stages, models etc. from the game. Make sure that the Data folder is located inside your Sonic Mania folder (still the same: "X:\Steam\steamapps\common\Sonic Mania").Now rename your Data.rsdk or move it somewhere else outside the Sonic Mania folder. This will load the game files directly from the new Data folder. You can even mod the game while it is running (you don't have to close and re-open it for changes to take effect), you just need to reload the level in which you are right now. For example if you are in a level just go back to the Menu and enter the level again, then your changes will be applied ingame! You can also acces the "Dev Menu" while you are in Data folder mode by pressing the Escape-key on your keyboard. From there you can access all parts of the game very quickly!
2. How to make different mods:
2.1 Character/Sprite mods:
If you want to make a character mod like putting a different character over Sonic for example or change any other sprites, go inside your Data folder and head to "Sprites". Inside there are folders like "Global" (like rings and other items), "Special" (special stages), all the different zones (like "AIZ" for Angel Island Zone or "GHZ" for Green Hill Zone etc.) and also "Players". Inside players are all the sprites for Sonic, Tails, Knuckles, Mighty and Ray. I will now show you how to make a character mod, though editing any other sprites in the game (like for example if you want to change how rings look) will be the exact same proccess. To edit the sprites (sprites are basically the images of the character) go to your Sonic Mania folder then your Data folder and then Sprites -> Players. Now inside there are a bunch of .gif files like Sonic.gif and Tails.gif etc. These files you need to edit. To do this you need a program that can open these files. You could use either common ones like Photoshop or Gimp, but I recommend using a program called GraphicsGale (download here: https://graphicsgale.com/us/). In my opinion this one is the easiest to use here. But you can use any other too, the procces is similiar with each one. I will explain how to do it with GraphicsGale though.
So now open the character sprites that you want to edit for example Sonic.gif in GraphicsGale or whatever you are using. Now you can see all the sprites for the character like walking, running, jumping, spindash etc. Now you can start repainthing them or replacing them.
But there is one important thing here that you must know. Each character has their own colour-palette. This basically means that each character has a pre-defiened selection of colours that are used and can be used for this character. You can see the colour-palette in GraphicsGale on the right upper corner. Now if you would import another character like for example Amy into the Sonic.gif, then you will notice that the colors of the Amy sprite will change a little bit. This is because Amy has some differenct colors than Sonic, so the colour-palette of Sonic doesn't have these colours, so it changes Amy's colours to the closest colours there are inside Sonic's colour-palette. This is why, if you import a character, the colours will change, maybe a bit, maybe a lot, depending on how close the two colour-palettes of the characters match. Well, the good thing is, that you can actually edit the colour-palette of a sprite and add new colours. For this simply click on a existing colour and set it to the colour you need. Now to get a specific colour, first of open your sprite like Amy or Mario or Megaman or whatever seperately (open GraphicsGale a second time for this) and then click on the "Pen" tool (it is at the tool bar at the top, 7 units right to the magnifying glasses). Now with the Pen right-click on the color you need. You can now see the colour on the right side. What you need are the RGB-values of the colour. There are 4 numbers under the colour. The first one you can ignore, the other three under it are the RGB (red, green, blue)-values. Now you need to go back to your other window with the Sonic.gif open or whatever sprite-sheet you are editing and click on one of the colours from the colour-palette. Simply copy the R(-ed), G(-reen) and B(-lue) values from your Amy, Mario, Megaman or whatever sprite and paste them over the ones of the colour in your Sonic.gif, Tails.gif, or whatever. Do this with all the colours of your sprite. So now after you did this you can import your character sprite into the Sonic.gif etc. sprite-sheet and the colours will not change anymore, because they are now part of the palette. Now you can replace all the old sprites with the new ones as you want.
But there is one more thing that you need to do, before it can work. You have added the colours to the palette of the .gif image, but you need to also add them to the game files. For this you need one more program called ManiaPal. Download it here: https://gamebanana.com/tools/6582 . Open it, click on "Load File". Go to your Sonic Mania folder then Data -> Game and then open "GameConfig.bin". Now you can see the whole colour palette of Sonic Mania. You will notice, that in the 5th row there are the blue colours from Sonic's palette, next to it are brown/orange colours for Tails and then there are red colours for Knuckles and also green ones for his shoes. There are a few pink coloured boxes as well. These are basically empty, meaning they have no colour yet and you can use them to put additional colours in them if you need more colours. But you can also just as before replace the existing ones (so the blue for Sonic, brown/orange for tails etc. . Now what you need to do is to do the same you did before in GraphicsGale in ManiaPal. Replace the exact same colours in the same way you did in GraphicsGale by double clicking on a colour and replacing the RGB-values to get the colour you need. (You must place them in the exact same position as in GraphicsGale) Do this with all colours. This is important, because these actually determines the colours that are shown in the game. If you don't do this, it will now show the right colours. So this is basically all you need to do, now you can replace all the sprites in your Sonic.gif or of the other characters and when you are done or when you want to see how it looks so far, just save it in GraphicsGale (File -> Save or just press CTRL-key + S) and start Sonic Mania. You might notice, that it says "Data Folder" on your Sonic Mania window, this is because you are accessing the files through your Data Folder :P. Now you can play around with your character mod. Now this is all the basic stuff, and you can already do much with this. But imagine you want to do a mod like the Big the cat mod, or any other mod, that has sprites that are maybe bigger or just have not the same shape as the existing Sonic characters or your sprite is smaller or you might want to add custom collision or change the number of frames in the animation.
2.1.2 How to change character sizes or hitboxes or add new animation frames:
there is a pretty neat program that lets you do that and other things like that. It's called RSDK Animation Editor and you can download the latest version here: https://github.com/Rubberduckycooly/Retro-Engine-Animation-Editor/releases (Click on "Assets" near the bottom and then on the first link to download). There is also a version here on gamebanana, but it's a bit outdated and misses some very practical features. I will not go too much into detail with this program but explain some basics. Now after you downloaded and extracted the files open the program and go inside your Data file and then Sprites-> Players again. For each character there is a ".bin" file. This file has the animations and hitboxes etc. So for example if you make a character mod over Sonic open the "Sonic.bin" or "Tails.bin" for Tails or "Knux.bin" for Knuckles. After opening it you can see all the animations on the left side. when clicking on one for example "Walk" you can see all the frames for the Walking animations. Now on the right side, there are a lot of values. The most important are "X", "Y", "Width" and "Height" (they basically tell the game where the sprites in the Sonic.gif is located and how big it is. So if you want to make a mod with bigger sprites like Big the Cat or Vector the Crocodile you can just increase "Width" or "Height" or if they are on a different location on the sprite sheet, you can change the "X" and "Y". Play around with it and you will see how it works.) , then "PivotX" and "PivotY" are also very important, they define the center of the sprite. As a little visual help you can activate the "guide to center a frame". It is above the sprites, right next to the zooming lenses. All the sprites should be centered, so that they don't "stutter" in game. Right next to it is the "Show Hitbox" option. Also very useful. When you click on it you can see the characters hitbox. If it doesn't show up look to the right. There is a drag-down menu called Hitbox. Select either outer or inner hitbox and it shows you that hitbox. I don't know exactly what the difference between inner and outside hitbox is, but outside is a bit bigger, on the horizontal axis, so you might just go along with that. Below the hitbox drag-down menu there are the diminsions of the actual hitbox, so there you can edit the hitbox size. I would recommend leaving most hitboxes the standart size though (usually -10,10;-20,20) as this will guarante that everything works in game and your character doesn't get stuck. The other options are "Textues", there you can select the texture file from which the sprites are loaded, so this means you don't have to use the existing .gif files, but could in theory also make your own. Also you can change the dimensions of the .gif file as you want , so if the Sonic.gif for example is to small you can make the image bigger. "Speed" is how fast the animation is and "Loop Index" means at which frame the animation loops. "0" means it will repeat with the first frame when the animation is at the end, "1" means the second frame and so on. There are other options as well, but you can figure them out yourself if you need them. What I really like to use is the "copy" tool (between the "+" and "-" signs in the tool bar). With this you can copy the same frame and then from there move to the next frame. By the way, if you hover over the options they say what they do, so you can just look through them what each one does or just try them out. In the top bar under "View" are also some really neat features that you should try out. When you are done, go to File -> Save to have your changes in the game. By the way, you don't have to close and re-open the game for this. You can do this while the game is running, so you can make really quick changes and try them out! So that's it for sprite modding. All that I explained here applies to all the sprites in the game and not only the characters, so if you want to edit the menu or badniks or items or any sprites/texture, this is how to do it.
2.2 How to make music/sound mods:
This is really easy. Music is in Data -> Music and sounds in Data -> SoundFX, just replace the old music/sounds with your new ones.
You can also do more specific things with sounds using Maniac Editor, a tool that I will talk about next. There is a tutorial on this here on how to do specific sound stuff, like only changing certain sounds in a certain act etc. here on gamebanana.
Make sure they are in .ogg format for music and .wav for sounds. You can use Audacity or any other tool to convert them. Also make sure the sampling rate is set to 44.1 kHz, sounds also need to be 16-bit and mono.
2.3 How to make custom levels/stages:
So for making custom stages you need the tool I mentioned before called Maniac Editor. You can either get it here https://gamebanana.com/tools/6328 or a newer version which is still in beta here https://github.com/CarJem/ManiacEditor-GenerationsEdition . Either one should be fine, though I don't have much experience with the program myself, so I can't tell you exactly what the differences are and I guess the newer one might have some neat features, but it is also still in Beta so there might be some stability issues. Both should be fine generally though. So in Maniac Editor you first need to open up your Data folder under "File -> Open". After opening it a new window shows up with all the stages, like normal acts, blue spheres and special stages and also menus and cutscenes. Open whatever you want to edit. So if you are doing a stage mod the stages are under "Mania Mode" or "Encore Mode" for encore stages. Then you can see the stage. On the top bar are words in 3 colours. The black ones say which of the different layers are shown, click to activate or deactivate. With the red ones you can place new tiles and objects, the green ones are the different backgrounds. When clicking on one either the red "FGLow" or "FGHigh", one the right you can see the tiles of the level. You can either drag one in with your mouse or use the "Place Tiles" tool (the stamp symbol) to "paint" the level. Also there is a selection tool to move a section of the level. When you click on the red Entities a drop-down menu shows up which lets you spawn entities like enemies or springs, monitors, collapsing platforms, everything that is not basic level geometry. You can test the level from within Maniac editor by clicking on the gamepad symbol or "Game" and then "Launch" button and selection your Sonic Mania.exe. Now to make new tiles (tiles: like puzzle pieces take form a stage) you must edit and replace the old tiles or add new ones if there is some open space. The tiles are located inside Data -> Stages and then the name of the stage. Inside that is a file called. "16x16Tiles.gif" This one you need to open and edit to change or add tiles.
2.4 How to make custom special stage 3d models:
All the 3d models are under Data -> Meshes and then for special stage models "Special". Then there are all the models like Sonic.bin for the Sonic model. Replace whichever you want.
You need this tool https://github.com/koolkdev/rsdkv5_extract/releases to convert 3d models to .bin files to be used with the game. To do this you need to enter the command "3d2mdl output.bin frame1_model [frame2_model [...]]" into a command prompt (or power shell for Win 10) inside the folder where the downloaded .exe is located. Put the model name instead of frame1_model etc. - Each animation frame has to be it's own model. This is quite complicated, so if you have no 3d modeling experience, you would need to learn some things about that at first.^^
2.5 How to make most other mods:
So for anything I have not talked about here, it shouldn't be too hard to figure out on your own. All the files are in the Data folder, so just look for whatever you want to replace, everything is pretty well sorted, so just follow the folders until you find it and then edit it. For more advanced stuff, like adding new moves or stuff, I can't really help, because I have never tried myself, but it requires programming knowledge of course. There are also a bunch of very useful tutorials about specific things here on game banana like changing character physics and others or you could also visit the Sonic Mania Modding Discord if you would like to do that and get help or inpiration there.
3. Finishing/Releasing a mod:
When your mod is done, make a new folder and put the Data folder with all your mod files in there. Try to only put the files that you actually changed in there, so if you only changed the Sonic sprites for example, just put in Data -> sprites -> Players -> Sonic1.gif and not ALL the Mania files, that other people have already. Also you need to add a "mod.ini" file. Just create a new text file and put the following in:
Name= PUT YOUR MOD'S NAME HERE
Author=ENTER NAME(S) OF AUTHORS HERE
Description=ENTER A DESCRIPTION OF YOUR MOD HERE
Version=ENTER A VERSION NUMBER FOR THE MOD HERE
You can look at other mods as an example.Save it as .ini file and put it into your mod folder next to the Data folder.Then name your folder to anything you want your mod to name and make it into a .zip file by pressing right click on it and then select "send to" and then "zip-archive". Then you can make screenshots of the mod and upload it to gamebanana or wherever you want.