Campaign Pack – Unity editor tools#3
Open
EwyBoy wants to merge 19 commits into
Open
Conversation
…ckExtension classes
… set, and science set
EwyBoy
marked this pull request as ready for review
May 31, 2026 20:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Campaign Packs could become the clean way to bundle a “way to play” without forcing every mod to own the whole game setup.
A pack can point at a galaxy, tech tree set, mission set, and science set, while extensions let other mods add or remove content without having to copy the whole thing. So one mod could add a planet pack, another could add missions for it, another could rebalance the tech tree, and they can all layer onto the same campaign setup instead of creating a bunch of incompatible forks.
For players, this could just become a simple choice when starting a save: stock-style Redux campaign, KSP1-inspired progression, a planet-pack campaign, a hard-mode career, a science-only setup, etc.
For modders, the main benefit is that they can make focused content. They do not need to rebuild a full campaign definition just to add five missions or a few tech nodes. They can create a small extension that targets an existing pack or set, and the system resolves the final playable campaign from all the pieces.
Summary
This PR adds an editor-authoring-only campaign pack data model and Unity Editor workflow. The goal is to let us iterate on the data shape without touching runtime campaign loading yet.
For now,
.assetfiles are the source of truth while modders are building and testing. Once the structure settles, we can bake these assets out to JSON for runtime and Patch Manager integration.Authoring Model
The current model is split into a few separate authoring assets:
CampaignPackTechTreeSetMissionSetScienceSetCampaignPackExtensionWhy This Is Split Up
The main reason for splitting the model this way is to avoid tying planet packs, missions, tech trees, and science content too tightly together.
A campaign can reuse the same galaxy while swapping in a different mission set or tech tree. Other mods can also extend existing packs/sets instead of creating a whole matrix of duplicate campaign definitions.
Editor Workflow
For testing and iteration, this PR adds Unity Editor UI around the new model:
Assets/Redux SDKModding/Campaign Packs/Browserbase pack + extensions - removalsResolver Behavior
The resolver currently applies content in this order:
This means removals win if something is both added and removed.
Validation
Validation currently checks for things like:
This does not hook into actual campaign loading yet.
But I got a PR for the PatchManager to be able to load the addressable baked files here: KSP2Community/PatchManager#50
This PR is only the high-level authoring model and editor workflow so we can experiment with the structure, see how modders would interact with it, and avoid locking ourselves into runtime behavior too early.