#Mod Manager Discussion
2440 messages ยท Page 3 of 3 (latest)
Yeah, a popup that says "this mod is marked as incompatible with XYZ, are you sure you want to enable it?"
well i thought more on the lines of having a warning symbol like next to the delete symbol that just has a tooltip with proposed changes and when you click applies those
i would honestly just go with this approach
#1464652513704808657 message
trying to auto-resolve multiple complex dependency chains that can have random intertwined incompatibilities migth cause hair loss
well yeah i will go with that but the tooltip is just there to then if clicked automatically enable all depends and extend and disable all incompats it wont autoresolve beyond that even though that be easy
Auto resolve is something you could potentially support, but it'd have to be an opt-in thing imho. Or a button.
Plenty of reasons why you'd want to run incompatible mods; most coming down to "the incompatibility is grossly overestimated/can be worked around/patched by a third mod"
yep
ya personally I definitely want to be able to load incompatible mods on purpose so I can observe the errors and fix my code, if the incompatibility is blamed on my mod
we definitly need to show warning too though cause users often wont even notice they installed a dependency and the disabled it and their mod stops working
absolutely
my only ask is let me get an unskippable warning and then allow me to ignore it anyway, so everything that I want to be installed, gets installed
this work?
it now forces nothing the only thing it does is install depends when installing a mod
the manager is managing to manage even more managed mods by the day
lol
i think that will be fine for now, but some sort of a pop-up that lists the collection of detected issues would be better to get the message across from avg user perspective imo
I'd make it auto-enable dependencies on enable, but not disable either when you disable either, if that makes sense?
nah only on install the rest is in the warning if they want to only enable some mods they can do that else just autoresolve it for you and do with all the dependencies and incompats
Or maybe popup a "This mod has the following dependencies, all checked ones will be enabled", and then a list with checkboxes beneath.
i could
but why
just added complication no mods is gonna have more then like 4 dependencies for like at least some time
User QoL
sure i will do once i added other more pressing matters
If you have e.g. 100 mods installed (but not enabled), it might be a pain in the ass to go through them and track down dependencies
(People who mod Rimworld or Skyrim or Minecraft know)
well just autoresolve
it doesnt do it for all mods
only for that mod
ik you may not want to have some specific mod enabled just disable that after yousrself
:)
or i could make it a dropdown where you can click specific problems to resolve
and one resolve all
yep will do that
probably
some day
later
in like half an hour once im done with the rest
my friend often complains about his oblivion mod collection ๐
do you really want a popup every time you enable a mod instead of just a warning symbol as long as we convey to the user that that shows problems it will be fine
bro was not typing only that in so much time
Could make it a setting to skip the menu & auto-accept all tbh
well its not a menu yet
lemme get back to the cooker so I don't set the house on fire
then I will try to explain myself
I will make a mockup of what I meant
well i could but how exactly would this be better then just having that warning also this would only be when 2 incompats would be or maybe you remove a dependency
User QoL
this is one thing that may seem completely unnecessary from a power user or engineer's point of view because ofc we will check those warning labels
but avg end users don't read warning labels without being force-fed them
source: a big part of my job is automating software installation
a forced popup seems to intrusive for user like well us who often would deal with this i can maybe make it a notification like thing
i would keep the warning though
the notifcation would only stay for a short while
to grab the users attention
it's up to you, ultimately its your app, I'm just trying to give ideas that make sense based on experience 
i think i will implement it as a notification which can be disabled in the settings though if you believe a interupting popup should be included as well i can do that
as an option
tbh as long as we don't start seeing things like there is a mod that patches the patch of another mods patch, that was already patched by another mod, there won't be too many nightmares! ๐
guessing this isnt supposed to happen lol
hahahaha
@final wren
is there a duplicate ?
i just got up will fix in a bit
we probably want to require the id for an mod to be like com.something.that just so we have a bit more unique id per mod
you get it
theres a update out for NOMM very epic update trust
mod manager discussions 2082???
huh
literally 2084
delete and lock thread
wipe the project, there are no mods for this game
we should have stopped at 1984
what game
@final wren you said you can add a list of urls with names to the extension in the manifest? what structure would you use so i can already add support for the next update
just an array
I don't want to add like url names
because
infinite names
sure
ye
call the property when you add it just urls
well what makes more sense
and then you can parse them as a hashtable
or smth
just make sure your data structure is flexible
lets do a hashtable/dict/map
json isn't type aware, but for the client that sounds reasonable
obviously
json bourne
has no type identity
yes
cool
hey just another question i can only see around 10 mods in the manager is that normal atm?
we need to populate some metadata initially
and then it will keep those entries up to date by itself
got it
I'm probably gonna get the common back-end to "1.0" tonight or tomorrow, then I will update the documentation and open a dedicated thread, where I will share info on how mods can be added
Nuclear Option Mod Manager Manifest
NOMMM
Nuclear Option Mod Manager Neatly Organized Manifest
NOMMNOM
btw i thought about the manifest again should we for both artifacts nd extensions make the id and version a key in a dict no real reason works fine as it is just think that makes more sense imo
Nuclear Option Managed & Neatly Organized Manifest
NOMNOM
we made NOMNOM work 
the current structure makes it easy for schema validation, and you can always handle it as a key value pair on the other side
well i can also just read it as a object and the transform it into a map on my end
when I do content validation I convert the mod lists to hashtables where id is they key, it makes it easier to look things up as I iterate + serves as a duplicate id check
so you could?
I don't want to note it as keyvalue pair in the json schema itself
because for the first pass of schema validation, im pretty sure I can't validate for that
unless i just put them in as an array of comma separated strings
i guess
same with URL actually
because can't validate the presence of arbitrary property names
and infoURL should be required, at least one url that leads somewhere
content validation is fully customized though so there I have flexibility but I aim to keep things simplistic, so if anything needs to be extended in the future it causes less headache
sounds great keep up the good work both of you
(the reason content and schema validation are 2 separate things, if the schema is obviously bad, the job will terminate early and won't waste more action runner time)
can you explain me complete NOMNOM pipeline as it is planned rn
didn't denote YES/NO on the conditions properly
so uh to add a modto the manifest you would pr a specificmod.json meta or something right?
yes
will that file ever change will the automatic updating proces smodify that fiel directly or is no mod specific state stored and only the master manifest
there is an action that triggers when a PR is submitted to staging branch
and it checks if any .json files changed in that directory inside the repo
then it will run the checks on them
yes
the meta manifests are used to always regenerate the master manifest
the automatic update also updates the meta manifests
imo the modspecific jsons shouldnt store any state ebyond the definition not even like the first artifact and should never be automatically update we may add cache inbetween but not in that original file
I get you but what if no proper release
like those voicepacks rn
well we dont
we need to basically force anyone to use this i dont believe any mod will surpass the 2gb limit per file ina release anyways
else raw has a limit too
if someone wants downloadcount and autoupdate, they have no other choice ๐
username.modname seems fine enough. Though I wouldn't enforce an arbitrary schema. com.(...) is a Java/commercial thing anyway. (https://en.wikipedia.org/wiki/Reverse_domain_name_notation for further reading, if you're interested)
I'd be highly surprised if username.modname would ever cause collisions.
well might as well not give them a choice at all then
thats is true but on further consideration i dont think it matters we have thw automatic validation anyways when ids collide it just wont allow to add a mod to the manifest and it needs to be changed before being added
@junior geode i believe you said to remind you to test NOMM if you havent yet
yeah from my perspective ID just needs to be a unique string that stays forever the same, to avoid collision checks
and protect integritiy of package relationships
one dayโข (not actually in one day)
are they limited in what chars you can use if not limit to like a-zA-Z0-9._-
can be any utf8 character
well they cant though on my end as i save the mod ina folder with the id as name i could change it but its very easy to do and you cnat use certain chars in folder names
i can be more restrictive
yay
but atm I just save the master manifest json as utf8 without bom so if anything is not utf8 will just covert into funny squares
sorry i may be stupid but what scenarios are you talking about
that would happen is someone edits the text with their editor set to a broader encoding standard
I often work with data that comes in from different sources and different encoding, so I may be personally traumatized
understandable
oh also let me tell you about the time when I accidentally saved the hosts file on all of our 26k work computers as unicode with bad automation XD
waht could this be..
?
this thread is about a common back-end that mod manager apps can use to serve mods
neven seen it before
the thread or what
the thread
would?
yea..?
why would if can?
idk
Hello, what is blueprinter, where can I find it and can I use it to edit stuff?
?
why do you need it
@autumn hamlet if you want arbitrary key-value pairs for urls I'm gonna just make it like this
because the built-in json parser will deserialize into custom object, and turning objects with arbitrary property names into hashtables is something I'm not willing to suffer right now
and this way I can still validate URLs on my side
I won't make objects where property name can be arbitrary
otherwise u gotta think about all the different link types ppl would want to post
idk about you
but I have no desire to do that
no i mean why not { "name": "", "url": ""} list of those
am i not getting something
well we arent optimizing for space yet anyways
good with that?
I'm gonna freeze additional schema changes for now, I have to finish the automation
the url change is in dev and will go live
whenever you are ready
yep
discord not working on my pc rn absolute cinema
gonna update the instructions tomorrow and then rename the repo
https://github.com/KopterBuzz/NOModManifestTesting/blob/dev/README.md
@autumn hamlet lmk when you are ready for new manifest change re infourl
i will im currently trying to fix my discord though
well no
already did thaz
its somehow the entire network im just using data on my phone rn
is discord not cooperating with your internet or smth
idk
it happend in the past too and stayed for some hours always without any fix
and its slow often too
not even the discord website works
discord always slow for me when I'm in Norway
I think Jens Stoltenberg is listening on my chats
I'm not crazy
๐
it has to be some routing issue with the isp
whatever
i dont need discord anyways
nobody ever thinks its dns
but it almost always is
i had a funny one at work once where our primary dns and the secondary dns had a conflict, which resulted in very specific ajax calls not going out
and as a result, the holiday booking system didn't work so nobody could book holidays 
who needs holidays anyways
takes 30 seconds to run the auto update with current number of files
projected runner time for 30 days is 6% of github premium runner time allowance
thats not so bad
how many things do we have rn
if the numbers get bigger I can always just set up a local runner and some parts of the flow can be parallelized
local runners are always faster
obviously
this entire thing
runs every hour now
to automatically discover new releases and update dependencies
(only on dev branch for now)
tbh if we run into problems with the runner time
we can just not run it every hour
duh
I don't think we will, at least for a very long time
the schema and content validation can be paralellized as well so it can scale better than current version
we say that now but obviously this is gonna be used by everyone by tommorow and the count of mods will 10x
obviously
there isn't much compute intensive in this to be honest just some hashtable lookups and simple condition checks so I don't think it will be significantly impacted by a growing number of meta files
how is the api request count looking
haven't done it yet but that also wont' be a concern for ages
allowance is 5000 per hour
well yes
with how many mods
if you have something that can extend hours per day to 90
send it over, I'll pay for shipping
atm yes
because 1 request will return 1 page of up to 100 releases
so it doesn't have to paginate yet
that will be fine for a long time for most mods
ah actually
https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#primary-rate-limit-for-github_token-in-github-actions
limit is 1000 per hour for current configuration
because the action runner is using GITHUB_TOKEN
if I spin it out to my server I can bump it to 5000 per hour
https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#checking-the-status-of-your-rate-limit
ah the response header can tell me what's up so that's excellent
ok finally discord working again on my pc
So how is this working out generally? Anything to be aware of, other than early days?
Had an inexplicable error when trying to install bepinex from the manager but when I restarted it said it worked.
Found my nonstandard install location no prob :D
Only real """issue""" is that smartscreen tries to stalin it
imagine not turning of stupidscreen by microslop after windows install 
only way to stop smartscreen from blocking an app by default is to get it signed with a code signing cert that is trusted by MS. that is Expensive.
We have working mod manager app now and the back-end infrastructure they can use to source mods is almost finished 
i try but it's like "ask again later"
they want to slowly turn windows into iOS and not let you run unsigned software
every now and then they make it slightly more annoying to run unsigned code
alright. would it be ideal to switch over from BepinEx?
"for security reasons"
umm
mods still use bepinex
that won't change
difference is
you won't have to install anything manually to get mods working 
alright, i'll take a look then
can't wait for this to be more automated for new folks
we will need to set some basic guidelines for modders that they need to follow to make stuff compatible with the manager, that's all
i just hope it has better naming than USB
we also need modders to stop distributing mods via discord and use the tools developers are supposed to use
github (or any alternative), writing proper changelogs, branch management....
the working principle of our modmanager backend is that it checks the github release page of known mods, and if it discovers a new release package it gets added to a central metadata library, which the mod manager client software itself uses to populate its catalog
three quarters off the people using these mods dont know how to use github thats the point of the mod manager
well its also significantly faster to enable disable download mods even when you know how to use github
as an example: i found out a few days ago that the releases page is on the front page of a github repo.
anything to simplify the process for most people will help
https://raw.githubusercontent.com/KopterBuzz/NOModManifestTesting/refs/heads/dev/manifest/manifest.json
this has been auto updating itself since last night, still looks healthy! 
epic
good instruction documentation really helps with this, but an "app store"-style solution like a mod manager app is certainly a much better user experience 
eg both NOTT and NOBlackbox had over 1000 downloads already, without any mod manager support in the past.
so if i want to make a bepinEx mod, what's a good place to start?
familiarity with C# Unity programminmg doesn't hurt
you need a decompiler to be able to read the game code to figure out how to do what you are trying to do (DNSpy, ILSpy or similar)
for a simple "hello world" styple plugin, this is a good reference
https://github.com/clumzy/NO_Tactitools/tree/77bfbb718925e5412dc4254af4549b035a36a55e/MyFirstPlugin
and if you want your mods in the manager library, basics of using github to make releases is a good idea to get familiar with 
https://github.com/KopterBuzz/NOModManifestTesting/blob/dev/README.md#how-to-add-your-nuclear-option-modb
these are basic requirements I ask for, but the instructions will be updated later today
@lofty cliff also just to make sure we are on the same page, try not to make mods that people might perceive as multiplayer cheats 
@final wren you said you wanted to "release" NOMNOM push the dev branch to main and make a thread in the mod forum today right?
yes
I gotta get some workshit done
but I can push dev to main any time if NOMM supports the new manifest schema
the new version does and it also wouldnt break old ones they would just ignore the unknown key
coolio
do you consider a 3rd person hud cheats?
debatable
do you consider context specific sounds from a complex rwr cheats?
technically
i guess i can just stop there then. back to user
I would say that it probably just depends on what the host says
always
somehow caused a f********&^&^%^%&% merge conflict but its resolved now
๐ญ
auto updates are live
val urls: List<UrlReference> = emptyList(),
find the problem @final wren
"infoUrl": [
{
"name": "info",
"url": "https://github.com/Ol1vver/bepinex-soundmod"
}
]
little hint
i think we forgot to talk about what we wanted to name that property lol
how hard would it be for you to rename infoUrl to urls on your end or should i make an update
what is the expected property name
for me its "urls" rn
I only have to change the property in every single script
dw I'll change it
makes more sense for semantics anyway
will be live in a bit
there is one breaking change left, I do want to rename the repo eventually and then the URL will change from
https://kopterbuzz.github.io/NOModManifestTesting/manifest/manifest.json
to
https://kopterbuzz.github.io/NOMNOM/manifest/manifest.json
well ig i can change the default url but as url is a setting its stored in the config though i could make an exception ig that updates the url to this if its the old one in the next update
but I do have to go and do something now to earn a paycheck so that will come later
ya lets leave this for a future update and then we can coordinate
"urls" change is live
will maybe also change the name of the nuclearoptionmodmanager repo to NOMM
so idk what it is, but is there some assembly required with some mods?
sorry sorry
yeah to be able to develop mods you gotta add some dlls to your project references
from the game and bepinex etc
there is a bepinex project template you can add to visual studio but I personally hate it
i should have been way more specific
sorry
no worries mate
Don't apologise for asking questions! ๐
@final wren you should push the ffb mod to the manager :3
ok
X-post here as I found this thread and maybe it would have been a better place to post:
#1467341462227124305 message
this thread was used for discussion during development of NOMM & NOMNOM ๐
So uhh
Nomm is not looking in the correct files for my nuclear option is
It's trying to find it in a different folder somewhere else.
I tried it but it keeps saying something about security
I'll try doing it via flatpak and that might help
oh that
yeah
no idea
sorry
i will be looking into that but probably not going to be fixed soon
just try the other formats
i just don't even use a mod manager
i have two folders, the BepInEx plugins folder with the mods i'm currently using and a separate one that has those mods and everything not in use
if i want to use a different mod, i copy that mod over from the second folder, and if i want to stop using a mod, i just remove it from the plugins folder
is there like a tutorial on how to get the flatpak to work
Is this broken on Fedora? I installed the rpm, but it just fails on launch with ```Error opening "NOMM.cfg" file: No such file or directory
too



