Jump to content

bbepis

Members
  • Posts

    16
  • Joined

  • Last visited

Everything posted by bbepis

  1. I've noticed some people respond better to video tutorials so I made one. https://streamable.com/rxxfqu That details the installation of the two modloaders together. Your BepInEx mods get extracted into "BepInEx\plugins", while SpaceWarp mods get extracted into "SpaceWarp\Mods"`
  2. From the way I see it that's not how they're intentionally going about it. IG wants to have an explicit modding interface that you use when making addons; see KSP.Sim.impl.lua.SpaceSimulationLua and KSP.Modding.ModAPIv_0_0_1_1.
  3. Here's a practical counterpoint. Say that IG did spend the next 6 months releasing the very first version of their official mod loader & in-game modding API. What do you do if that API doesn't contain everything you need to get started? Do you wait an additional arbitrary amount of time hoping that they add the obscure piece of data / function that you need to perform the work you want to do? Or do you unofficially grab / manipulate that through unoffiical channels (i.e. private / reflected classes), going against the rationale listed in the OP? It is placing undue responsibility on the dev team to support things that they cannot possibly forsee and respond to instantly. If I wanted a new feature in the API, am I forced to hope that the dev team stays constantly 100% in tune with the modding community and can get every feature request out in a timely fashion? You certainly wouldn't be able to contribute to the codebase and add that functionality to the API yourself What happens if the dev team decides to rework the API, because of internal refactoring or if they decide they don't like the structure of the current API version? What if they deprecate and remove older versions, making older plugins not work anymore? You have seen several implementations of community maintained modding APIs that take the games volatile internals and presents them in an abstracted way the community can use without fear of anything breaking. If the dev team already has an absolute mountain of work on their plate, do you wish to add to that? Or have a solution where literally every modder can contribute to to get the wheels rolling again?
  4. That's probably because SpaceWarp has changed dramatically since I uploaded the loader plugin. You'd want to use the BepInEx build of Spacewarp instead, since that's kept up to date by the devs of the loader
  5. Yes, BepInEx supports live code / assembly reloading plus other things, like supporting dnSpy hooks to allow live VS-like debugging Stuff like the latter is straight up not possible with an official mod loader because it requires tight lowlevel integration with Unity that the game will not officially be able to support
  6. Not really a perfect indicator considering the install instructions for BepInEx tell you to download from Github...
  7. Is there specific functionality you'd want to see in a KSP-targeted plugin? I've looked through the SpaceWarp source and the only KSP specific code I can see is adding hooks into the loading screen for performing mod loading, an in-game UI to see which mods have been loaded, and making every plugin a KerbalMonoBehaviour (as opposed to a regular MonoBehaviour, but it doesn't add anything you can't access through a singleton)
  8. I'll see what I can do. I'm aware but are you able to add mods to the game right now through any official method?
  9. Well you never know. There's been a few games before where they've decided against making their own modding platform and supported BepInEx officially instead
  10. It's available here as linked in the OP
  11. CustomFlagLoader LGPL v2.1 Screenshots: Download Source Installation instructions: Install BepInEx Download & extract the mod over the top of the BepInEx install Place your custom flags (.png files) inside of a new folder "Kerbal Space Program 2\flags". The plugin will create the folder for you on launch if it doesn't exist The flags can be any size; they will be stretched accordingly.
  12. The entire point of making mods is to add functionality to a game that the developers themselves didn't add. If that includes the ability to load the mods in the first place then so be it But by waiting for the official implementation to come along you're binding yourself to Private Division's timeline, which could be a month or several years away depending on how they're feeling. We waited a long time for career mode to come out in KSP 1, but that didn't stop people from making their own mods to simulate it in the meantime. We never recieved the full resource mining workflow but we ended up making mods that filled in that gap The pessimist in me says that a lot of devs these days rely on mods to complete the game for them, but the end result is the same. If the game hasn't added something the way you wanted or in the timeframe you want, the most effective way to fix that is to do it yourself.
  13. I've had a look at the game's internals and there seem to be four types of mods planned: Content C# mods Lua mods "Shakesphere" (which I'm presuming to be contract mods) But it seems very incomplete, as it's unable to do any sort of loading at all and lacks a lot of things like handling mod dependencies. The only way you can do modding right now is if you use a generic tool that allows mods to be loaded into Unity games
  14. I had a thread deleted from the KSP 2 mod releases sub forum. Why?
  15. BepInEx for KSP 2 https://github.com/BepInEx/BepInEx LGPL v2.1 Sourcecode What is BepInEx? BepInEx is a tool used to allow modding / custom code execution in Unity and other C# based games. As of writing KSP 2 does not support loading arbitrary mods, so the only way to run addons & load assets is through this loader. Harmony and MonoMod.RuntimeDetour are packaged with this loader, allowing you to modify game code & functions at runtime. BepInEx uses "plugin" to refer to the equivalent of Addons in KSP. Additional features as compared to KSP 1 style modding Ability to modify .dll files before they are loaded, which allows for modifications not possible with Harmony. Editing enums, patching static constructors, adding entirely new types to a specific assembly, immune to JIT inlining etc. Much earlier code execution meaning that you are able to modify the game (and Unity itself) before it even starts loading External console & logging so that you don't have to scour game logs for any info / error output Fixes certain issues with Unity operating on platforms other than Windows Includes dependency handling to ensure mods that rely on other mods are loaded in the correct order, or not at all if prerequistes are missing Has a consistent way of reading / writing / manipulating configuration per plugin Contains base libraries (such as Harmony) to prevent conflicts with mods providing their own, differing versions Other features Immune to being uninstalled by game updates; no files are replaced Supports Windows, Linux and Mac OSX Has dev tools that you can use to assist in plugin development i.e. being able to reload plugins while the game is running, a UI to examine the entire loaded scene etc. Getting started For Windows: Download the latest version of BepinEx v5 x64 from here (make sure not to get v6, as it has a different API contract and doesn't properly support KSP 2 yet) Extract the folder such that your game looks like this: You are done! If you get stuck with the installation process, please refer to the documentation: https://docs.bepinex.dev/articles/user_guide/installation/index.html For Linux/Unix/OSX: It is more or less the same process, with some minor differences. Refer to the above documentation Installing plugins To install plugins, place them inside of your BepInEx/plugins folder. (This directory might not exist for you; launch the game once to have BepInEx generate its folder structure) While it's possible to place every .dll file in any place in BepInEx/plugins, it's strongly recommended that you have one folder per mod to make it significantly easier to manage updates and uninstallation. Creating BepInEx plugins A guide exists here for writing your first BepInEx plugin: https://docs.bepinex.dev/articles/dev_guide/plugin_tutorial/index.html As reference here is a pre-made C# project for an example plugin that does two things: Creates an in-game notification when you press F2 Changes all of the translatable strings in the game to "Chungus" on pressing F3
×
×
  • Create New...