#Mono for Modding

1 messages · Page 1 of 1 (latest)

valid merlin
#

As a mod developer for games of this genre (Void Crew and Pulsar: Lost Colony), I want to make mods for Jump Ship. Unfortunately the current Scripting Backend is set to IL2CPP. IL2CPP is a Unity feature which optimizes game CPU performance by compiling to machine code ahead of time. It doesn't stop modding entirely, but in this case heavily increases the difficulty of creating mods with the capacity to change up gameplay, including minor changes like community bug fixes and QOL features, all the way to player capacity unlimiters and gameplay overhauls.

As one of many potential mod developers for Jump Ship, I would like to request that a mono branch of the game be made available. An example of this can be found with the game Pulsar: Lost Colony, which transitioned to the IL2CPP backend while maintaining a public mono branch for modding. Additionally, cross play between the mono and IL2CPP branches is possible.

Before someone points it out, I'm aware of the FAQ answer for mod support #common-questions message. I've made this post to help increase the dev's awareness of the modder's plight. This request IS NOT for mod support in the form of modding APIs which would suck up a lot of development time, rather for a more moddable version of the game.

olive gyro
#

I already have a few ideas for mods to make. A mono branch or similar would make modding much easier for me.

rich oyster
#

This would actually be huge. I've been very slowly learning more about how the game works behind the scenes. And managed to do quite a few exciting thins already. The game being compiled with mono would be HUGE for letting everyone do so much more so much faster. And since the dev team doesn't seem to be worried about cheating, (and that'll happen anyway) I'm all for this.

plush fractal
#

same, i started making a debug mod but its more like injected cheats

#

cause of the il2cpp version 31

rich oyster
#

Also semi related, can we get a channel to discuss modding the game?

crisp phoenix
#

@neat magnet ?

neat magnet
#

@hidden harness I know we talked about IL2CPP last Q&A, want to weigh in here on what's possible?

neat magnet
rich oyster
rich oyster
neat magnet
rustic sierra
#

Hi, thought i would say somethign here since ive been modding for a while on jump ship in the closed beta. I obviously wont say much due to the nda, but i will say that the game did used to be mono and switched into il2cpp about a month ago. This did make modding more difficult but it doesnt stop it. Since they made the conscious decision to switch to il2cpp, I highly doubt they would switch back and i think a mono branch really isnt likely at this stage. If a mono branch were to come out it would be appreciated but i doubt it would be looked at until EA or release.

rich oyster
olive gyro
rich oyster
# neat magnet I'm not a technical guy, I don't know what a mono branch is or how feasible it i...

I don't know how hard it is to maintain a mono branch alongside a il2cpp branch. but i can tell you what that means and what it would allow us to do.

With il2cpp, the code is obfuscated in a way that makes it quite difficult to figure out how stuff works. Basically we can see names of functions, but not what they do.

With mono, we can't see full sourcecode, but we can see a mostly intact approximation of what the code is. Allowing us to (relatively) easily make additions or modifications to your code.

The best way I can describe it in a non-tec way is mono is like looking through a mildly dirty window. You can pretty easy make out what's going on, but it might not be perfectly clear. Where il2cpp, is like standing a mile away and trying to figure out what you're looking at: With the right tools, you can do it, but it's much much harder and you're much more limited on how you can interact with it.

As far as I know, nothing is strictly impossible to do with il2cpp that's possible with mono. it's just WAAY more tedious to figure out what you need to do.

rustic sierra
#

Also, iirc some consoles require games to be on il2cpp so with them working on an xbox version, it may have been part of that decision.

rich oyster
# rich oyster I don't know how hard it is to maintain a mono branch alongside a il2cpp branch....

A little addendam to what I wrote:

Having access to a mono build would be a huge boost to modding JumpShip. It could be the difference between a few small mods, and major new content that keeps people coming back. I don't think I need to argue the benefits of having mods for your game, so I'll just say that a mono build would be a very nice compromise for mod support without requiring a full blown modding api. While still allowing a modding community of your most passionate fans to develop more content for everyone.

Mods will happen either way, but I think mono vs il2cpp is the difference between modding being a selling point, and modding being a nice bonus.

distant cedar
#

Okay so here is a problem with Mono, resonite currently is suffering this issue and are actively wroking on decoupling their engine from mono.

its slow

#

excessively slow

neat magnet
rustic sierra
#

yes thats correct

olive gyro
#

With mono, I can see and edit what a method does.

For example (in a different game), I managed to create a UI field that users can type in and press enter to submit. That was only possible because I interrupted the part of the method that prevented me from detecting key presses when a text field was focused.
With IL2CPP, I would still be able to create the text field, but I would never know when the user pressed enter.

The other part is understanding how different parts of the game interact. A method might be called OnAwake. I know that the method is called once when the object is created, but with IL2CPP I don't know what variables might be set there. At best, it could take several extra hours of trial and error to find the correct variable to modify. At worst, I might not be able to find what I'm looking for at all. In that case, the mod will never get made even if it is technically possible.

TL;DR: I can spend 4 hours making a mono mod, or 48 hours making the same IL2CPP mod, and I'll probably give up after 24 hours instead.

rustic sierra
#

there are tools which help significantly like il2cppdumper and IDA

olive gyro
#

That would help with the reading and understanding side of modding, I'm guessing not so much with making transpilers.
I haven't don't enough with IL2CPP to state with certainty what can and can't be done.

rustic sierra
#

Nothing is really made impossible with il2cpp, just harder, and i believe that as long as the devs facilitate a community to grow around modding and mod development thats enough. A mono branch would ofc be nice eventually, but as long as a community grows and the modders are willing to cooperate with each other it wont be too much of a struggle long term

neat magnet
#

I'm learning a lot, thanks yo!
Like we've mentioned before, most devs here started as modders so we fully get it. Just wanna make clear why it's in IL2 and that it is not to discourage modding, its mainly performance.
We will encourage the community to mod as much as we can (but still no official mod tools), and who knows - maybe down the line we're like yeeeeaah here's Mono

olive gyro
#

I personally am happy to sacrifice quite a lot of performance for mods. That should not be considered as an adequate reason to maintain a mono branch.
I'll see what I can achieve with IL2CPP for now.

rich oyster
valid merlin
#

As 18107 and others have said, mono is much easier to mod, as mods would only take up to a few hours to make (depending on size, of course).

On IL2CPP, there's a lot more to dig into. We don't get an easy to read decompile into C#, as IL2CPP takes the compiled C# and further compiles into CPP machine code. Reverse engineering and modifying how a given block of code functions isn't impossible, but requires more knowledge, tools, and effort to do.

Performance is a concern, but generally framerate in games is limited by GPU capabilities. That said, I don't know what the performance of JS is like without IL2CPP.

The communication is extremely helpful, and I hope mono support comes sooner rather than later.

mellow otter
olive gyro
#

I can't find anything that generates method content. MelonLoader provides method and field names, but no method code.

valid merlin
#

There isn't anything I'm aware of. To make something remotely close to a transpiler you need to tweak the C++/machine code.

olive gyro
#

Most of my modding time is reading method code to understand how the game works, and to find what methods my code needs to call. Without method code, I don't think I can make any usable mods.

rich oyster
rustic sierra
#

question since im not the most versed in how il2cpp works, if they were to do a one time mono release when early access came out (as in a not maintained version, wouldnt get updated often or at all, would the knowledge from looking through that, then aid modding of the il2cpp version, or would the knowledge not carry over?

plush fractal
#

My only plead is that we get access to imgui calls 🥺.

mellow otter
#

i mean cant function stripping (eg for imgui calls) be disabled at like module & function level? that'd at least be an easy way to keep some of the more important functionality

valid merlin
#

Switching to mono is a toggle in the build settings, and the only reason I can think of for it to fail is if they're using something weird which relies on IL2CPP. Maintaining a build should be as simple as adding a build config, then every time they build it updates the main and mono branches. Then again, maybe I'm ignorant of something.

rustic sierra
valid merlin
#

Consoles are likely to be on a seperate build anyways. They tend to require a dedicated team from what I understand.

#

I think console arguments are out of scope.

#

As for the some plugins, we don't know if they're using any of them.

olive gyro
#

I've made a couple of useful mods in about 6 hours that would have taken 10-20 minutes with mono.
Unfortunately, with IL2CPP and closed source, I can't read any of the methods I'm calling, so I can't know what side effects are possible. I can't in good conscience release a mod with unknown side effects.

distant cedar
valid merlin
distant cedar
#

I think cheat engine does some light attempts at decompiling, or alteast has features for that

valid merlin
#

Reiterating the importance of this, it's the difference between a handful of modders upkeeping simple mods and dozens of modders producing hundreds with varying complexity

neat magnet
#

We talked about it right after ending stream, just for you guys 🙏
Don't expect any access to a Mono build.

#

We're not making modding the easiest thing in the world yes, but hopefully people still feel the passion to give it a go anyway

plush fractal
#

We can work with what we got 👍

valid merlin
mellow otter
#

i dont think you understand that this is not about passion or "just being harder" lmao

valid merlin
rich oyster
#

Please don't @ every single dev

olive gyro
crisp phoenix
#

Aww man

crisp phoenix
#

Honestly though, if modders cant know what a mod changes about a certain method it seems pretty unsafe in principle

olive gyro
#

If a mono branch is too much effort, could we have access to a copy of the csharp source files? The mods would still run in the compiled IL2CPP environment, but we would be able to confirm what methods we're calling and it would allow us to guarantee the safety of the mods we release.
It would also have the side effect of significantly reducing mod development time and effort, and providing you with clear and concise bug reports with exact line numbers.

mellow otter
#

a dysfunctional mono repo would be no effort and help greatly

rustic sierra
#

oh shit, that just reminded me that i still have all of the files from making mods on the closed beta when it was mono. Im not going to share them just yet since it likely contains some leaks and also its still like the devs property to say if i can release it or not. But if a devs clears it i would be happy to share

#

idk how i hadnt realised that, when they switched to il2cpp my brain just decided that it all never existed lol

hidden harness
#

At this stage we will have to say no to any type of source code access or any effort on our side to make modding easier until quite some time in the future.
We are improving the game at such a rapid pace and we have such a large amount of requests and needs to stabilize the game that this would be a significant overhead for us. Remember: we are five programmers on the project in -total- (yes that means everything from backend, engine, networking, gameplay, UI etc. A few hours of extra time or even setting up an automated environment and maintaining it to help you, has a significant impact on our own schedules. (yes, "only a few hours here and there" actually has a big impact).

When I started out some 25 years ago I was a modder myself and I loved being part of such community, so I can appreciate the desire and I would love to make this happen. However I'll have to ask you to let us focus on the core game for quite some time until we feel we are reaching a point where we can take on extra things. Realistically that is quite far in the future, just so you know.

In the meantime, feel free to hack the game to pieces and collaborate in any way to want to improve the experience or play around with things. Regarding your files from the closed beta @rustic sierra I'll have to ask @drifting heath whether he feels that's a good/safe thing to share. 🙂

rustic sierra
valid merlin
hidden harness
#

At this point we need to 110% focus on releasing this game in as a stable state as humanly possible, and then maintain the project for a while before we even discuss it. Like I said, every hour counts at this point.

rich oyster
#

We've had our answer for days now. Continuing to ask about it is not going to help anyone. When the time is right, maybe we can ask again, but that time is not now. And that time is not any time soon either. I think we can consider this topic closed.

Thank you devs for understanding our passion for your game!

olive gyro
#

If you do allow @rustic sierra to send the Jump Ship mono files to me it would be really helpful.

I've made a few mods so far, but I'm really limited by the tools I'm using. Many of the compiled functions can't be traced back to their callers.

I'm currently trying to modify the airlock timings. I've found the functions that open and close the airlock doors client side, but I don't know what function calls it, so I can't synchronise it to other players.

I suspect that most of the answers I'm looking for would exist in the mono files, even if they are many versions out of date.

crisp phoenix
olive gyro
#

Almost. GraciusCub5622 already has the old mono files. All the devs would need to do is say yes.

Every mod I've made so far has been effectively a duplicate of a mod I've made for Void Crew. The Void Crew mods took 1-10 minutes each to make. The Jump Ship versions have been taking 1-4 days of continuous work each.
The difference even an old version would make is enormous.

rich oyster
#

As nice as it would be, I think it's pretty safe to assume the answer is no. While in theory yes they don't need to do anything other than saying "yes" even that could cost time and resources. not to mention it's for a version of the game that's under NDA. They have been very clear on their stance:

Do whatever you want, but don't ask devs for anything.

autumn tinsel
# hidden harness At this stage we will have to say no to any type of source code access or any ef...

not asking for any help or resources for modding, but myself and @floral prairie have found that the most recent builds of Jump Space today have hard crashes when using a mod loader. These crashes seem random, but happen when the game is doing something memory intensive. Wondering if this is due to the memory leak fixes from todays patches, and also worried this may be early warning to futher non-modding hard crashes: https://discord.com/channels/617783429446238266/1420616950744350720 and https://discord.com/channels/617783429446238266/1420593297126195291 both are hard crash reports also from today.

olive gyro
#

I can confirm, the game crashes very often with MelonLoader only (no mods) after the last update, stable before.

floral prairie
#

yeah melon loader 6 different versions all crashed no mods installed

mellow otter
#

it was fine for me with bepinex + unit explorer ~7h before you posted it but my session did crash to main menu, tho it was fine for me for a few runs before that

olive gyro
#

@drifting heath Now that the game is out of the demo stage, would it be possible to take another look at this? #1380441417536770069 message

If you can grant Groove (Gracious) permission to send old game files to the modding community, it could speed up mod development times by around 20000%. It would not give us the ability to do anything we can't already do, it would just make it much easier and faster to prototype mods.

I have been working on my latest mod for almost a month. It's currently 14 lines of code (+ boilerplate) and doesn't work in multiplayer yet. With access to the old mono files, I could make mods of similar complexity in under 3 hours.

If you are willing to provide updated mono files that would be amazing, but I understand that it would take extra time away from developing the game.

hidden harness
#

We are knee deep in fixing memory leaks and crashes for Xbox. We don’t have time for anything else at this stage.