#archived-modding-development

1 messages ยท Page 475 of 1

ornate rivet
#

I added code last night but didn't get to test it because I wanted to sleep

#

just forgot about it I guess

#

sigh

safe hamlet
#

bruh

#

this is why you don't code on drugs

#

or sleep deprivation

copper nacelle
#

he doesn't sleep deprive

#

sleeps at like 9pm

safe hamlet
#

bruh

ornate rivet
#

10*

safe hamlet
#

maybe it is drugs then monkaU

ornate rivet
#

and that is sleep deprivation

#

just because I'm not stronk like you doesn't mean I deserve elderc sid/zal/56

safe hamlet
#

you gotta embrace the superior sleep schedule

#

can't have a healthy one forever can you

ornate rivet
#

sleeping forever?

copper nacelle
#

I don't think you know what sleep deprivation is Saleh

#

Unless you're waking up at 12 am

ornate rivet
#

it's when you get less sleep than usual, is it not?

safe hamlet
#

or randomly falling asleep out of no where

copper nacelle
#

it's less than required not less than usual

#

it was also a joke GWczoneHotdog

ornate rivet
#

no, you have insulted me, my family, and my forfather's family. For that you will pay 56 yusuf of the Bham clan located in the far off land of virginia

copper nacelle
#

Ok Mohammad of the Ghaemi clan located in the far off land of like 20 minutes upstate

ornate rivet
#

I sense fear in you

copper nacelle
#

Same

#

pretty sure one of my cousins goes to your uni

ornate rivet
#

pay me $5 or I will personally find them and tell them yusuf's pp is hot

safe hamlet
#

good way to get yourself in prison

ornate rivet
#

but I was talking about 56's epic mod "Pale Prince"

#

how could you be such a disgusting person Sid, what else would I even be talking about??

safe hamlet
#

56 made pp not yusuf

#

checkmate boomer

ornate rivet
#

darn time to go to prison

fair rampart
#

got the game to now crash with <40% of memory used instead of ~50% GWczoneHotdog

ornate rivet
#

it do be that way sometime

fair rampart
#

still dk where the other player's texture is being set to the sprint tex

copper nacelle
#

it got sent as sprint

#

like the handling thing did [1][Knight] = sprint

fair rampart
#

I may have found the problem

#

So the server sends a request for textures from all players on each scene change to test if the player has changed skins

#

it sends the current stored hash codes for the current players' textures in a packet, and the client checks if it matches its current textures' hash code

#

if it does, in the case of the main knight texture, it retrieved the tk2dSprite's current sprite def

#

which, during a scene transition, briefly becomes the sprint texture's definition

#

so I just had to change it from tk2dSprite -> GetCurrentSpriteDef to tk2dSpriteAnimator -> GetCurrentClipByName("Idle") -> -> -> spriteDefinitions[0]

#

basically, fuck tk2dSprite all my homies prefer tk2dSpriteAnimator

vocal spire
#

I want to install a mod but my internet is dying

upper niche
#

Ok, I've been dead for like 2 weeks, what's the progress on the multiplayer mod?

fair rampart
#

little

copper nacelle
#

@solemn rivet add katie

solemn rivet
#

what

fair rampart
copper nacelle
#

add katie

#

modinstaller

leaden hedge
safe hamlet
copper nacelle
#

true

#

you can change your github username if you didn't know fwiw

leaden hedge
#

my github is on my cv FeelsOkayMan

copper nacelle
#

o

leaden hedge
#

87ec785a9dfaa56760ba7d732998f869c8c375cd & https://drive.google.com/uc?export=download&id=1unfblWwMxeZT2a02AJFi-72th4lPvgtz are the correct ones PepeHands

copper nacelle
#

i used whatever the patch-1 ones were

leaden hedge
#

yeah

#

i updated again

#

so i edited patch-1 again

#

and now its complaining it has conflicts

copper nacelle
#

i merged it

jade willow
#

Once I've built my changed area using HKEdit2 how do I use the file it gave me to see it in-game. I've tried saving it as level6 and changing the level6 in my Hollow Knight Data folder but that did not work

#

with the asset bundler* using HKEdit

ornate rivet
#

that is not how assetbundles work

#

read the pin for more info

jade willow
#

ah that's where the info is, thanks!

jade willow
#

and how does one save a level? I can save through SaveScene but I think that just returns me a unity scene and not a level file as seen in the hollow_knight_Data folder

fair rampart
#

is GetHashCode reliable for Texture2Ds?

unborn flicker
#

probably not, would be my guess

fair rampart
#

time to compare every single pixel of every texture every scene change GWczoneHotdog

unborn flicker
#

hash codes are only guaranteed to be equal for the same object reference

#

for example, dictionaries with the same keys and values don't always give the same hash code

safe hamlet
#

i mean they can be overriden so it might have a custom impl

#

but i wouldn't put my bet on it

copper nacelle
#

I mean dictionaries are very mutable

safe hamlet
#

i thought textures would have like a different hash on their own, i know texture has one

copper nacelle
#

hash code probably just isn't overridden because that's pointless

safe hamlet
#

for dictionaries?

copper nacelle
#

yeah

safe hamlet
#

yea

copper nacelle
#

mutable structures don't make sense as keys

safe hamlet
#

they don't

unborn flicker
#

yeah, I was just pointing out that hash codes should not be interpreted as meaning the underlying data is somehow equal, or something

copper nacelle
#

yeah but for data based types they're supposed to be

unborn flicker
#

in fact, usually the properties that make a hash reliable are pretty order dependent

copper nacelle
#

and if overridden have to be in order to conform to the spec

safe hamlet
#

i was talking about like texture2d already having gethashcode implemented to handle pixel differences

copper nacelle
#

equal objects will have equal hashes if they override it and are designed properly is what I was trying to say

#

so like checking it is a good idea

#

because if it does then there's no reason to bother

#

I think texture2d : texture so it should have a hash if Sid says texture has one

#

you can downcast Tex to tex2d at least

fair rampart
#

I saw that Texture has imageContentsHash

#

but I can't access it for some reason

safe hamlet
#

?

copper nacelle
#

private?

#

or does it throw

safe hamlet
#

reflect

fair rampart
copper nacelle
#

I mean reflect doesn't matter if it's not set

#

yeah

safe hamlet
#

o true

#

cursed

#

just make your own out of getpixels() like sf said then

fair rampart
#

Would something like this work

public static int Hash(this Texture2D tex)
        {
            Color32[] texPixels = tex.DuplicateTexture().GetPixels32();
            List<byte> byteList = new List<byte>();
            for (int pixel = 0; pixel < texPixels.Length; pixel++)
            {
                byteList.Add(texPixels[pixel].r);
                byteList.Add(texPixels[pixel].g);
                byteList.Add(texPixels[pixel].b);
                byteList.Add(texPixels[pixel].a);
            }

            byte[] byteArray = byteList.ToArray();

            int hash = BitConverter.ToInt32(byteArray, 0);
            
            return hash;
        }
#

DuplicateTexture() is another extension method I made to return a readable Texture2D in case the src texture wasn't

#

I often gets 0s for the hash

copper nacelle
#

this ain't it

#

it's gonna use the like

