#archived-modding-development

1 messages · Page 500 of 1

ornate rivet
#

56 add a search function to modinstaller 2

copper nacelle
#

consider the following:

#

like 4 people use it

ornate rivet
#

remove the old modinstaller -> more people will use it

copper nacelle
#

that's true

vocal spire
#

If you remove the old mod installer

#

Scary

ornate rivet
#

why? the link would just change to the new modinstaller

lofty zenith
#

How do I do that?

copper nacelle
#

I mean there's multiple ways

#

The way I'd go about is you can load in audio clips and then replace them on audio players in code but that's more effort

#

Using uabe is easier but also terrible

vocal spire
ornate rivet
#

nah

#

your console doesnt allow methods 56?

jolly jungle
#

Too bad Pale Court will never release beesive

#

Also, nice background

#

Who made it?

copper nacelle
#

does it not

jolly oriole
#

Does modinstaller 2 support looking at readmes?

ornate rivet
#

I think so, if you click on the drop down it shows a description which I assume is from the readme

jolly oriole
#

U sure it isnt the description string from modlinks? I havent checked

ornate rivet
#

pretty sure it isn't because pale champion is using the text I have in the readme

copper nacelle
#

it really is not the readme

#

The readme system that is currently in place is shit

#

downloading something to read the readme x5fiftPrime

ornate rivet
#

then what does it use

copper nacelle
#

the desc tag

ornate rivet
#

but

#

I dont remember giving pale champ a description tag

copper nacelle
#

yeah because I gave them all one by hand

#

Extraordinarily painful task

ornate rivet
#

wow

#

love you

#

what am I doing wrong

jolly oriole
#

Hot take, definetly not too much: change the modinstaller list from the modlinks to a repository system (lets say a github for hk mods) where the readme of the modrepo is the description

copper nacelle
#

you could assign to a delegate

#

Action wow = () => ...;

ornate rivet
#

ok, thanks

#
private void SceneManagerOnStart(On.SceneManager.orig_Start orig, SceneManager self)
{
    Log("Changing SceneManager settings");
    if (currScene == "White_Palace_09")
    {
        Log("Changed SceneManager settings for WP_09");
        self.noLantern = true;
        self.darknessLevel = 0;
    }
    orig(self);
}

So I'm hooking this and the first time it runs, the darkness level is actually reduced but when I leave to a different scene and come back, the darkness level doesnt get reduced anymore even though the code in the if statement does run

#

any theories as to why this happens?

unborn flicker
#

It would probably be more reliable to have the hook at the fsm level

jolly oriole
#

uh, darknesslevel 0 is "Normal", -1 is "Dark -1", while 1 and 2 are "Dark 1" and "Dark 2" respectevly

copper nacelle
#

Yeah you want to use the vignette fsm

unborn flicker
#

Ah, thanks, I couldn't remember the name

#

It's "Vignette-Darkness Control" in global fsms

ornate rivet
#

hmm that's weird, then I wonder why the darkness gets reduced the very first time

copper nacelle
#

hc.vignetteFSM imo

jolly oriole
#

@ornate rivet i don't know why you would want to change the darknesslevel value of wp09's scenemanager to 0, as it already is 0

#

do you happen to spawn right into a darkness region?

ornate rivet
#

honestly I was just setting all the options that could reduce the darkness without checking because that would be effort

jolly oriole
ornate rivet
#

I delete those

jolly oriole
#

oh

vocal spire
#

Yield return null bad again?

ornate rivet
#

na

prime urchin
#

Yow, thanks for linking this; the older Unity Inspector is good but this looks to be on a whole 'nother level.

deep wave
#

is there a single repo/list of all mods for older patches? aiming to support as many patches as possible fully for speedrun/downpatching purposes, though i realise there are probably like 3 mods that people use on older patches

#

(though i suppose i should only support the patches people care about, rather than providing 3 different 1.2 APIs when only 1221 will be used)

copper nacelle
#

the drive

#

?mods

deep wave
#

ok cool, im guessing the only thing missing is minidebug?

copper nacelle
#

yeah

untold moth
#

high five for whoever wrote the Resources folder of randomizer 3

#

probably the best source of info about vanilla HK out there

#

i dont need any help just wanted to express appreciation

deep wave
#

dearest homothety feelspkman

brave hill
#

5

copper nacelle
#

what

tawny onyx
sinful elm
#

how do I reskin bosses?

royal tiger
#

?saves

finite forumBOT
#

Saves


Windows File Paths: (Assumes Default Steam Install Path, Adjust accordingly for DRM Free or Non-Standard Steam Path)

