Skip to content

Releases: pboxx/FVModSync

FVModSync v0.4beta

20 Mar 21:10
Compare
Choose a tag to compare

A tool to install game mods for [Life is Feudal: Forest Village]. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.4beta, for game version 0.9.6112 (2017-03-15) .. 0.9.6127 (2017-04-01)

[Readme + Feedback auf Deutsch]

Note that script mods are handled differently again in 0.9.6112 -- most if not all script mods that existed prior will need an update. Check whether a mod is compatible with the current game version before attempting to install it. Same goes for csv and config files in 0.9.6127 -- file types and locations have changed, so mods that use those types will often (not always) need to be updated.

Also, note that 0.9.6112 regards (Game Folder)/mods as the active mods folder now -- make sure your own Mods folder has a different name before proceeding.

Changelog

v0.4beta:

  • Change scripts.pak location for game version 0.9.6112
  • Update scripts/mods handling for game version 0.9.6112 (revert mods folder location, change main.lua / config file location)
  • Add whitespace removal to mod folder name sanity checks + assorted small edits/cleanup

v0.3.1beta:

  • Fix mod default lists for game version 0.9.6042
  • Handle core/init entries more precisely to account for manual fiddling
  • Remove support for cfg/dress.csv (since that has been removed)

v0.3beta:

  • Update script handling for game version 0.9.6042. This game version introduces breaking changes for script mods, hence the minor version increase.
  • Implement automatic addition of script mods to scripts/core/init.lua
  • Update scheme/imageset handling for game version 0.9.6042 (which introduces custom imagesets for resources as well)

v0.2.2beta:

  • Implement XML parsing (e.g. to add custom imagesets / icons -- see “Notes for modders”, below)
  • Implement assignment list parsing (to add/edit individual entries in config.lua -- see “Notes for modders”)
  • Make quickbms use .bms.txt as input script if the user has renamed it
  • Ignore .zip in mods
  • Only copy generic files from mods when they are newer than those that already exist in game files
  • Use a (now optional) external config to let people customise folder names and console verbosity
  • Bugfix (single cell parsing, v0.2.1 only): Nuke tabs from single fields in modded CSV
  • Bugfix (single cell parsing, v0.2.1 only): let WrapDelimited check for double quotes

v0.2.1beta:

  • Parse all CSV as single fields
  • Add support for CSV modularisation (partial CSV files; custom ignore sequence)
  • Additional error handling / CSV sanity checks

v0.2beta:

  • Filter out tabs from modded CSV
  • Output error messages when important files/directories can’t be found
  • Throw exception when quickbms fails to run
  • Add support for cfg/dress.csv (using first + second field as key)
  • Internal cleanup

v0.1.4beta:

  • Fix: don’t write include.lua when it has no content (duh)
  • Ignore .txt files from mods
  • Console output now includes version info

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Parse content from multiple CSV snippets in modded files to a single target file in the game folder
  • When any CSV already exist in the game folder, use those to add new content to -- so users can still make manual changes if they wish (they will be preserved when new mods are added)
  • Parse entries from multiple mods to scripts/main.lua (so that script mods will be recognised)
  • Parse entries in config.lua and elements in XML schemes to their equivalent in game files
  • Copy all other modded files to the game folder as they are, taking the directory structure into account
  • Predictable overriding: sort mods alphanumerically, the last entry/file will override any conflicting entries/files
  • Warn users about override conflicts from modded CSV files in the console output
  • Warn users about malformed CSV (mismatching headers, wrong record length)
  • Sanitize mod folder names (remove lua operators and such, so as to not confuse the game)
  • Ignore .txt/.TXT from mod folders so users can have readme files in there, as well as .zip (for backups)
  • Handle mod defaults by initialising them from a defaults folder

Requirements

  1. [.NET Framework 3.5] or later required

  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it’s only referred to as “Mods folder” here for sake of simplicity. Important: As of game version 0.9.6109 you cannot name your folder “mods” any more -- the game needs to have that reserved for its own use (hardcoded in \scripts\system\namespace.lua).

  3. You need to download and unzip [quickbms] in your Mods folder, in a sub-folder named “quickbms”. The [life_is_feudal.bms] script (rightclick > Save As) also needs to be in the quickbms folder. [1]

  4. Mods that you want to manage with FVModSync need to be installed in (Mods Folder)/mods (you can change that location in the configuration if you want, see below), and maintain the same directory structure and filenames that the game is using. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to “fill in the blanks” so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don’t end up with incomplete files). FVModSync will automatically run quickbms when it needs to, so you don’t need to do anything except put it where FVModSync can find it.

[2] I believe it’s good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure ( = everything inside that top level folder) intact.

Installation

Download the zip and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

MyMods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_Configuration.xml (optional)
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  • Double click on the exe.

It will put up a console window and tell you what it’s doing; that window will remain open until you hit Enter (it’ll tell you that as well).

Configuration

You can customise some parameters, like the names of subfolders and how much console output you want, in FVModSync_Configuration.xml. GameVersion doesn’t do anything yet. If the file goes missing, FVModSync will use default values (the same that are in the original file).

Notes for modders

CSV parsing:

  • As of 0.2.1beta, you can have partial CSV in mods: include only those columns that you have edited; existing values will be preserved for all other columns
  • Additionally (also added in 0.2.1beta) you can use the escape sequence “fvms:ignore” for individual fields you want to be ignored ( = existing values will be preserved for those fields)
  • Header fields in modded game files must be left intact as of 0.2.1beta, otherwise FVModSync will ignore the entire file (since there wouldn’t be any way to tell which column is which)

