Tutorial Unity How To Uncensor (Almost) Any Unity Game

Prick

Engaged Member
Jul 17, 2017
2,113
1,906
Dedication is one hell of a drug. . .
If you didn't, you should take notes in notepad or wordpad to keep track of what you've done.
Trying to remember each one, esp when there is hundreds of them, is a much bigger pain.
For example, if you find that

1 string first = "_CellSize"
0 ColorRGBA second
0 float r = 0.015000
0 float g = 0.015000
0 float b = 0.000000
0 float a = 0.000000

has a desired change, write down the string name and the original values, then keep making tweaks to see what happens.
This has been effective for me in the past. But generally I avoid fucking with the shader strings, because you usually just end up with glitchy or pink textures.
 

Cmann

Active Member
Donor
Feb 7, 2019
517
760
Can't contribute much, but done a lot of Assembly-CSharp editing in Unity games. Personally tried two different ways, with , and . I prefer ILSpy 3.2+Reflexil because of the UI and how much easier it is to analyze a specific type or field to see what reads from or writes to it, and therefor easier to locate exactly what you want to change. Reflexil(What allows you to edit the file) can be a bit daunting at first since it displays in assembly, but its fairly straight forward and easy for simple value edits. Could write up a simple point-for-point tutorial if the need is there, though for the most part like mentioned its fairly straight forward.
 

Prick

Engaged Member
Jul 17, 2017
2,113
1,906
Could write up a simple point-for-point tutorial if the need is there, though for the most part like mentioned its fairly straight forward.
While I wouldn't mind the knowledge, you would need to be fairly concise.
Not only with with language and means of explaining, but you need to keep the topic at hand in mind.
I don't need an in depth course on C#, I wouldn't need any help if I had the patience lol.

So if you really want to help, successfully uncensor a game - only by modifying the assembly file.
Then write up a 'how to' ... what steps you took, what strings you searched for, and what changes you made to get the desired result.
I have tried a few times to do this myself, and I get lost in a sea of spaghetti. Since I'm not familiar with programming languages I really don't know what I'm looking for. That's my biggest issue. I can locate shader mosaics, but I don't have the first clue what I'm supposed to do with the present code.

Any help is wholeheartedly appreciated. Just don't write a 10 page essay :)
 

Disco-Inferno

Active Member
May 9, 2017
679
867
So I've got this game here:



I found the mosaic field material and changed the block size to 1 and to my amazement that actually worked straight off the bat! However it wasn't long before I noticed that there are still scenes that the mosaics appear in as you progress further into the game. The game functions in an "activity" sort of fashion where you just select the thing you wana do from the menu and then it takes you to the room and plays out that interactive set of animations.

Also "MosaicField" appears to be in every single shared asset file, but editing one seemed to change all the others too, not sure if thats a problem? But I'm not really seeing any other names that would suggest mosaics so the fact that they are there in some scenes and not others is a little baffling.

Any thoughts?

(Oh before anyone gives me evils because the game has R*ape in it's title, it's actually strangely consensual because she appears to be a little bit loopy and gets off on all the shit she asks you to do to her).
 

Prick

Engaged Member
Jul 17, 2017
2,113
1,906
Any thoughts?
I have also looked into this game, I gave up on it. Mostly because the mosaic has got some kind of protection, and because the game is a bit fucked up.
More than likely going to need a modified assembly and a plugin environment.
 

Disco-Inferno

Active Member
May 9, 2017
679
867
I have also looked into this game, I gave up on it. Mostly because the mosaic has got some kind of protection, and because the game is a bit fucked up.
More than likely going to need a modified assembly and a plugin environment.
Editing the block size did actually remove the mosaics for the majority of the scenes though so i'd say it's a mostly succesful uncensor, are you sure you tried to uncensor this game or the game prior to it in the series? Anyway the remaining scenes that are still censored have a weird property where if you view the mosaics through a transparent material at certain angles the mosaics disappear.
 

forbidden101v

The Hentai Witcher
Modder
Jun 2, 2018
801
7,381
Editing the block size did actually remove the mosaics for the majority of the scenes though so i'd say it's a mostly succesful uncensor, are you sure you tried to uncensor this game or the game prior to it in the series? Anyway the remaining scenes that are still censored have a weird property where if you view the mosaics through a transparent material at certain angles the mosaics disappear.
Send me a download of the game and I'll take a look at it.
 

Disco-Inferno

Active Member
May 9, 2017
679
867
Send me a download of the game and I'll take a look at it.
Alright, I'll Pm you once it's uploaded. I'll leave the MosaicField with the same blocksize as I have it set to for the uncensor, but if for whatever reason you want to revert it just change it back to 8.
 

forbidden101v