Game Files: C:\Program Files (x86)\Steam\steamapps\common\Hollow Knight\```
** **
Mac File Paths:
```Save Files: ~/Library/Application Support/unity.Team Cherry.Hollow Knight/
Game Files: ~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/```
** **
Linux File Paths:
```Save Files: ~/.config/unity3d/Team Cherry/Hollow Knight/
Game Files: ~/.local/share/Steam/steamapps/common/Hollow Knight/```
proven cipher
sinful elm
#

damn

jolly oriole
#

or (though i would recommend against it) you could change assets that the boss uses using a tool like UABE

proven cipher
#

That's a cool idea

#

I would like to look into that, actually

potent dirge
#

You could probably use the custom knight mod for reference, then edit it for other bosses/enemies/entities

#

Honestly that would be really cool to have, an agnostic custom skin mod for everything just to quickly test skins like that for everything as long as you have a name for it

jolly oriole
#

i'd need to check, but at work rn, but it could be possible to have a different way of replacing textures, which could eliminate all preloads customknight currently has

jolly jungle
#

Yeah, having something work like customknight for all textures would take a long loading time at the start

leaden hedge
#

why

#

doesn't it just detour some texture loading function

jolly jungle
#

Why does it take any extra time at the start?

#

The current customknight

leaden hedge
#

do a fast hash on what its attempting to load, and load the texture of that hash

#

yeah why is it preloading

#

it doesn't need to replace anything if it doesn't exist yet Thonking

jolly jungle
#

So if you use the same way to replace all textures you want in a kind of Customall, it'll take super long

#

no?

#

You'd rather just do it other ways

leaden hedge
#

i mean why is customknight coded like shit

jolly jungle
#

¯_(ツ)_/¯

#

Hopefully customknight+ is better

#

Whenever red finishes that

jolly oriole
#

ask jngo why it's coded like shit

#

wait, there's a problem with that

#

but should be simple enough (for the animated stuff at least, so most of the game) to on hook a start method from some tk2d script

leaden hedge
#

theres tk2dRuntime.SpriteCollectionGenerate. stuff

#

and tk2dBaseSprite.Awake()

#

although not 100% sure if Awake runs when scene starts

#

or only when it activates from deactivation

jolly oriole
#

it would run after a script is loaded (like a thing to initialize stuff, if you don't want to use the constructor), though idk if it runs once for every script

leaden hedge
#

also tk2dSpriteCollection / Data have init functions and create functions

#

oh and if you're on a tk2d thing, you don't even need to figure out what texture you're replacing

jolly oriole
#

yea, but those could be different from the used texture afaik

copper nacelle
#

custom knight has fucking preloads?

#

the earlier versions definitely didn't

#

ah it's a setting for the cutscene shit

deep wave
#

does anyone know of a way of acquiring HK voidheart edition (1433) that isn't pirating? wondering if that could be used as a piracy check

copper nacelle
#

1433?

deep wave
#

it's 1432 but with a different title screen

#

afaik some torrents have that instead of 1432

#

(though i might need to double check that)

jolly oriole
#

do you have a screenshot of said title screen?

vocal spire
#

That exists?

#

Why would it exist

jolly jungle
#

1433?

#

Huh

#

Never heard of it

jolly oriole
#

probably to let pirates out themselves not knowing?

vocal spire
#

Ooooo

jolly jungle
#

Found it now

vocal spire
#

Hk on ps4 is 1433?

jolly jungle
#

idk

#

this is what this says

vocal spire
#

Huh

#

So it’s real

jolly jungle
#

Maybe?

#

I'm not sure

#

is there any way to pirate other than for pc?

vocal spire
#

Guess someone could go buy the windows store ver since that’s voidheart tmk

jolly jungle
#

Hm

#

Anyways Jamie what do you need it for?

#

I'm curious

vocal spire
#

Anti piracy appearantly

jolly jungle
#

Oh wait I see now

vocal spire
#

But if it’s legit, then might not be the best idea

jolly jungle
#

If there wasn't, then 1433 is pirated

#

But it does exist, apparently, so we can't be sure

#

Yeah

vocal spire
#

So it could just be a windows store pirated ver

jolly jungle
#

Hm

#

Damnit

#

I wish I could check it rn

jolly oriole
#

is there a screenshot that shows it? unless there is, it doesn't exist

jolly jungle
#

Haven't seen one myself, no

vocal spire
vocal spire
jolly jungle
#

Basically, if the answer to Jamie's question was "no", that would mean that any time you see version 1433 you can recognize it as pirated

vocal spire
#

But what if someone actually bought it from the Microsoft store

jolly oriole
#

pc microsoft store versions are 1.4.3.2 though

jolly jungle
#

Hm

#

Wait so what ways are there to get 1.4.3.3?

#

ps4 and pirating?
or only pirating?

deep wave
#

and the anti-piracy check is literally
store SHA1 of assembly-csharp of 1433
compare against SHA1 of assembly-csharp of installation
if match, call it pirated

languid goblet
#

how does the anti piracy check work anyways
does it just check if you're not on 1432

deep wave
#

what slightly concerns me about this is that it doesn't seem to actually stop modinstaller from running? it just opens a messagebox, opens a browser then proceeds

#

anyway i guess i now have to search for hk torrents to check their assembly hashes having fun on the internet trans2uHappy3

languid goblet
#

i used piracy to destroy the piracy

deep wave
#

the ultimate story

jolly oriole
#

i mean, the thing what katie suggested with the required steam/gog login (to check if the game has been purchased) would also eliminate piracy

languid goblet
#

the issue with that is that people might not feel comfortable sharing their account info

#

including me

jolly oriole
#

hm yea, but (idk if it currently is lmao) then there's the point that it's open source

languid goblet
#

true

#

i do use a minecraft mod manager that requires a login
it's open source and has a good reputation

stone elm
#

Maybe stupid question: why would it be the job of a mod manager/installer to ever do piracy checks?

young walrus
#

Because pirates are bad and we don't like them

jolly oriole
#

because this partnered discord of a game with its developers on it doesn't condone piracy of the game

stone elm
#

I don't disagree. I'm just saying it's not your problem. A modinstaller refusing to work isn't DRM

deep wave
#

because we don't want to answer questions about issues that could pertain only to their cracked versions, however unlikely that might be tamershrug

#

i am, however, also apprehensive about the OAuth checker, even if you're not technically sharing your account login, you're giving a mod manager that says "this application might not be safe" when people run it your account details

#

(note to self - also adding an "open saves location" button...)

jolly oriole
#

that says "this application might not be safe" when people run it
though the hk modinstaller is the only program that ever said that to me

young walrus
#

I'd say as the makers of the mods that the pirates want to play, it IS our problem when we don't want them playing them without legitimate game versions

potent dirge
#

As long as it doesn't overkill and harm legit owners, then yes

#

On one hand I find it semi strange to focus this much on designing drm, otoh I literally run through the same room for hours on end to see if I can find 0.1s optimisations, and designing and telling pirates "screw off" is way more productive and less 🥴 than what I spend time on, that's for sure

deep wave
#

0.1s optimisations are the best though shroompog

jolly oriole
#

1 frame optimisations is where it's at

stone elm
#

Okay, I figured I'd ask since I wasn't sure about the attitude. I'm not at all being critical, or at least I hope not to appear as such. If you want to say "no pirates can play our mods" then that's cool. At first look, without too much context, it just looked like the purpose was mostly to aid Team Cherry. I don't disagree with that, just seemed out of place.

deep wave
#

no dw, im a speedrunner i still don't like tc its just i still wanna support them feelspkman

jolly jungle
#

im a speedrunner i still don't like tc

#

I love this

deep wave
#

maybe if they gave me some inputs and some better sanctum rng i would be nicer

merry lotus
#

If this isn't the appropriate channel for this, I can post elsewhere, but I wasn't sure if this had been brought up yet about the newer versions of Rando:

Now that LifeBlood Cocoons are shuffled in, this check becomes available without Claw only because of the "extra platforms".

deep wave
#

yes this is known, i believe room rando logic makes it specifically so that you require claw and (cdash or wings)

#

also the correct channel is #randomizer, which you can gain access to by using ?rank randomizer racer or ?rank speedrun racer (first one gets pinged often for rando races)

finite forumBOT
#

@merry lotus, you joined Randomizer Racer.

steady comet
vague venture
#

does anyone have any advice if I were thinking about commissioning someone to re-make (or drastically improve) the online mod?

#

I get that it's always going to be a bit laggy, but other than the lag, there's a major problem where the mod randomly stops communicating player movement until you restart the game completely

potent dirge
#

@ fireb0rn I remember seeing Katie mention wanting to look into that because she didnt like how it handled stuff currently, but unsure if that was memeing, just a general item nr 300 on the todo list, or anything else

vague venture
#

oh awesome, thanks cerpin

merry lotus
steel badger
leaden hedge
#

the dev doesn't work on it

#

so probably not

steady comet
#

It’s a little unfortunate that you can get the lifeblood check with wings and cdash when you wouldn’t be able to, but there’s no easy way around the issue while still having the helper platforms

merry lotus
#

Yeah, that last bit was my original point. It's the first thing (to my knowledge) that is directly affected by having the "helper platforms"

#

Like, it's a check that you wouldn't be able to get (like that) unless you had them on, which seems.. wrong.

steady comet
#

Yeah, you are right

merry lotus
#

I was unsure if it was somewhere where maybe the platforms would be moved slightly, which would allow one to jump up, but not be able to get that check in that way.
(Which, I think if the upper platform was lowered, and then an additional platform was added, then it might be fixable.. I could probably test this in Decoration mod though)

steady comet
#

It’s plausible

steady comet
#

Yeah it's definitely possible I made a video but discord is a bully

atomic egret
#

Why i cant type on hk memes

jolly oriole
#

wrong chat

deep wave
#

proposed changes to modlinks, should be pretty much backwards-compatible w/ modinstaller 1/2. features:

  • Vanilla SHA-1 hashes for automatic patch detection
  • Support for more extensive descriptions on a mod download page (see FullDescription)
  • Support for multiple branches of the same mod to be treated independently, and still receive updates (NOTE: MODINSTALLER WILL NOT BE ABLE TO DIFFERENTIATE THESE. update probably required to add BranchName to the mod name in modinstaller?)
  • Distinction between Assembly-Csharp mods and modloader mods w/ APIList - note that the Modding API modlink is left as legacy
  • Differentiates mods by patch supported, allowing previous iterations of mods to be added (NOTE: also not supported by ModInstaller, will need to check the patch no. of mods before adding them)
astral oxide
deep wave
#

if you don't have hollow knight installed at the default steam path you will have to rereference everything dont mind me im stupid

jolly oriole
#

the readme details how the api is built, for example you need to put hollow knight's vanilla DLLs into the "vanilla" subfolder of the project

astral oxide
#

so do i just copy all the files and stuff into the Vanilla folder?

jolly oriole
#

yes

astral oxide
#

that didn't seem to do anything

#

are you referring to everything in hollow_knight_Data or just the DLLs

jolly oriole
#

just the dlls in managed

astral oxide
#

so not the XMLs

jolly oriole
#

i think those make no difference

astral oxide
jolly oriole
#

try force rebuilding of the whole solution

astral oxide
#

what's the difference between regular and force rebuilding

#

also when i try building it again it gives me the 419 error situation again

jolly oriole
#

hm

astral oxide
#

you know, i did change the default steam installation path after i installed hollow knight so that may be part of the problem

#

it's also given me errors with the modinstaller

#

so maybe i should move the folder?

deep wave
astral oxide
#

more accurately, when i try to use the "switch to vanilla" button it doesn't like me so i have to manually do everything

astral oxide
#

well i uninstalled and reinstalled visual studio and it still isn't working so idk

vocal spire
#

What exactly isn’t working

astral oxide
#

it just says it failed and that a lot of things were not found

deep wave
#

check your references, you may wish to manually re-add them all (which is pretty 🥴 and shouldn't be necessary but idk tamershrug )

astral oxide
#

what do you mean by references

#

the DLLs or something else?

deep wave
astral oxide
#

i see none of those in solution explorer

#

do i need to move some files

vocal spire
#

reference adding time!

deep wave
#

(not the same, my references are for a different project)

vocal spire
#

Ah

#

Can you screenshot your references @astral oxide

astral oxide
#

I did find some things that look familiar in Dependecies/Assemblies

#

and some of them are errored

#

or warned

#

i don't see anything called References though

vocal spire
#

Can you screenshot the solution explorer then

deep wave
#

this is what it would look like if you don't have the references you need

astral oxide
#

i don't even have anything called References

#

do i need to press a button or something

vocal spire
#

Click dependencies

worn eagle
#

Expand Dependencies

leaden hedge
#

it'd be cool if vs added like

astral oxide
leaden hedge
#

a yellow warning triangle

#

to say where to look for errors

deep wave
#

its alright katie, it'll come in vs 2016 when you update

vocal spire
#

So just redo the references to all the yellow stuff in there I think

leaden hedge
#

my man ballmer wouldn't let me down

deep wave
#

(iirc that is what i had to do, it just couldn't detect the assemblies no matter what so just readded all of them manually)

astral oxide
#

what do you mean by redo the references

deep wave
#

right click assemblies

#

add reference

#

browse

potent dirge
#

Did you read the readme on where to copy paste the files from the hollowknight / managed folder, sploopo?

deep wave
#

get the files

vocal spire
#

Also remove the original references if they are still there after adding the new ones

astral oxide
#

i did indeed read the readme, it's in the vanilla folder

potent dirge
#

Also to be completely sure, you're trying to use 1432/current patch, right?

astral oxide
#

well i got it straight from github

#

so i'd assume so

vocal spire
#

You got it from 56’s fork right? That ones more updated

potent dirge
#

I mean, are you trying to use it for the current patch?

astral oxide
#

i think so?

deep wave
potent dirge
#

Oki, that's probably a yes if you don't actively do it differently

astral oxide
#

oh, i'm not using a fork

#

that might be the issue

potent dirge
#

Okay, screen shot your vanilla folder to show what you have in there

vocal spire
#

That fork is more updated

#

Should still work on the original

astral oxide
#

alright, should i use that then

vocal spire
#

After this, probably

potent dirge
#

Fork shouldnt be an issue, it won't fix lacking the game files it depends on

vocal spire
#

Yeah

#

So just add the references again

potent dirge
#

No, leave that as it is, and add them to wherever the readme said (I can't remember off the top of my head)

#

(also nw about this being frustrating, sploopo, building this for the first time is horrible)

vocal spire
#

I thought they already did that

potent dirge
#

If they did it would work

#

At least I'm 90% sure, because that's how I solved my week long issues with building

vocal spire
#

I’m pretty sure I still had to add the references

astral oxide
#

alright readded the references, do i just delete the old ones

vocal spire
#

Yes

astral oxide
vocal spire
#

What are the errors

astral oxide
#

oh i think it's because things are duplicated

vocal spire
#

sudden pfp change

astral oxide
#

i decided to stop playing terraria and play a good game

vocal spire
#

Terraria is good

#

🤔

astral oxide
#

i've been in the terraria community for a year now

#

more accurately the modding community

vocal spire
#

Cool

astral oxide
#

ask any modder and they will tell you how frustrating the source code is zote

vocal spire
#

I tried modding it a while back

#

All the YouTube tutorials I could find were outdated. Didn’t know about discord at the time

jolly oriole
#

what's discord?

vocal spire
#

Same

#

It’s definition still eludes me

astral oxide
vocal spire
#

You have 2 assembly c sharps referenced or something

astral oxide
#

tried destroying all the references and putting them back, but this happened

vocal spire
#

Try removing the assembly C sharp reference actually

#

See if that fixes

astral oxide
#

that just gave me more errors

#

so uh

vocal spire
#

Did you try building

#

Since it’s patching assembly C sharp it might work then?

astral oxide
#

i've been building

vocal spire
#

Oh wait

#

It’s a modded assembly C sharp

#

lol

#

I’m dumb

jolly oriole
#

what i did to do modding api building:

  • download the git repo
  • copy vanilla DLLs into vanilla subfolder
  • open solution in vs
  • rebuild entire solution
vocal spire
#

Ima go now

astral oxide
#

i've only got vanilla DLLs i think

vocal spire
#

Nah

#

90% sure you have a modded assembly C sharp

astral oxide
#

huh

#

how do i de-modify it

deep wave
#

grab it from a vanilla install of hk

astral oxide
#

so do i just uninstall and reinstall hk

jolly oriole
#

verify game files with steam

copper nacelle
astral oxide
copper nacelle
#

need a nuget restore

astral oxide
#

so how do i do a nuget restore

astral oxide
midnight narwhal
#

oh hey sploopo

empty ridge
#

noob here, how hard would it be to develop a mod that replaces all the sounds in the base game (music, sfx, etc.)?

jolly oriole
#

music: not that difficult with how the game is structured
sfx: more difficult, as you'd have to iterate over all audiosources and replace the sounds on them

empty ridge
#

ok, thanks for the info. i'm thinking of doing a custom level with 100% new sounds. didnt know whether that was feasible

jolly oriole
empty ridge
#

alright, i'll do some research to refine my idea a bit lol

keen rivet
#

how do i get rid of all my mods

proven cipher
#

Click revert to unmodded on your mod installer then verify integrity of game files

keen rivet
#

i got rid of them all but my soul meter is wrong

proven cipher
keen rivet
#

its always grey until it is full

keen rivet
proven cipher
#

You need to chill

#

People help in their free time if they are able.

#

At the end of the day you are the only one who actually knows what you did, so providing the correct information will help.

Posting on other channels will definitely not.

keen rivet
#

sorry

#

im just sad

astral oxide
#

anyways still haven't managed to figure out building the api

copper nacelle
#

because that's in the repo

#

and should just be there

astral oxide
#

so do i just remove the JsonNet folder

deep wave
#

you should not remove the reference to json.net

astral oxide
leaden hedge
#

no

#

remove

#

the

#

reference

astral oxide
#

which reference zote

leaden hedge
#

the one

astral oxide
#

i don't even have a reference to json.net

#

or at least i can't find it

copper nacelle
#

no

#

that's the problem

#

you should have one

astral oxide
#

hmm

#

alright will fix that

#

where would the json.net reference be located or is it not a file

worn eagle
#

It's Newtonsoft.Json.dll

astral oxide
#

?????

leaden hedge
#

do you see where it says JsonNet

#

in the path

astral oxide
#

yes

leaden hedge
#

are those dlls referenced in your csproject

astral oxide
#

oh

#

no

#

i'll reference them now

deep wave
#

let some cracks download overnight, turns out only one of them is current patch 🥴

astral oxide
copper nacelle
#

what

#

Why tf is it in your managed folder

leaden hedge
#

where do you put your code smartypants

worn eagle
#

C:

leaden hedge
#

C:/Windows/System32 ?

worn eagle
#

ye, that way it's in PATH

astral oxide
vocal spire
# astral oxide

It says copy the contents to the vanilla folder, not put the code in there zote

astral oxide
#

oh

#

i can't read

#

ok i did it itssoulgood

#

so now how do i actually make a mod

copper nacelle
#

please tell me you did not build the api so you could make a mod

astral oxide
#

i'm kinda stupid so i unfortunately cannot tell you that zote

#

oh well i at least have it for the future

copper nacelle
#

this is so sad

astral oxide
#

if necessary

copper nacelle
#

you just install it from like the installer and ref it

astral oxide
#

so uh

#

where's the installer

#

is it the ILRepack thing

vocal spire
#

It’s the app you downloaded

#

That’s it

astral oxide
#

which app

#

(I am dumb)

vocal spire
#

.....

astral oxide
#

(as shown)

vocal spire
#

Mod installer.exe

copper nacelle
#

pinned in modding-help

astral oxide
#

that's it

vocal spire
#

Yeah

astral oxide
#

huh

ornate rivet
#

dont listen to them, they want to hack you

vocal spire
#

Yeah

deep wave
#

56 stole my copy of fallout: new vegas PepeHands

vocal spire
#

It’s all just a scam

astral oxide
jolly oriole
ornate rivet
#

shhhh

jolly oriole
#

ok

#

why did it put the @ back when i edited the message

vocal spire
#

¯_(ツ)_/¯

#

Discord weird

vocal spire
deep wave
#

additional files found in the only current patch crack i could find, and SHA1 hash. apart from these and folder name there appear to be no differences between this crack and my steam install

unins000.dat ||| 77610786BB6CB92AC6E7BC495536E4A62D699E55```
#

