Skip to content

Releases: cmkushnir/NMSModBuilder

4.3.0.0

13 Oct 00:09
a9451f3
Compare
Choose a tag to compare
  • update:
    • libmbin 4.3.0.2
  • change:
    • cmk.NMS.Script.GetLanguage*() and SetLanguage*() methods reworked to avoid pulling
      language mbin's into mod DataCache unless they are going to be updated.
    • Scripts/Mod/cmk/Lang_All_English.cs rewritten to use updated|new language methods.
    • cmk.NMS.PAK.File.Builder now breaks save and compress loop into two loops.
      The save loop saves each item and logs any unedited items,
      the compress loop compresses edited items and adds them to the mod pak stream.
      This should help identify long builds due to many unedited items in DataCache;
      scripts should be reworked to avoid those cases.

See change.log for notes on new|updated language methods.

4.0.0.2

11 Oct 02:49
c273de3
Compare
Choose a tag to compare
4.0.0.2 Pre-release
Pre-release
  • fix:
    • cmk.NMS.Game.Language.Collection.FindLanguageInfo was taking a language id arg that
      was always null, resulting in it always returning the info for the current language.
      The method does not need an arg, it should always use the Collection Identifier.
  • update:
    • cmk mod script Lang_All_English. added Cancel checks, added ProgressReport calls,
      new optimized method that uses new GetLanguage mod script method.
      note: ProgressReport report updates both Script tab and Build tab toolbars.
    • GitHub Octokit NuGet package from 3.0.0 to 4.0.0.
  • change:
    • rename util script Global LangId to LanguageId (to be consistant w/ code).
    • rename cmk.NMS.Script.GetLanguageGamePrefixes to GetGameLanguagePrefixes.
    • rename cmk.NMS.Script.GetLanguageAddedPrefixes to GetAddedLanguagePrefixes.
    • GetLanguageData loops through all GetLanguagePrefixes in parallel to look for ID.
    • GitHub Octokit extensions to replace deprecated methods.
  • add:
    • List cmk.NMS.Script.GetLanguage( NMS.Game.Language.Identifier IDENTIFIER )
      to get a sorted list snapshot of all ID's for IDENTIFIER, including any cached and|or
      new ID's in from new prefixes. List sorted on TkLocalisationEntry.Id using string.Compare.
    • cmk.NMS.Script.GetLanguagePrefixes to get currently cached prefixes.
    • cmk.NMS.Script.GetLanguageEntry like GetLanguageData but returns cached TkLocalisationEntry.
    • progress report textbox to Build tab.
  • notes:
    • if doing infrequent language changes (< 10,000) then can just use SetLanguageText,
      if doing a lot then use GetLanguage, Bsearch, Ref to find and change entries.
    • libmbin 4.0.0.2.

4.0.0.1

09 Oct 00:32
c273de3
Compare
Choose a tag to compare
4.0.0.1 Pre-release
Pre-release
  • add:
    • string cmk.NMS.PAK.SPV.Data.Main( Log LOG = null ) method to return "void main() { ... }"
    • string cmk.NMS.PAK.SPV.Data.Main( string MAIN, bool UPDATE = true, Log LOG = null )
      method to search and replace "void main() { ... }" with MAIN.
      Returns updated full shader text. If UPDATE == true then update SPV.Data.Text,
      else just applies update to a temp copy that is returned. SPV.Data.Text is what
      will get converted back to the spv binary on Save, this does not Save.
    • Shader_Replace cmk mod script to test cmk.NMS.PAK.SPV.Data.Main methods
      and demonstrate their use. Makes a trivial change in a shader that can then be
      viewed in PAK Item tab when viewing the generated mod pak shader diff.

4.0.0.0