Scripts:

  • As of 0.2.2beta, you can override individual entries in scripts/config.lua with a (Your mod)/scripts/config.lua snippet containing only your edits
  • All other scripts should go in (YourModFolder)/scripts/; everything that isn’t config.lua will be copied over to (Game Folder)/mods/(YourModFolder). FVModSync will also sanitize both the folder name and the include directive for Lua arithmetic operators (replacing them all with underscore, since their fancy new function will otherwise try to interpret them and fall over). You can still have subfolders in (YourModFolder)/scripts/; those will be maintained.
  • As of 0.3beta, the necessary include directives will be handled automatically, i.e. the directory your mod ends up in will be added to /scripts/main.lua as requireMod('YourModFolder') -- you do not need to add a separate include file.

XML:

  • As of 0.3beta, you can add your own imagesets to the XML schemes: put a version of the file you want (most likely GameLook1.scheme) with only the root element + the entry for your imageset in /gui/schemes. You can add other elements that way too (not sure if that would be useful).
  • Note that as of game version 0.9.6042, custom resources can now get their icons from custom imagesets (this is new in resParams.csv, “icon”). So it’s not necessary any more to add resource icons to GameLook1.imageset.
  • You can have several imagesets with the same name (e.g. “YourName.imageset” in several different mods); FVModSync will compile them into one. The latest modified version of the accompanying image file will o...
Read more

FVModSync v0.3.1beta

24 Jan 18:38
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.3.1beta, for game version 0.9.6042 (2017-01-19)

Readme + Feedback auf Deutsch

Note that some older mods (or older versions of mods) may not be compatible with v0.2.1beta and up due to the introduction of single field CSV parsing. If you run into issues with “unknown header fields”, redownload the mod; if the issues persist, let the mod author know.

Also, script mods are handled differently in 0.9.6042 -- most if not all script mods that existed prior will need an update. Check whether a mod is compatible with 0.9.6042 before attempting to install it.

Changelog

v0.3.1beta:

  • Fix mod default lists for game version 0.9.6042
  • Handle core/init entries more precisely to account for manual fiddling
  • Remove support for cfg/dress.csv (since that has been removed)

v0.3beta:

  • Update script handling for game version 0.9.6042. This game version introduces breaking changes for script mods, hence the minor version increase.
  • Implement automatic addition of script mods to scripts/core/init.lua
  • Update scheme/imageset handling for game version 0.9.6042 (which introduces custom imagesets for resources as well)

v0.2.2beta:

  • Implement XML parsing (e.g. to add custom imagesets / icons -- see “Notes for modders”, below)
  • Implement assignment list parsing (to add/edit individual entries in config.lua -- see “Notes for modders”)
  • Make quickbms use .bms.txt as input script if the user has renamed it
  • Ignore .zip in mods
  • Only copy generic files from mods when they are newer than those that already exist in game files
  • Use a (now optional) external config to let people customise folder names and console verbosity
  • Bugfix (single cell parsing, v0.2.1 only): Nuke tabs from single fields in modded CSV
  • Bugfix (single cell parsing, v0.2.1 only): let WrapDelimited check for double quotes

v0.2.1beta:

  • Parse all CSV as single fields
  • Add support for CSV modularisation (partial CSV files; custom ignore sequence)
  • Additional error handling / CSV sanity checks

v0.2beta:

  • Filter out tabs from modded CSV
  • Output error messages when important files/directories can’t be found
  • Throw exception when quickbms fails to run
  • Add support for cfg/dress.csv (using first + second field as key)
  • Internal cleanup

v0.1.4beta:

  • Fix: don’t write include.lua when it has no content (duh)
  • Ignore .txt files from mods
  • Console output now includes version info

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Parse content from multiple CSV snippets in modded files to a single target file in the game folder
  • When any CSV already exist in the game folder, use those to add new content to -- so users can still make manual changes if they wish (they will be preserved when new mods are added)
  • Parse entries from multiple mods to scripts/core/init.lua (so custom scripts will be recognised)
  • Parse entries in config.lua and elements in XML schemes
  • Copy all other modded files to the game folder as they are, taking the directory structure into account
  • Predictable overriding: sort mods alphanumerically, the last entry/file will override any conflicting entries/files
  • Warn users about override conflicts from modded CSV files in the console output
  • Warn users about malformed CSV (mismatching headers, wrong record length)
  • Ignore .txt/.TXT from mod folders so users can have readme files in there, as well as .zip (for backups)
  • Handles mod defaults by initialising them from a defaults folder

Requirements

  1. .NET Framework 3.5 or later required
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it’s only referred to as “Mods folder” here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, in a sub-folder named “quickbms”. The life_is_feudal.bms script (rightclick > Save As) also needs to be in the quickbms folder. [1]
  4. Mods that you want to manage with FVModSync need to be installed in (Mods Folder)/mods (you can change that location in the configuration if you want, see below), and maintain the same directory structure and filenames that the game is using. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to “fill in the blanks” so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don’t end up with incomplete files). FVModSync will automatically run quickbms when it needs to, so you don’t need to do anything except put it where FVModSync can find it.

[2] I believe it’s good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure ( = everything inside that top level folder) intact.

Installation

Download the zip and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_Configuration.xml (optional)
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  • Double click on the exe.

It will put up a console window and tell you what it’s doing; that window will remain open until you hit Enter (it’ll tell you that as well).