(the crack also comes with the entire HK OST but afaik that's also available elsewhere)

leaden hedge
#

did you hash every file

deep wave
#

no only the ones that were different

leaden hedge
#

how did you determine different

deep wave
#

using windiff

leaden hedge
#

did you install it

deep wave
#

on a vm, yes

leaden hedge
#

under hk/data/plugins

#

but if its a gog pirated copy

#

it'll be drm free anyway

deep wave
#

this appears to be a steam copy

leaden hedge
#

is your current patch a steam copy

deep wave
#

yeah

leaden hedge
#

im not 100% sure how well windiff works on binary files

deep wave
#

neither am i, which is why im loading dnspy feelspkman

#

they appear to be the same size

vocal spire
#

lol

leaden hedge
#

just use hxd

#

or something

#

hxd has ctrl+k to compare two files

#

and you can do next difference

#

the files you should compare are the exes, and the plugin folder ones

deep wave
#

same for exes

leaden hedge
#

does the crack work

deep wave
#

yes

jolly oriole
#

Steam api can be replaced, sometimes its just a so called steam emulator in front of the steam api dll

leaden hedge
#

are there any other processes running

#

theres probably an emulator running

#

it used to be creamapi but thats outdated

jolly oriole
#

Steamemu is also just a dll afaik

astral oxide
#

so uh

#

what files do i have to reference in order to create a mod

deep wave
astral oxide
#

huh, i've got everything referenced but it's still giving me those errors

deep wave
#

did you reference assembly-csharp from a modded install?

astral oxide
#

i'm just trying to look at the examplemods

#

so i don't think so

deep wave
#

ok do you have moddingapi installed on your default install of hollow knight

#

because by default the examplemod will reference Assembly-CSharp.dll from the install at the default steam path, even if that dll is not modded

astral oxide
#

eventually got it working, i think it was just a wacky visual studio problem

#

anyways

copper nacelle
#

🥴

astral oxide
#

you may be 🥴 now but soon you'll be 💀

#

after, of course, i get through the remaining 6 minutes and 18 seconds of your tutorial

copper nacelle
#

lmao

vocal spire
#

🤔

nocturne meteor
#

Yeah, the tutorial is good for getting started. I had a lot of questions but it was really good to look at another project and "copy what it does" and then modify. :'']

