Announcement

Collapse
No announcement yet.

[Modding] (Illusion) Honey♥Select (ハニーセレクト)

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Mod Discussion] [Modding] (Illusion) Honey♥Select (ハニーセレクト)

    Please discuss modding about Honey♥Select (ハニーセレクト) (HS) here.

    ==[ Modding tools ]=======================
    • SB3UGS note the Experimental Versions!



    ==[ Useful Links ]=======================
    Last edited by enimaroah; 01-29-2019, 01:35 AM.

  • Originally posted by enimaroah View Post
    The Cab-String in Unity5 AssetBundle files (containing no sound) is always 36 characters long. It doesn't have to be changed for list files, but it must be changed for files in abdata\chara. I made an example a few pages ago.

    When creating a new list file, I always start a copy of \abdata\list\characustom_trial\00.unity3d. The new name of the file is always ending with 00 which saves me the renaming of the TextAssets I want to retain.

    With this method I never had to care for the CAB-String nor did I have to change the Inventory Offset and the item was shown in the list. I hope your are using the latest version of Sb3UGS.
    I am using the last version. I've tried naming it as, say, roy12_00.unity3d but it still doesn't work. I'm using v1.0.53eta. Gonna try just leaving it named as a00.unity3d.

    Also, why is it that opening the file always shows an embedded asset bundle in the assets list? And not just that, the embedded asset bundle is actually the same file I'm opening.

    I've attached a picture.

    EDIT: Here's a test case I just did, same white skin bug.

    1) copy "00.unity3d" to "00 - Copy.unity3d"
    2) rename "00 - Copy.unity3d" to "a00.unity3d"
    3) open a00.unity3d with sb3ugui, remove all textassets and other stuff besides the cf_f_head_00 textasset.
    4) leave only the last line of the textasset, change its number ID to last+1 (200004) and the name (Bタイプ1 to Bタイプ2)
    5) click on apply
    6) make sure Automatic renaming is off (unticked)
    7) save file
    8) reopen to make sure everything is fine

    The edits were made, but the game still refuses to work.

    This is the error I get in the output_log of the game as soon as the game gets to the main menu:

    NullReferenceException: Object reference not set to an instance of an object
    at AssetBundleManager.LoadAllAsset (System.String assetBundleName, System.Type type, System.String manifestAssetBundleName) [0x00000] in <filename unknown>:0
    at CharaListInfo.LoadListInfoAll () [0x00000] in <filename unknown>:0
    at Manager.Character.Awake () [0x00000] in <filename unknown>:0
    UnityEngine.GameObject:Internal_AddComponentWithTy pe(Type)
    UnityEngine.GameObject:AddComponent(Type)
    UnityEngine.GameObject:AddComponent()
    InitAddComponent:AddComponents(GameObject)
    AssetBundleManager:Initialize(String, String)
    BaseLoader:Initialize()
    BaseLoader:Awake()

    EDIT2: Ok, I tried modifying the original 00.unity3d with v1.0.53alpha. It works. But this time I also used ID 200055 instead of 200004. Gonna try 200004 again.
    EDIT3: ID 200004 works fine too.
    EDIT4: Well shit, it seems this is caused because of removing/modifying the 00.unity3d asset bundle (reference?) from the... well, asset bundle. So this is like a reference or something?

    This time I used eta again, and made sure to not remove that reference. Now it works.

    I also modified the textasset before removing the other text assets. Don't know if that makes any difference.

    Thanks enimaroah & aastaroth for the help.
    Attached Files
    Last edited by roy12; 07-03-2016, 03:35 PM.
    My blog, you can find my mods there too.

    Comment


    • Why do I export FBX like this...
      Click image for larger version

