Mod compatibility guide
This page is intended for other mod makers.
Space Exploration is a challenge and gameplay mod. The first question to be asked is not "how" to make a mod compatible but "should" these mods be compatible. If the other mod is going in a different direction it is better to mark them as incompatible.
If a mod ruins the Space Exploration gameplay experience then it will be marked as incompatible. There have been too many cases where people have gone 50 hours into a game only to find out that they can't progress properly but removing it forces them to start again.
Bad timing / moving target
SE is (at the time of writing) about 2/3 done. If you are working on compatibility now then you should expect stuff to break a lot over the next year.
Do not make your mod require the Space Exploration Postprocess mod, that mod needs to be last in the load order. Put the main space exploration core mod as the dependency or optional dependency. If you make the Postprocess mod a dependency then your mod will be made incompatibile. If you need to change some things that the postprocess mod is doing then I can arrange for a function in your mod to be called as part of the postprocess however this function must be used responsibly.
Don't remove the vanilla spawners it will break some secret content. Don't remove space exploration structures, it will break ruins generation. Best to avoid removing technologies too. Removing recipes may stop some ruins from working correclty but that's not so bad.
All resources need to have autoplace controls. This is how their abundance on different surfaces are handled.
Some planets are specifically waterless, try to make sure there is no way to get water there other than importing it.
Satellite rocket launch is shortly after chemical science. This is still considered early game. Do not try to force the satellite launch to be an end-game event or have the construction require end-game components. If you have additional tiers of machines beyond vanilla, they should be distributed through the specialist sciences (astro/bio/materia/energy) T1-4 and deep space sciences T1-4. E.g. chemical plant tiers in Bio science T2 and T2. Assembling machine tiers in Material science T2 and T4. Mk4 power armor in Deep space science T2.
New science packs
If you have new science packs it is likely that they will need to be nested somewhere in the SE tech tree, for example the K2 Matter tech card is between tiers of the Deep space science pack.
Don't make an energy generation system that is the best option in all situations. In SE some areas have good solar but no water or fuel (solar is best). Some areas have fuel but no solar and no water (Fuel burners are best). Some areas have no fuel or solar but do have water (nuclear becomes best). Try to make sure there is no universal best option.
Generators are capped at 100% efficiency. If you have generator tiers then you should start efficiency at some lower value so the progression is something like 80%/90%/100%.
Item density / stack sizes
SE has an effective cost per stack when moving items between surfaces. If you increase stack sizes you are reducing cost per item, so try to stay close to vanilla stack sizes, otherwise logistic costs would need to be increased accordingly.
Any item teleportation mechanics should be locked to after the SE teleportation technology. If there is player but not player inventory teleportation like “jump clones” they can be part of bio science.
Do not allow productivity modules in space for anything other than mining and science labs. This helps heavily incentivise doing resource processing and manufacturing on the ground, otherwise the game will devolve into planets only being mining outposts and all processing in space.
Please avoid changing the energy value, stack energy density, and effective cost to produce rocket fuel, as a lot of SE energy costs are based around rocket fuel use and transportation.
SE makes collision_mask_util_extended available globally in the data phase. You can get new names collision masks from it such as vehicle-layer, flying-layer, projectile-layer, space-tile, etc. This extension has its own documentation.
SE uses a different resource distribution system that is less distance dependant (otherwise people just settle on planet edges). Control them with se_resources (see data.lua).
Control core fragments using se_core_fragment_resources (see data.lua).
Exclude things from procedural tech changes using se_prodecural_tech_exclusions (see data.lua).
Allow structures in space using se_allow_in_space = true on the prototype.
Add resources (NOT intermediate products) to delivery cannons using se_delivery_cannon_recipes. Electronics and other non-homogenous things should NOT be added. (see data.lua).
Large-scale weapons can be “delivered” to other planets using weapons delivery cannons. se_delivery_cannon_recipes (see data.lua).
There are a lot of remote interfaces for scripting in scripts/remote-interface.lua.
If you need additional remote interfaces ask Earendel on discord.