fluid steppe
#

Can we get the multiplayer mode but you keep the hit boxes on the players but you don’t actually hurteach other

vocal spire
fluid steppe
#

We want to pogo on each other and it wont work with pvp off

vocal spire
#

Attack at the exact same time

fluid steppe
#

Interesting, will try. But would still like to without that

#

We are trying to do multiworld rando with multiplayer on so its a coop version.

So if one of us dont have claw yet we can pogo each other

vocal spire
#

You are doing multiworld or the multiplayer mod?

merry lotus
vocal spire
#

That’s not good...

merry lotus
#

Yeah, I can't imagine that that's not going to result in some weird bugs. Although I think they do use different ports for their servers, so... Maybe it'd work by sheer coincidence/luck?

astral oxide
#

uh, anyone here know what GameObject I need to use in the player TakeDamage method in order to make the player take damage

fluid steppe
vocal spire
#

They are both separate things

fluid steppe
#

Yea

vocal spire
#

Why are you using both

fluid steppe
#

Like I said we are doing a co op where we pogo off each other if we cant reach something

#

But we kept hurting each other but it still worked

vocal spire
#

So you installed a whole different multiplayer mod, with completely different connections just for that?

vocal spire
fluid steppe
#

Yea we connected to the multiworld IP and we used hamachi for the multiplayer

young walrus
#

Lol. Interesting way to cheat the rando logic I guess

vocal spire
#

Well you do you

astral oxide
#

i've been looking in dnspy but i can't find it zote

fluid steppe
#

Yea it was fun and challenging just a new method

vocal spire
#

You just go to HeroController

#

Ctrl + f to find the method

astral oxide
#

i've been looking in herocontroller but idk what gameobject i need to use

vocal spire
#

Look at what it does with the object smh

fluid steppe
vocal spire
#

It is a cheat

patent zealot
#

Nono

#

Think of it as a shade skip

#

Not a cheat

vocal spire
fluid steppe
vocal spire
#