Name:	body.jpg
Views:	1
Size:	218.9 KB
ID:	5685209

      Comment


      • @roy12:
        Great that you got it working! Still I am not entirely sure what your 4th edit exactly means.

        About the entry in "MonoB & Other" for the AssetBundle. There is a difference between a file in the game folder named *.unity3d and an asset which acts like an inventory of the file. Unity names those files AssetBundles, while I use "AssetBundle files". This is because inside of them is an "AssetBundle asset" which is like a Texture2D asset, just with a different responsibility.

        "AssetBundle assets" in Unity4 were unnamed and therefore in SBPR you always got an empty line in the "MonoB & Other" tab for them. In Unity5 "AssetBundle assets" have gotten a name which usually is the same as the file's. But equality isn't tested. So you can leave the name of the "AssetBundle asset" as it is and you will know which original file was used to produce the current. This could help me finding bugs.


        @qisidenidi:
        The export is correct and correctly shown. You can scale down the display of bones or switch it off in your 3d editor if you want them smaller or hide them. Or you export the mesh without "Skin" or in a format which isn't able to transport the skin, like OBJ.

        Comment


        • @roy12:
          Great that you got it working! Still I am not entirely sure what your 4th edit exactly means.

          About the entry in "MonoB & Other" for the AssetBundle. There is a difference between a file in the game folder named *.unity3d and an asset which acts like an inventory of the file. Unity names those files AssetBundles, while I use "AssetBundle files". This is because inside of them is an "AssetBundle asset" which is like a Texture2D asset, just with a different responsibility.

          "AssetBundle assets" in Unity4 were unnamed and therefore in SBPR you always got an empty line in the "MonoB & Other" tab for them. In Unity5 "AssetBundle assets" have gotten a name which usually is the same as the file's. But equality isn't tested. So you can leave the name of the "AssetBundle asset" as it is and you will know which original file was used to produce the current. This could help me finding bugs.

          @qisidenidi:
          The export is correct and correctly shown. You can scale down the display of bones or switch it off in your 3d editor if you want them smaller or hide them. Or you export the mesh without "Skin" or in a format which isn't able to transport the skin, like OBJ.



          The crash of Sb3UGS for male cm_body_silhouette, female shoes o_shoes_con and mo_hs_wa_sotoiwa_01_01 in map_hs_01_00 was caused by unhandled vertex colours. But now that they are present, they should be made editable.

          Click image for larger version