Configuration

You can customise some parameters, like the names of subfolders and how much console output you want, in FVModSync_Configuration.xml. GameVersion doesn’t do anything yet. If the file goes missing, FVModSync will use default values (the same that are in the original file).

Notes for modders

CSV parsing:

  • As of 0.2.1beta, you can have partial CSV in mods: include only those columns that you have edited; existing values will be preserved for all other columns
  • Additionally (also added in 0.2.1beta) you can use the escape sequence “fvms:ignore” for individual fields you want to be ignored ( = existing values will be preserved for those fields)
  • Header fields in modded game files must be left intact as of 0.2.1beta, otherwise FVModSync will ignore the entire file (since there wouldn’t be any way to tell which column is which)

Scripts:

  • As of 0.2.2beta, you can override individual entries in core/config.lua with a (Your mod)/scripts/core/config.lua snippet containing only your edits
  • All other scripts should go in (YourModFolder)/scripts/; everything that isn't config.lua will be copied over to (Game Folder)/scripts/mods/(YourModFolder). FVModSync will also sanitize both the folder name and the include directive for Lua arithmetic operators (replacing them all with underscore, since their fancy new function will otherwise try to interpret them and fall over). You can still have subfolders in (YourModFolder)/scripts/; those will be maintained.
  • As of 0.3beta, the necessary include directives will be handled automatically, i.e. the directory your mod ends up in will be added to /scripts/core/init.lua as requireMod('YourModFolder'). So you do not need to add a separate include file any more.

XML:

  • As of 0.3beta, you can add your own imagesets to the XML schemes: put a version of the file you want (most likely GameLook1.scheme) with only the root element + the entry for your imageset in /gui/schemes. You can add other elements that way too (not sure if that would be useful).
  • Note that as of game version 0.9.6042, custom resources can now get their icons from custom imagesets (this is new in resParams.csv, "icon"). So it's not necessary any more to add resource icons to GameLook1.imageset.
  • You can have several imagesets with the same name (e.g. “YourName.imageset” in several different mods); FVModSync will compile them into one. The latest modified version of the accompanying image file will overwrite the other instances.

Mod Defaults:

  • As of 0.3beta (scripts) / 0.3.1beta (prioritised lists), FVModSync maintains mod defaults: little frameworks that can be installed to make modding more flexible. For example, a default replacement for the “Worker.surviveUpdate” function that splits it up into smaller functions, so that those can be changed individually (instead of having to override the whole thing and thus clashing with every other mod that does the same). For functions/scripts this is technically no different from all other scripts, for lists it means FVModS...
Read more

FVModSync v0.3beta

20 Jan 09:13
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.3beta, for game version 0.9.6042 (2017-01-19)

Readme + Feedback auf Deutsch

Note that some older mods (or older versions of mods) may not be compatible with v0.2.1beta and up due to the introduction of single field CSV parsing. If you run into issues with “unknown header fields”, redownload the mod; if the issues persist, let the mod author know.

Also, script mods are handled differently in game version 0.9.6042 -- most if not all script mods that existed prior will need an update.

Changelog

v0.3beta:

  • Update script handling for game version 0.9.6042. This game version introduces breaking changes for script mods, hence the minor version increase
  • Implement automatic addition of script mods to scripts/core/init.lua
  • Update scheme/imageset handling for game version 0.9.6042 (which introduces custom imagesets for resources as well)

v0.2.2beta:

  • Implement XML parsing (e.g. to add custom imagesets / icons -- see “Notes for modders”, below)
  • Implement assignment list parsing (to add/edit individual entries in config.lua -- see “Notes for modders”)
  • Make quickbms use .bms.txt as input script if the user has renamed it
  • Ignore .zip in mods
  • Only copy generic files from mods when they are newer than those that already exist in game files
  • Use a (now optional) external config to let people customise folder names and console verbosity
  • Bugfix (single cell parsing, v0.2.1 only): Nuke tabs from single fields in modded CSV
  • Bugfix (single cell parsing, v0.2.1 only): let WrapDelimited check for double quotes

v0.2.1beta:

  • Parse all CSV as single fields
  • Add support for CSV modularisation (partial CSV files; custom ignore sequence)
  • Additional error handling / CSV sanity checks

v0.2beta:

  • Filter out tabs from modded CSV
  • Output error messages when important files/directories can’t be found
  • Throw exception when quickbms fails to run
  • Add support for cfg/dress.csv (using first + second field as key)
  • Internal cleanup

v0.1.4beta:

  • Fix: don’t write include.lua when it has no content (duh)
  • Ignore .txt files from mods
  • Console output now includes version info

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Parse content from multiple CSV snippets in modded files to a single target file in the game folder
  • When any CSV already exist in the game folder, use those to add new content to -- so users can still make manual changes if they wish (they will be preserved when new mods are added)
  • Add script mods to scripts/core/init.lua automatically
  • Parse entries in config.lua and elements in XML
  • Copy all other modded files to the game folder as they are, taking the directory structure into account
  • Predictable overriding: sort mods alphanumerically, the last entry/file will override any conflicting entries/files
  • Warn users about override conflicts from modded CSV files in the console output
  • Warn users about malformed CSV (mismatching headers, wrong record length)
  • Ignore .txt/.TXT from mod folders so users can have readme files in there, as well as .zip (for backups)
  • Handle mod defaults by initialising them from a defaults folder