The Hentai Witcher
Modder
Jun 2, 2018
801
7,381
If you are talking about those white things those aren't callled mosaics even though thats clearly their purpose. I've been playing around with this using the bepinex unity plugin manager and I found by disabling Bip0_hiroin Xtra01 which is the white cylinder object on the vagina and Bip0_hiroin 肛門 which translates to anus and as you guessed its the other object censoring the asshole. Theres also the two censors on the womb called Bip0_hiroin 膣 and Bip0_hiroin 膣02 which is a child game object of Bip0_hiroin 膣 yet oddly enough instead of translating to womb its vagina.

So I tried coding a demosaic dll file for it but unfortunately I still suck at C# let alone doing a demosaic of that level and failed really hard. So then I had another "great idea" that was likely to go wrong. Just delete the meshes using Unity Asset Bundle Extractor! Now surprisingly I had some success. I managed to get the one thats on the vagina (not the womb ones) without breaking the game but after that its more so can I find the other 3? I don't know tbh. Now if you want to search for them and try deleting them all I'll summarize what you need to do. No guarantee that deleting the other meshes won't break the game but its worth a shot right?

Delete these meshes using Unity Asset Bundle Extractor

Bip0_hiroin Xtra01: can be found in sharedassets1.assets
Bip0_hiroin 肛門: I have no clue where the asshole one is
Bip0_hiroin 膣: Same thing with the womb one. No idea where it is.
Bip0_hiroin 膣02: No idea but I imagine it will be with the Bip0_hiroin 膣 mesh since its the parent of it.

I haven't searched through all the assets but I've already been at this for a little over 2 hours and I feel like taking a break. I just figure if you wanna get a jump start and try to solve it as quickly as possible I would share what I know and you can take it from where I left off. In the event this idea is a complete failure I know someone who very good with C# assembly and has coded quite a few demosaics for me in the past. Best of luck!
 
  • Like
Reactions: Prick

DarknestOne

New Member
Nov 11, 2017
3
10
Just wanted to mention couple of metods i'm using when trying to demosaic my games. Spmetimes they work, sometimes they don't. One is fast and simple, the other is really tedious. Both are done with unity asset bundle extractor
First metod is really similiar to Material editing. Thу only difference is the value we're interested in changing is
Code:
int m_CustomRenderQueue =
Usually setting it to 0 will turn the material off without breaking anything. But sometimes it wont' and the mosaic will still be there.
This metod worked on "Escape from ruined hospital with a girl who lost her emotions"

The second metod is also dump editing, but this time of "game object" type of file. There we want to edit
Code:
bool m_IsActive = true
to
Code:
bool m_IsActive = false
but in most cases there's many mosaic-type game objects (i've edited 120 in one game), this metod has worked with game "Yiu ~forgotten girl~"

hope you find this info usefull
 
  • Like
Reactions: Prick
Sep 24, 2017
36
78
Thank you so much for your effort. I have been searching for tutorials like this. All I know was locate the mosaic files but had no idea what to do with them next. Used your blocksize method and successfully demosaiced the game called wish all uncensoring can be this simple :LOL:
 
  • Like
Reactions: Prick

faris1337

New Member
Jul 23, 2017
14
4
Hey everyone new kid here, I registered just to post this.

Thanks for this wonderful post, you showed me the way! (y)

Here I would like to contribute by describing a method, and a successful case of uncensoring a game that has a "Mosaic" named material file but with NO "_BlockSize" (The game was "The twilight of the tentacles" in my case)




From the "Mosaic" dump file, I noticed the variable "m_PathID = 185", this points us to the entry number 185 from PathIDs.
It was a unnamed asset. After exporting dump variables with very suspicious names appeared. I then changed all of the "blend" related variables from 1 and 15 to 0, hopefully disabling the mosaic censoring.

And... it worked perfectly!
I know very little about Unity, but I suppose the trick here is to look for hits of dependency of other entries/files.

I hope this helps for other games as well! ;)

Worked for CatBellUnion Games especially Inu Training and Demon Kankin
thanks a lot :D
 

nighthook

Newbie
Aug 8, 2017
28
43
So I've got this game here:



I found the mosaic field material and changed the block size to 1 and to my amazement that actually worked straight off the bat! However it wasn't long before I noticed that there are still scenes that the mosaics appear in as you progress further into the game. The game functions in an "activity" sort of fashion where you just select the thing you wana do from the menu and then it takes you to the room and plays out that interactive set of animations.

Also "MosaicField" appears to be in every single shared asset file, but editing one seemed to change all the others too, not sure if thats a problem? But I'm not really seeing any other names that would suggest mosaics so the fact that they are there in some scenes and not others is a little baffling.

Any thoughts?