Name:	CrashCausedByVertexColours.jpg
Views:	1
Size:	141.9 KB
ID:	5685609
          Last edited by enimaroah; 07-05-2016, 07:52 AM.

          Comment


          • Originally posted by enimaroah View Post
            @roy12:
            Still I am not entirely sure what your 4th edit exactly means.
            I was removing the inventory file because I'm a dumbass.

            It might be good to add your post to the glossary, or at least the part about the inventory, since it must not be removed or you get the white skin bug.
            Last edited by roy12; 07-04-2016, 04:29 PM.
            My blog, you can find my mods there too.

            Comment


            • enimaroah
              enimaroah commented
              Editing a comment
              Thanks for your clarification!

              Sorry about that. It's my fault. I will prevent deleting the AssetBundle asset in the next version.

            • linkerman
              linkerman commented
              Editing a comment
              @Enimaroah

              If I may, could there be an option somewhere to let the user toggle its removal on or off?
              That way, you could have removal of AssetBundle be off by default, maybe have a message saying there's an option to toggle it.

              You could then have a confirmation prompt when it is enabled to tell the user that it's almost never a file you would want to remove.


              That would avoid problems or complaints later, if for some reason somebody is really hard-headed about wanting to delete it

            • enimaroah
              enimaroah commented
              Editing a comment
              @linkerman:
              AssetBundle assets cant be pasted, because it would be senseless to allow that. But Unity needs an AssetBundle asset in an AssetBundle file. Consider you would remove the directory of your harddisk drive. The files would be still intact but you couldn't reach them anymore.

          • Originally posted by roy12 View Post

            I was removing the inventory file because I'm a dumbass.

            It might be good to add your post to the glossary, or at least the part about the inventory, since it must not be removed or you get the white skin bug.
            I agree. I've been following the steps described above by roy12 trying to make a separate list file but I still got the white skin bug. I'm using 1.0.53 theta. Err...and where did the glossary go?

            Comment


          • enimaroah I tried your example but couldn't get it to work. Any thoughts?

            I've also tried a simple change in an item name of the original 00.unity3d, got white skin.

            Comment


            • The entry isn't shown. So the error must be in the list file. Are you sure that you haven't forgotten to "Apply" the changes? Please attach the file.


              and another thing for
              @all:
              "Automatic Renaming" means automatic! You dont have to change it. If you have to change the CAB-String for your mod file then your change unchecks "Automatic Renaming". The same file doesn't need to get another CAB-String again, except if you would use it as a template for another mod. List files dont need a unique CAB-String.

              The automatism just ensures that converted files with CAB-Strings 37 characters long (because the original included sound) have 36 characters afterwards. In this case you will see an extra command in the Scripting window for the renaming.

              If you find another case then please let me know. The automatism is meant for less clicking.
              Last edited by enimaroah; 07-05-2016, 10:28 AM.

              Comment


              • here's the files - Mega

                Edit1: file made with iota - Mega
                Last edited by nneezz; 07-06-2016, 05:53 AM.

                Comment


                • enimaroah
                  enimaroah commented
                  Editing a comment
                  You might have tried to open the file and saved it? That wouldn't work. Use a copy of one of the original list files, throw out all content and paste the TextAsset from your broken F00.unity3d into it. [Or use simply use an original ca_f_arm_00 and put your line(s) into it.]

                  Sb3UGS uses as much as possible from original files. In this case your broken file retains one invalid byte which needs to be copied from an intact file.

                • nneezz
                  nneezz commented
                  Editing a comment
                  I tried using original files, using fresh files from installer, both failed. Can I have your working example files?

                • enimaroah
                  enimaroah commented
                  Editing a comment
                  You were right! I had worked on a patched 00.unity3d file. So my conclusions were wrong. I made an update on the next page.

              • Dropped importing a head from Skyrim since object normals to tangent normals doesn't go very well really, decided to try Tina from DoA5, got all the head parts working.




                Now, everything works just fine (still needs work), but it seems that adding a new head is causing a lot of spam in the output_log (this is an additional head).

                Here's the output:

                Spoiler

                Code:
                Array index (0) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (1) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (2) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (3) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (4) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (5) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (6) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (7) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (8) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (9) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (10) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (11) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (12) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (13) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (14) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (15) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (16) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (17) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (18) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (19) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (20) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (21) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (22) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (23) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (33) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (24) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (25) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (53) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (26) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (27) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (28) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (29) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (30) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (31) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (32) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (34) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (46) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (35) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (36) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (37) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (38) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (39) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (40) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (42) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (41) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (43) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (44) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (45) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (47) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (48) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (49) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (50) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (51) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (52) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (54) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (55) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (56) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)
                
                Array index (57) is out of bounds (size=0)
                 
                (Filename:  Line: 1521)


                This gets repeated forever, and it seems to be repeated for every head part replaced. This of course causes the game to slowdown a lot.

                Now, I don't know if this could be because the game can't find the morphs (I've not worked on them yet but I know how to make them work).

                This only happens if I replace a head part in my additional head asset (cf_f_head_01.unity3d). Just copying cf_f_head_00.unity3d to the new file and changing the CAB string, and referencing this new file, doesn't cause the problem.

                enimaroah, is there any way to confirm the missing morphs are causing the spam? Do you need the head file to check?
                Attached Files
                Last edited by roy12; 07-05-2016, 09:37 PM.
                My blog, you can find my mods there too.

                Comment


                • enimaroah
                  enimaroah commented
                  Editing a comment
                  When morphs are present in the Mesh asset, the SkinnedMeshRenderer has an array m_BlendShapeWeights filled. So indexing could fail at several places. But your test with a duplicate is good. It is very likely that the errors vanish when the morphs are present. One way to confirm would be to delete the original morphs. May be even one would be enough.

                • roy12
                  roy12 commented
                  Editing a comment
                  Well, it seems this is indeed the problem. I removed one morph from the original head, and the game decided to use another (no errors though, I guess it just cycles through). So I removed them all and now it throws the same error it throws with the custom head. So by adding the morphs it should stay quiet in the log. Thanks again enimaroah.

              • SB3UGS_v1.0.53iota
                • Several fixes for the AssetBundle file header [the one above and for SBPR] - Edit: failed on 00.unity3d file - thanks to nneezz
                • Fix for meshes with vertex colours - Vertex Colours are not supported yet. Any mesh you would replace will lose existing vertex colours.
                • Exports can have more and other textures set in materials for Bumpmap, Normal and Specular maps.

                Download:
                sendspace, megafileupload

                Edit:
                SB3UGS_v1.0.53kappa should also work for the 00.unity3d file. It also exports and imports VertexColours, but makes no use of them when replacing meshes - wip
                Last edited by enimaroah; 07-06-2016, 10:43 AM.

                Comment


                • enimaroah
                  enimaroah commented
                  Editing a comment
                  It is part of the way I work. I produced a converted header with the correct length, but there were unknown positions. Sometimes I compared 10 and more unity3d files to find a rule for filling such an unknown field. Binary editing and trying out values... until the game accepted the file, then implementing the rule. To do all header fields correctly someone would have to reverse engineer Unity editor. Those header fields are without technical necessity. On the other hand they are no protection against accessing the content. They just protect the generation of valid files - which is quite illogical.

                  Edit:
                  Illogical, except for one game type: MMO games.
                  Last edited by enimaroah; 07-06-2016, 11:40 AM.

                • neoblues
                  neoblues commented
                  Editing a comment
                  I'm trying to go through roy12's example like nneezz, but when I tried SB3UGS, the log keeps spitting out &quot;Sound resource must be placed into a folder with the original folder structure!&quot;. I noticed it started happening with theta when AudioClips support was put in. It happens even when I try to save 00.unity3d without making any changes. Is there a flag I need to disable somewhere?

                • asdfqwertyasdf
                  asdfqwertyasdf commented
                  Editing a comment
                  Opening abdata\list\characustom_trial\00.unity3d then pressing Ctrl+S gives me the while girl from nneezz with iota and kappa. Automatic renaming under File>Cabinet is also off. This is with 1.1. The size drops from 74,590 bytes to 74,502 bytes
                  Last edited by asdfqwertyasdf; 07-07-2016, 10:44 PM.

              • neoblues:
                That was a bug in theta and before. The versions iota and kappa had a fix for this. Also make sure that you are working in the game folder always!

                asdfqwertyasdf:
                Sorry, I currently dont have that update. "Autmatic Renaming" isn't off and you can leave alone.
                Only 74k then is smaller than the original!? Anyway, the problem will most likely lie in the header again :/

                Edit:
                Checked saving 00.unity3d. Yes, it is 74502 bytes after saving. And No, the demo accepts the file - no white skin bug.
                Last edited by enimaroah; 07-08-2016, 04:32 AM.

                Comment


                • enimaroah

                  I'm having the white skin bug with the demo update too.

                  I just tried this:

                  Copy 00.unity3d
                  Rename to e00.unity3d
                  Open e00.unity3d in SB3UG
                  Remove all but ca_f_arm_00
                  Edit ca_f_arm_00 so that the ID of its only item is now 359055 and the name is Test
                  Click Apply
                  Save e00.unity3d

                  This is the same thing I used to do in 1.0 and it worked just fine, but with the new update it's causing the white skin bug.

                  Maybe they changed something in the update?

                  EDIT: Here's something else I've tried

                  Copy one of my old 00.unity3d copies (d00.unity3d to e00.unity3d in this case). It had a single cf_m_eyelashes_00 textasset.
                  Open e00.unity3d
                  Rename the textasset to ca_f_arm_00 (not sure if this is even necessary)
                  Copy the info from ca_f_arm_00 at 00.unity3d manually onto the ca_f_arm_00 at e00.unity3d
                  Change its slot to 359055 and the name to Test
                  Apply
                  Save e00.unity3d

                  This works and the new item is shown ingame, no white skin bug.

                  I didn't try with an old version of 00.unity3d because I updated and didn't backup. I also deleted the old version installer. Whoops.


                  EDIT: Nevermind, I'm stupid and didn't use kappa. Kappa confirmed to fix the white skin bug on 1.1.
                  Last edited by roy12; 07-09-2016, 01:36 AM.
                  My blog, you can find my mods there too.

                  Comment


                  • Not the first time you fell into this trap. Hm, may be I should create an update reminder by "phoning home" and comparing with the latest version? Using this type of functions might increase the chance for Sb3UGS being suspected to be malware. Therefore I didn't want to implement it in the past.



                    Unrelated morph testing:
                    Spoiler
                    Click image for larger version

Name:	Mutation10.jpg
Views:	1
Size:	83.8 KB
ID:	5687554


                    Last edited by enimaroah; 07-09-2016, 07:01 AM.

                    Comment


                    • Hair Modding Tutorial for HS

                      I want to begin with explaining the principle how the game combines skinned meshes. The first step mounts the head on the body. Then the hair is mounted on the head - not on the body!

                      Open the body Animator and find the bone with the most probable connection for the head. It is cf_J_Head_s.
                      Click image for larger version

Name:	EditingHairInHS01.jpg
Views:	1
Size:	103.1 KB
ID:	5687635
                      Click "Goto Frame"

                      Let Sb3UGS compute the "Combined" Transform.
                      Click image for larger version

Name:	EditingHairInHS02.jpg
Views:	1
Size:	77.8 KB
ID:	5687629
                      Then "Copy" the matrix. [Dont apply!]

                      Open the head animator and "Paste" the matrix into the root. p_cf_head_04 in this example.
                      Click image for larger version

Name:	EditingHairInHS03.jpg
Views:	1
Size:	112.6 KB
ID:	5687630
                      Then search for the Transform for the hair connection.

                      It is N_Head. Do like above and click "Combine" and "Copy".
                      Click image for larger version

Name:	EditingHairInHS04.jpg
Views:	1
Size:	57.0 KB
ID:	5687631

                      Now the repeat the next step for all different hair Animators of your mod.
                      "Paste" the combined matrix from N_Head into the root.
                      Click image for larger version

Name:	EditingHairInHS05.jpg
Views:	1
Size:	101.4 KB
ID:	5687632
                      In the example I did this additionally to p_cf_hair_14_front.

                      Then export everything you want to have in your 3d editor.
                      Click image for larger version

Name:	EditingHairInHS13.jpg
Views:	1
Size:	140.1 KB
ID:	5687633
                      I removed some faces from the pony front hair. After the replacement of the hair in Sb3UGS you would have to revert the change in the hair root Transform, p_cf_hair_14_front here. Set it to "Identity" and "Apply".

                      Click image for larger version

Name:	EditingHairInHS20.jpg
Views:	1
Size:	163.2 KB
ID:	5687634
                      Last edited by enimaroah; 07-09-2016, 11:20 AM.

                      Comment


                      • nneezz
                        nneezz commented
                        Editing a comment
                        Superb!! Thank you.
                    Working...
                    X