08 Oct 02:46
aaef956
Compare
Choose a tag to compare
4.0.0.0 Pre-release
Pre-release
  • change:
    • enable code to convert glsl to spv in cmk.NMS.PAK.SPV.Data class.
      ShaderStages is set based on the name containing "COMP", "VERT", or "FRAG".
      Options are set to preserve debug info, but no MacroDefinition have been specified (any needed ?).
      experimental at this point, but does round-trip spv glsl text.
    • Text search tab uses cmk.NMS.PAK.SPV.RawToTextVeldridCompute and PAK Item view tab
      and scripts use cmk.NMS.PAK.SPV.RawToTextSpirvCross. This allows text search tab to use
      quick dll based decompile, while pak item tab and scripts use accurate spirv-cross.
      The differences are minor in the output, but enough to prevent Vedrid from recompiling its
      own output by default (possibly since game spv are 450 and Veldrid only outputs 430).
  • add:
    • spv specific syntax highlight rules based on csx rules.
      todo: tweak for glsl specific things.
    • cmk.NMS.PAK.SPV has new method SetMain(string) that will replace void main() { string }.
  • update:
    • mbinc field names e.g. Id to ID, TechType to Type, ...
    • scripts, focus on getting to compile and execute, not correctness
    • MS Roslyn NuGet package from 4.3.0 to 4.3.1.
    • libmbin.dll 4.0.0.2

3.99.1.8

24 Sep 19:01
aaef956
Compare
Choose a tag to compare
3.99.1.8 Pre-release
Pre-release

3.99.1.8

  • change:
    • wrap MessageBox.Show calls so they are executed from app MainWindow thread (ui),
      and use app MainWindow as owner (to prevent opening behind MainWindow).
    • add sleep call before deciding if need to delete associated mod script folder,
      hopefully this will allow external app saves to finish first.
    • add cancel option when prompted to save|move mod script folder on mod script delete,
      for cases where you know external app save takes a long time.
    • support for converting .spv to glsl (v 430) text using Veldrid.SPIRV,
      searching all 59223 spv's goes from 6 min (using spirv-cross.exe) to 35 sec (using Veldrid.SPIRV dll's).
  • add:
    • scripts can call ProgressReport(string) to update a toolbar TextBlock control.
      only query scripts can use in any meaningful way.
      see: new Search_SPV query script for example.
    • new toggle to search .SPV items in Text Search tab.
    • Veldrid.SPIRV NuGet package 1.0.15.

3.99.1.5

13 Sep 08:25
3316966
Compare
Choose a tag to compare
  • add:
    • mbin.pc search toggle added to text search tab.
      mbin.pc ebin's are only cachable if >= 32 GB of physical memory.
    • mbin and text (*.txt, *.?xml, *.json, *.vdf, *.bin) toggles added to text search tab.
    • support for viewing vdf items (value controller mappings ?)
  • fix:
    • cmk.NMS.Game.Items.Data con wasn't setting ItemType, so all substances and technologies
      were tagged as products (default value). would only affect scripts looking at ItemType.
    • new cache and mbin.pc button weren't disabled while search running, would hang if toggled while searching.
  • change:
    • mbin cache toggle button moved from app to text search tab.
    • prompt to delete existing mod toggle button moved from app to build tab.
    • search all scripts on update toggle button moved fom app to all script tabs,
      setting is now per script tab instead of applying to all script tabs.
    • since now showing technology requirements, have changed technology tab list to be virtual.
    • product and technology tab searches now include requirements (like recipe tabs)
      e.g. find all products that require 'star silk' to build.
    • sync'd logic between recipe and item tab searches,
      product and technology - searches id and name for item and all requirements,
      recipe - searches id and name for recipe and all requirements, and recipe type id and name
    • bin items now check if the data starts with "<!-" to see if they are xml
      vs other bin items that store actual binary data.
    • target|supported os from 10.0.22000.0 (Win11) to 10.0.19041.0 (Win10).
  • update:
    • Roslyn .NET compiler NuGet package from 4.2.0 to 4.3.0.
  • notes:
    • text search tab never searches "LANGUAGE/" mbin items, use language tab.
    • product and technology tabs now complex enough that scrolling through full lists
      may result in significant stuttering as ui elements get rebuilt,
      suggest filtering lists first.

3.99.1.7

19 Sep 17:55
3316966
Compare
Choose a tag to compare
3.99.1.7 Pre-release
Pre-release
  • fix:
    • FINALLY! binding anything from a AssemblyLoadContext Assembly, e.g. ModScript instances,
      to a WPF control seems to result in WPF pinning the Assembly (caches internally ?).
      changed Build tab to bind to list of new entry class instances instead of ModScript instances,
      this seems to allow mod assemblies to finally be released.
  • change:
    • remove all use of static's from included scripts i.e. util and mod,
      in an attempt to prevent pinning cmk mod assemblies in memory.
    • Mod<script_name>() renamed to Script<script_name>().
    • PlayAs<script_name>() renamed to Execute<script_name>();
    • Script<> and Execute<> can now be called for any (mod) script.
  • add:
    • ModClass class now has virtual void OnDispose() method that should be overridden
      in mod classes to unhook any events they may have hooked. Failing to do this
      may result in hook pinning the mod Assembly and preventing it from being unloaded.
      An example of this is in the cmk/(Configure) script.

