Skip to content

gold-meridian/tml-build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tml-build

tModLoader mod development toolkit (SDK).

tml-build encompasses a CLI tool and MSBuild SDK which enable you to quickly and easily develop tModLoader mods.

It reimplements the entire build toolchain, allowing for strong control over how your mod is built and packaged, as well as what tML version your mod targets.

features

See: FEATURES.md.


There are a lot, but here's a quick rundown (unchecked items are not yet implemented):

  • no need to place the mod in ModSources, it can resolve tModLoader from anywhere,
  • easy tModLoader version referencing/switching,
    • reference locally-installed steam or dev version, as well as stable, preview, or a custom version (x.y.z.w),
  • .tmod archive packaging on build,
    • configurable packing and compression,
    • configurable handling of image file formats (.rawimg vs PNG),
  • sophisticated launch profile generation,
    • runs tModLoader through a program in charge of wrapping it and patching it for development use (see more in FEATURES.md),
  • built-in support for access transformers,
  • optional support for the proposed TOML rework to build.txt,
  • much easier CI integration (no more boilerplate setup; the build system installs tML for you),
  • easily supports NuGet dependencies without needing to copy references yourself,
  • easily reference existing mods in your project by including their workshop IDs,
  • type-safe references to all sorts of assets,
    • images,
    • sounds,
    • shaders (effects),
    • and localization,
  • and more!

how do I use this?

It's a one-line change in your .csproj:

-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Tomat.Terraria.ModLoader.Sdk/1.0.9">

It's that simple; base configuration uses sane defaults that replicate tML.

With this change, you should be good to remove all of tMod's default configuration values as well.

license

Source code is licensed under AGPL 3.0; your projects do not need to be under the same license to use this package (unless you replicate code). See LICENSE for more details.

Languages