I Wani Hug that Gator!

I Wani Hug that Gator!

Not enough ratings
How to upload your mod to the workshop
By Galovich
How to use the new metadata system and how to upload your own Wani mod to the Steam Workshop
   
Award
Favorite
Favorited
Unfavorite
Introduction
This guide will help you in uploading your Wani mods to the Steam workshop, it does not tell you how to make mods. For that I'd recommend checking this other guide.

https://test-steamproxy.haloskins.io/sharedfiles/filedetails/?id=3165554748

Keep in mind that if you're updating a legacy mod from the old system you must remove the old mod_menu_access definition!
What is a metadata file
'Meta' means "About itself", so metadata is data about data, in this case, your mod. This data will be used to populate the mod menu, it's also used to detect if your mod is installed correctly or at all, so it's important to keep this file in your mod's base folder (That is, not any other folder inside your mod's folder).

In other words, your mod's structure should be like this

/mods/Your Mod/metadata.json
Creating a Metadata file
You first start by creating a metadata.json file inside your mod's base directory, to do this simply create a text file and change it's extension from txt to json, to do this you need to have 'show file extensions' enabled in your system, but if you don't want to or know don't how to, just open notepad, then
File > Save As > Change "Text Documents" to "All FIles" > Write 'metadata.json' As the File Name > Save