Requirements

  1. .NET Framework 3.5 or later required
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it’s only referred to as “Mods folder” here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, in a sub-folder named “quickbms”. The life_is_feudal.bms script (rightclick > Save As) also needs to be in the quickbms folder. [1]
  4. Mods that you want to manage with FVModSync need to be installed in (Mods Folder)/mods (you can change the location in FVModSync_Configuration.xml if you want), and maintain the same directory structure and filenames that the game is using, so don’t change anything inside the individual mod folders. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to “fill in the blanks” so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don’t end up with incomplete files). FVModSync will automatically run quickbms when it needs to, so you don’t need to do anything except put it where FVModSync can find it.

[2] I believe it’s good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure ( = everything inside that top level folder) intact.

Installation

Download the zip and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_Configuration.xml (optional)
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  • Double click on the exe.

It will put up a console window and tell you what it’s doing; that window will remain open until you hit Enter (it’ll tell you that as well).

Configuration

You can customise some parameters, like the names of subfolders and how much console output you want, in FVModSync_Configuration.xml. GameVersion doesn’t do anything yet. If the file goes missing, FVModSync will use default values (the same that are in the original file).

Notes for modders

CSV parsing:

  • As of 0.2.1beta, you can have partial CSV in mods: include only those columns that you have edited; existing values will be preserved for all other columns
  • Additionally (also added in 0.2.1beta) you can use the escape sequence “fvms:ignore” for individual fields you want to be ignored ( = existing values will be preserved for those fields)
  • Header fields in modded game files must be left intact as of 0.2.1beta, otherwise FVModSync will ignore the entire file (since there wouldn’t be any way to tell which column is which)

Scripts:

  • As of 0.2.2beta, you can override individual entries in core/config.lua with a (Your mod)/scripts/core/config.lua snippet containing only your edits
  • All other scripts should go in (YourModFolder)/scripts/; everything that isn't config.lua will be copied over to (Game Folder)/scripts/mods/(YourModFolder). FVModSync will also sanitize both the folder name and the include directive for Lua arithmetic operators (replacing them all with underscore, since their fancy new function will otherwise try to interpret them and fall over). You can still have subfolders in (YourModFolder)/scripts/; those will be maintained.
  • As of 0.3beta, the necessary include directives will be handled automatically, i.e. the directory your mod ends up in will be added to /scripts/core/init.lua as requireMod('YourModFolder'). So you do not need to add a separate include file any more.

XML:

  • As of 0.3beta, you can add your own imagesets to the XML schemes: put a version of the file you want (most likely GameLook1.scheme) with only the root element + the entry for your imageset in /gui/schemes. You can add other elements that way too (not sure if that would be useful).
  • Note that as of game version 0.9.6042, custom resources can now get their icons from custom imagesets (this is new in resParams.csv, "icon"). So it's not necessary any more to add resource icons to GameLook1.imageset.
  • You can have several imagesets with the same name (e.g. “YourName.imageset” in several different mods); FVModSync will compile them into one. The latest modified version of the accompanying image file will overwrite the other instances.

General:

  • Mods should only include data that you have edited -- no unchanged game content. Having unchanged game content in your mod means you’re prone to override somebody else’s mod with the original, thus effectively breaking their mod (or vice versa).
  • Mods should be distributed in a folder that is equivalent to the game root folder, using the same directory structure as the game. (Mod Folder)/mods/coolmod/cfg/funky/things.csv will be copied to (Game Folder)/cfg/funky/things.csv, for example; a script from /mods/coolmod/scripts/funscript.lua will be in (Game Folder)/scripts/mods/coolmod/funscript.lua (note the reverse folder hierarchy).
  • FVModSync sorts all modded files alphanumerically (culture independent) before it starts to copy; the sorting incudes the entire file path from (YourModFolde...
Read more

FVModSync v0.2.1beta (test version)

06 Jan 03:29
Compare
Choose a tag to compare
Pre-release

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.2.1beta, for game version 0.9.6008..0.9.6035 -- test version

Note that this is a test version. Not all mods currently available are compatible with it. If all you want is install mods, use the current release: v0.2beta

Changelog

v0.2.1beta:

  • Parse all CSV as single fields
  • Add support for CSV modularisation (partial CSV files; custom ignore sequence -- see "Notes for modders", below)
  • Additional error handling / CSV sanity checks

v0.2beta:

  • Filter out tabs from modded CSV
  • Output error messages when important files/directories can't be found
  • Throw exception when quickbms fails to run
  • Add support for cfg/dress.csv (using first + second field as key)
  • Internal cleanup

v0.1.4beta:

  • Fix: don't write include.lua when it has no content (duh)
  • Ignore .txt files from mods
  • Console output now includes version info

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Copy content from multiple CSV snippets in modded files to a single target file in the game folder
  • Copy entries from multiple mods to scripts/incude.lua (so custom scripts will be recognised)
  • Copy all other modded files to the game folder as they are, keeping the directory structure intact
  • Predictable overriding: sort mods alphanumerically, the last entry/file will override any conflicting entries/files
  • Warn users about override conflicts from modded CSV files in the console output
  • Ignore .txt/.TXT from mod folders so users can have readme files in there

Requirements

  1. .NET Framework 3.5 or later required
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, top level. The life_is_feudal.bms script also needs to be in the quickbms folder; make sure the file extension is actually .bms and not .txt. [1]
  4. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using, so don't change anything inside the mod folders. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don't end up with incomplete files).

