03. Best Practices - NellsRelo/OMD3-uSDK GitHub Wiki

Best Practices

uSDK Best Practices

Best practices for working with the uSDK haven't been firmly established yet, however there are two things to keep in mind relating to locations:

Custom Maps

Vanilla maps fall under a particular File structure: Content/Maps/Category/MapFileName/MapFileName.umap

Category typically corresponds to which campaign the map is a part of, though it also includes cinematic maps, as well as an "Other" folder for the endless-only maps.

The best practice here is to replicate said file structure for custom maps, with some differences: Content/Maps/CustomMaps/AuthorName/MapFileName/MapFileName.umap

CustomMaps/ is a preset folder the uSDK has supplied, the idea being that an extra layer specific to custom maps will keep things better organized. As you add more maps, the Maps folder could get pretty crowded. Category/ has been replaced with AuthorName. An alternative would be BundleName if you're bundling together multiple maps. This, admittedly, has little benefit, but prolific map modders, as well as those who want to collaborate, may find this to be a good idea.

BP Mods

Blueprint mods should go under the Content/Mods/ModName folder. This is so that UnrealModLoader can see them. It's important to note that ModName should be whatever you will call your eventual .pak file.

Modding Best Practices

Leaderboard Management

TODO: Upload Tipping the Scales version of the Score fixer Any mod that affects the balance of the game to allow higher scores must disable scores on enemy kills. In the future, we may find a way to disable transmitting scores to the leaderboard, but for now, the way to handle this would be to go to Unpacked\Uassets\OMD\Content\Data\AICharacterProtos.uasset (Located in pakchunk0), and for each individual enemy, update the ScoreOnDeath field to 0. This will make Robot Entertainment’s life easier, keeping them at peace with the existence of the modding community. There is a premade version of this file, based on the 8/11/21 Update, made by TimeMaster.

Unreleased/Blocked Content

No mod should be released to the public if it enables unreleased Weapons, Traps, Trinkets, or enemies, or opens up Pre-Order/DLC-specific items to people who don’t own the DLC.

Readme/Changelogs

Documenting changes and functionality is kind of important when it comes to making mods. This lets your users know what they’re getting into, and reminds you what you were doing. Every mod should at least have a readme.

Naming Conventions

Supplementary Text Files (Readmes, Changelogs)

Ex. ModName-TextFilePurpose.txt It’s ideal to make Readme file names descriptive, as most mods will have one.

Data Additions

Ex. CUL_PlaceOnCeilingSp Mod Initials, followed by an Underscore, followed by the data piece’s name . Mod Initials ensure that your piece of data will be less likely to collide with another mod or official update, and makes it clear whether an addition is custom or was always there.

Mod .paks

PriorityNumber-ModName_P.pak (ex. 500-OMD2StyleOrcs_P.pak) Lower numbers cause a mod to load first. Higher numbers will override lower numbers. This can cause you to accidentally overwrite another mod’s changes if they touch the same file or object. Ending with _P denotes the mod as a patch, ensuring that the game knows to load it.