KinitoPET modding docs:
Getting Started:

To mod KinitoPET you must first download [Godot 3.3.3 mono] or [Godot 3.3.3 stable]

Download: https://godotengine.org/download/archive/3.3.3-stable/ 

Although not needed to develop mods it is good to be able to look into the files of the game with this tool you should be able to decompile any current or future version of KinitoPET.

Download: https://github.com/bruvzg/gdsdecomp


Scene Setup:

To start make a new godot 3.3 project - To create mods for KinitoPET it is required to have basic knowlage of godot however if you dont't know how to make a project please click the "New Project" button.

The name of your project is important - please ONLY use a-z 0-9 with no spaces when creating your project name instead of spaces you can use underscores as seen below.

Once created your file system by defualt will be:

res://
  - defualt_env.tres
  - icon.png

This will conflict with KinitoPET...  To explain:
When a mod is loaded into KinitoPET it will load all of the resources as if it was its own project. For example in kinitopet there is already an icon.png in res:// it will cause a conflict as there is now 2 icon.png's. This however is also super helpfull as now if we wanted to change or modify something in KinitoPET we can simply overide it.

To remove this conflic and set it up ready to be loaded create a folder with the name of your project and create a new scene called MASTERSCENE.tscn inside this new folder.

res://
  - my_first_mod
      - defualt_env.tres
      - icon.png
      - MASTERSCENE.tscn

You don't need the defualt_env and icon.png however this here shows you were you should put your assets for best practice - this is all about keeping your mod's recources away from KinitoPET's recources to avoid conflict.

So what happends in game?

The code for KinitoPET mod support is set up so that
"res://your_mod_name/MASTERSCENE.tscn" is added as a child to the KinitoPET game. In particular in KinitoPET's
"res://-Scenes/NewInstance/0/1.tscn" scene where in KinitoPET your mods "MASTERSCENE.tscn" will become a child of "Mods"

(you can ignore this as it may be confusing however...)
To explain further. This scene in KinitoPET is used to handle the entire game. Under "Root/Main" the Tab.gd script (found in KinitoPET's autoload) will create child node2Ds numbered 0 - 32 these numbers are responsible for each "Application---" scene that runs in kinitopet. This means with your mod you could easily create your own node in this area that will be able to interact with the Tab.gd script in order to create custom tabs in the game.

Exporting Your Project

To export your project go to Project > Export... > Windows Desktop > Export PCK/Zip

Please then save the .zip file with the same project name you used for your file hireachy and project name.

Simply put this .zip into %appdata%/KinitoPET/Mods and the game should do the rest!

Why this solution?

By the game allowing you to run one external scene the game is allowing you to run literally anything. This is because from this one MASTERSCENE.tscn you can run startup code that can add_children to various other scene's and mod the game in any way you like through getting the parent of the entire game. For example lets say I wanted to go to Kinito's scene and strech his 3D moddle. From my MASTERSCENE.tscn I can get_parent() to get to the Main node then I can get_node("1") because "Application001" holds KinitoPET (you would have to code a check here to see if the Kinito scene is currently loadeded) then get_node("MAIN_KINITO/MAIN/Pet/Pet/3D/Viewport/6-a/Viewport/3D) then change its transform with .scale = Vector3(1,2,1)
This (which I havent tested) should work in the sense that you can access literally every single node in the game and therefor should be able to moddify anything / everything.

I will continue to update this docs page as I see fit to explain things more.


If you have any questions please ask them in the modding channel in the discord - feel free to give me a ping!