[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

Installation

Download the zip below and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing; that window will remain open until you hit Enter (it'll tell you that as well).

Notes for modders

0.2.1beta:

  • As of 0.2.1beta, you can have partial CSV in mods: include only those columns that you have edited; existing values will be preserved for all other columns
  • Additionally you can use the escape sequence "fvms:ignore" for individual fields you want to be ignored ( = existing values will be preserved for those fields)
  • Header fields in modded game files must now be left intact, otherwise FVModSync will ignore the entire file (since there wouldn't be any way to tell which column is which)
  • Mods should only include data that you have edited -- no unchanged game content. Having unchanged game content in your mod means you're prone to override somebody else's mod with the original, thus effectively breaking their mod (or vice versa).
  • When you have custom scripts, include a /scripts/include.lua snippet listing only your scripts; those entries will be added to (Game Folder)/scripts/include.lua
  • Mods should be distributed in a folder that is equivalent to the game root folder, using the same directory structure as the game. (Mod Folder)/mods/coolmod/cfg/funky/things.csv will be copied to (Game Folder)/cfg/funky/things.csv, for example.
  • FVModSync sorts all modded files alphanumerically (culture independent) before it starts to copy; the sorting incudes the entire file path from the mod root folder downwards (mod root folder = the one that you distribute, like "pbox_nicemod"). This means the load order is predictable and can be used to deliberately override things (the last mod that loads will override the rest); be aware though that users may change the name of your root folder.
  • FVModSync will ignore any .txt/.TXT files it finds in mod folders, so you can include readme files and the like as .txt

Known Issues

  • CSV exceptions: Right now this does not handle the following files:
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • FVModSync will create a folder named "FVModSync_exportedFiles" in your game files, which contains various files from cfg.pak and scripts.pak (two of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • When you patch the game, delete FVModSync_exportedFiles and let FVModSync regenerate it from the patched game files (it will do that automatically). Forgetting to do so may lead to missing strings and the like, since it will continue to use those (now outdated) files.
  • FVModSync will copy anything that is in (Mods folder)/mods except txt. Far as I can tell, the game just ignores files that are not referenced anywhere, so it shouldn't hurt anything -- still, it is probably better not to dump random files into that folder.

Troubleshooting / Feedback

  • You can post in Issues or in the Feedback thread in the Forest Village modding group on Steam.
  • When FVModSync seems unable to export the .pak files (or rather, unable to get quickbms to export them: this will result in an exception telling you "quickbms exited with code 3 -- please check that it is set up correctly"), check that life_is_feudal.bms is actually named life_is_feudal.bms and not life_is_feudal.bms**.txt**.
  • If you run into issues, the text from the console window may be helpful to figure out the problem: you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar. The game dumps a log in (Game Folder)/Log.log that is also often quite helpful.
  • FVModSync creates a backup of files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.
  • If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game folder, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

To Do / Wishlist

Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.

FVModSync v0.2beta

01 Jan 15:43
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.2beta, for game version 0.9.6008 .. 0.9.6034

Changelog

v0.2beta:

  • Filter out tabs from modded CSV
  • Output error messages when important files/directories can't be found
  • Throw exception when quickbms fails to run
  • Add support for cfg/dress.csv (using first + second field as key)
  • Internal cleanup

v0.1.4beta:

  • Fix: don't write include.lua when it has no content (duh)
  • Ignore .txt files from mods
  • Console output now includes version info

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Copy content from multiple CSV snippets in modded files to a single target file in the game folder
  • Copy entries from multiple mods to scripts/incude.lua (so custom scripts will be recognised)
  • Copy all other modded files to the game folder as they are, keeping the directory structure intact
  • Predictable overriding: sort mods alphanumerically, the last entry/file will override any conflicting entries/files
  • Warn users about override conflicts from modded CSV files in the console output
  • Ignore .txt/.TXT from mod folders so users can have readme files in there

Requirements

  1. .NET Framework 3.5 or later required
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, top level. The life_is_feudal.bms script also needs to be in the quickbms folder; make sure the file extension is actually .bms and not .txt. [1]
  4. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using, so don't change anything inside the mod folders. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don't end up with incomplete files). For more info see the official quickbms site.

[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

Installation

Download the zip and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing; that window will remain open until you hit Enter (it'll tell you that as well).

Notes for modders

  • Mods should only include data that you have edited -- no unchanged game content. Having unchanged game content in your mod means you're prone to override somebody else's mod with the original, thus effectively breaking their mod (or vice versa).
  • Leave the header intact in CSV files; FVModSync will ignore the first line
  • When you have custom scripts, include a /scripts/include.lua snippet listing only your scripts; those entries will be added to (Game Folder)/scripts/include.lua
  • Mods should be distributed in a folder that is equivalent to the game root folder, using the same directory structure as the game. (Mod Folder)/mods/coolmod/cfg/funky/things.csv will be copied to (Game Folder)/cfg/funky/things.csv, for example.
  • FVModSync sorts all modded files alphanumerically (culture independent) before it starts to copy; the sorting incudes the entire file path from the mod root folder downwards (mod root folder = the one that you distribute, like "pbox_nicemod"). This means the load order is predictable and can be used to deliberately override things (the last mod that loads will override the rest); be aware though that users may change the name of your root folder.
  • FVModSync will ignore any .txt/.TXT files it finds in mod folders, so you can include readme files and the like as .txt

Known Issues

  • CSV exceptions: Right now this does not handle the following files:
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • FVModSync will create a folder named "FVModSync_exportedFiles" in your game files, which contains various files from cfg.pak and scripts.pak (two of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • When you patch the game, delete FVModSync_exportedFiles and let FVModSync regenerate it from the patched game files (it will do that automatically). Forgetting to do so may lead to missing strings and the like, since it will continue to use those (now outdated) files.
  • FVModSync will copy anything that is in (Mods folder)/mods except txt. Far as I can tell, the game just ignores files that are not referenced anywhere, so it shouldn't hurt anything -- still, it is probably better not to dump random files into that folder.

Troubleshooting / Feedback

  • You can post in Issues or in the [Feedback thread](Forest Village modding group on Steam).
  • When FVModSync seems unable to export the .pak files (or rather, unable to get quickbms to export them: this will result in an exception telling you "quickbms exited with code 3 -- please check that it is set up correctly"), check that life_is_feudal.bms is actually named life_is_feudal.bms and not life_is_feudal.bms**.txt**.
  • If you run into issues, the text from the console window may be helpful to figure out the problem: you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar. The game dumps a log in (Game Folder)/Log.log that is also often quite helpful.
  • FVModSync creates a backup of files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.
  • If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game folder, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

To Do / Wishlist

Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.

FVModSync v0.1.4beta

18 Dec 14:21
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.1.4beta, for game version 0.9.6008

Changelog

v0.1.4beta:

  • Fix: don't write include.lua when it has no content (duh)
  • Ignore .txt files from mods
  • Console output now includes version info

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Copy content from multiple CSV snippets in modded files to a single target file in the game folder
  • Copy entries from multiple mods to scripts/incude.lua (so custom scripts will be recognised)
  • Copy all other modded files to the game folder as they are, keeping the directory structure intact
  • Predictable overriding: sort mods alphanumerically, the last entry/file will override any conflicting entries/files
  • Warn users about override conflicts from modded CSV files in the console output
  • Ignore .txt/.TXT from mod folders so users can have readme files in there

Requirements

  1. .NET Framework 3.5 or later required
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, top level. The "life_is_feudal.bms" script also needs to be in the quickbms folder. [1]
  4. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using. For example, if I want to include a snippet of /cfg/normal/houses.csv with my mod, it needs to be in (Mods folder)/mods/pbox_nicemod/cfg/normal/houses.csv. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don't end up with incomplete files).

[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

Installation

Download the zip (Releases, scroll down) and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing; that window will remain open until you hit Enter (it'll tell you that as well).

Notes for modders

  • CSV files should only include records that you have edited -- no unchanged game content
  • Leave the header intact in CSV files; FVModSync will ignore the first line
  • When you have custom scripts, include a /scripts/include.lua snippet listing only your scripts; those entries will be added to (Game Folder)/scripts/include.lua
  • Mods should be distributed in a folder that is equivalent to the game root folder, using the same directory structure as the game. (Mod Folder)/mods/coolmod/cfg/funky/things.csv will be copied to (Game Folder)/cfg/funky/things.csv, for example.
  • FVModSync sorts all modded files alphanumerically (culture independent) before it starts to copy; the sorting incudes the entire file path from the mod root folder downwards (mod root folder = the one that you distribute, like "pbox_nicemod"). This means the load order is predictable and can be used to deliberately override things (the last mod that loads will override the rest); be aware though that users may change the name of your root folder.
  • FVModSync will ignore any .txt/.TXT files it finds in mod folders, so you can include readme files and the like as .txt

Known Issues

  • CSV exceptions: Right now this does not handle the following files:
    • \cfg\dress.csv
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • FVModSync will create a folder named "FVModSync_exportedFiles" in your game files, which contains various files from cfg.pak and scripts.pak (two of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • When you patch the game, delete FVModSync_exportedFiles and let FVModSync regenerate it from the patched game files. Forgetting to do so may lead to missing strings and the like, since it will continue to use those (now outdated) files.
  • FVModSync will copy anything that is in (Mods folder)/mods except txt. Far as I can tell, the game just ignores files that are not referenced anywhere, so it shouldn't hurt anything -- still, it is probably better not to dump random files into that folder.

Troubleshooting / Feedback

  • You can post in Issues or in the [Feedback thread](Forest Village modding group on Steam).
  • If you run into issues, the text from the console window may be helpful to figure out the problem: you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar. The game dumps a log in (Game Folder)/Log.log that is also often quite helpful.
  • FVModSync creates a backup of files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.
  • If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game folder, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

To Do / Wishlist

Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.

FVModSync v0.1.3beta

17 Dec 13:41
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.1.3beta, for game version 0.9.6008

Changelog

v0.1.3beta:

  • Fix DictHandler some more to nuke empty lines in CSV from mod files as well
  • Support for adding custom scripts to include.lua
  • Internal streamlining; no more redundant dict copies
  • Implement warning about conflicting entries from modded CSV files

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Copies content from multiple CSV snippets in modded files to a single target file in the game folder
  • Copies entries from multiple mods to scripts/incude.lua (so custom scripts will be recognised)
  • Copies all other modded files to the game folder as they are, keeping the directory structure intact
  • Predictable overriding: mods are sorted alphanumerically, the last entry/file will override any conflicting entries/files
  • Warns users about override conflicts from modded CSV files in the console output

Requirements

  1. .NET Framework 3.5 or later required
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, top level. The "life_is_feudal.bms" script also needs to be in the quickbms folder. [1]
  4. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using. For example, if I want to include a snippet of /cfg/normal/houses.csv with my mod, it needs to be in (Mods folder)/mods/pbox_nicemod/cfg/normal/houses.csv. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don't end up with incomplete files).

[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

Installation

Download the zip (Releases, scroll down) and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_exportedFiles (will be created by FVModSync)
  • readme.md (optional)

How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing; that window will remain open until you hit Enter (it'll tell you that as well).

Notes for modders

  • CVS files should only include records that you have edited -- no unchanged game content
  • Leave the header intact in CVS files; FVModSync will ignore the first line
  • When you have custom scripts, include a /scripts/include.lua listing only your scripts; those entries will be added to (Game Folder)/scripts/include.lua
  • Mods should be distributed in a folder that is equivalent to the game root folder, using the same directory structure as the game. (Mod Folder)/mods/coolmod/cfg/funky/things.csv will be copied to (Game Folder)/cfg/funky/things.csv, for example.
  • FVModSync sorts all modded files alphanumerically (culture independent) before it starts to copy; the sorting incudes the entire file path from the mod root folder downwards (mod root folder = the one that you distribute, like "pbox_nicemod"). This means the load order is predictable and can be used to deliberately override things (the last mod that loads will override the rest); be aware though that users may change the name of your root folder.

Known Issues

  • CSV exceptions: Right now this does not handle the following files:
    • \cfg\dress.csv
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • FVModSync will create a folder named "FVModSync_exportedFiles" in your game files, which contains various files from cfg.pak and scripts.pak (two of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • When you patch the game, delete FVModSync_exportedFiles and let FVModSync regenerate it from the patched game files. Forgetting to do so may lead to missing strings and the like, since it will continue to use those (now outdated) files.
  • FVModSync will copy anything that is in (Mods folder)/mods. Far as I can tell, the game just ignores files that are not referenced anywhere, so it shouldn't hurt anything -- still, it is probably better not to dump random files into that folder.

Troubleshooting / Feedback

  • You can post in Issues or in the [Feedback thread](Forest Village modding group on Steam).
  • If you run into issues, the text from the console window may be helpful to figure out the problem: you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar. The game dumps a log in (Game Folder)/Log.log that is also often quite helpful.
  • FVModSync creates a backup of files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.
  • If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game folder, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

To Do / Wishlist

Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.

FVModSync v0.1.2beta

15 Dec 14:23
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.1.2beta, for game version 0.9.6005 (2016-12-09) and tentatively also 0.9.6008 (2016-12-15)

Changelog

v0.1.2beta:

  • Change target to .NET 3.5
  • Fix DictHandler to skip empty lines in CSV
  • Sort file list internally after parsing modded files (predictable overriding; last one wins)
  • Copy only those CSV that are actually modded

v0.1.1beta:

  • Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Copy content from multiple CSV snippets in modded files to a single target file in the game folder
  • Copy modded files other than CSV (scripts, images ...) as they are, keeping the directory structure intact

Requirements

  1. .NET Framework 3.5 or later is required for this version
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, top level. The "life_is_feudal.bms" script also needs to be in the quickbms folder. [1]
  4. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using. For example, if I want to include a snippet of /cfg/normal/houses.csv with my mod, it needs to be in (Mods folder)/mods/pbox_nicemod/cfg/normal/houses.csv. [2]

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don't end up with incomplete files).

[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

Installation

Download the zip (Releases, scroll down) and unzip its contents to your Mods folder, top level. This is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync.exe.config
  • FVModSync_exportedCSV (will be created by FVModSync)
  • readme.md (optional)

How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing; that window will remain open until you hit Enter (it'll tell you that as well).

Known Issues / Notes

  • CSV exceptions: Right now this does not handle the following files:
    • \cfg\dress.csv
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • FVModSync will create a folder named "fvmodsync_exported" in your game files, which contains various files exported from cfg.pak (one of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • When you patch the game, delete the fvmodsync_exported folder and let FVModSync regenerate it from the patched game files. Forgetting to do so may lead to missing strings and the like, since it will continue to use those (now outdated) files.

Troubleshooting / Feedback

  • You can post in Issues or in the [Feedback thread](Forest Village modding group on Steam).
  • If you run into issues, the text from the console window may be helpful to figure out the problem: you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar. The game dumps a log in (Game Folder)/Log.log that is also often quite helpful.
  • FVModSync creates a backup of CSV files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.
  • If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game files, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

To Do / Wishlist

Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.

FVModSync v0.1.1beta

14 Dec 05:09
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village. FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which improves compatibility between different mods.

v0.1.1beta, for game version 0.9.6005 (2016-12-09)

Releases

This is currently in beta. See Releases for the current release.

Changelog

v0.1.1beta -- Fixed bugs in DictHandler.cs (stream not closing; extra CRLF and duplicate headers in CSV)

Features

  • Copy content from multiple CSV snippets in /Mods to a single target file in the game folder
  • Copy files other than CSV (scripts, images ...) as they are, keeping the directory structure intact

Requirements

  1. MS .NET Framework 4.5 is required for this version (I've changed this to .NET 3.5 for future updates)
  2. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  3. You need to download and unzip quickbms in your Mods folder, top level. The "life_is_feudal.bms" script also needs to be in the quickbms folder. [1]
  4. You need to download and unzip FVModSync.exe and FVModSync.cfg (config file) to your Mods folder, top level
  5. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using. For example, if I want to include a snippet of /cfg/normal/houses.csv with my mod, it needs to be in (Mods folder)/mods/pbox_nicemod/cfg/normal/houses.csv. [2]

TL;DR: this is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync_exportedCSV (will be created by FVModSync)

[1] quickbms is needed to export the unmodded CSV data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CSV, this unmodified data is copied over for the rest so we don't end up with incomplete files).
[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing; that window will remain open until you hit Enter (it'll tell you that as well).

Known Issues / Notes

  • CSV exceptions: Right now this does not handle the following files:
    • \cfg\dress.csv
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • Localization.csv (the original file) has extra whitespace (CR/LF) at the end; this is not handled atm. So when you add new entries to that file with FVModSync, you need to delete that whitespace afterwards or the game will crash with "Column does not exist" or somesuch.
  • Work folders: FVModSync will create a folder named "fvmodsync_exported" in your game files, which contains various files exported from cfg.pak (one of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • Excess files: Right now FVModSync will copy every CSV it knows about to the game folder, regardless of whether a file actually contains modded content. Doesn't hurt anything (those files are not large) but certainly is not pretty.

Troubleshooting / Feedback

  • You can post in Issues or in the [Feedback thread](Forest Village modding group on Steam).
  • If you run into issues, the text from the console window may be helpful to figure out the problem: you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar. The game dumps a log in (Game Folder)/Log.log that is also often quite helpful.
  • FVModSync creates a backup of CSV files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.
  • If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game files, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

To Do / Wishlist

Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.

FVModSync v0.1beta

14 Dec 01:10
Compare
Choose a tag to compare

A tool to install game mods for Life is Feudal: Forest Village.

Initial release v0.1beta, for game version 0.9.6005 (2016-12-09).

Copypasta from the readme (initial version) below:


FVModSync enables users to organise their mods in a separate folder and copy them over automatically, rather than having to edit files in the game folder by hand. This ought to make it easier for players to use various different mods in parallel, at least until an official tool for this purpose is released. Also, it allows modders to include only the relevant data (i.e. content they have actually changed) in their mods, which enhances compatibility between different mods.

##Features

  • Copy content from multiple CVS snippets in /Mods to a single target file in the game folder
  • Copy files other than CVS (scripts, images ...) as they are, keeping the directory structure intact

##Requirements

  1. You need to create a Mods folder in your game files manually (ought to be Program Files/Steam/steamapps/common/Life is Feudal Forest Village), top level. The actual name of that folder is irrelevant, it's only referred to as "Mods folder" here for sake of simplicity.
  2. You need to download and unzip quickbms in your Mods folder, top level. The "life_is_feudal.bms" script also needs to be in the quickbms folder. [1]
  3. You need to download and unzip FVModSync.exe and FVModSync.cfg (config file) to your Mods folder, top level
  4. Mods that you want to manage with FVModSync need to be installed in Mods Folder/mods, and maintain the same directory structure and filenames that the game is using. For example, if I want to include a snippet of /cfg/normal/houses.csv with my mod, it needs to be in (Mods folder)/mods/pbox_nicemod/cfg/normal/houses.csv. [2]

TL;DR: this is what your Mods folder should look like:

Mods

  • mods
    • thismod
    • thatmod
    • ..
  • quickbms
    • life_is_feudal.bms
    • quickbms.exe
  • FVModSync.cfg
  • FVModSync.exe
  • FVModSync_exportedCSV (will be created by FVModSync)

[1] quickbms is needed to export the unmodded CVS data from the game .pak files, to "fill in the blanks" so to speak (i.e. when you have mods that only modify three lines of a CVS, this unmodified data is copied over for the rest so we don't end up with incomplete files).
[2] I believe it's good practice to include author names in uploads, so that one can reliably distinguish between files from different creators. Downloaders can rename the top level folder, e.g. from pbox_nicemod to ugly-mod-by-random-person, but need to leave the rest of the directory structure intact.

##How to use

  1. Double click on the exe.

It will put up a console window and tell you what it's doing. If you run into issues, the text from that console window may be helpful to figure out the problem; you can copy it with Edit > Select All; Edit > Copy via the context menu (rightclick) on the title bar.

##Known Issues / Notes

  • CVS exceptions: Right now this does not handle the following files:
    • \cfg\dress.csv
    • \cfg\LOD.csv
    • \cfg\names.csv
    • \cfg\tips.csv

This is because those have multiple entries with identical "names" (fields in the first column), we can't tell how the game distinguishes them, and we don't want to guess. So if you have or create mods that edit those files, you will need to move/copy them manually.

  • Work folders: FVModSync will create a folder named "fvmodsync_exported" in your game files, which contains various files exported from cfg.pak (one of the game packages). You can delete it if it bothers you, but it'll reappear next time you run the program. If you empty it (but leave the folder intact), FVModSync will currently get a bit stuck, so don't do that.
  • Excess files: Right now FVModSync will copy every CVS it knows about to the game folder, regardless of whether a file actually contains modded content. Doesn't hurt anything (those files are not large) but certainly is not pretty.

##Troubleshooting / Feedback

You can post here in Issues or in this thread (Forest Village modding group on Steam).

FVModSync creates a backup of CSV files that already exist in the game folder when it attempts to copy over a modded file (e.g. cfg/Localization.csv.backup). Those are simply renamed, so in order to revert them, just remove the ".backup" suffix.

If you have all your mods installed with FVModSync, and then something goes wrong, reinstalling them should be quite simple: remove all the cfg/script/etc folders (those that have the same name as a .pak) from your game files, and then run FVModSync.exe for a fresh install of all mods from /Mods. Of course if you have made additional manual edits, you need to re-do those.

##Warranty / Copyleft

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License v3 for more details.