But it’s not a shade skip

fluid steppe
#

Its just a different way of playing it. Still fun and challenging and more social

vocal spire
#

Also anyone else making code in notepad on their school pc zote

merry lotus
#

Is there any reason not to at least use Notepad++ on a USB?

jolly oriole
#

i may have a fix for the map marker issue with the modding api

copper nacelle
#

the who

jolly oriole
#

map markers not showing up

#

or somewhere at 0,0,0

vocal spire
#

Yeah

#

That’s a weird bug

#

Was making a fix mod but I got onto different mods

jolly oriole
#

it's better to make that change directly in the modding api

vocal spire
#

Yeah

#

Why does it happen though?

astral oxide
#

my first mod is a success, i have created hollow knight pacifist edition

jolly oriole
copper nacelle
#

do you mean like

#

new markers

#

or are normal markers actually bugged

jolly oriole
#

both

copper nacelle
#

pepega

vocal spire
jolly oriole
#

the position of every already placed marker is somehow 0,0,0

jolly oriole
jolly oriole
#

oh no

#

json.net can't read unity's json version of the vector3's

visual coral
#

🤔 if you wanna create a custom sprite sheet for custom knight. it's just as simple to drop it in the modfolder of custom knight once you have made the sheet? thinking of making one but am too stupid to code pepogrub

leaden hedge
#

no code required to replace the spritesheet

visual coral
#

grublove cool ty

jolly oriole
#

small changes are being made and pins will work

copper nacelle
#

my eyes

jolly oriole
#

do you have a better solution tho?

jolly oriole
#

tiniest problems, just shadeMapPos and dreamgateMapPos don't want to load correctly, even though they should

nocturne meteor
#

What does the [] part do above the var definition? I don't think I've seen that before.

stone elm
#

It's a C# Attribute. Almost like Java decorators, it denotes metadata on a definition

#

In this case it's denoting which type to use as the json converter for these fields

nocturne meteor
#

Ahh, okay, I get'cha. Thank you, I'm a Python person and --- you know, it's all loosey-goosey over there.

jolly oriole
#

comparable with @ in python

stone elm
#

Not at all like decorators in Python, which work through a very different mechanic (functions as first class citizens being passed around and modified)

#

Attributes in C# are purely metadata, they do not alter functionality unless other code reads the attribute through reflection and does something about it

nocturne meteor
#

Ah, okay, yeah, I'm familiar with Python decs, but after reading a bit, these work fairly differently. They make sense tho now, thanks all.

astral oxide
#

how would I change the AI of an enemy?

vocal spire
#

Change it’s fsm

#

Or completely just throw away the fsm and make a monobehavior for the enemy’s ai

astral oxide
#

ok

#

where could i find the original enemy FSMs

prime urchin
#

Seem to remember seeing something like that on the JsonSerializerSettings object, anyway.

jolly oriole
#

if the newtonsoft website would load, i could look at docs

#

yeah, but only those 6 fields need it (where it sadly only works for 4 of those 6)

vocal spire
restive galleon
#

Guys is there any mod that does something like a ng+?
Or not like ng+, just makes the game a bit different

gilded lotus
nocturne temple
#

how do i change the effects of the easy mode mod

deep wave
#

thoughts on more brief tab names to ensure that you never need to scroll through them? note that "Levels", "Trials" and "Skins" should only be visible if those respective mods are enabled

#

also noting: ProfileBox is very large for the expected usage by most people, could be worth shrinking and using space for something else (eg. discord invite link, though that may remain in settings)

jolly oriole
#

only thing: you don't need unmodded and modded buttons, 2 profiles by default should be enough for people to use

deep wave
#

that's probably a better dichotomy actually, rather than having the idea of "you picked this install, now you choose whether to launch it in vanilla or with all this stuff on the right hand side"

deep wave
jolly oriole
#

twitch prime

deep wave
#

sorry, Prime Gaming**

copper nacelle
#

that's true

deep wave
safe hamlet
#

this is shit

#

you are missing an over-sized donate button

languid goblet
#

where's the button that buys GME

knotty monolith
#

I like launch game being big, for clarity

languid goblet
#

i still think it's a good idea to have two buttons for vanilla/modded though
is there another area where that would go?

deep wave
#

so SF's idea was to separate them by separate profiles

#

currently a profile is distinguished as a combination of install & modded assembly

languid goblet
#

i thought one profile = one install
so most people would only have one profile

deep wave
#

most people would still have one profile w/ this system, it would just be ModdingAPI

#

however, SF's idea is to have a "Vanilla" profile and a "Modded" profile

languid goblet
#

oh
i just feel like that's unnecessary if you can have the installer launch either a modded/vanilla
since all you have to do is swap out assembly-csharp.dll

knotty monolith
#

I assume the utility would be for downpatching

#

Maybe using one of those weird white palace skin mods that involve replacing a bunch of asset files???????

ornate rivet
#

Is there a way to fix tk2d gameobjects that I got from Utiny Ripper without using preloading the gameobject myself?

#

eg godseeker in the boss arenas

#

maybe I should do the thing sfg does where I copy from the original scene while the transition to my custom scene happens

#

that sounds slow though

jolly oriole
#

it's definetly slower than preloaded ofc and in your case preloading is also the better option as you only want godseeker
but the thing with fixing tk2d stuff from utiny ripper i have no clue about, actually never made scenes with stuff from utiny ripper

vocal spire
#

Maybe make some script for fixing it?

ornate rivet
#

was your suggestion really to fix it by programming zote

ornate rivet
leaden hedge
#

thats how i fix all my problems in life

#

if code cant fix it, nothing can

jolly oriole
#

or if you preload from an unkown amount of scenes

ornate rivet
#

alright

vocal spire
north forge
#

It's not much, but I made a PSD file for a simple cloak color changer

#

Instructions:
Needed- custom knight mod, any drawing application that can export into PNG transparent

1)Lock the transparency of the layer titled "cloak"

2)choose your color of cloak you would like to have

3)broadly fill in the light blue in the "cloak" layer

4)export as transparent PNG

5)put the PNG in a folder within the custom knight mod folder

It's not much but I thought I'd share this fun little additive to the custom knight mod c:

ornate rivet
#

nice

copper nacelle
#

oh yeah @jolly oriole your merge is blocked on the installer if you fix it just ping me whenever

jolly oriole
#

uh, what part of it isn't working?

copper nacelle
#

merge conflict

#

effort

#

etc

jolly oriole
#

oh nvm

#

i'm dumb

copper nacelle
#

I gotta say that's not the installer

jolly oriole
#

the installer

#

let me quickly google how merge conflicts can be resolved

#

@copper nacelle done

copper nacelle
#

cool

jolly oriole
#

oh my god

#

i forgot to change some fucking method name when i pr'd modding api

vocal spire
#

F

copper nacelle
#

rofl

jolly oriole
#