#

first pixel

#

and that's about all

safe hamlet
#

^

unborn flicker
#

You have to keep in mind that an int32 cannot possibly encode your image. What you want is to incorporate all of the data into a number and hope that the unlikely event of a collision does not occur

safe hamlet
#

usually you would use some manipulation using prime numbers to do that

unborn flicker
#
for (int i = 0; i < hash.Length - 1; i += 4)
{
  val = 17 * val + 31 * BitConverter.ToInt32(hash, i);
}
leaden hedge
#

you can store some extra info to make collisions less likely, like hash of rgb, rg, rb and gb the chances of something matching all 4 but not being the same is kinda low

fair rampart
#

maggotprime
Unloading 187 unused Assets to reduce memory usage. Loaded Objects now: 54263

copper nacelle
safe hamlet
fair rampart
#

they don't even say what hashing algorithm it is, I hate it

fair rampart
#

also we're not converting to string since we can just send the raw bytes over tcp

leaden hedge
fair rampart
#

for the non-cryptographic memes I would use xxhash

#

but no

leaden hedge
#

although a perceptual hash might actually break because skins are too similar

fair rampart
fair rampart
vocal spire
#

Introducing the mod that transforms dirtmouth in to this

fair rampart
#

does blake2fast support .net35? nuget says it fails to install

#

same error

#

I hate C# so much

fair rampart
#

@fair rampart I could host the C# server too, although it would run horribly slow

fair rampart
#

If that'd make things easier for you, sure

#

I mean if the mod ever gets to dealing with FSMs or loading scenes, the C version won't work

#

yeah, I was already getting worried with the Texture2Ds

#

the sha256 version?

#

I tried md5 since I don't care about security and I still get crashes

#

I definitely have a leak somewhere

#

same thing with sha1

copper nacelle
#

but it does

ornate rivet
#

is raycasting more accurate than using ontriggerenter2d?

leaden hedge
#

depends on "accurate"

#

you can't teleport through a collider with a raycast

#

but you can miss them

fair rampart
#

I might make it so that you're stuck with the skin you join the server with, bc checking skins every scene is expensive af

ornate rivet
#

that's what I was looking for, thanks katie

icy moss
#

i dont want to accidently loose all my progress so-

#

my method is to go to "LocalLow\Team Cherry\Hollow Knight\sprites\Knight" and edit whatever i need to edit, then when i go into the program it seemed to have applied. is there anything else i should know?

#

i get an error that says "Repeated sprites below in this collection are modified differently. Try again after replace the rest of them with the one you need."

#

@jolly oriole

#

ok i did that, now what?

#

this is so confusing, i feel like im messing something up

#

a bunch of backup files were created?

#

some of the sprites in the backup i never even edited

still locust
#

You don't need to backup

#

You should keep the 'watch' on

icy moss
#

i never had 'watch' on during the process of me editing the sprites

still locust
#

Which can help you replace all the sprites you have edited

fair rampart
#

I have a question, is there like a tutorial on how to actually open the sprite packer?

still locust
#

Then keep it on and save the Sprites edited again

icy moss
#

okay

#

once i saved all the sprites, what do i do next?

#

alright, thanks, ill let you know if i have anymore problems.

icy moss
#

also i figured out instead of saving each file, you can click add

#

which was very useful

#

by the way the changed files list is empty because i had to restart my computer

still locust
fair rampart
#

if I revisit customknight, sure

jade willow
#

okay I finally managed to get the proper path to get to my asset bundle gameobject, from that point on how would I make it appear in the scene?

safe hamlet
#

check the pins

#

it tells you

jade willow
#

where does it tell me? it only tells me how to get a reference to the object with
"Find a specific asset with:"
ab.LoadAsset("ASSET_NAME");
I got that far, the next step teaches me about how to deal with scenes, but I want to do something with the object I bundled first I just want to see it, with Logs I've been able to see its data such as its transform position and such, but not been able to instantiate it properly

#

or does LoadAsset actually put it in my scene and for some reason it's not showing up

copper nacelle
#

instantiate and set active

jade willow
#

oh didn't think about setactive, thanks!

copper nacelle
#

did it work because i swear i saw something about it not working

jade willow
#

I wrote that it didn't work but I wanted to try something else before claiming it did not work

#

darn, didn't work :/
It's quite visible and fairly huge in the editor, I just can't seem to get it to show up

#

ah... I thought it would show up as pink as mentioned in the pin first and then I'd have to set that up

#

I'll give that a shot!

#

it wasn't showing up at all, if it showed pink I would've been exceedingly happy at getting my object to manifest itself in some way haha

ornate rivet
#

can you post your code?

#

just the part that relates to the assetbundling

jade willow
#

okay, I'll remove the logs I'm throwing in to check stuff, one sec

#
                string assetBundlePath = Path.Combine(Application.streamingAssetsPath, "CustomAreas/customtutorial");
                AssetBundle ab = AssetBundle.LoadFromFile(assetBundlePath);
                System.Object[] assets = ab.LoadAllAssets();
                GameObject myOwnStuff = ab.LoadAsset("NewStuff") as GameObject;
                GameObject instantiatedObject = GameObject.Instantiate(myOwnStuff,myOwnStuff.transform.position,Quaternion.identity) as GameObject;
                var sr = instantiatedObject.GetComponent<SpriteRenderer>();
                sr.material = new Material(Shader.Find("Sprites/Lit"));
                instantiatedObject.SetActive(true);```
#

oh and just for more context

ornate rivet
#

you've checked to make sure ab isn't null, correct?

jade willow
ornate rivet
#

you don't set myImage's spriterender's material

copper nacelle
#

LoadAsset is generic

#

casting x5fiftPrime

ornate rivet
#

yea you should do LoadAsset<GameObject>("thing")

jade willow
#

I'll check that just to be sure, it'd be weird for it to be null because I have access to the information stored in the object (i.e the transform position)

ornate rivet
#

and you should be able to just do Instantiate rather than GameObject.Instantiate

jade willow
#

When I do "Instantiate" it gives me errors

ornate rivet
#

^

copper nacelle
#

Instantiate is only if you're in a MonoBehaviour

ornate rivet
#

also a good point

copper nacelle
#

otherwise you have to do some form of T.Instantiate where T : UnityEngine.Object

jade willow
#

Instantiate does not exist in the current context, and the solutions are all to just make my own instantiate method

#

ah so yeah okay I wasn't going stir crazy, I can't just instantiate from the mod

#

I'd need to have another class which extends Monobehaviour to instantiate my stuff I guess

copper nacelle
#

UObject

#

UnityEngine.Object

#

whatever you want

#

they're the same thing

#

you don't have to do it off your own class

ornate rivet
#

so does NewStuff have it's own spriterenderer because in the code you posted you get the sr of that when myImage has the sr in the picture

jade willow
#

oh! right, NewStuff is just a container, my bad one sec

#

the image is the child

ornate rivet
#

and are you sure it spawns where you think it does?

jade willow
#

so far I haven't seen it at all. if I spawn NewStuff(which is just an empty container) at 0,0,0 then the objects should appear at the local offset they're set at, right?

#

newstuff is at 0,0,0 and myImage is at 112.6 etc etc

#

could it be possible to have access to the gameobject's transform information without being able to load it from the asset bundle?

ornate rivet
#

yea they should

#

but you do make new scenes in your mod?

jade willow
#

so good news, none of the checks returned null

#

so there is something at the very least it is detecting

#

but I can't get it to appear yet

#
                string assetBundlePath = Path.Combine(Application.streamingAssetsPath, "CustomAreas/customtutorial");
                //Log("Streaming Asset Path: " + Application.streamingAssetsPath);
                //Log("Combined Path: " + assetBundlePath.ToString());
                AssetBundle ab = AssetBundle.LoadFromFile(assetBundlePath);
                if (ab == null) { Log("ab null"); yield return null; }
                System.Object[] assets = ab.LoadAllAssets();
                GameObject myOwnStuff = ab.LoadAsset<GameObject>("NewStuff");
                if (myOwnStuff == null) { Log("myOwnStuff null"); yield return null; }
                Log("Name: " + myOwnStuff.name + " Type: " + myOwnStuff.GetType());
                //GameObject.Instantiate(myOwnStuff);
                //GameObject myOwnStuffGO = myOwnStuff as GameObject;
                //Log("Position: " + myOwnStuffGO.transform.position + "");
                GameObject instantiatedObject = GameObject.Instantiate(myOwnStuff,myOwnStuff.transform.position,Quaternion.identity) as GameObject;
                //GameObject instantiatedObject = Instantiate();
                
                var sr = instantiatedObject.transform.GetChild(0).gameObject.GetComponent<SpriteRenderer>();
                if (sr == null) { Log("sr null"); yield return null; }
                sr.material = new Material(Shader.Find("Sprites/Lit"));
                instantiatedObject.SetActive(true);```