3.99.1.4

01 Sep 10:44
3316966
Compare
Choose a tag to compare
3.99.1.4 Pre-release
Pre-release
  • fix:
    • replaced Lo2K and old NMS icons with new that has 256x256 -> 16x16 mipmaps.
  • change:
    • Target OS and Supported OS versions changed from 7 to 10.0.22000.0 in order to use UWP dll's.
    • detection of Game Pass no longer tries to read NMS.exe, instead gets game
      path and version from AppX|UWP|Game Pass API and uses cmkNMSReleases.txt date.
      modding Game Pass requires game to be moved to XboxGames folder via Xbox App,
      does not require changing any folder or file permissions.
  • add:
    • Format button to script toolbar.
    • .editorconfig file in app folder controls script Format options.
    • alt-h in TextViewer control will copy selected text as html fragment to clipboard.
    • alt-d in Script editor will copy selected text as cs ... fragment to clipboard
      for posting in Discord.
    • alt-f in Script editor will format script.
  • notes:
    • current script editor shortcut keys:
      • ctrl-s save script.
      • ctrl-f toggle focus between script editor and search textbox.
      • alt-f format script.
      • alt-h copy selected text to clipboard as html fragment.
      • alt-d copy selected text to clipboard as discord cs fragment.

3.99.1.3

28 Aug 20:07
3316966
Compare
Choose a tag to compare
3.99.1.3 Pre-release
Pre-release
  • chage:
    • Lo2K provided an icon w/ more mipmaps for higher res desktop shortcuts.
  • add:
    • code to discover|use Game Pass versions on PC.
      requires read permission on nms.exe in oder to get the internal build date,
      so it can determine the release and required libmbin vesion.
      requires read permission on PCBANKS/*.pak files, and read|write permission
      on PCBANKS/MODS/ folder.
      it seems that nms.exe is normally not able to be read, may require manually
      adjusting permissions. no feedback yet on default permissions for other folders|files.
  • fix:
    • race when building existing mod pak. when delete existing mod pak on execute
      the app doesn't get delete event until after scripts start executing.
      if a script tries to look through mod pak's the deleted mod pak will
      still be listed and result in loop with long timeout trying to open.

3.99.1.2

25 Aug 16:28
3316966
Compare
Choose a tag to compare
3.99.1.2 Pre-release
Pre-release
  • add:
    • d-click on substance|product|technology item in corresponding tab
      will open mbin, search for item id, and scroll to first result in right PAK Item tab.
    • d-click on recipe item in corresponding tab
      will open mbin, search for item id, and scroll to first result in right PAK Item tab.
    • progress while searching on mbin text search tab.
  • change:
    • removed all use of wait cursor.
    • disable mbin cache option if system has < 48 GB physical mem.
    • mbin cache disabled when launch nms via nmsmb (to free mem for game).
    • updated command-line options:
      • no_github - disable querying GitHub for MBINC and NMSMB release info.
      • no_registry - disable saving|loading state from registry on start|stop.
        uses registry key: HKEY_CURRENT_USER\SOFTWARE\cmkushnir\NMSMB
        user responsible for deleteing registry key if delete NMSMB, there is no uninstaller.
      • p"path" - e.g. p"g:/games/archive/nms/1", if valid game path then adds
        as custom path and adds smiley face icon to toolbar to load it.
        • r#.##.# - e.g. r3.98, specify game release for p"path" option, will use v if not specified.
        • v#.##.#.# - e.g. v3.98.0.1, specify libmbin.dll version for p"path" option, will use r if not specifed.
        • if both r and v specified for p"path" option, will use v.
        • if neither r nor v specified for p"path" option, will lookup nms.exe build date in cmkNMSReleases.txt.
      • lg, ls, lp, auto-load gog, steam, or p"path" if they are detected|specified.
      • e.g. cmkNMSModBuilder.exe p"g:/games/nms/" v3.98.0.1 lp
        will auto-load the game instance at g:/games/nms/ and require libmbin.dll 3.98.0.1 to mod.