Space Engineers

Space Engineers

Not enough ratings
How to add progression into your mods for Space Engineers
By nukeguard and 1 collaborators
In this guide I will describe and show you how to add your mod blocks into the progression tree, create new groups, and rearrange block orders. This guide shouldn't be too long as I am assuming that you have already created a mod and are looking to add progression research to your mods.
   
Award
Favorite
Favorited
Unfavorite
Definitions of Research Groups and Research Blocks
The research groups define what blocks are included in a group for a block to be unlocked. The research blocks are a block or blocks that are unlocked by building one of the blocks in a research group.

If you only have a single block you want in the tree, you do not need a research group, only a research block section to define what Keen group you want your block to show up under.

If you have multiple blocks and want them nested you will need to create groups for them, and each group will need a unique id either a number or a name.

The last group in your chain or branch does not need a group defined as it does not need to unlock another block after it.

Research Groups
Apologies in the video I said Advanced door, and showed airtight door, advanced door is correct.

Research Groups are the groups that are set as blocks to be used to unlock other blocks, this is an example of groups for the nanite control facility mod. One of the devs pointed out that the groups don't have to be numerical, and could be characters, so I went with naming my groups to make it easier to set things up properly. You can add this code into your cubeblocks or a separate file. If you separate into a separate file, don't forget the other tags.
<?xml version="1.0" encoding="utf-8"?> <Definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">[all research stuff goes here] </Definitions>

Research Groups:

<ResearchGroups> <ResearchGroup xsi:type="ResearchGroup"> <Id Type="MyObjectBuilder_ResearchGroupDefinition" Subtype="NaniteController" /> <Members> <BlockId Type="MyObjectBuilder_ShipWelder" Subtype="LargeNaniteControlFacility" /> </Members> </ResearchGroup> <ResearchGroup> <Id Type="MyObjectBuilder_ResearchGroupDefinition" Subtype="JumpDrivePlaceholder" /> <Members> <BlockId Type="MyObjectBuilder_JumpDrive" Subtype="LargeJumpDrive" /> <BlockId Type="MyObjectBuilder_VirtualMass" Subtype="VirtualMassLarge" /> <BlockId Type="MyObjectBuilder_SpaceBall" Subtype="SpaceBallLarge" /> <BlockId Type="MyObjectBuilder_VirtualMass" Subtype="VirtualMassSmall" /> <BlockId Type="MyObjectBuilder_SpaceBall" Subtype="SpaceBallSmall" /> </Members> </ResearchGroup> </ResearchGroups>

In that example you will see two groups: NaniteController and JumpDrivePlaceholder. The last one is there to set the nanite factory to be unlocked after the jumpdrive is unlocked if it is not there and linked to the first mod block you will get what is below, or your block will be at the root level. You also don't need a group set for the last blocks in the tree as they are not set to unlock any blocks.(in this case the upgrade modules and beacons for nanites)


and this one shows the main block in the mod set to unlock after jumpdrive.
Take note that in the above code the BlockId has to reflect what type of block your modded block is, if your block doesn't show up where it should be, then you may have the wrong objectbuilder.

The next section will explain how to assign those groups you created from this section and get your blocks to unlock on the right blocks.
Research Blocks
The research blocks tags work a little differently than the research group tags, the research blocks have to be separated by each individual block in your mod, you can't group them together, it will only lock the first block in the list if you do it that way. This is the correct way to arrange the blocks in your mod to unlock in a certain order.

This is only some of the blocks in the nanite mod, but illustrates the correct way to arrange your blocks and unlock groups.

<ResearchBlocks> <ResearchBlock xsi:type="ResearchBlock"> <Id Type="MyObjectBuilder_ShipWelder" Subtype="LargeNaniteControlFacility" /> <UnlockedByGroups>
build jumpdrive,mass,ball to unlock above subtype
<GroupSubtype>JumpDrivePlaceholder</GroupSubtype> </UnlockedByGroups> </ResearchBlock> <ResearchBlock xsi:type="ResearchBlock"> <Id Type="MyObjectBuilder_UpgradeModule" Subtype="LargeNaniteBeaconDeconstruct" /> <UnlockedByGroups>
build the facility to unlock above subtype
<GroupSubtype>NaniteController</GroupSubtype> </UnlockedByGroups> </ResearchBlock> <ResearchBlock xsi:type="ResearchBlock"> <Id Type="MyObjectBuilder_UpgradeModule" Subtype="LargeNaniteBeaconConstruct" /> <UnlockedByGroups>
build the facility to unlock above subtype
<GroupSubtype>NaniteController</GroupSubtype> </UnlockedByGroups> </ResearchBlock> <ResearchBlock xsi:type="ResearchBlock"> <Id Type="MyObjectBuilder_UpgradeModule" Subtype="LargeNaniteBeaconProjection" /> <UnlockedByGroups>
build the facility to unlock above subtype
<GroupSubtype>NaniteController</GroupSubtype> </UnlockedByGroups> </ResearchBlock> ... </ResearchBlocks>

You can either use any of the numbers from keens ResearchBlocks.sbc file to set where your blocks show up in the progression tree or create your own groups with either number values or names, I would suggest names to help with lessening the confusion.


To assign a group of blocks (like the group from previous section [JumpDrivePlaceholder]) that group name goes into the <UnlockedByGroup> section, this can also be numbers like what Keen used to define their groups by.

For the nanite mod I have the JumpDrivePlaceholder group that has to be built for the Nanite Control Facility to be unlocked, and then the NaniteController group that needs to be built to unlock the rest of the nanite blocks.

Visual Aid
Building any of the three blocks (jumpdrive, spaceball, or arificial mass) unlocks the Nanite Control Facility

Build the nanite facility and the rest of the blocks unlock with this set.


3 Comments
xXSEWXx 28 Jan, 2021 @ 5:11am 
Hi!
@Geneticus, did you manage to find out to remove a specific block from the progression tree? :)
ETHREAL1 11 Mar, 2019 @ 12:10am 
PLEASE! make a guide on how to make weapon mods, all i want to do is make a rifle and turrets that use gravel and energy as ammo.... like same model as the default weapons, want this for early game after the survival update so i can things like wolfs on and not worry to much about ammo
Geneticus  [author] 2 Mar, 2019 @ 10:55pm 
But how do you remove one? Enabled="false" doesn't work :(

<ResearchBlock xsi:type="ResearchBlock" Enabled="false" >
<Id Type="MyObjectBuilder_BatteryBlock" Subtype="LargeBlockBatteryBlock" Enabled="false" />
<UnlockedByGroups Enabled="false">
<GroupSubtype Enabled="false" >0</GroupSubtype>
</UnlockedByGroups>
</ResearchBlock>