#

oh I would also need to set the child active right?

copper nacelle
#

no

#

why are you waiting a frame when stuff is null

#

all my homies yield break;

#

I'd just instantiate with default args and then move it over to where you are

#

less effort

jade willow
#

I just copied the check I saw above to be fair, I don't want it to do anything when it is null I just want to make sure I get the log if its null

copper nacelle
#

idk how well mixing path stuff works fwiw

#

path.combine is supposed to use os path delimeter

#

just make it 3 args

jade willow
#

No overload for method combine contains 3 args

#

tried to just instantiate the object and then move it to the player's position

#

didn't work either...

fair rampart
#

testing multiplayer mod with skins

nimble lake
#

i thought it sends a lot of packets

fair rampart
#

it does

#

which is why I need to test it

nimble lake
#

those are a lot of packets

jade willow
#

@copper nacelle could you show me a code snippet of how you get an object to appear? I feel like I can't be all that far from an okay implementation of it, but it's just not quite working

fair rampart
ornate rivet
#

with hamachi?

fair rampart
#

yes

jade willow
#

Thank you so much 56, this is very nice to see how you set things up :D

copper nacelle
#

np

nimble lake
#

isn't there a server for it though?

fair rampart
#

it's not updated to work with skins

ornate rivet
#

I am at dirtmouth

jade willow
#

just to be sure what's UObject? is it just a reference to UnityEngine.Object?

ornate rivet
#

yea

fair rampart
#

let me start my game

jade willow
#

alright thanks

copper nacelle
#

yeah i have using UnityEngine.Object = UObject;

#

because i don't like it colliding with System.Object

#

even though i use object for that anyways

#

just feels weird

jade willow
#

alright

ornate rivet
#

wow that's laggy

#

but the skin is cool

fair rampart
#

let's see what happens with 3 players

#

lol it crashed

ornate rivet
#

f

copper nacelle
#

scam peepoLeave

safe hamlet
#

wait

#

we testing?

#

jngo get the jojo skin on

copper nacelle
#

jojo i sleep sekiro real shit

fair rampart
#

I am trying to figure out how to not make it crash

safe hamlet
#

nah it's fine if it crashes as long as i snipe the skins feelspkman

nimble lake
#

ok how do i join

fair rampart
#

the session is on pause

safe hamlet
#

what's the login thing again

#

id and pass

fair rampart
#

I made a new one cause the others are full and idk who to evict

#

hk multiplayer testing for both fields

safe hamlet
#

what's the port

fair rampart
#

26950

#

server isn't running rn though

safe hamlet
#

o ok

fair rampart
icy moss
#

the old dll doesent work anymore?

fair rampart
#

no

icy moss
#

ah so i dont need to download this new one if i have the old one then

fair rampart
#

no you do need to download it

#

old one is outdated

icy moss
#

gotcha

fair rampart
#

alright, so if you move back and forth quickly it's basically a lag switch

safe hamlet
#

are you all still testsing

fair rampart
#

do you want to help me try something out real quick

#

I tried with zal and it crashed so I want to see if it crashes again with 3 players

safe hamlet
#

o

#

u still here?

fair rampart
#

nah lol

#

maybe some other time

jade willow
#

well... I officially don't get it :/

copper nacelle
#

If you have the assets and the dll I could give it a shot

jade willow
#

thank you, by dll do you mean my mod's dll?

#

all I did was take an image and dropped it into the asset folder and put it on the scene in unity, turned it into a prefab and bundled it

copper nacelle
#

yeah

jade willow
#

is it okay to drop files in here?

copper nacelle
#

yeah

jade willow
#

Do you want the bundle or just the image I tried getting into the game?

copper nacelle
#

the bundle

jade willow
copper nacelle
#

any manifest

#

idr if you need it

jade willow
#

if it is relevant, it is in a folder named "CustomAreas" inside the StreamingAssets

copper nacelle
jade willow
#

Yes same set up

#

oh also this bundle is no longer the NewStuff which was an empty object, I just dropped the image and made a prefab of it then bundled it

#

so no messing around with getting child and all that

copper nacelle
#

Okay

jade willow
#

hmm I wasn't getting that, lemme check

copper nacelle
#

it's imagetest

#

instead of customtutorial

jade willow
#

Oh maybe I sent you the wrong one

#

before I rewrote that one second

copper nacelle
#

are you sure this doesn't load during the knight creation screen and then die at the scene load

#

this is also imagetest

jade willow
#

yeah that's the new bundle I use

#

I dropped the previous one to use this new one which only contains the image

#

Oh wait should I have the assets load at some other point in code?

copper nacelle
#

doesn't really matter but idk when this instantiate is going to exactly happen

jade willow
#