i edited it in the copy that i use locally, but not in the one that i use for git stuff (don't ask why, could probably be one and the same)

deep wave
jolly oriole
#

nah, i care about naming conventions (not really, but i can pretend)

copper nacelle
#

I need to update the api binary

#

Terrible

jolly oriole
#

is there a way that you can take like 50 hours to automate this 5-10 min task?

copper nacelle
#

true af

#

idk there's probably some ci thing

#

I wanted to do xml validation on modlinks but it looked like a pain

jolly oriole
#

though when you automate that you would also need to autocommit modlinks, for the new api version

#

btw, if you're already at it, i may have more PR's the next hour

copper nacelle
#

lmao alright

jolly oriole
#

wait nvm, couldn't differentiate between modding api and mod for a second

#

can continue to update binaries

deep wave
#

wrt what's going on w/ hkmanager: i've added several features to modlinks, only one change could be seen as "breaking", which is that multiple versions of a mod may exist with the same name. this can be easily fixed by appending the <branchname> though, and probably not a lot of effort to pass through when hkmanager is done. this is assuming i could update modlinks, rather than keeping 2 separate copies which seems like unneccessary pain

#

(im also continuing to document #archived-modding-help happenings with intention to find ways to present solutions to basic questions easier)

jolly oriole
#

with the mod summaries document, would mods that add custom content (scenes n stuff) go under Functional Changes, Asset Changes or Misc?

deep wave
#

(imho i think custom content mods should have their own section considering how they've exploded in popularity)

#

also another point; is there a particular reason that decorationmaster is not on modinstaller?

jolly oriole
#

oh yea, things like decoration master too, i thought about mods like ToT & sanctuary

jolly oriole
deep wave
#

and another dumb questions; why do we use a google drive for mods rather than something like a git repo? that way it would be easier to sync updates to mods & modlinks etc...

jolly oriole
#

from my perspective i can say, you use gdrive, i put github release downloads in the modlinks for my mods

#

speaking of, i need to remove the old copy of sfcore from the gdrive

deep wave
#

but say a repo containing all the binaries + modlinks.xml was used; then you could simultaneously update the binary and modlinks in one clean commit, and that leaves a centralised place for people to download binaries that isn't the installer

#

then again, i've seen people express issues with figuring out how to download files on github before...

jolly oriole
#

true, but binaries in repos is generally not a good idea, especially for new people wanting to get their mods known, as cloning such a repo would take literal years

potent dirge
#

Github isn't a binary file hosting site, it's for source code bc of conventions + compiled binaries are significantly larger than the source code needed to produce said binaries

deep wave
#

found a big colossal brained solution to not knowing what issues people are having with mods feelspkman

copper nacelle
#

binaries in repos x5fiftAleph

deep wave
#

documentation in ms word in repos is what my compsci teacher expects us to do 🥴

copper nacelle
deep wave
#

i know, having commits called "ms word go brrrrr" is a beautiful thing

#

end me before this compsci course does

somber cliff
#

Hey, came across a weird bug. loading my mod and i just have a Black screen now :/ - was working fine yesterday and not sure where to start?

#

[INFO]:[DebugMod] - [DREAM GATE] File dreamgate.dat not found!

#

wat

jolly oriole
jolly oriole
somber cliff
#

only info messages in modlog - checking output_log now

#
  at SceneOne.LoadScene.Start () [0x00000] in <filename unknown>:0```
#

Seems to be some errors in output_log - might just do a diff between commits and see if the previous commit works.

vocal spire
somber cliff
#
        {
            On.GameManager.EnterHero += OnGameManagerEnterHero;
            On.SceneManager.Start += OnSceneManagerStart;
            On.GameManager.RefreshTilemapInfo += OnRefreshTileMapInfo;
            
            _sceneEditorManager = new SceneEditorManager();
        }
vocal spire
#

Can you show the stuff in OnSceneManagerStart?

somber cliff
#
private void OnSceneManagerStart(On.SceneManager.orig_Start orig, SceneManager self)
        {
            var sceneName = GameManager.instance.sceneName;
            Modding.Logger.Log($"Entered into scene: {sceneName}");
            
            // Update SceneManager
            _sceneEditorManager.EditSceneManager(sceneName, self);
            orig(self);
        }
#

well this is gonna go well

jolly oriole
#

or a bit simpler, can you just post the whole stacktrace? the two lines indicate nearly nothing

vocal spire
#

Yeah

somber cliff
#

thanks - hate to be a pest. I will say this.

#

i entered my new scene - killed myself but reloading worked fine. Then when i reclaimed my shade after that all scenes are simply black.

#

no idea if that is the issue though

vocal spire
#

There is a null reference in SceneOne.LoadScene.OnGameManagerEnterHero

#

Last part of the log

somber cliff
#

anyway we can catch these errors to determine where its coming from ?

vocal spire
#

Could you show that method?

somber cliff
#
private void OnGameManagerEnterHero(On.GameManager.orig_EnterHero orig, 
            GameManager self, 
            bool additivegatesearch)
        {
            var sceneName = self.sceneName;
            Modding.Logger.Log($"[{sceneName}] Entered GameManagerOnEnterHero");
            
            // Update scene
            _sceneEditorManager.CreateScene(sceneName);
            StartCoroutine(CameraControl());
            orig(self, additivegatesearch);
        }
#

Each scene has its own createScene method which is essentially

        {
            var sceneManagerObject = Instantiate(TheSanctuaryMod.PreloadedObjects["_SceneManager"]);
            sceneManagerObject.SetActive(true);
        }```
vocal spire
#

Hmm

#

What’s _sceneeditormanager

somber cliff
#

its just an abstract class, common methods like tilemap info and scene manager

vocal spire
#

Where is it set

somber cliff
#

where is what set?

#

scene manager?

#

k, ill just try something wild - if i reinstall HK on steam does it preserve my saves or are my saves local?

jolly oriole
#

you keep them

somber cliff
#

cool - so steam stores them and ill just get them back on install?

#

just want to make 100% sure 🙂

jolly oriole
#

they are locally stored but afaik they don't get deleted upon uninstall

#

but they are also in steam cloud

somber cliff
#

cheers 👍

#

that means thanks in my country not goodbye:)

vocal spire
somber cliff
#

dll works on friends computer

#

im gonna reinstall - must've broken something

vocal spire
#

It do be like that sometimes

ornate rivet
#

hmm I'm trying to load a custom non-godhome boss scene but I get this error

[ERROR]:[UNITY] - NullReferenceException: Object reference not set to an instance of an object
[ERROR]:[UNITY] - SceneParticlesController.BeginScene ()
[ERROR]:[UNITY] - SceneParticlesController.SceneInit ()
[ERROR]:[UNITY] - GameCameras.StartScene ()
[ERROR]:[UNITY] - GameCameras.SceneInit ()
[ERROR]:[UNITY] - GameManager.BeginScene ()
[ERROR]:[UNITY] - GameManager+<BeginSceneTransitionRoutine>c__Iterator0+<BeginSceneTransitionRoutine>c__AnonStorey13.<>m__3 ()
[ERROR]:[UNITY] - SceneLoad+<BeginRoutine>c__Iterator0.MoveNext ()
[ERROR]:[UNITY] - UnityEngine.Debug:LogException(Exception)
[ERROR]:[UNITY] - <BeginRoutine>c__Iterator0:MoveNext()
[ERROR]:[UNITY] - UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
#

I spawn in the right spot and can move around but the screen is black (the ui is visible)

#

fading in doesnt fix anything

vocal spire
#

Have you looked in SceneParticleController for a possible fix?

#

*internet died

ornate rivet
#

this.sceneParticles.SceneInit(); is the very last line of GameCamera's beginscene

#
    private void BeginScene()
    {
        this.gm = GameManager.instance;
        this.sm = this.gm.sm;
        if (this.sm == null)
        {
            this.sm = UnityEngine.Object.FindObjectOfType<SceneManager>();
        }
        this.gc = GameCameras.instance;
        if (this.gm.IsGameplayScene() && !this.gm.IsCinematicScene())
        {
            if (!this.sm.noParticles)
            {
                this.EnableParticles();
            }
            else
            {
                this.DisableParticles();
            }
        }
        else
        {
            this.DisableParticles();
        }
    }
#

the error happens there

vocal spire
#

Why is GameManager having a null reference

#

Ok

ornate rivet
#

so scenemanager was null and I fixed that but the screen still wont display properly

jolly oriole
#

but a different error this time, right?

ornate rivet
#

nope

jolly oriole
#

you sure?

ornate rivet
#

yea

#

looking for one in output log rn

#

yea no

deep wave
#

according to stackoverflow, this should force enable tls 1.2, but i have no way to test it currently zote

ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;```
jolly oriole
#

can you even force it if it's disabled on OS level?

deep wave
#

if i'm interpreting this correctly, windows 7 does support tls 1.2, but it is disabled by default. any application should be able to force enable it to run

vocal spire
#

Why was this suddenly happening though? Before like a couple weeks ago I haven’t seen this before

jolly oriole
#
Per the TLS-SSL Settings article, for TLS 1.1 and 1.2 to be enabled and negotiated on Windows 7, you MUST create the "DisabledByDefault" entry in the appropriate subkey (Client) and set it to "0". These subkeys will not be created in the registry since these protocols are disabled by default.

as i understand this, the reg keys need to exist, which don't get set by default

#

from the link you posted

deep wave
#

This update will not change the behavior of applications that are manually setting the secure protocols instead of passing the default flag.``` seems like you are right maybe? this seems contradictory
deep wave
#

ig here is build w/ attempted fix and updates disabled, if anyone can replicate the issue then could they try this one?

sage hearth
#

does anyone have the ak-47 mod

ornate rivet
#

it's on the modinstaller

#

and that's a modding-help question

sage hearth
ornate rivet
#

hollow point

#

and again, that question should go in modding-help

sage hearth
#

ops

heavy patrol
#

Good news for anyone who cares, I've successfully added Vibration (for a gamepad) back to the PC version, though currently it is just limited to a few triggers

#

I did it through modifying the HeroController class directly, so it's not exactly the best practice but it does work

jolly jungle
#

Vibration?

heavy patrol
jolly jungle
#

Oh, cool

#

idk what that means but good work hollowknice

heavy patrol
#

Controller go Brrrr

#

XD

#

Oh, duh Gamepad is just a controller, like an Xbox one or ps4 controller

#

Sorry haha

weary oyster
#

hey whats the easiest way to take a look at fsm's for enemy/boss behaviour without actual modding knowledge

worn eagle
weary oyster
#

thanks

worn eagle
#

There's a pin here for the scene names where you can find non boss enemies

weary oyster
#

uh it appears to crash if i try to open the scene list

#

am i doing something wrong?

worn eagle
#

every time?

weary oyster
#

yup

worn eagle
#

it crashes for me too
but only sometimes

#

Maybe download an earlier release?

jolly oriole
weary oyster
#

i tried release 1 and beta 7 and both crashed so doesn't seem like earlier releases help

#

ill try that one grenade

jolly oriole
#

Do you have the game on steam?

weary oyster
#

i do

#

was i supposed to extract them in the game directory?

jolly oriole
#

It crashed for me when i didnt have it in steam, as it seachs steam hk path

weary oyster
#

oh might it be because the game i have in the default directory is on 1221?

jolly oriole
#

But no

#

Possible

#

Highly likely

weary oyster
#

okay yeah, switching my default install to cp did fix the crash so thats nice

#

its a bit unfortunate though cause 1221 behaviour specifically is what i'm looking for, but it should be the same for most stuff

jolly jungle
#

Also nice pfp italy itssoulgood

worn eagle
weary oyster
#

thanks for the help

potent dirge
#

It would still be super cool if the fsmviewer was version agnostic

#

But also effort

jolly oriole
potent dirge
#

Yea we've talked a bit about it in the past, Nes thought it shouldve been but it turned out it wasn't (even with the different database files)

fair rampart
#

will hollow knight mods work with silksong

ornate rivet
#

no

fair rampart
#

oh ok grubsad

#

wiat

#

I should use this server emoji

#

anyone know how to download spritepacker?

#

i'm planning on making myself a skin

vocal spire
fair rampart
#

funky, thanks

vocal spire
#

Along with a pre godumped knight

fair rampart
#

oh god it's all in chinese

#

there we go

#

time to get creative

dark wigeon
#

Although they both use cldb so if you don't swap they'll both crash

#

Easy two line fix to swap to tpk

#

Well I can try later, I think I still have 1.0 HK installed

potent dirge
#

No matter what, bc even opening the 1221/downpatched files back then manually ended in it crashing

jolly jungle
dark wigeon
#

Open scene list uses steam

#

sseadv has a newer system that lets you choose steam or any path you want

jolly oriole
#

though tbh, the not list field didn't work for me last time i tried that, but the values in the lists worked fine, though they should use the exact same piece of code

copper nacelle
#

it's near the bottom

jolly oriole
#

... fuck

weary oyster
#

damn i actually meant to ping with that @dark wigeon

dark wigeon
#

Wdym access denied

#

Should be public with link

weary oyster
#

it does not appear to be

dark wigeon
#

Try now

weary oyster
#

gives me the usual you need to request access google thing

dark wigeon
#

I just clicked the option again

weary oyster
#

there we go

#

umm what do i do with it since it doesnt have the scene list thingy?

dark wigeon
#

Go into hollow_knight_Data and open one of the level files

weary oyster
#

okay yeah it's definitely able to open 1221 level files

#

i think the numbers are off in that file though because of patch differences

dark wigeon
#

Ah probably

#

That scene list is from the most recent version

weary oyster
#

yeah that makes sense

#

with luck just removing any new rooms added in 1.3/1.4 would sync it back up

dark wigeon
#

I can add a scene selector I just have to port it from wpf

weary oyster
#

that'd be pretty cool

worn eagle
#

since hk (runs?) on top of net35, will c++ interop only work with the v90 platform toolset (< C++11)?

copper nacelle
#

you can extern w/ the c abi with whatever

worn eagle
#

idk much about the c abi, are you just saying you can expose a c++ function with any toolchain?

safe hamlet
#

yeah should be able to

copper nacelle
#

just extern "C" and you can use whatever

worn eagle
#

huh, last time I tried the functions just weren't getting called until I downgraded to v90

#

had to make some risky downloads to get vs 2008

safe hamlet
#

🥴

vocal spire
#

🤔

safe hamlet
#

i mean i was able to use extern calls on discordrpc sdk just fine, and i am pretty sure that wasn't using any ancient versions

jolly oriole
#

this works (compiled in vs2019, imported in c# [don't know which version/framework though]), so more complicated stuff also should just work.
and please don't ask why i needed this

copper nacelle
#

why'd you even do it in c++

#

It's 2 c functions

#

Just dllimport

jolly oriole
#

some times the simple things are too difficult to do

copper nacelle
#

arguable

jolly oriole
#

i searched on google and stackoverflow gave me that code

copper nacelle
#

bruh

worn eagle
#

would y'all discourage using asio standalone for cross platform sockets

copper nacelle
#

like boost asio?

safe hamlet
#

nah i used it, i liked it honestly

worn eagle
#

yeah

copper nacelle
#

idk sounds like it'd be performant

jolly oriole
#

if you're trying to get binary data from a to b, consider also using either boost json or boost serialization (boost serialization might have lower storage footprint)

dark wigeon
#

what are you trying to do natively anyway

worn eagle
#

ig I should just announce my intentions: I'm wondering if handling networking from the C++ side would make the multiplayer mod more...stable?

jolly oriole
#

i mean, in that case, you could try using unity's built in networking functionality

dark wigeon
#

I would say it would make it less stable, I wouldn't try to pinvoke my way through networking

worn eagle
#

guess I should start looking at the llapi

#

...which seems to have a lack of documentation

dark wigeon
#

what is the current multiplayer mod using

#

is there even a repo for it

worn eagle
#

.net sockets

dark wigeon
#

huh that's kind of weird

#

I mean you can either use unity's libs or one of the other networking frameworks out there in c#

#

don't think you need to jump straight to c++ for this

jolly oriole
#

llapi would have probably been easier to switch to, as currently with the sockets it's already also low level

dark wigeon
#

ah I guess so

jolly oriole
worn eagle
#

would unet really be more stable? I'm a bit worried about its deprecated state

jolly oriole
#

it's deprecated?

dark wigeon
#

unity 2017 is deprecated too

worn eagle
#

true true

dark wigeon
#

I don't know what mlapi is though

#

MLAPI is compatible with Unity 2019 and newer versions.

#

so you wouldn't be able to use their alternative anyway

worn eagle
#

mid level? lol

jolly oriole
dark wigeon
#

well yes I know what it stands for, not how it's better than the other two they've made

jolly oriole
#

i have no clue

#

apparently being old makes it good

#

i may have purposely read over "and actively developed" but that doesn't matter

worn eagle
#

looks like the mlapi is supposed to be used in-editor?

jolly oriole
#

apparently

#

wait no

#

mlapi.dll is the runtime

worn eagle
#

oh I didn't read what nes said, can't use it anyway

jolly oriole
#

oh yea, and that

leaden hedge
#

just using a different api isn't really going to help

worn eagle
#

how would you go about it? ik fire was looking for you to potentially rewrite the mod so maybe I can provide a little help

leaden hedge
#

if you want to make it less laggy, you need to either implement lockstep or rollback

worn eagle
#

yeah I tried to implement a library called BackRoll but I think it's for a newer version of unity

leaden hedge
#

theres libraries for unity for both, but they require rewriting scripts so it'd probably have to be knight only, with other objects just being extrapolated

worn eagle
#

so no different from the current version

leaden hedge
#

afaik knights on the current version aren't predictive

#

or if they are, they have shit predictions

#

and/or massive amounts of delay

worn eagle
#

they def don't, I just meant the current version is knight only

leaden hedge
#

oh yeah, i mean it does let knights hit other entities over the net

worn eagle
#

that's just cause the local player's own slash prefab gets instantiated when another player slashes

leaden hedge
#

its a pretty large task, because it'll likely require reprogramming and redesigning the knight

#

as he currently has 0 delay to all his actions, which makes predictions extremely poor, and super teleporty

worn eagle
#

do you have anything in mind for when the mod just doesn't work until a restart?

leaden hedge
#

who knows, you'd have to debug what its doing, i couldn't even tell you if its
client not sending updates
server not listening for updates
server not relaying updates
client not listening for updates

i'd assume its on client side, unless theres a pepega bug in the server code

worn eagle
#

I wouldn't doubt it

#

so...you'd recommend sticking with .net sockets?

#

idk if rollback libraries do their own networking stuff

#

well, ik ggpo does with udp

leaden hedge
#

i think unet sockets have insane delay

#

i would definitely move away

#

definitely try to implement udp

#

and also make the packets as small as possible

worn eagle
#

mhm, quite a few things in the current version can be narrowed to bytes and using dicts that map to bytes instead of strings

jolly oriole
#

why the fuck does playerdata consist of 1526 fields

leaden hedge
#

yes

copper nacelle
#

you gotta

fair rampart
worn eagle
#

any qualms about the backend stuff w protocols?

#

or maybe even the mods' structure? i.e. should it be p2p instead of client-server?

jolly oriole
#

does c# support bitfields in structs?

leaden hedge
#

yeah pretty sure it does

jolly oriole
#

imma quickly make a struct with bitfields for the entierty of playerdata

leaden hedge
#

with attributes i think you can set the position of the var

jolly oriole
#

though with c++ classes, cause i know that bitfields definetly work there

leaden hedge
#

also p2p will always have less lag than client-server

#

unless you have a time travelling server

copper nacelle
#

yeah you just set the struct layout to explicit and you can set the field offset

jolly oriole
#

i fucking hate the ints that are only used in fsms

#
int xunFlowerBrokeTimes : 32;

just in case people want to try breaking it

worn eagle
#

does ggpo only send udp packets?

leaden hedge
#

After punch through yeah it should be only udp

worn eagle
#

do you want this mod to behave the same way?

leaden hedge
#

That's just how networking should be, udp for anything that isn't a 100% necessary send

#

TCP for anything that has to be sent, like connection, chat, disconnect, scene changes ig

worn eagle
#

for modsettings, would I do something like this?

HallowNet.Instance.GlobalSettings.StringValues.TryGetValue("Host", out string host);

given that settings are declared like

private Settings _settings = new Settings();
public override ModSettings GlobalSettings
{
    get => _settings;
    set => _settings = (Settings) value;
}
copper nacelle
#

StringValues x5fiftAleph

#

just declare a field

#

but the settings are like that yeah

heavy patrol
#

So I'm wanting to trigger controller vibration through the API, but one of the actions I want to trigger it is a hard fall being done. I'm not very familiar with modding, but since there doesn't seem to be a hook for that would I be unable to accomplish this solely through the API?

copper nacelle
#

Yeah you can just use MonoMod's hooks

#

On.HeroController.WhateverItsCalled

worn eagle
#

unityexplorer is fucking cool

potent dirge
unborn flicker
#

As I understand it, bad programmers leave magic numbers in their code. Good programmers leave magic strings in their code feelspkman

jolly oriole
#

just leave magic code in your code

jolly oriole
#

without the strings and lists in playerdata the whole struct only uses 272 bytes (though i did leave a few bools out, but these bools are only conv and stuff)

#

now the painfull task of inputting values to check how large a maxed out save would be

jolly oriole
#

nvm, didn't change a thing, but either way i guess normal json is the best for cross system compatibility

jolly oriole
#

incompatible with DecorationMaster though

worn eagle
#

does returning to the menu title force destroy all objects, including those marked with dontdestroyonload?

copper nacelle
#

no

worn eagle
#

dunno why my stuff's not showing up then

#

the modmanager doesn't have to get reinstantiated every time does it

jolly oriole
#

oh great, with how the api handles null values being passed back

copper nacelle
#

what

#

idk about the modmanager thing, it might tbqh

#

the faux ui manager doesn't at least but I didn't see a don't destroy on the mod manager

#

it logs on init so you should at least see something

jolly oriole
copper nacelle
#

the what was for you

jolly oriole
#

that part crashes, as playerdata expects that mapZoneBools can be null, which results in the modhooks getting a null as orig object, which results in if (v.Equals(varInternal) || gotValue) (in ModHooks.GetPlayerVariable) crashing, as v is null

copper nacelle
#

ah

#

Terrible