Space Engineers

Space Engineers

153 ratings
Research System Framework
   
Award
Favorite
Favorited
Unfavorite
Type: Mod
Mod category: Block, Script
File Size
Posted
Updated
137.452 KB
Dec 3, 2020 @ 11:17am
Jul 1, 2023 @ 8:10am
30 Change Notes ( view )

Subscribe to download
Research System Framework

Description


Last Updated July 1, 2023
Please refer to the changelog for patch notes.



Hello! This mod is a framework that allows other mods to manipulate the Research and Progression system. It is a replacement of sorts for Equinox's Extendable Research System mod. See below for instructions and available commands.




Add this mod to your savegame along with one or more mods that make use of it to manipulate the progression system. Below is a list of mods that use this framework; I'll try to keep it updated as mods are created / updated for it :)





For the Admins
There are a few commands you may find useful. Check them out, below!

All commands are prefaced with /progression

  • Unlock <schematicType> - temporarily unlocks the first block that contains <schematicType> in its block definition. Reload the client to revert changes.
  • UnlockAll <true/false> - unlocks all blocks for you to enable you to do your admin stuffs
    By default, this will be temporary and can be reverted by simply reloading the client. If you want to permanently unlock all blocks, add true to the end of the command (ie /progression unlockall true
  • FactionShare <true/false> - if no argument given, will toggle Faction Sharing on / off, otherwise sets Faction Sharing to whichever is given (true / false). When on, schematics found will unlock blocks for every member of the faction
  • ClearOnDeath <true/false> - if no argument given, will toggle Clear On Death on / off, otherwise sets Clear On Death to whichever is given (true / false). When on, dying results in loss of all found schematics
  • ResearchTimeModifier <decimal> - modifies the Research Time for all schematics by the given <decimal> (ie 0.5 will cut production times in half, 2 will double them)


Known Issues
As with any new script, there may still be bugs that weren't caught in testing. If you find one, please let me know so I can fix it! You can reach me on here or on Discord (jTurp#7926).

Log File Locations
  • Dedicated Server - will be found in the local storage and will be prefixed by the world save name
  • Local Game - will be found in the world storage folder





Overview
Want to add your own tech tree? You can do so by creating and adding an EntityComponents.SBC file to your mods Data folder.

Here is an example sbc file. You can copy the entire contents of the code section below into your sbc file to ensure it's in the proper format.
<?xml version="1.0"?> <Definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <EntityComponents> <EntityComponent xsi:type="MyObjectBuilder_InventoryComponentDefinition"> <Id> <TypeId>Inventory</TypeId> <SubtypeId>ProgressionFramework_YourUniqueIdentifierHere</SubtypeId> </Id> <Description> [?xml version="1.0" encoding="utf-16"?] [ResearchGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"] [AutoAdjustAssemblerEffiency]true[/autoadjustassemblereffiency] [ResearchGroup] [Item Type="MyObjectBuilder_Component" SubtypeId="AQD_Tech_LOC_A1" /] [BlockDefinitons] [OverwriteOthers]false[/overwriteothers] [Id Type="MyObjectBuilder_Wheel" SubtypeId="OffroadSmallWheel5x5" UseBlockVariantsGroup="false" /] [Id Type="MyObjectBuilder_Wheel" SubtypeId="OffroadSmallRealWheel5x5mirrored" UseBlockVariantsGroup="false" /] [/blockdefinitons] [/researchgroup] [/researchgroups] </Description> </EntityComponent> </EntityComponents> </Definitions>

Things you need to change

NOTE: You may notice that the inner xml uses brackets ( [ and ] ) - this is required! If you attempt to nest actual xml in the Description field, the game will fail to parse your sbc and it will not be loaded.
  • <SubtypeId> - This MUST start with "ProgressionFramework" in order for the framework to find it. In addition, each Entity Component must have a unique subtype, so you need to add some info to it so it doesn't conflict with other mods
    • Example: <SubtypeId>ProgressionFramework_YourModName</SubtypeId>
  • AutoAdjustAssemblerEffiency - Set this to true and your recipes will be made static (efficiency setting won't matter)
  • The meat and potatoes of your tech tree will go in the <Description> field of the xml. Here's a breakdown of what that looks like:
    • ResearchGroups - this section contains all of your individual research groups
    • ResearchGroup - each of these groups contains an Item that when picked up will unlock one or more blocks for a player. This item can be any physical item that can be created via a blueprint.
    • BlockDefinitions - this section holds the block definition(s) that will be unlocked when the player picks up the designated Item. You can set UseBlockVariantsGroup to true and the framework will unlock all blocks in the listed block's variant group, which can be useful if you don't want to list them all out individually
    • OverwriteOthers - if this is set to true, other research groups (added by any mod) that reference the same Item will be overwritten with the given settings. If multiple groups with the same Item have this flag set, the last group processed will be used


This mod creates an xml file with the suffix _BlockInfo.xml in the same location as the server log file (see Log File Location above). In the file you'll find a list of all blocks in the world, already formatted for insertion into a ResearchGroup. Simply copy / paste the line(s) you want into the BlockDefinitions section of a research group and you're good to go!
48 Comments
jTurp  [author] May 20, 2024 @ 5:44pm 
@Tokin Reaper

Yes, this is still a valid framework. I would recommend checking out the AQD Research mod before you try to build something from scratch - it has a way to build a custom tech tree (and uses this mod on the backend)
Tokin Reaper May 11, 2024 @ 8:34pm 
Is this mod still available/able to be used with the current version of the game? I'm working on revamping a server, and doing research into a list of mods that our group could use.

Having a true progression tree with research requirements, coupled with custom ores/components is on the list of wants.

Thank you in advance!
jTurp  [author] Dec 10, 2022 @ 7:19am 
@Ugga

Yeah, I think there's a bug with that option that I haven't gotten around to fixing yet. Apparently the PlayerRespawned event fires even for initial spawn.. which is counterintuitive. I'm going to have to add a check for how many times a player has spawned and only clear the settings if the count isn't zero.
Ugga Dec 8, 2022 @ 1:39pm 
@jTurp @enenra Hi! Your research mod is the best of them all. Great job.
Is it possible to do something so that the option
<ClearOnDeath>true</ClearOnDeath>
on a Dedicated Server did not reset all technologies on any re-attachment to the server?
Ugga Oct 27, 2022 @ 11:58am 
Yes. Two mods having an entry for the same thing get combined in the settings.
Cannot change AQD - Armor Expansion mod.
Unfortunately I can't provide a world for testing. Already fixed the problem in my tests.
Temporarily inserted AQD - Armor Expansion mod into my test Research mod.
There is a table https://docs.google.com/spreadsheets/d/1O6Ce6kHtIyIIVsOTWFy1OEnSve0L_FviFCFYZ-U5k6w/edit#gid=0
AQD_Tech_ARM_F1 is merged with AQD_Tech_ARM_A1
AQD_Tech_ARM_F2 is ok
jTurp  [author] Oct 27, 2022 @ 10:40am 
Please provide your world for testing if so, and I'll see what happens with them :)
jTurp  [author] Oct 27, 2022 @ 10:40am 
@Ugga

Not sure what you mean. OverwriteOthers simply overwrites the entry in the dictionary I keep, which is what I use to do the unlocking and such.

Are you saying that two mods having an entry for the same thing get combined in the settings?
Ugga Oct 27, 2022 @ 10:37am 
@jTurp @enenra [OverwriteOthers]true[/overwriteothers] does not work
When the SubtypeId matches, the SubtypeId of the two mods is merged.
Chuckination Aug 27, 2022 @ 10:14pm 
After lots of looking into this, and despite how cool of a system this is, I don't think it's within my capacity to figure out how to do Nexus support either at this time. Really cool work, though, and I do have some ideas down the road that may work with this.
jTurp  [author] Aug 22, 2022 @ 12:35pm 
I do not plan to support Nexus development. A plugin can sync the info without altering this mod.