IEnumerator OnSaveLoad()
        {
            Log("I ain't ready!");
            yield return new WaitWhile(() => HeroController.instance == null);
            Log("READY!");```
copper nacelle
#

yeah

#

that's after the knight loads

#

not necessarily after the scene is loaded

#

afaik

jade willow
#

Ah....

copper nacelle
#

But I'll check

jade willow
#

omg if that's it then I've been struggling all this time for nothing

#

oh well, we learn the most from our mistakes at least

#

I thought for sure they would render the entire scene and then load the knight and set it at a position (assumptions are bad I know)

copper nacelle
#

there's a scene for loading the knight stuff

#

idr the name

jade willow
#

I'll move that part of the code into an OnSceneLoad as I planned on doing as soon as I got it working

copper nacelle
jade willow
#

It's always like that

#

Should've done it right from the get-go but I just wanted to see it pop-up first. Alright I'll implement that in the scene load and see if that fixes it

copper nacelle
jade willow
#

wait really

copper nacelle
#

why is it behind the camera

#

or really far back

jade willow
#

Oh I think that was me messing with its Z to try and see if it was just behind something

#

what's a safe Z to use to start with?

copper nacelle
#

0

jade willow
#

oh alright

copper nacelle
jade willow
#

haha

#

That's weird, the reason I used that position is because that's the position I got from the HeroController's position when I jumped at the spawn from level6

floral furnace
#

you dont understand 56

jade willow
#

What's the Hook used in your code example, it uses two arguments for what I assume to be the previous scene and the one that is loaded

#

private void ActiveSceneChanged(Scene arg0, Scene arg1)

#

on the hook reference I saw BeforeSceneLoadHook and SceneChanged which both only have 1 argument (maybe it's an overload of one of these)

copper nacelle
#

UnityEngine.SceneManagement.SceneManager.activeSceneChanged

jade willow
#

Oh it's not a ModHook I see

copper nacelle
#

idk if SceneChanged got fixed to use BeginSceneTransition

jade willow
#

or a base one it's a new hook

copper nacelle
#

but last I checked it only triggered for stag statioins

jade willow
#

ah I see

#

okay so I'm better off using this as a hook instead

#

since it should be more reliable

copper nacelle
#

yes

jade willow
#

Thank you so much for helping me out!

copper nacelle
#

np

jade willow
#

oh, right I think the asset bundle shouldn't be loaded more than once right?

copper nacelle
#

that would be a good idea

#

I have it as an instance variable and load it in Initialize

jade willow
#

alright thanks :D

#

so it can be accessed from anywhere anytime

copper nacelle
#

yeah

jade willow
#

So I can confirm I saw it show up on the title screen (I'll just add a condition to check in which level you are and this way it should only show up in that one level and not the others)

#

Thank you!

copper nacelle
#

np

jade willow
#

Feels good :D

#

also turns out since I didn't mention the scene that's the position in town, but my test area was in Tutorial_01. Hence why I got confused when I saw the image in town

copper nacelle
#

ah

waxen mauve
#

Bonfire

#

Sry misclick

fair rampart
#

I didn't even start hollow knight and just by switching to another user windows froze smh

fair rampart
#

fun fact : unity's png encoder doesn't always produce the same output for the same input

ornate rivet
#

it would be nice if all mods had their respective github repo in the readme

nimble lake
#

are you like THESE devs

#

judging people by the number of their repos

fair rampart
#

more like

fork of project a
fork of project b
fork of project c
fork of project d
fork of project e
graceful rune
#
Untitled
Untitled1
Untitled_1
Untitled_1 Copy
Untitled_1 Copy1
fair rampart
#

why make a branch when you can just copy the whole repo

vocal spire
#

it adds switching between Hardmode(The shield is the only thing you can bounce on) in global settings

fair rampart
#

Why does changing the spriterenderer sprite of a charm in collected charms not do jack shit

copper nacelle
#

in inv or

fair rampart
#

yeah

copper nacelle
#

CharmIconList.Instance

#

is the easy way

fair rampart
copper nacelle
#

blessed image

#

he's not trying to cheese the game with maggotprime that's just no fun

fair rampart
#

Do you think I should name the pngs after their charm number, like 5.png for baldur shell, or an actual name, like baldur.png

#

the former is easier to parse, but I can see it causing problems for charms like kingsoul and grimmchild

#

I already have a Baldur.png, so I'll just append Charm to the end of every charm name PepegaSlash

#

yeah

vocal spire
#

are charms being added to custom knight?

fair rampart
#

yes

gilded lotus
#

are charms being added to pale court mod

fair rampart
#

more textures to change = slower feelspkman

unborn flicker
#

This should be a separate mod

#

Seriously

fair rampart
#

like all of my version of CustomKnight?

unborn flicker
#

Nah, just the charm sprites

#

It's a lot of stuff to put into one mod, I think

vocal spire
#

that is a lot of new sprites

unborn flicker
#

Well, it's a matter of opinion

#

But I feel like it would be better to have the "main mod" be changing out the knight sprites, and then have separate mods for changing out other things, so that you don't need 60 pngs in the custom knight folder for it to work

#

idk though, I spoke a lot more confidently about it than I actually feel zote

fair rampart
#

you don't need all the pngs for it to work, it changes textures to the default if they're not included

vocal spire
#

I just want to customize charms, whether it is a separate mod or not

unborn flicker
#

Yeah, true. It comes down to how far you plan to expand it

copper nacelle
#

I don't see why it isn't literally just all sprites at this point

fair rampart
#

we're sitting at 44.6 MB rn folks

copper nacelle
#

It would be really easy to do

vocal spire
#

imagine everything in hollow knight being customizable

copper nacelle
#

You can just dump the textures at runtime on first load of you don't want mod size to go up

unborn flicker
#

Is that compatible with the ingame texture swap menu though?

vocal spire
#

if everything in hollow knight was customizable, every custom knight mod would be an entirely new game

copper nacelle
#

why wouldn't it be

unborn flicker
#

idk

fair rampart
#

should be when I'm finished with it

leaden hedge
#

any mix and match

fair rampart
#

any move desired pngs to desired folder

copper nacelle
#

you can

#

if you swap to one with everything and one missing things it doesn't swap the missing stuff to default

#

easy

#

as in that's what happens rn to be clear

leaden hedge
#

what if all I want is a subsection of a texture

#

like I just want shriek and wraiths

fair rampart
copper nacelle
#

then you open Photoshop

leaden hedge
#

fuck Photoshop all my homies hate Photoshop

copper nacelle
#

aesprite

#

gimp

#

krita

vocal spire
#

paint 3d

leaden hedge
#

let me rephrase

fair rampart
leaden hedge
#

fuck manual labour all my homies hate manual labour

copper nacelle
#

bro you'd have to like load it mutably or copy to a render texture

#

both sound slow

#

mutable loading takes like unironically a solid minute

leaden hedge
#

any masks

copper nacelle
#

You can't access by pixels

#

I think

#

Otherwise you wouldn't need the render texture hack to get a png

leaden hedge
#

I mean just have a Shader that takes in a textures and grayscale masks

#

it should be doable at runtime at way over 60fps

copper nacelle
#

shaders x5fiftU

leaden hedge
#

I mean it's the simplest shader of all time

copper nacelle
#

average and div 3?

fair rampart
#

mutable loading takes like unironically a solid minute
what the fuck

copper nacelle
#

Idk dude

#

It confused me for so fucking long

#

And I changed one parameter

#

And it went from minutes to milliseconds

#

pepogrub unity

leaden hedge
#

out = (tex1 * mask1) + (tex2 * mask2) etc
in a fragment shader probably works

#

you'd probably have to put it into a render texture then load it in as you normally do

copper nacelle
#

ah not 'mutable'

#

non-non-readable

copper nacelle
#

markNonReadable defaults to false and that's slow as fuck

#

change it to true and it's suddenly instant

fair rampart
#

I

#

should note that in my quest to implement skins

#

amazing how the docs don't explain shit

#

"Set markNonReadable to true to mark it as non readable" finished the docs boss, devs will love'em

vocal spire
#

I am trying make "godmaster" charms for the customknight update

fair rampart
copper nacelle
#

having charm in every entry

#

peepoLeave

#

append it after

#

prepend

fair rampart
#

I did that initially but it's easier to access the string name by charm number later in the code

copper nacelle
#

make it a method or property or indexer imo then

leaden hedge
#

English centric make it numbers

#

charm_0.png

fair rampart
#

might say fuck it and make all the staged charms the same sprite

fair rampart
nimble lake
#

everything is broken
but this
is good

patent zealot
#

"Hey can you show me what charms your using, just open your inv and close it after a secod"

fair rampart
nimble lake
#

no
not ok

copper nacelle
#

well not with that attitude

#

it's fantastic

fair rampart
#

looks fine to me

vocal spire
#

how many charms did you collect?

fair rampart
#

maybe

#

didn't even realize charms were in an atlas

#

this cuts down on the number of individual pngs in the customknight folder then

copper nacelle
#

I don't think the charm icon list stuff was joined

#

I assume it's yeeted out of the atlas

hasty fractal
nimble lake
#

solid

fair rampart
#

So would there be a way to change the entire atlas rather than each individual sprite?

copper nacelle
#

maybe

fair rampart
#

getting the spriteList texture gets the entire atlas, but setting it with Sprite.Create changes only the individual sprite

#

is it something with Sprite.Create?

copper nacelle
#

unlikely

jade willow
#

managed to load into a new scene with oniro, but now it remains stuck in "Trans State: Loading" upon entering the gate to get to that new scene
also everything is dark so we're not sure if it actually fully worked or not yet, the scene name seems fine and shows as the actual scene name which is "ModScene1" and GameState "Entering Level"

#

Is there more stuff to set-up upon loading a scene or should it work by just transitioning into the scene

#

that we have (I think) it was just a empty gameobject containing a collider2D which we used the name to refer to in the CreateGate func

#

I think we're only creating the gateway when we get into the area, should all gateways be created onLoad or something?

#

yes from the base game in the tutorial area we have a gate created, we managed to get it to teleport the player to another gate in another pre-existing scene

#

but in order to load into the modded scene we need to make sure that the gate in the modded scene was created before the first gate was created?

#

or am I getting this wrong

#

so we do that, but the place we call CreateGate is when we check that we are inside the area which I guess is too late since the initial gate already needs the modded scene's gate to be created before it can be created, right?

#

okay so that should work, should all gateways be created at the start of the function or is it okay to create the gate once we verified that we are in the relevant area?

jade willow
#

just to be sure loading a scene should load all of the assets in it, right?

#

still stuck in loading

#

are there some elements that absolutely must be in the custom scene for it to work?

copper nacelle
#

just what grenade said

#

I have an example for a mod if you want

fair rampart
#

I think I have a better understanding on the relationship between sprites and textures

#

individual sprites are a subsection of a texture atlas if they're packed

#

in that case, I can't even access the sprite's rect or textureRect to yeet into Sprite.Create because the sprites' packing modes is Tight

fair rampart
#

fixed multiplayer client's weird dependency on QoL ๐Ÿฆ€

#

might've been something with the gm's OnPauseToggle hook

copper nacelle
#

dependency on qol feelspkman

graceful rune
#

and i had just one issue with it. it replaces the hatchlings with small grimmkin, which i find amazing. but i thought: what about the weavers? (since, you know, weaversong+grubsong+glowing womb is a classic combo) and the weavers are not changed

#

so i just edited them myself. feel free to add them to your GrimmKnight. and i would be flattered if this was added as an update to the skin on google drive

royal ridge
#

@still locust something you might want to look at

still locust
#

wow great

#

I will add it into the Grimm Knight folder

#

So what author name should I note? Swagapagos Turtle? @graceful rune

graceful rune
#

tbh i don't even care that much about getting credited for something i did in paint.net in 10 minutes XD
but i'd be honored. yea, put "Swagapagos Turtle"

copper nacelle
#

<@&283547423706447872>

remote zealot
gilded lotus
#

this looks modding related to me

fair rampart
#

moderating related you mean

copper nacelle
#

753 when is shitmodst 2

buoyant obsidian
#

Actually never

copper nacelle
rigid dust
#

Can anyone provide a working Bonfire mod link? I replaced Assembly-CSharp with the one I found on the net but all I get now is a black screen after game starts. Glad I backed up ๐Ÿ™‚

languid goblet
#

what free program would be best for editing customknight skins? i'm using krita right now but it's kind of annoying sometimes

fair rampart
#

i use sai, but as i believe its not free

icy moss
#

i use firealpaca, works like a charm for me, plus its free

#

it does but i already edited all the files without it on

#

so i have to do this manually

#

but in the future i will keep this in mind hollowcool

icy moss
fair rampart
#

massage it

icy moss
#

hivetired i mean yea i was doing that but how do i export all those sprites or whatever

languid goblet
#

how does spritepacker work?

#

i mean doesn't matter to me since there's no mac version but just curious

icy moss
#

i got an error that says: "changed files below don't belong in the current atlas. Delete them by double click them in Changed Files or Replace All won't work. (Nothing to do with Replace button)" @jolly oriole

#

underneath the error are a bunch of frames i edited for the skin

#

k

#

no, its dream nail warp stuff

#

i also got another error

#

saying "Repeated sprites below in this collection are modified differently. Try again after replace the rest of them with the one you need." following that are two sprites that look the same

#

i tried one and it didnt work, i then tried the other and it also didnt work

#

it also created a bunch of backups

#

oh- now theyre different sprites

#

sometimes it would create like,, 2 backups then it would create 10

velvet marsh
#

Hey, I use Clip Studio Paint for all art-related stuff and I also was interested in doing some CustomKnight skins... What is that software you're using in the screenshots right above though? Is that the spritepacker thing someone mentioned a few days ago?

icy moss
#

@jolly oriole i wanna revert what im doing, i feel like im breaking my sprites when i click replace

#

i clicked that and im unsure what it did, half of the buttons i dont even know what they do

#

this is so messy

#

including the backups? @jolly oriole

#

i wanna fucking die, this program is so confusing and i think i need to redraw everything

#

i wanna cry

#

what do i do now

#

thank you, i think im gonna restart this, it only takes me around a week and with this knowledge i should be able to do it again. plus i heard benji is making a tutorial so

#

thanks a bunch, really mean it

jade willow
#

what is the proper way to bundle a scene? Is it to just make a bundle and put the unity scene file in it?

#

okay so at least that's not the wrong way to do it, and loading a level should happen through a created gate, right?

#

and in order for the gate to work based on the name you give it, does it just need to be a collider2d in the scene with a name specified (i.e.: "left customlevel")

#

yeah that's the code used to create the gate, we have no problem creating a gate to hook it to another level that already exists within the game, but we can't seem to get it to load into a new scene, it only remains on "loading" which seems to indicate something's wrong

#

the asset bundle for it detects the name of the scene without an issue and it goes into the right loop to create the gate

#

using the scene's name to verify if we're going into it, we do get the right Logs stating we're into that part of the loop, but it's as if the level could not load

#

Oniro's the one working on that piece of code, I'll try to ask him if he could do something with that, thanks :D

#

we set it to be something like
scene name is "ModScene" and the entry point is "left customscene"

#

I mean to be fair we're probably kinda dumb, but it's part of the learning process

#

which is the name of the gameobject containing only a collider2d set to isTrigger

#

oniro's eating right now but he'll get on sending you the repo when he's back

#

yes that is what we used to create the gateway from tutorial_01 to the top entry gate in town. by changing the name "right1 custom or whatever" to the name of the gameobject in the scene which is meant to be used as a transition point ("left customscene") we end up in an infinite loading

#

(really expecting it to be a very simple fix that just flew right past us tbh)

#

the gate "left1 custom or whatever" along with its coords and size values gets created, but does it need to point to a pre-existing gate in ModScene? I thought it would look for a GO with the name used in the param next to the scene's name

#

okay but by default gameobjects created in unity don't have the components assigned to them which I suppose we need to set-up in code. But that's taken care of when we run through the CreateGateway function right?

#

okay so if we run through CreateGateway to make the gate to the ModScene when entering Tutorial_01 and then create the gateway to return to Tutorial_01 from the same gate in ModScene when we enter ModScene this should be an okay implementation

#

(sorry gotta brb)

spare rover
jade willow
#

how does it detect ground?

#

would just any collider work

#

because the gate was right on top of a cube with a collider2D on it

ornate rivet
#

you need to set the layer of the gameobject to 8 as well

copper nacelle
#

floor

jade willow
#

in the unity scene or through code?

ornate rivet
#

both work

#

probably less time consuming with code

#

yourGo.layer = 8;

#

list of all the layers

jade willow
#

but you'd have to set each ground tile to layer 8 individually, right?

ornate rivet
#

there's also a GlobalEnum that has them

#

yes

#

bruh how is it working then? It shouldn't play the proper animation otherwise

copper nacelle
#

there's a tag too iirc

#

otherwise you just kinda float on the ground

jade willow
#

so probably recursively look through all game objects, looks for a part of its name you can identify it so probably ground or wall in its name and set each to the right layer based on that?

ornate rivet
#

If you have all your ground tiles grouped together (eg they are all children to the same parent) then you can just for loop

jade willow
#

okay so group by layer

fair rampart
ornate rivet
#

JNGO PALE COURT OR ELSE

jade willow
#

Wow, nice

ornate rivet
#

smh

fair rampart
#

I need TWP clout

spare rover
#

I've just set up my terrain to be on layer 8 and it didn't change.

#

Do the position in Unity match the position in game?

ornate rivet
#

yes

jade willow
#

I don't have access to layers using HKEdit2, I can see that it's set to something, but I don't know what

ornate rivet
#

you can just do Add layer and add "Terrain" as layer 8

#

then set the go to that

jade willow
#

okay so make my own set of layers as long as the number matches the one used

spare rover
#

Yeah my ground in on layer 8 now.

ornate rivet
#

is there something wrong with your ground?

jade willow
#

But not having ground wouldn't prevent the level from loading, right?

ornate rivet
#

it wouldn't

jade willow
#

you could theoretically load into an almost empty scene that only contains a gameobject with a collider used as the transition gate, right?

ornate rivet
#

yes

jade willow
#

it should at least load even if nothing would be visible since no camera or something like that, unless there are some dependencies like some objects absolutely required on every scene to be able to load

ornate rivet
#

camera would exist

#

it would just be a black bg with white particles

jade willow
#

my guess is that the same camera gets moved from scene to scene, right?

#

that'd make sense

#

so the reason why the scene does not load is unrelated to its content

#

using the debug mod the transition state remains at loading

copper nacelle
#

scene name MODSCENE

jade willow
#

oh, is there something wrong with that? its name is "ModScene1"

#

i think everything is set to be all caps in this ui

#

oh indeed

#

well the term would be small caps I think

#

but is there an issue with the scene name?

spare rover
#

I see a lot of "Couldn't find a Hero, make sure one exists in the scene."

jade willow
#

also a mention of

 
(Filename: C:\buildslave\unity\build\artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Using fallback 2 to find tilemap. Scene ModScene1 requires manual fixing.
 
(Filename: C:\buildslave\unity\build\artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Failed to find tilemap in ModScene1 entirely."```
#

and Scene Manager missing from scene ModScene1

#

alright

spare rover
#

We do, we thought it was needed so that it had a reference point to create the gate.

#

Trying to remove them

#

Well screw me side way it worked

jade willow
#

HOW

#

i thought for sure you'd need a GO with the same name as the one you used so it would find it and create the gate at its position or something

#

huh so it just creates a gate "somewhere"?

#

I thought the first vector2D determined the position of the first gate

#

OH wait

#

I just realized

spare rover
#

Have a good sleep, thanks for the help!

jade willow
#

okay right it is called a second time

#

I thought you meant that it created the two gates in a single run through CreateGateway

#

but we do call it twice with the second time using the same name so it links them up proper

#

alright makes sense, thanks so much and have some wonderful sleep

fair rampart
#

I'm trying to add settings to CustomKnight so you can disable preloaded textures and set a default skin

#

is there anything I need to do besides adding a file like this?

using Modding;

namespace CustomKnight
{
    public class SaveSettings : ModSettings { }

    public class GlobalSettings : ModSettings
    {
        public bool Preloads { get => GetBool(true); set => SetBool(value); }
        public string DefaultSkin { get => GetString("Default"); set => SetString(value); }
    }
}
copper nacelle
#

using properties nauseated face

#

why do you have save settings

fair rampart
#

idk, I can remove it

copper nacelle
#

you don't need properties fwiw

#

just use fields

fair rampart
#

is there a mod using that that I can reference?

copper nacelle
#

mod console I guess

fair rampart
#

I haven't worked with settings aside from copying pale prince for traitor god

copper nacelle
#

Actually sanic

#

If that's on GitHub

#

that might've just been more saves

#

gimme like 5 and I can put it up

safe hamlet
#

itโ€™s just preference really, use properties if you like them

fair rampart
#

I can't get a settings json to generate

#

oh I have to generate one myself ๐Ÿคฆ

copper nacelle
#

you don't

#

you just go into the game and then quit and it'll gen

#

and properties are worse imo because they just go into the dicts so it's uglier

naive token
copper nacelle
#

an extra platform

lavish seal
#

never knew about such mod

naive token
#

it's an option in the Randomizer

lavish seal
#

Room randomaizer I suppose?

copper nacelle
#

item/area/room

naive token
#

^ it's the same mod

#

just different modes

lavish seal
#

I though its all same mode that just called "room" but ok

unborn flicker
#

That platform is required, so it can't be disabled

copper nacelle
#

not if you shove the fat dude elderC

naive token
#

it wasn't in older versions how is it required now

copper nacelle
#

because it was a sign pogo when signs aren't supposed to be pogoable in the first place to emulate the behavior of 1221 rando where the fat guard would walk farther left

#

And something which is never normally pogoable being pogoable isn't exactly intuitive

naive token
#

oh yeah I remember the sign being pogoable

#

guess that makes sense

#

can't the Great Husk Sentry be made to walk all the way there though?

copper nacelle
#

yeah

naive token
#

so why not that instead?

copper nacelle
#

effort, probably

#

platform is easier to code and you can't miss it which makes it easy for beginners

leaden hedge
#

56 who has tk2d

#

also unrelated to tk2d, is the background on its own layer?

gilded lotus
#

jngo

leaden hedge
#

smh

copper nacelle
#

yeah jngo has tk2d

#

and background is just different z afaik

#

no layer change

fair rampart
#

do you want the unitypackage

#

or you could easily just google it

leaden hedge
#

when i google it, it just says the default sprite shader is like some super basic thing

#

but when i use that to override the shader they have it just breaks

#

unless theres some reference on a script i have to update

fair rampart
#

idk if this helps, but the shader name for HK objects is Default/Sprites-ColorFlash

copper nacelle
#

goodbye messages

fair rampart
copper nacelle
fair rampart
#

I wonder how good TC's workstations are

#

cause I have an fsm that's less complex than PV's and words are appearing at one letter per second as I type

unborn badger
#

whatโ€™s your PC

fair rampart
#

Ryzen 7 2700, 32 GB RAM, GTX 1080

unborn badger
#

is there anything in the background taking up any resources

fair rampart
#

my IDE, git bash, fsm viewer, music player

#

everything else in unity works fine

unborn badger
#

thatโ€™s weird

fair rampart
#

the playmaker editor just chugs

#

I bet they just used it like this

#

Hello

#

Does anyone here know how to make a custom boss mod?

#

For free

#

Or some form other than money and labor

#

I have sprites

#

I just need a programmer

magic citrus
#

any help to move a certain npc to a specific position? i.e iselda out in town and so

leaden hedge
#

use the preloader to make a copy of it, instaniate it when you load the scene you want it to be in, delete it when you load the scene you don't want it to be in

restive ledge
#

After the pale king event ends, will there ever be a way to get it again? Will the challenges return?

fair rampart
#

what pale king event

flat forum
#

modding discussion pins

still locust
#

After the pale king event ends, will there ever be a way to get it again? Will the challenges return?
@restive ledge There is no longer time limit with that event

#

And all the events

flat forum
#

oh, nice!

#

@still locust so I can submit it at any time I want?

still locust
#

Yeah
And if you had already finished some of the challenges before the date the events began, but without skin from TWP, it's still fine

flat forum
#

oh, yeah, where was the link to the TWP skins, again?

#

I had it for a bit but lost it

still locust
#

modding discussion pins

flat forum
#

thanks!

restive ledge
#

So... i have no time limit?

#

Nice!

fair rampart
leaden hedge
#

abs rad final phase

#

when you jump above the screen it kills you

hot sun
#

been looking at some basic modding stuff, hoping to learn a bit. is there an easy way to "reload" a dll if i've overwritten it, or do i need to quit all the way out and restart the game? thanks ๐Ÿ™‚

copper nacelle
#

quit out

hot sun
#

ok thanks

ruby crater
#

Probably a noob question, but... Iโ€™m updating nail damage in the AttackHook and again in the AfterAttackHook and it doesnโ€™t update. Checking the log it seems the value is updated, the game just doesnโ€™t use the updated value. And I also tried adding the PlayMakerFSM.BroadcastEvent(โ€œUPDATE NAIL DAMAGEโ€) after every nail damage update and itโ€™s still not working. What am I doing wrong?

sage holly
#

still no one for a mosscharger upgraded boss?

leaden hedge
#

i love working for free on someone elses idea pogchamp

#

sign me up

ornate rivet
#

I mean, mebi is making the sprites so it's not like the usual "you do all the work" comments

#

nothing wrong with asking around to see if anyone else is interested in helping you katie

safe hamlet
#

yea but i only work for $69/hr

ornate rivet
#

make the mod for me and I promise โ„ข๏ธ to give you 69 an hour once you're done

safe hamlet
#

i think you missed the dollar sign GWmythiMonkaT

fair rampart
#

smart

safe hamlet
#

sure

#

that would be more profitable

#

a watermelon goes for like what $3-$5?

grizzled steppe
#

Depends on where you sell I guess

spare rover
#

31 to 38 cents per pound, then again it will depend on the time in the season.

spare rover
#

I thought it was related to an element named "_Camera Lock Zones" as I saw it in many scene with world edit, but even after I added it there were no changes

#

Ahhhh that would explain. I got the bad habit of going into negative when I work with unity scenes. Is there a maximum it will go?(more out of curiosity, I don't believe I'll ever do a scene huge enough)

#

yeah most probably

#

Oh for sure.

#

yeah the camera works no problem now, thanks.

ornate rivet
#

my dude use debug mod when testing

#

decreases pain by 5 folds

spare rover
#

I do use debug, I just disabled it in the video so removed the clutter

ornate rivet
#

ah ok

spare rover
#

I left the debug at the very beginning of the video just in case I was missing something that was obvious for other ^^'

ornate rivet
#

some people are blind

#

and I happen to be one of those people

spare rover
#

I know the feel. Its also sometimes you stare at something for so long you end up filtering out important stuff.

ornate rivet
#

is there a way to get the contact point from a collider2d?

safe hamlet
#

col.GetContacts()

ornate rivet
#

that needs an array of something though

safe hamlet
#

yes

#

for it to copy it

ornate rivet
#

oh

#

thanks sid

safe hamlet
#

make a new array of the type it requires using the length

#

and pass that

#

np

fair rampart
#

is there anywhere else I can get the texture for geo besides GeoControl and HealthManager?

#

when I use both of those, geo eventually becomes invisible for who knows what reason

rain cedar
#

The texture object is probably being deleted

#

Make a copy of it

#

Rando doesn't have that problem though actually

#

So you're probably messing up somewhere

vocal spire
fair rampart
#

bruh

restive ledge
#

Replacing boss sprites?!

fair rampart
#

it was more about the dark theme but yes, I'm doing that too

unborn badger
#

I think heโ€™s showing off the pro key he mooched off some guy in off topic ๐Ÿ˜ค

languid goblet
#

wait jngo102 what program is that? does it work with customknight (as in can you animate using onion skin and then export it into a sprite sheet)?

#

the biggest pain of editing the sprite sheet is that there's no onion skin

fair rampart
#

It's unity, which I'm using to setup sprites, not draw them

languid goblet
#

oh

#

darn

fair rampart
#

However, I am using krita to create some sprites, which does have onion skinning animation, and spritepacker to pack animation frames into sprite sheets

languid goblet
#

wait krita can do that?

#

how can you set it up to export the sprites to the correct locations?

vocal spire
#

I have added the feature of rapid fire with grimmchild in grimm coop

#

and it worked on my first attempt at making it work

fair rampart
#

wdym? I just replaced the sprites that were exported by GODump

languid goblet
#

wait oh nvm i misread that, i thought krita exported the image files straight into a sprite sheet

#

didn't see spritepacker

languid goblet
#

do you have the dumped sprites? i think GODump was made to only work on windows, since the readme talks about AppData

fair rampart
languid goblet
#

cool, thanks! i'm assuming i can't rename them or spritepacker won't work?

fair rampart
#

idk, probably not

languid goblet
#

hmm

#

doesn't seem to work either way

restive ledge
#

I have so many simple custom knight ideas that wonโ€™t take too much effort but will still be somewhat enjoyable for people yet I donโ€™t know how. Guess I gotta wait on benji for that sprite packer tutorial

languid goblet
#

i'm working on thunder knight which is mostly just a recolor but has lightning bolt shaped horns, and i'm very worried that the horns are going to end up in weird positions because there's no onion skin

#

i'm going to go insane if a bunch of the horns are in weird positions and i have no idea which sprites i need to fix

fair rampart
#

I've been using sprite packer and it's pretty intuitive, aside from having to search for and replace duplicate sprites

restive ledge
#

I wonder how benjiโ€™s tutorial is going so far

red swan
#

So... I have completed the game (almost) and i want to make my first mod. How can i do that and what i nead.

spare rover
#

The pin post is a good place to start

#

I also search specific term in past conversation to see if someone already asked the same question and got an answer, helped me a lot.

red swan
#

Ok, thanks

flat forum
#

any ideas on what you'd want the mod to be?

vocal spire
#

I tried to upload a mod I made, then my internet went out

#

yay the internet is back

#

I have finally updated Lifeblood master(my hive knight mod) they now start with all attacks except Bee vomit, there is a un killable minion at the end of the fight, and finally I have edited nearly every attack to be harder which is the reason for not adding the bee vomit because some attacks use the bees that come from the celling

lunar ginkgo
#

Imagine making a mod that makes Grimm wholesome

safe hamlet
#

what

lunar ginkgo
#

In hk

rain cedar
#

Oh ok I thought you meant in ori

lunar ginkgo
#

Ori and the blind forest/will of the wisps?

ornate rivet
#

oh god grimmpalm

lunar ginkgo
#

Sorry ;-;

ornate rivet
#

sean was being sarcastic

rain cedar
#

No I legitimately thought they meant ori 2

lunar ginkgo
#

sorry for being stupid ;-;

vocal spire
languid goblet
#

imagine being adept enough at code to write a mod

shy cloak
#

@solemn rivet I have a very minor edge case issue to report on the Mod Installer... It's more of a nitpick, really. I had previously disabled the mods months ago. I wanted to play with mods, so I opened the tool and installed some mods and then enabled them. Job done! However, when I launched the game the API was out of date according to a few mods. So I opened it again and it finally checked for updates!

The meat of the issue is that it doesn't check for updates upon re-enable. Like I said ultra mega nitpick, but you know... bug reports ftw i guess?

#

i don't even know if I'm pinging the right person..... Wait, it's a green name. Got it now!

vocal spire
vocal spire
#

Also does anyone know how to fix boss levers? I have been trying and when the room reloads when the alt statue is active, everything, including the boss completion, except for the name and description of the boss is changed back to the original stuff

#

also i made sure to follow what other mods' boss levers did

west ridge
#

how do you start modding?

floral furnace
#

like making mods?

west ridge
#

yes

#

i've seen radiant hosting

#

i've got a finite state veiwer and such

floral furnace
#

ahh so you already have the tools?

west ridge
#

yes

#

i think

floral furnace
#

ILSpy, FSMViewer, A C# IDE?

west ridge
#

i don't have ILspy is it better then DNspy?

floral furnace
#

DNspy also works

#

But peeps are saying ILSpy is better but otherwise for now theyll do the function youll need them for

west ridge
#

thank you

#

do i need a custion thing for
using modding; //and
using GlobalEnums; //?

floral furnace
#

Depends if you need them but Modding is pretty much a given and you should import it

#

tho it shouldnt hurt to importal GlobalEnums along tbh

west ridge
#

where do i get the modual(s)?

floral furnace
#

ahh its giving errors right?

west ridge
#

yes

floral furnace
#

press projects, and press "add reference"

west ridge
#

yeah

floral furnace
#

you already have the modding API right?

west ridge
#

the custom dll?

#

for installing mods

floral furnace
#

the file that you override AssemblyCSharp with

#

yeah

west ridge
#

ye

#

add referance to that?

floral furnace
#

aight, add that as a reference

west ridge
#

thank you

floral furnace
#

yup, and ModCommon along as well

safe hamlet
#

np

floral furnace
#

thanks sid

#

wait shouldnt you be fucking sleeping right now

safe hamlet
#

shit

west ridge
#

what's mod common?

floral furnace
#

did you install the api via the Mod Installer?

ornate rivet
#

why would you be sleeping at 5 ๐Ÿ˜”

floral furnace
#

thank god saleh's here

#

quick saleh your turn

ornate rivet
#

the modcommon.dll file should be in your mods folder

#

if you have run the modinstaller already

west ridge
#

ok

floral furnace
#

thats about it i think

#

youre gonna need to import the other unity files if they have a class you need but thats for more advance stuff, for now you SHOULD be good to go

west ridge
#

i think i'll need to as the knight self destructs when there is two of himself

#

or perhaps I could use nosk's knight form

floral furnace
#

start slow and small for now imo

west ridge
#

is there a wiki for hook referances/a way to see what can be referanced via the dlls?

#

as there are stuff like
ModHooks.Instance.AttackHook that you wouldn't know of the top of your head

floral furnace
west ridge
#

thank you

#

woa huge update from when i last visited it

ornate rivet
#

when was that? this doc has been the same for more than a year

west ridge
#

i went on it about march last year

west ridge
#

just want to make sure

floral furnace
#

yeah

west ridge
#

thank you

#

i remember last time i click on the lab c# thing and was really confused for a few hours

nimble lake
floral furnace
#

if theres something new in the API then maybe

nimble lake
#

i mean, there are some TODO pages

west ridge
#

it doesn't explain anything past dnspy even then it only mentions how to show the game code

#

useful though

floral furnace
#

ahh you mean the other sections

west ridge
#

how do i add references visual studio 2017 doesn't have a add referances button under project

floral furnace
#

didnt you just add a reference awhile ago

west ridge
#

no

nimble lake
west ridge
#

thank you

floral furnace
west ridge
#

not there for some reason

floral furnace
#

oh fuck i misread, you might need Class Library .Net Framework

#

let me verify my bad

west ridge
#

it's ok ๐Ÿ™‚

#

this one?

#

*is it

floral furnace
#

.Net Framework

#

and set the target to 3.5

west ridge
#

found it i think

floral furnace
#

yeah that should be it

#

sorry again

#

its been a while since i made a new project

west ridge
#

no problem honestly i'm glad i'm getting help at all ๐Ÿ™‚

flat forum
#

oh, hey!

#

setting stuff up for modding?

west ridge
#

i selected 3.5 but

#

trying to

#

i'm close ๐Ÿ™‚

flat forum
#

yeah from personal experience

#

the process was a lot longer and more annoying than it should've been

floral furnace
#

thats odd

flat forum
#

^

west ridge
#

odd an annoying

#

*and XD

#

i fixed it by closing down unity then trying again might be a memory thing my laptop isn't too strong

floral furnace
#

does it work now?

west ridge
#

yes

#

thank you