(Oh before anyone gives me evils because the game has R*ape in it's title, it's actually strangely consensual because she appears to be a little bit loopy and gets off on all the shit she asks you to do to her).

I saw your post and even if the game is a bit much for my taste i tried my method on it and it worked, the method has been already used in the thread but i was using it before cus i got much success with it, ok enough bs and lets get down to businesses.
So all you wanna do is hunt down the shader responsible for the mosaic, to do that just open the dump of "MosaicField" material and look at this lines at the top :

0 PPtr<Shader> m_Shader
0 int m_FileID = 0
0 SInt64 m_PathID = 957

what we need from this is the path id of the shader because most shaders don't have a name in the archive, in this case the id is 957 so once again open sharedassets1.assets in AssetsBundleExtractor
dump the file in this phat id unnamed asset-sharedassets1.assets-957-Shader.txt open it and get ready to change some values.

all values that you need to change are under colMask line like this :
0 SerializedShaderFloatValue colMask
0 float val = 15
change 15 to 0 they are bunch of this values more than 10 if i remember just change them all to 0 then save and replace the shader file, you dont need to modify the blocksize file and you are good to go. i will also attach the modified shader file as well so i'll save you the trouble.
i have successfully uncensored many games using this method some games are pain in the ass they have many mosaic shaders and material basically they do one for the vagina and one or many for the penis, i call it the shader hunting i usually use the three musketeers AssetsBundleExtractor, AssetStudio and SB3UGS for the hunt :p.

i saw someone asking about Harem Trigger, i did uncensore it a long time a go i will post the method if its not the same as this one on a later post but there is no much to see there is no vagina model just flat texture, lame :(
 
  • Like
Reactions: Prick

nighthook

Newbie
Aug 8, 2017
28
43
hello again,

So if anyone still interested about uncensoring Harem Trigger there is actually 2 method to make the job done, i will start with the easy one:

[WARNING: before you do any thing make backups]

1. so as in the guide by Prick search for the mosaic material and dump it, in this case the file has the blocksize value but changing it doesn't do any thing, there is another value cellsize and this is the one we need to change.

at the bottom of the file you will find this:

1 string first = "_CellSize"
0 ColorRGBA second
0 float r = 0.0149999997
0 float g = 0.0149999997
0 float b = 0
0 float a = 0

all you need to do is to change the R an G value to 1.17549435e-038 this value is the lowest float value not 0 so the file should look like this :

1 string first = "_CellSize"
0 ColorRGBA second
0 float r = 1.17549435e-038
0 float g = 1.17549435e-038
0 float b = 0
0 float a = 0
save and replace and that's it you are done. you don't need to change the blocksize value.

(ps: this method work for any game have the cellsize value in the mosaic file just save this value 1.17549435e-038)

for the second method you we need to modify the shader instead of the material file.

2. dump the mosaic file, note the shader's path id number

1 string m_Name = "Mosaic"
0 PPtr<Shader> m_Shader
0 int m_FileID = 0
0 SInt64 m_PathID = 456

locate the file in the 456 path id, dump it search for colMask and change the value below it from 15 to 0 or 1 and remember there is many values just keep searching for colMask and change the value:

0 SerializedShaderFloatValue colMask
0 float val = 15

save and replace.



you might ask why should i bother with the shader file if the material file is enough, well in this game you are right but in other games the shader file method comes handy cus they might have many mosaic files but they use the same shader, so just keep this method in mind if the mosaic file didn't cut the job go for the shader file.

in this game both methods work, just choose your poison :p .


And as always i'll attach both modified files just download and replace.
 

nighthook

Newbie
Aug 8, 2017
28
43
Hello there.
I will definitely place this on the OP, thank you for your contribution!
Yeah thank you mate, that would be grate :)

currently i'm working on this game
i've decensored the vagina area with ease but the penis is given me a hard time lol, because its not attached the the main body model its a futa so i think they are using a different material for the pp but i can't find it, or maybe they are using a different method, anyway i will dig deep and if i find something new i will post it for more knowledge.
 

Prick

Engaged Member
Jul 17, 2017
2,113
1,906
Yeah thank you mate, that would be grate :)
Your method does work well. I successfully uncensored "Sleeping Sister Princess",
(maniax/work/=/product_id/RJ242095.html)


The material asset being called was "Pixelate" and the shader was indeed unnamed.
Unfortunately, as someone once warned me, some things are better left to the imagination :b
 

Prick

Engaged Member
Jul 17, 2017
2,113
1,906
I've found 'Mozaiku' and 'MozaikuTest' in assets, any suggestion there?
that's only the filename. You didn't bother to mention the type of asset, or the game.

if its a material, follow the section of the tutorial for material assets.
if its a shader, same as above except shader assets.