Now that you have your metadata.json you have to populate it, you can use this template to do so.
{ "ID": "", "Name": "", "Label": "", "Version": "", "Authors": [ "Author1", "Author2" ], "Links": ["Link1", "Link2"], "Description": "", "Mobile Description": "", "Display": "", "Thumbnail Displayable": "", "Icon Displayable": "", "Screenshot Displayables": ["Disp1","Disp2"] }
Populating metadata file
Inside the metadata file you'll find 12 fields that you can fill up, the more you fill the better, but only one is mandatory. Here's what each of them do:

  • ID (MANDATORY) = The identifier for your mod, this must be unique because if two mods have the same ID they'll be disabled. So try to invent something unique
  • Name (Defaults to your mod's folder name) = Simply the name your mod will have.
  • Label (If not provided the mod's button won't do anything) = What label the game will jump to when starting your mod.
  • Version (Defaults to not displaying) = Version of your mod, only visual. Has no effect.
  • Authors (Defaults to not displaying, can be a single string or a list of strings) ["Author1", "Author2" ] Author/s of your mod, only visual. Has no effect.
  • Links (Defaults to not displaying, can be a single string or a list of strings) = Links of your mod, only visual. Has no effect. You can format them as "{a=https://example.com}Link{/a}" so if you click it it'll lead you to that link.
  • Description (Defaults to not displaying) = The description of you mod, visual only.
  • Mobile Description (Defaults to description) = The description of you mod but it'll only show like this if you're on mobile, visual only.
  • Display (Defaults to "both") = How your mod will be displayed on the list, we'll revisit this in the next section, but it can be "name", "icon" or "both".
  • Thumbnail Displayable (Defaults to not displaying) = A string with the name of a displayable to use as a thumbnail.
  • Icon Displayable (Defaults to not displaying) = A string with the name of a displayable to use as an icon.
  • Screenshot Displayables (Defaults to not displaying) = A list or a single string with the name of the displayable.

Note about displayables
  • Displayables don't display if the mod is disabled
  • Displayables are images you define through renpy
  • If you have are using an image for your metadata you don't have to use displayables

For this example I'm going to populate my metadata with some made up data


Notice that in this case we don't care about the last three entries, since none of them are mandatory we can just remove them. In fact, leaving them like this will result in errors.

To remove them simply delete the lines while making sure that each entry ends with a comma except for the last one.



And finally this will be the result of our metadata file which will be seen when the users hovers over our mod

Metadata images
You can add three diferent types of images to better show off your mod. These images must be placed besides your metadata.json, that is, they must be in the mod's base folder.

(Extensions don't need to be png, they can be any format supported by renpy[www.renpy.org]).

icon.png
This one is affected by the "Display" field of the metadata file we talked about in the previous section.

When Display is "name", the icon won't be used.



When Display is "both", the icon will be displayed besides the name.



When Display is "icon" Only the icon will be displayed, it will also be way bigger (Keep in mind the name of your mod will still be visible in the sidebar)



thumbnail.png
An image that will be displayed at the top of the sidebar. Think of it as the "main screenshot"



screenshot{NUMBER}.png
(Even if you only have one screenshot you must name it screenshot1)

The screenshots for your mod, they'll be displayed at the bottom of the sidebar, these can be clicked on to expand them.

(Example with no thumbnail)


Instead of using images you may opt to use displayables by using the fields described in the previous section.

In the end this is the file structure that I ended up for this example.

Don't worry about the rpym file. We'll disscuss that in the next section.
Workshop Uploader
Inside the game's game folder you'll find the mods folder and inside that folder you'll find the workshop uploader folder and inside that folder you'll find several folders, each relating to an OS. Sounds confusing?

Simply enter the folder that corresponds to your OS and start the workshop_uploader, you'll be meet with this pristine UI (Or an error, keep in mind that to open the app you need 1. To have steam open and 2. be logged into an account that owns the game )

If you need to update an existing mod place the mod's workshop ID (You can find it in it's URL) in the Existing ID Field, otherwise press create new.



Here you'll see a bunch of different options and fields, we'll go through each one and explain what they mean.

  • 1. The name of your mod, what will be displayed in the Steam Workshop. You may edit this from Steam afterwards.
  • 2. The icon for your mod, it doesn't have to be a square but if it's not it'll look blurry. At least 196x196. You can't edit this from steam afterwards.
  • 3. What will get uploaded to steam, unless you touch 5 just select you mod's base folder. You can't edit this from steam afterwards.
  • 4. The changenotes, usually not needed for first releases. You may edit them from steam afterwards.
  • 5. When this is enabled the folder you select will be treated as the game's "game". This is useful for "library" mods or translations.
  • 6. This automatically converts all rpy files to rpym* (It only changes the extension), this is only useful if you have rpy files outside of your mod's folder (Since the mod loader won't load scripts outside the mod's folder)
  • 7. If you've never uploaded anything to the steam workshop before you'll have to agree to Steam workhop's terms of service, simply press that button and check the checkbox. You'll only need to do this once, even if you upload multiple mods.
  • 8. This will start uploading you mod, if you get a message error that says "generic" it means something about the file access failed, try restarting the app on admin mode.

Don't worry about messing up, it'll get uploaded as hidden, so you can test everything up before unleashing your masterpiece to the world.

Once everything has been uploaded you'll see this exact message, simply press on "go to your item" to edit it further and to be able to set the visibility to public.



And there you go, your mod is now in the steam workshop, add dependencies, a description, screenshots or anything else that you want. At this point just try every button out and experiment, but most importantly UNINSTALL YOUR LOCAL MOD, THEN SUBSCRIBE TO YOUR OWN MOD AND TEST IT BEFORE SETTING THE VISIBLITY TO PUBLIC. Make sure it appears on the mod loader and make sure you can go from start to finish without problem.


Oh and by the way.
What the hell is an rpym?
A renpy module. Or, in other words, script files that renpy is able to selectively load (or not) on runtime. There's basically no difference between them and regular script files except the fact that you can't do an init block lower than -999
Misc. notes
Disabler files

Inside the mods folder you can make 3 different files.
  • DISABLEALLMODS: Load mod's metadata files, but don't load the modules. Useful for changing the load order around,
  • NOLOADORDER: Resets the persistent data that dictates the load order, mods will be loaded alphabetically,
  • NOMODS: Prevents the game from even parsing the metadata files.
These files are actually already in the game, just remove the dash at the start of them to enable them.

Reload mods, mod order and disabling/enabling mods

Mods are loaded from top to bottom, so if a mod defines a variable while the other uses it, the mod that defines the variable must be on top of the one that uses it.
You may modify the load order using the arrows.

Enabling/disabling mods will only make an impact if the mod is using rpym files, since the only thing it prevents is loading them.

After modifying the load order or enabling/disabling a mod you can use the reload mods to quickly reload the game.

Parsing errors
If there's any problems while parsing the json file the game will let you know in the mods screen.


Making fixes to the game.
If you want to make changes to the game and have them added to it you can contact cavemanon by sending an email to cavemanongames @ gmail.com
6 Comments
Dude_84_Dude 28 Jul, 2024 @ 1:51pm 
Thanks for the help. Was able to upload mine using this.
I'mGunnaFack'inCaaaam 22 Apr, 2024 @ 11:51pm 
GRG
Galovich  [author] 22 Apr, 2024 @ 2:29am 
Example that does so is included in the guide, the one with the comparison.

Just remove the displayable fields and place the images in the root of your mod folder.
(named like screenshot1.png, screenshot2.png, thumbnail.png and icon.png)
LittleHelper 22 Apr, 2024 @ 2:22am 
Can you provide an example of a metadata.json that uses them?
Sorry, I'm big dumb and just keep getting errors trying to figure this out.
Galovich  [author] 22 Apr, 2024 @ 2:18am 
Displayable are images defined using renpy's "image" function. If you're using regular images don't include the displayable fields, just name them the appropriate way.
LittleHelper 22 Apr, 2024 @ 1:54am 
In metadata.json I have these set as such;

"Thumbnail Displayable": "thumbnail",
"Icon Displayable": "icon",
"Screenshot Displayables": ["screenshot1","screenshot2"]

Despite having these files in place and with those names, it just displays them all with 'Image not found' errors. Did I format wrong? Guide kinda dismisses the last three lines in format.