That version does disable achievements from any mod plugin, if you are not using files from Nexus to disable that behaviour. There are no drawbacks for doing so. To clarify: - The forum where we are now is for 32bit Skyrim / Skyrim LE. Modding does not disable achievements for any form or version of this 32bit game. FINAL FANTASY XV WINDOWS EDITION MOD ORGANIZER is a tool to help you make mods for the FINAL FANTASY XV WINDOWS EDITION. It allows you to convert your assets into mod data and incorporate them into the game world. The main function of MOD ORGANIZER is building model data and uploading mods to Steam Workshop. There's no mod on the Steam Workshop called dnspy. Mods and Tools; Do mods disable achievements and is there a mod to allow heavy watt wire to be placed in blocks.
Overview
Some mod changes have to be made by altering the hex code of the game executable file (<SomeGame>.exe) directly, or by replacing original game files. As a consequence, every time a patch to the game is released, or Steam 'verifies' the game files, any such mods will be removed when the original (or 'vanilla') version of the files are restored, and eventually you will find it necessary to reapply many, if not all of your desired mods. Steam's 'phone-home' capability has been known to override only some elements of a mod, producing mixed results for no apparent reason. This 'phoning home' occurs every time the game is launched, and is independent of patches. To prevent this from happening unexpectedly, you must assert control over when Steam performs such steps.
Steam has demonstrated that they will ignore the disabled 'auto update' settings for a game without warning (at least sometimes) when the game vendor releases a patch. The only reliable method to avoid unwanted or unexpected patches is to always run the game in Off-Line mode. If you have mods that are not easily re-installed, it is advisable to have a complete backup of the game folder tree, so you can revert when a patch does get forced upon you.
Retaining Control
First, see Installing Games on Windows Vista+ for WHY and HOW TO move your Steam folder out of the Program Files folder tree if you haven't done so already. Simply disabling Windows User Account Control (UAC) or folder permissions is not sufficient.
Here is how to take control of Steam updates:
Ensure your Steam application is unable to 'phone home' via a network connection to automatically perform verification updates behind your back (intended to prevent cheating in multi-player games) that will overwrite part of the mod(s). There are two ways to do this, and both may prove necessary (i.e. if you have an active WiFi connection, your computer is always networking in the background even if the Steam App is in 'Offline Mode', so you MUST apply the hosts file fix as well):
Offline Mode
Easier to accomplish. This prevents the Steam App from connecting to it's servers, but you won't be able to chat, play multi-player, register achievements, or update other games until you switch back to 'Online' mode. See the official Offline Mode Steam Support instructions for the type of computer running Windows OS. Here are the very basics, but read the Steam Support instructions first. There is more to a first time setup:
Start the Steam App.
Select the Library (second menu line), which will display your library of installed Steam games.
Select a game title (i.e. XCOM: Enemy Unknown) and right-click on it to display the context menu.
Select Properties from the context menu.
Select the Updates tab.
In the Automatic updates field, click on the upside-down triangle at the right edge, and select Do not automatically update this game.
(This will prevent updates except as you determine the timing. If you wish to engage in multi-player mode, this may be all you can do besides modifying the hosts file. Disabling automatic updates by itself: people have still had issues.)
Close the Properties window.
Select the Steam Menu (top left, first line) > Go Offline > Restart the Steam App in offline mode.
Modifying hosts file
Prevents Steam from connecting to it's update servers behind your back. Slightly more complicated, but lets you use the Steam Apps's online functions such as multi-player, and is only required once. It is not affected by patches or re-installing Steam and does not affect your ability to get updated when you go back to 'Online' mode.
To determine where your game attempts to communicate, you want to examine your My Games<Steam Game folder>LogsLaunch.log file. You are looking for lines similar to these:
The entries marked like so are:
The Server IP address: 65.118.245.165
The Server DNS Name: prod.xcom.firaxis.com
These are what you will place into the hosts file to block attempts to connect. Titanium software mac.
Start Menu > Right click on 'Notepad' (or any text editor), select 'Run as Administrator'
File > Open > %systemroot%system32driversetchosts. The hosts file has no '.' suffix, so make sure you don't add .txt or anything else. Also, %systemroot% on most systems is C:Windows, but the exact folder name may vary by OS version. The value of the global environmental variable%systemroot% on your system can be determined by entering 'set' on the Windows command line, or as it's shortcut is called, the Command Prompt. But the variable %systemroot% (including the percent '%' signs) can safely be used without knowing it's actual value.
Add these three lines to the hosts file:
(The first line is a comment. The next two lines do the actual work, but are specific to XCOM:Enemy Unknown 2012. Other games may have their own DNS names [i.e. prod.xcom.firaxis.com] and IP addresses [i.e. 65.118.245.165]. The '127.0.0.1' IP address is a local loopback address the prevents attempts to connect to either of the other addresses from ever leaving your computer.)
# Prevent Steam from Phoning Home
127.0.0.1 prod.xcom.firaxis.com
127.0.0.1 65.118.245.165
Save the file.
Restoring to Vanilla
Eventually you will need to patch your game and re-apply your mods, sometimes because you will desire to apply different mods or apply them in a different order. Here is how to restore your game to the latest version of the vanilla game:
Remove any and all installed Mods
This step is needed to ensure there are no conflicts that the following restoration of vanilla steps won't catch.
Follow the uninstall instructions provided with each Mod.
Check the My GamesXCOM - Enemy Unknown subfolders and backup any save game files from the XComGameSaveData folder. In particular, DLCs install files under this folder and verify cache does not touch it.
Remove any mod files or simply delete all the subfolders under My GamesXCOM - Enemy Unknown. They will be recreated when you run the game again.
Take Steam back Online
Start Steam, and when prompted remain OFFLINE.
Select the Library (second menu line), which will display your library of installed Steam games.
Select a game title (i.e. XCOM: Enemy Unknown) and right-click on it to display the context menu.
Select Properties from the context menu.
Select the Updates tab.
In the Automatic updates field, click on the upside-down triangle at the right edge, and select Always keep this game up to date.
(This will restore automatic updates.)
Select the Steam Menu (top left, first line) > GO ONLINE > Restart the Steam App.
Update the Game
Select the Library (second menu line), which will display your library of installed Steam games.
Select a game title (i.e. XCOM: Enemy Unknown) and right-click on it to display the context menu.
Select Properties from the context menu.
Navigate to the LOCAL FILES tab and Select Verify integrity of game cache.
(Progress is indicated on the filename in the Steam Library).
When the verification is completed the number of files needing to be reacquired will be indicated. Close the window.
Double-click on the game title in the Library tab to launch the game.
Wait while the game is re-patched (progress is indicated on the filename in the Steam Library).
Once patched, right-click, select game Properties, and Verify cache again.
Once verified, while still 'online', play the game to the Main Menu at least TWICE.
The first time played, the game will install any files the verification process determined needed updating.
Take the opportunity to check/reset the game configuration options, particularly 'video'.
The second 'play' enables the save game files to 'sync' with the Steam servers.
To confirm a patch has been applied, you have to look in the Version.txt file located in the game base install path (i.e. SteamsteamappscommonXCom-Enemy-Unknown) and examine the Date and Changelist: entries. Patch version data may be found here.
Follow all the steps above to take Steam 'offline', and mod again.
Only after Steam is taken back 'offline', should you restore your backed up save games to the My GamesXCOM - Enemy UnknownXComGameSaveData folder.
Save Files
Often a player can find they have saved a large number of game files they subsequently have to scroll through in order to get at a desired file, and sometimes when the number of files gets over 100 find the scrolling is 'messed up'. And then you wonder why simply deleting them from the local drive folder still fails to eliminate them. The answer is that the files are being restored from the cloud automatically, and you aren't really getting rid of them.
Save game cloud syncing is the process of having local save game data automatically copied to or from cloud storage so the latest version of a given save state is present in both locations.
It can be useful to understand how the Steam Cloud servers sync save game files. A large number of save files (100+) can have indexing problems when displayed in game. The following information is derived from the article HOW TO DELETE FILES STORED IN STEAM CLOUD SERVERS on the SteamPowered Forums. (When I followed this guide I was unable to trigger the 'Cloud Sync Conflict dialog'. However, the 'simpler but not as efficient' method of disabling the Steam Cloud first and then deleting files worked for me. I attributed the difference to the age of the technique description and later revisions to the Steam application and synching process.)
The Steam Game Save Locations article on the same site may also prove of some assistance in locating save files. That thread has grown quite lengthy, but the game save locations are now maintained as a wiki. The XCOM page of the SaveLocations wiki is here.
Downgrade EU to patch 4 Mod Note
Background
Steam Cloud is used to backup config files and save games online in order to access them from every computer you register with Steam. This feature can be enabled/disabled through two different dialogs:
Steam | Settings | Downloads + Cloud | Enable Steam Cloud synchronization for games which support it (affects all the games).
Right-click on <game name> | Properties | Updates | Enable Steam Cloud synchronization for <game name> (affects only the selected game).
Advantages
Cloud syncing has a number of benefits:
Automatic backup protects against catastrophic data loss like hard drive crashes.
Continue a game on another PC such as a laptop seamlessly.
Ability to store save games for long term retrieval (useful for series such as Mass Effect which spanned over 4 years).
Steam applications which support Cloud synching by default use the Steam Cloud service. Not all Steam games support this capability.
Alternatives
GameSave Manager: (Freeware) Supports many cloud storage services besides Steam, as well as alternate drives and directories.
How Steam Cloud synching works
Most of the time there are three versions of your save game files:
the original version stored in the game folder or in AppData (hereafter GameFolder)
Note: XCOM:EU 2012 puts the save game file in the <username>My DocumentsMy GamesXCOM - Enemy UnknownXComGameSaveData folder (hereafter My Games). (The <Steam game install path>Saves folder itself is left empty.)
In general the most important save location for XCOM:EU 2012 mod users is the My Games save folder. Consider references to the GameFolder in that case as meaning the My Games folder instead.
the cloud version stored in Steamuserdata<SteamID><AppID> (hereafter UserData)
<AppID> for XCOM:EU 2012 is 7, and it puts the REMOTECACHE.VDF file and 'remote' sub-folder here.
the cloud version stored in Steam servers (hereafter Cloud)
When you start a game for the first time, the GameFolder savegame is created. When you close it, the GameFolder savegame is copied to the UserData savegame which is then subsequently synced as the Cloud savegame on the Steam Cloud servers.
When you start a game from another computer, if Steam has a Cloud savegame file on its servers but doesn't find a matching UserData savegame file on your computer, it will copy the Cloud savegame to the UserData folder. Steam Cloud automatically downloads the missing files each time you start Steam in 'Online' mode.
UserData contents
In Steamuserdata (UserData) you should have 1 (or more) folder(s) corresponding to your Steam account ID (SteamID). Inside that folder you'll find a sub-folder for each game using Steam Cloud you have installed. The sub-folder name is the AppID of the game (found in the URL when you visit its store page: it's a number like 220 for Half-Life 2). (When you look in your Steam Library, the games which are synced to the cloud have a 'cloud icon' after their name.) In the game folder you'll find:
a remote folder: it contains all the files that are being synced up with Steam servers
a REMOTECACHE.VDF file: the file describe the properties (such as file size or modification date) of the files contained in the remote folder. _
NOTE: Some games don't have or use the GameFolder and write directly to the UserData folder, while others don't use the UserData 'remote' sub-folder to store the save files. In this case, the REMOTECACHE.VDF file in the UserData folder points directly to the files located in the GameFolder.
In either case, the profile.bin file contains everything that is not stored in your character's savegame files. When deleting savegame files, this profile.bin file should NOT be deleted.
Common Problems
Game won't start after modding the EXE. This often appears as a generic Windows error '0xC0000142', indicating something thinks it is a corrupted file.
Ensure that Steam is installed somewhere other than in the 'C:Program Files' tree. See the Wiki article Installing Games on Windows Vista+.
Ensure that the hosts file has been modified (see #Modifying hosts file above) to prevent Steam from 'phoning home'.
Ensure that hash checking has either been disabled, or the SHA has been updated. (See Basic Guide to installing mods#Disabling_Hash_checks.
Double check the offset address and values of any hex changes you manually made to the EXE.
Mod changes do not appear to be in effect.
Ensure that you are running Steam in offline mode and have disabled auto updates. This may be restoring the vanilla files and reverting your mods.
Ensure that the hosts file has been modified (see #Modifying hosts file above) to prevent Steam from 'phoning home'. This may be restoring the vanilla files and reverting your mods.
Some tools used to apply mods or changes may need to use the RunAs Administrator option, either when launched or by enabling the Privilege Level under the Properties | Compatibility tab of the program in order to have the necessary privileges to effect the change. Those relying upon .NET Framework or other network based languages may be among these, at least in some instances.
The mod effect you are looking for may require the game to have advanced to meet necessary requirements, such as having researched particular Foundry Projects. Check the mod's documentation for the presence of different, earlier available effects or other means of verification.
The game doesn't seem to be using all of my system RAM. It seems to top out at roughly 2GB.
See the wiki article 2-4GB_game_memory_limits_and_solutions.
Troubleshooting
Finally, if you have problems with installing a mod see the following wiki article. Note that this document is one of those it will refer you to, so you might as well start by reviewing the material here.
References
Referred to by this article:
That refer to this article:
Retrieved from 'https://wiki.nexusmods.com/index.php?title=Steam_and_mods&oldid=42081'
If you just want to download mods and use them in game, you can view them on Steam Workshop (requires the steam version of the game) or download them from places like Banished Info.
If you’re interested modding Banished to add new things or change the game, read on! You can add new buildings, professions, crops, animals, resources, tweak the game balancing, and more. To get started you’ll need to have purchased a copy of the game from Shining Rock Software, Steam, or gog.com.
If you’d like to use Steam Workshop, be sure to purchase the Steam version, or buy it from Shining Rock Software and use the included steam key to add the game to your Steam library.
The mod kit is currently version 1.0.7 Build 170910.
You can download the latest version of the mod kit here. BanishedKit_1.0.7.170910.zip
Inside the archive you’ll find instructions in the readme.html file on how to use the mod kit. You can also read it below.
You can download the non-steam patch to update to 1.0.7 build 170910 here from 1.0.6. Otherwise download the new version from where you originally bought it. BanishedPatch_1.0.6_To_1.0.7.170910.zip You’ll have to extract it into your Banished game folder, making sure to preserve the directory structure of the archive. This will overwrite several game files such as executables and dlls.
– Debug menu now supports adding custom resources.
– Crashes fixed when trying to use more than 3 resource requirements on a building.
– Fixed a crash caused by using UI scale in some cases.
– Updated the mod kit to have an example of modifying the trading post to auto purchase custom resources.
– Added Custom0.9 resource flags and resource limits. Modified UI that uses these accordingly to be able to use them.
– Fixed a bug cause by towm hall deletion while nomads are in route
– Fixed a crash that occurred when clicking on the town hall if a translation mod was in use that was built with 1.0.4. Missing text data will now be blank.
– Fixed a bug that caused orchards and pastures to not drop items inside their boundaries as was intended.
– Fixed a bug that caused fonts from 1.0.4 to not load in 1.0.5. A UCS2 – UTF8 conversion wasn’t made properly.
– Fixed a bug that caused dropped resources (from citizen death/task cancelation) to drop in invalid places.
– Fixed a bug that caused orchards to cause invalid data access and or data corruption if a citizen tried to harvest a tree, but the tree died before he got there.
– Fixed a bug that caused potential memory corruption when cutting down an orchards trees.
– Fixed a bug that caused a crash if game startup failed before memory allocation was available or was corrupt. It now properly displays an error.
– Fixed a bug that caused a crash when loading old mods that had custom materials. The game will no longer crash, however objects with those materials will not display. Mods should be updated to the newest mod kit version to fix this issue.
– Added better error message if the game runs out of memory due to too many mods loaded.
– UTF8 is now used instead of USC2.
– Resource files can be in UTF8, USC2, UTF16, big and little endian. They’ll be converted to UTF8 on load.
– Memory usage allowance has been increased to 1 gigabyte, which should allow for larger mods.
– All materials now use custom shading language SRSL instead of HLSL.
– Any mods with custom materials will need to be modified to point to the new shaders and/or use SRSL.
– Math library can now be compiled without the need for SIMD instructions.
– OpenGL is now supported (but isn’t currently being released with the PC version)
– Data compilation is now in a separate DLL – CompileWin.dll – this can be swapped out for other platforms (consoles, mac, linux, etc)
– Shader compiler is now in it’s own DLL. Video DX9/DX11/GL dlls are no longer required for compiling shaders.
– Added safety code to check for invalid and dangling pointers – this should make catching hard to find and rare issues easier.
– Sped up mod details dialog for massive mods that have 10000’s of files included. This should make looking at conflicts and uploading to Steam workshop easier.
– Beta Mods and Mods newer than the currently released version can no longer be uploaded to Steam Workshop.
– Nvidia and AMD GPUs in laptops should now be auto selected for use, instead of an Intel Integrated card.
– Textile limit is now available for modders to use.
– Cropfields, Fishing, Forester, Hunters, Orchards, and Pastures now have a configurable resource limit.
– Livestock has a resource limit for the by product they make (eggs, wool, milk, etc) Note that if a by product isn’t created because of the resource limit, the icon won’t appear above the building.
– Added textile to the Status Bar, Resource Limit window, and Town Hall UI
– Added graphs for textiles to Town Hall UI
– Uploading mods to Steam Workshop now requires the user to have the original compiled data before packaging on disk (generally .crs files). The data must be in the same location it was build and match the files in the package. For example, if the mod was built in C:BanishedKitmymodbin, then all files created during mod compilation must remain in that directory for the mod to be added to Steam Workshop. Without the original data, the Add to Workshop and Update on Workshop buttons are unavailable. Current mods need to be rebuilt with Banished Kit 141123 before they can be updated. No other changes to the game or mod kit have been made, so non-steam users can continue using build 141103.
– Increased memory usage allowed for save games. This allows larger modded maps than default to be saved safely. However at some point very large maps will crash the game due to out of memory, or textures failing to be created.
– Trade UI now expands automatically for orders.
– Fix a bug that caused mods to become unreferenced in save games when opening the mod dialog in game and then pressing cancel.
– Fixed a bug that caused mods that should be unloaded to stay in memory if they were loaded at game start. This fixed random ghost buttons on the toolbar.
– Fixed tutorials not progressing properly.
– Fixed mods not showing up on the toolbar.
– Fixed crash when loading save games saved with 141001.
– Fixed a crash when disabling mods that had new map types.
– Fixed the toolbar showing empty buttons in certain cases.
– The trade UI now dynamically resizes to make sure all items can be shown at once. This fixes crashes when the general merchant comes with many mods that add resources enabled.
– Fixed a rare crash that was caused by closing tooltips in a particular way.
– xWMAEncode now uses the /bin parameter to located it.
– Fixed a bug that allowed combo box drop downs to stay up if the parent button went away.
– Added an option to draw the mouse cursor in software in cases where DirectX fails to display the cursor properly.
– Moved ‘clip mouse to window’ option from Game options to input options.
– Added a cursor option that allows the resource to specify the hot spot of cursors. This also facilitates the software cursor.
– Added a Reset All option to the game launcher. This allows the game to reset to default settings if a setting is causing a game crash. The command line option /reset also does the same thing. Note this will unset achievements in non-steam versions.
– Adding an option to the game launcher to disable use of DirectInput. This should allow systems where the mouse doesn’t move to work properly, however only the left, right, and middle mouse buttons will be available.
– Roads will now always draw roads no matter how many there are on the terrain.
– Misc fixes for rare crashes.
– Updated to latest FBX sdk. This required moving x32 and x64 builds into their own folder since the dll name is the same for both 32 and 64 bit versions.
– Added support for a cmd.txt file that contains command line parameters. cmd.txt must be in the same folder as the executable.
– Added command line parameter /bin that tells the game where the main /bin folder is located relative to the executable. This allows a single bin/WinData folder to be used along side the x32 and x64 versions of the game.
– Added a new variable to PackageFile resources, ‘String _preview = “pngOrJpgPath”;’ This is a square preview image that is used when uploading mods to steam workshop. If not set, no preview image will be uploaded to steam.
– Added Steam Workshop support. Mods can be created, updated, downloaded, and browsed in game. Any updates to subscribed mods will download automatically. A reload is required once downloads are complete.
– Fixed tooltip text going outside the background boundaries.
– Fixed combo boxes not displaying correcly after being enabled, disabled, then re-enabled.
The Banished toolkit requires Banished version 1.0.4 Beta or better. While the shipped game runs under Windows XP, the toolkit does not. The toolkit was developed and used under Windows 7. Other operating systems have not been heavily tested.
The toolkit requires all graphics SDKs that the game supports to properly compile shaders. At the moment DirectX 11 and DirectX 9 are required. OpenGL support will be required in new releases.
The data files from your purchased game are required.
The DirectX End User Runtime will have to be installed. You can find it here: http://www.microsoft.com/en-us/download/details.aspx?id=35
The Visual Studio 2012 Redist is also required. It can be downloaded here: http://www.microsoft.com/en-us/download/details.aspx?id=30679 The toolkit may be compiled with newer versions of MSVC in the future – if so you’ll have to install the redist for the newer versions.
For machines (mostly laptops) that have both an Intel card and Nvidia card, make sure you set the tool and game executables to use the high powered video card, rather than the integrated one.
The game uses the font FrancophilSans. You may need it installed depending on what you are modding.
2. Toolkit Contents
The toolkit has the following structure
3. Command Line Parameters
Common command line Parameters
/bin <path> Set the location of the bin folder relative to the executable. This defaults to nothing, but the cmd.txt file sets it to .
/pathres <path> Set the resource directory. This directory is relative to /bin. The default is /bin/./resource
/pathdat <path> Set the compiled resource directory. This directory is relative to /bin. The default is /bin/WinData
/pathpkg <path> Set the package directory. This directory is relative to /bin. The default is /bin/WinData
Command line parameters for Application-x64-profile.exe
/onlypkg Only use .pkg (game package) and .pkm (game mod) files when loading. Otherwise anything in the resource folder will be loaded first.
/launcher Start the game with the launcher. You can also hold CTRL as the game starts to bring up the launcher.
/nomods Start the game with all mods disabled. This can be useful if a mod causes a crash and the game can’t start.
/ref <resource> Specify an mod resource list to load when starting the game. This can be used to load resources before a mod is packaged. For example: /ref Package.rsc:modName
Command line parameters for Tools-x64.exe
/build <resource> Build a resource and all dependencies. Example /build Game/GameResources.rsc:resource
/mod <pkgresource> Build a mod package. Any changes that differ from original data and new files will be packaged into one file.
/texpad <pngfile> Fill any alpha = 0 pixels in a texture with expanded border color. This is useful for making textures that mipmap nicely.
4. Getting Started
After unpacking the archive, you’ll want to test the toolkit environment to make sure everything is working properly.
Copy the .pkg files from the game data directory to where ever the toolkit is located. In this example, assume the toolkit it installed at C:BanishedKit. You’ll copy to C:BanishedKitbinWinData. If you’re using Steam, the data files are probably in C:Program Files (x86)SteamSteamAppscommonBanishedWinData. Non Steam builds default to C:Program FilesShining Rock SoftwareBanishedWinData
Open a command prompt and change directory to the toolkit. (C:BanishedKit)
Run the batch file BuildResources.bat. This is going to take a few minutes.
If all goes well, all resources will be compiled to binary format and be placed in /bin/WinData. You’ll see a lot of output along the lines of Compiled ImageBuffer: TerrainTerrainDirtTexture.rsc:resource. Generally the tool will notify of any error with a dialog box or text in the output. Or it might crash.
If it does have errors or crash, make sure you’ve got the game .pkg files in the right place and you’ve installed all the prerequisites.
Start the developer build of the game, /bin/x64/Application-x64-profile.exe. The game should run as normal. It’s loading the newly compiled resources – which should match what’s in the game package file.
Check to see if you can modify a resource and have it effect the game.
Open /resource/Dialog/StringTable.rsc in a text editor.
Search for StringTable mainMenu.
Look for and change the entry that looks like { String _name = “NewGame”; String _text = “New”; } to { String _name = “NewGame”; String _text = “MODDED!!!“; }
Save the file.
Restart Application-x64-profile.exe. The game will notice the change to the string table and recompile it. You could also rerun the BuildResources batch file, but this isn’t required – the game is capable of compiling all resources, however you don’t get detailed text output as you would on the command line with Tools-x64.exe.
When the game loads, you should see that the new game button now has the modified text.
You’re now setup to modify the game. Obviously, you’ll want to undo your change to the string table.
5. Best Practices
Most of the game configuration data is provided as an example for how everything in the game is put together. You can modify it as you please, however if you plan on distributing your mod to others, there’s a few things to keep in mind so that your mod will working well with other mods.
Take care with resources that might be shared!
It’s ill advised to make changes to core resources. If multiple mods reference new resources in these files, only one set will be loaded, causing unintended behavior. Some examples of these resources are:
Game/Toolbar.rsc Items that appear on the game toolbar.
Dialog/StringTable.rsc Most all text for the game.
Dialog/SpriteSheet.rsc Sprites that the game uses to render the user interface.
If you need to load new text, sprites, raw materials, natural resources, livestock, etc, you should make your own list of resources and tell the game to load it. You’ll make an ExternalList resource. The mod in /example/building has a good example of this. For example, if you’re adding the apiary, bee keeper, and honey, in a file apiaryResources.rsc:
When running the game, start it like so: Application-x64-profile.exe /ref apiaryResources.rsc
After you package your mod, this file will be loaded automatically when the mod is enabled if it is named correctly.
If you’re just modifying text, user interface layout or look, models, textures, settings for citizens, etc you can just override the original resources. If your mod does conflict with another users mod, they will be notified of the conflict if both mods are loaded and enabled at the same time.
Working on multiple mods.
If you have multiple mods you are working on, and as you work through the examples in this document, it’s best to either clear out the bin folder of compiled resources when switching between mods, or use the /pathdat command line flag to make sure that binary resources are separated.
When mods are packaged, any file in the current binary folder that differs from the one in the original game packages is put into the package.
Be aware of new materials and audio.
As of version 1.0.5 Beta, materials now use a new shading language. The old format will no longer work and any custom previous shaders built for 1.0.4 will have to be reworked. Old materials from old mods will still load in game and work properly.
If you’re going add audio to the game, be aware that at some time in the future, you’ll probably have to make changes to support other audio systems as the game is ported to other platforms. If you don’t add any new audio, you’re mod is probably ok, but may require extra work if you end up working on it when new versions are released.
Sharing Mods
Once you’ve developed mods, it’s best to upload them both to steam workshop and to locations where non-steam users can download your mod. Some of these include http://banishedinfo.com/, and http://www.nexusmods.com/banished/
6. A Note on Save Games
Save games store which mods were enabled when they are saved. When they are reloaded, all mods are first disabled, and then only those that were previously enabled in the save are loaded. When new games start, the mods setup in the main menu are the ones that the game will start with.
While a game is running, you can enable mods, so that you can add new buildings to an already existing map. However if resources that shipped with the game are changed, unexpected behavior might occur. For example if the size on the map of a storage barn changes because of a mod, when old barns are removed, they can cause pathing issues and crashes.
Additionally if you disable a mod while a game is running, crashes can also occur. If you’ve enabled a mod that adds buildings, and those buildings are placed, disabling the mod will cause a crash.
Save games will also detect changes to a mod. If a new mod version has been published and you’ve overwritten the mod with the new version, the game will warn you that the mod is different or has changed version and that unexpected behavior can possibly occur.
7. Steam Workshop
Once you’ve developed a mod, you can upload it to steam workshop to share it with the steam community. To do this, you’ll have to use the Steam version of the game. Put your mod in: C:Program Files (x86)SteamSteamAppscommonBanishedWinData When you start the game, the mod will show up in the Mod menu. Click on the ‘…’ button for the mod – it’s right under the button to enable the mod in game. Uploading to Steam requires that the original compiled data before packaging remain on disk where it was compiled for the Add and Update buttons to be available. If you’re uploading the mod to Steam Workshop for the first time, click on the ‘Add to Workshop’ button. You’ll be guided through a series of prompts and questions to get the mod on the workshop. Once the mod is uploaded, you’ll be presented with a link to view the mod on the Steam Workshop, and change any of its properties. If you’re updating a mod that you already published to the Steam Workshop, click on the ‘Update Mod on Workshop’ button. Again you’ll be guided through a series of prompts and questions. When you are asked which mod you want to update, makes sure you pick the correct previously published mod. Once the mod is uploaded, you’ll be presented with a link to view the mod on the Steam Workshop, and change any of its properties. There are users that don’t use Steam, so it’s best to also upload the mod elsewhere for those users to install.
8. Examples
There’s far too much complexity and detail to describe all the things you can change or add to the game (without spending months on documentation), so you’ll have to learn by example with the game configuration data and trial and error. These few examples should get you started, but you’ll want to get familiar with most things in the /resource folder.
A. A Simple Mod – Translation, Font, and Character Set
The first example, in /example/translation, shows a translation of all the strings in the game. It also changes the font and adds new characters to the font that are in use. Take a look in the /example/translation folder. It contains a mirror of some of the resources in the game, except they’ve been changed.
The example translation makes all text uppercase, and changes any vowels to have accents above them. Note that there are special characters in strings you’ll want to keep intact – the help files have things like (^f0, ^jl, etc). Strings also have ‘~~’ (for tilde) ‘~”‘ for quote, and @N (for substitution, where N is 0.9). During translation, you’ll have to keep the escape characters intact.
First, you need to define the character set you want to use. You can view a character set example in /example/translation/Font/CharacterSet.rsc
Next, you’ll change the fonts for the game. There are four main fonts, each a different size. A font resource looks like this:
Finally, you can translate all the text. All text is contained in string tables that look like this:
Note: If Unicode characters are required to support characters, resources files can be saved as USC-2, little endian. If you’re unsure, the CharacterSet.rsc file is already in this format.
Depending on the translations and size of the text, some dialogs may not contain the text, or become misshapen. To remedy this, you could also modify parts of the user interface layout to accommodate the translation more fully.
For ease of building the mod, a single ExternalList resource is provided that references all the changed resources. To build this mod, run the command
You should now be able to run the game with the command:
You’ll see that the translation has taken effect. However, this has just modified the game data locally – this is great for quick development and iteration, but if you wanted to give this mod to others, you’d need to package it.
First, you’ll create a definition for the package (see /example/translation/Package.rsc)
Next, you’ll compile the package using the /mod parameter.
Building the mod package may take some time, depending on how many resources are in the data directory and how many have been modified. The tool checks the new resources against the ones contained in the game, and only packages files that have changed or are new. The tool will output files that it is packaging, so you can see what you’ve modified or added. In the end, this will output a file called translationExample.pkm in the bin/WinData folder.
Next, test the mod properly.
When you start the game, start it so it only uses packages.
All the text should be as normal.
Open the Mod dialog by pressing the ‘Mods’ button.
The Translation Example mod should be listed in the dialog.
Enable it by checking the X button next to the text that says Enable.
Press OK.
The menu will prompt you to reload, and after doing so the mod will be in effect.
Once everything is working as intended in a mod, you can distribute the .pkm file to other users. All they have to do is place the .pkm file in the WinData folder, and then enable the mod in game.
B. A Building and Profession
This example mod adds a new building, a new edible item, and a new profession. In this case the building is an apiary, the building produces honey, and the profession is a bee keeper.
If you want to build and test the mod…
You should now be able to run the game and see that the apiary is available from the food menu. Note that before the mod is packaged, you have to explicitly tell the game to load the resources using the /ref parameter. In the translation example, resources were simply overridden so no reference was required – the game references them already. Without the reference the new resources won’t be loaded.
Start a new game, and click on the Food Production icon – you should see the new building listed with an icon of honeycomb. You can place the building, have it built, and assign workers to it. In the professions dialog, the new profession of Bee keeper should be listed as well.
As with the translation example, you can build the mod as a package like so:
To test the mod by itself, you can run the game forcing it to only use packages.
The game should have the new mod listed in the Mods dialog and you can enable it.
Adding a new building requires many resources that are tied together – meshes, textures, materials, entity descriptions, text, sprites, and terrain decals. Below are the general steps to making a new building.
General steps to making a new building and profession.
Model the building and all intermediate construction models.
See /example/building/Models/apiary.fbx
Make sure the objects are properly centered around their pivot. For example, a building that is 4x5m and it’s corner is at (0, 0, 0) should have the pivot at (2, 2.5, 0)
Assign materials to the building. The name of the material defines the material name on disk. Materials need to be in a MaterialInstance folder, in the same directory as the model. If not found there, the tool will check parent directories up until the resource root for a properly named material.
Add dummy helper objects to define locations for use.
Helpers named build_XXX are where workers will stand when constructing the building
Helpers named use_XXX are where workers will stand when working at the building.
Helpers named create_XXX are resources will be created at the building.
Helpers for particle system attachments can be named arbitrarily, for example, the smoke from the building.
Unwrap the model for texturing.
The first UV channel for a building is used by the material with the primary texture (unless you make new shaders with different behavior).
The second UV channel is used for an ambient occlusion texture. Each construction model needs its own AO texture.
If the building has sections above the terrain, make a very low res ‘floor’ object that citizens will walk on. (The apiary doesn’t need or use one.)
See /resource/Models/Buildings/FishermansDock/FishermansDockFloor.rsc
See /resource/Template/FishermansDock.rsc
Export the model in FBX format.
Build a material resource for the game to use.
See /example/building/Models/MaterialInstance/Apiary.rsc
Build a texture resource for the game to use.
See /example/building/Models/MaterialInstance/ApiaryTexture.rsc
Build AO texture resources.
See /example/building/Models/MaterialInstance/ApiaryAO.rsc
Make a model resource for the building and each step of construction. This is the visual display of the model. These files also contain an ‘edge mesh’ that allows the game to display the highlight around the visual mesh when selected.
See /example/building/Models/ApiaryMesh.rsc, ApiaryBuild01Mesh.rsc, ApiaryBuild02Mesh.rsc
Make a picking resource for the building and each step of construction. This is used for picking buildings with the mouse.
See /example/building/Models/ApiaryPicking.rsc, ApiaryPicking01Mesh.rsc, ApiaryPicking02Mesh.rsc
Make a point resource for the building that defines where workers will stand when creating, using, and building the building. This point file references the dummy helper points setup when modelling.
See /example/building/Models/ApiaryPoints.rsc
Make a floor resource if the building has parts that citizens walk on that are above the terrain.
Make a decal that will be placed on the terrain. If you’re making multiple buildings you can put all the decals on the same texture. Putting more than one decal on a texture is better for rendering performance.
See /example/building/Models/MaterialInstance/ApiaryFootprint*
Make any sprites that are associated with the building. If you’re making multiple buildings you can put all the sprites on the same sheet. Putting as many sprites in one sprite sheet is better for rendering performance.
See /example/building/UI/ApiarySpriteSheet*
Make any strings that are associated with the building. If you’re making multiple buildings you can put all the strings in a single string table.
See /example/building/UI/ApiaryStringTable.rsc
Make a new profession if needed.
See /example/building/Profession/Profession.rsc
Make any new resources that may be needed by the building. Note that this type of resource has additional models, sprites, textures, and strings associated with it. You create them just like in the previous steps of creating a model of a building.
See /example/building/Template/RawMaterialHoney.rsc
See /example/building/Models/honey.fbx
See /example/building/Models/HoneyMesh.fbx
See /example/building/Models/MaterialInstance/Honey*
Setup an entity that ties together all the resources and defines how the building works. Setting up entities is complicated. For more examples, see all the game entities in /resource/Template/.
See /example/building/Template/Apiary.rsc
Add a toolbar item that adds the building to the main game toolbar.
See /example/building/Apiary.rsc
Make a resource reference file that will load all resources. This resource needs to be named <ModName>Resources.rsc:resource. If not, it will not load properly when packaged in mod format.
See /example/building/apiaryResources.rsc
In many cases it’s easier to iterate on models and textures while viewing them in game. If you build simple stub versions of the textures and models and get them into game – you can have the game reload them while you add details. Simply leave the game running and it will detect changes when you export fbx or pngs. Only Application-profile will detect changes. The final release executable does not. Note that this only works with loose resources. A mod already packaged into a single file will not reload resources, especially if the /onlypkg flag is used.
You can also change other resources, such as the entity definition, however some changes may make the game crash, especially if you change the number of items in an array. For example, changing the list of dummy node helpers and re-exporting while the game is running generally causes a crash. Other items, such as UI definitions, will reload, but won’t take effect until the UI is closed and then reopened. Other values, such as storage amounts in buildings don’t take effect until you build a new building.
For performance reasons it’s best practice to have a building be a single object with one material. The game supports multiple objects with multiple materials, but it will take the game longer to rendering these objects.
C. Debug Options
For testing, it’s useful to enable debug mode so you can place buildings without needing resources. You can also add resources, citizens, change time of year, change the color of fog and lighting, cause disasters, and see general performance statistics.
To enable it, you can edit
and find the ‘debug’ Toolbar item. Change the
to
Next time you load the Tools & Reports toolbar, there will be a debug option, which will bring up a dialog with many debugging tools. Note that the game isn’t guaranteed to work properly with debug/cheating enabled. You can break the game by changing the time slider for seasons, and invalidate some state that may cause crashes.
If you’re building a mod in a separate directory from the normal resource folder, you’ll have to copy the Toolbar resource into your directory in the same relative place so that the game will see the change.
D. Adding a new crop
This example adds a new crop to fields. In this case the crop is lettuce.
If you want to build and test the mod…
You should now be able to run the game and see that lettuce can now be used when you plant crops in a field. You’ll most likely want to enable debug mode to be able to use the lettuce seeds before buying them from a trading post. You’ll have to copy the toolbar resource (from the previous example) into the /example/crop/Game folder so that you can enable debug mode. The debug menu is available from the Tools & Reports menu item. There’s an icon of a bug on it. When you bring up the debug dialog, there’s a button to give all seeds to the player. Just hover over the buttons and read the tooltips.
Before giving a mod to others, make sure you’ve turned the debug option off if it isn’t your intent to leave it enabled.
Before the mod is packaged, you have to explicitly tell the game to load the resources using the /ref parameter.
Start a new game, and use the debug menu to give all seed types to the player. Then place a crop field – you should be able to select Lettuce as the crop. This crop works like any other.
You can build the mod into a package like so:
To test the mod by itself, you can run the game forcing it to only use packages.
The game should have the new mod listed in the Mods dialog and you can enable it.
If you’ve been working through all these examples, you can see you can load multiple mods at once. You can start a game with both the lettuce mod and the apiary mod.
General steps for adding a new crop
You’ll need to model two objects. One for this display of the crop in the field, and one for the crop when it is harvested.
See /example/crop/Models/Lettuce.fbx
Like in the building example you need to build Textures, Materials, and Meshes for the objects. The process is the same.
See /example/crop/Models/MaterialInstance/Lettuce* and LettuceLeaf*
See /example/crop/Models/LettuceLeafMesh.rsc and LettuceLeaf.rsc
Like in the building example you need to build String Tables and Sprites.
See /example/crop/UI/CropSpriteSheet.rsc
See /example/crop/UI/CropStringTable.rsc
Finally you’ll have to make entity definitions (again, similar to the building example)
See /example/crop/Template/NaturalResourceLettuce.rsc
See /example/crop/Template/RawMaterialLettuce.rsc
To package and reference the new entities, you’ll need a package resource and a list of referenced objects.
See /example/crop/lettuceResources.rsc
See /example/crop/Package.rsc
E. Adding a new tree
This example adds a new tree to orchards. In this case the tree produces figs.
If you want to build and test the mod…
You should now be able to run the game and see that fig trees can now be used when you plant trees in a orchard. Like the crop example, you’ll need to enable debug mode in this mod to be able to give yourself fig seeds without buying them at a trading post.
Before the mod is packaged, you have to explicitly tell the game to load the resources using the /ref parameter.
Start a new game, and use the debug menu to give all tree types to the player. Then place a orchard – you should be able to select Figs as the fruit. This tree works like any other.
You can build the mod into a package like so:
To test the mod by itself, you can run the game forcing it to only use packages.
The game should have the new mod listed in the Mods dialog and you can enable it.
General steps for adding a new tree
Adding a new tree is almost identical to adding a new crop, just the entity definitions are different, and modeling the tree can be slightly challenging.
You’ll need to model two objects. One for this display of the tree in the field, and one for the fruit when it is harvested. There is a slight difference is the modelling of the tree.
Deciduous trees in the game use the a vertex shader to always make the leaf billboards point at the camera. When modelling the leaves only a small quad (0.01m) is needed for each billboard. The billboards have a third texture coordinate that tells each vertex how far to expand and in what direction.
In general the billboards are also mapped to a location on the Ambient Occlusion texture that is fully white – and actual AO information is only used on the tree trunk.
On other parts of the tree, such as the trunk, make sure the third texture coordinate is mapped to uv (0, 0), otherwise the trunk will sway in the wind along with the leaves. If you’re adding a new conifer style tree, the third texture coordinate just defines how much the leaves sway in the wind.
See /example/tree/Models/FigTree.fbx
Like in the crop example you need to build Textures, Materials, and Meshes for the objects. The process is the same.
See /example/tree/Models/MaterialInstance/Fig* and FigTree*
See /example/tree/Models/FigMesh.rsc and FigTreeMesh.rsc
Like in the crop example you need to build String Tables and Sprites.
See /example/tree/UI/FigSpriteSheet.rsc
See /example/tree/UI/FigStringTable.rsc
Finally you’ll have to make entity definitions (again, similar to the building example)
See /example/tree/Template/NaturalResourceFig.rsc
See /example/tree/Template/RawMaterialFig.rsc
To package and reference the new entities, you’ll need a package resource and a list of referenced objects.
See /example/tree/figResources.rsc
See /example/tree/Package.rsc
F. Adding a new animal
This example adds a new animal to pastures. In this case the animal is a white chicken. It behaves just like the other chickens in the game.
If you want to build and test the mod…
You should now be able to run the game and see that ‘Leghorns’ can now be used when you select an animal in a pasture. ‘White Chicken’ does fit on all the UI very well, so ‘Leghorns’ which is a type of white chicken, is used instead. This is something to keep in mind as you mod the game – make sure your text fits in the UI. The UI will expand controls to fit the text, however this may cause the entire UI to stretch in unexpected ways.
Like the crop example, you’ll need to enable debug mode in this mod to be able to give yourself all the animal types without buying them at a trading post.
Before the mod is packaged, you have to explicitly tell the game to load the resources using the /ref parameter.
Start a new game, and use the debug menu to give all animal types to the player. Then place a pasture – you should be able to select ‘Leghorns’ as the animal. This animal works like any other. There’s another debug button to fill pastures with animals without waiting for them to grow. Press it a few times to add the animals.
You can build the mod into a package like so:
To test the mod by itself, you can run the game forcing it to only use packages.
The game should have the new mod listed in the Mods dialog and you can enable it.
General steps for adding a new animal
Adding a new animal is almost identical to adding a new crop or tree, just the entity definitions are different, and the model requries bones, skinning, and animations.
You’ll need to model two or three objects. One for this display of the animal in the field, and one for the meat when it is harvested. You may also need a model for another produced resource – chickens produce eggs, and cows produce milk.
After modelling the animal, you’ll need to rig it with bones and weight the mesh to the bones using a skin modifier. You can setup any sort of animation controllers, ik controllers, etc, as long as when you export the FBX file you bake the animation into the file, so that all animation frames are explicit, instead of relying on the controllers.
It’s important to keep the number of bones low. A maximum of 51 bones is supported, however for the game to render many animals quickly (in DirectX 9 mode), you’ll want to keep the bone count much lower than that. The lower the bone count, the more models the game can render simultaneously.
See /example/animal/Models/WhiteChicken.fbx
Like in the crop example you need to build Textures, Materials, and Meshes for the objects. The process is the same.
See /example/animal/Models/MaterialInstance/WhiteChicken*
See /example/animal/Models/WhiteChickenMesh.rsc
You’ll need to define an animation file that tells the game the ranges of animation for various motions. Animals need a walk, and three idles. It’s important to make sure animations that are played often on many of the same object be properly instanced, and that the number of different instances running is fairly low.
See /example/animal/Models/WhiteChickenAnims.rsc
Like in the crop example you need to build String Tables and Sprites.
See /example/animal/UI/WhiteChickenSpriteSheet.rsc
See /example/animal/UI/WhiteChickenStringTable.rsc
Finally you’ll have to make entity definitions (again, similar to the all the other examples, just different configuration). The white chicken reuses the meat and eggs resources that already exist in the game, so there aren’t new resources for them.
See /example/animal/Template/WhiteChicken.rsc
To package and reference the new entities, you’ll need a package resource and a list of referenced objects.
See /example/animal/whiteChickenResources.rsc
See /example/animal/Package.rsc
G. Using Custom Resource Types and Limits
This example shows how to use custom resource types and limits. Previous versions of the game were limited to the built in resource types. Food, Iron, Wood, etc. There are 10 Custom resource limits that can be used however modders see fit.
Once the mod is loaded, the status bar, resource limit window, and the town hall production and graphs will show an additional set of resources. Currently these are simple called Custom0, Custom1 … Custom9. It’s up to a modder to change the string tables to define what each custom resource is.
To build this mod, run
You can build the mod into a package like so:
Do Steam Workshop Mods Disable Achievements Mod
To test the mod by itself, you can run the game forcing it to only use packages.
There are 10 custom resources available. This mod doesn’t actually modify any buildings or resources to use the custom types. Here’s an overview on how you would change the Apiary to use a custom resource type and limit.
In the building example, open Template/Apiary.rsc.
Modify the ConsumeProduceDescription to use a custom resource type. It currently is food. Change
to
Modify the ResourceLimitUIConfig to use a custom resource type. Again change
to
Modify the tooltip UI elements to change the text on the tooltip
becomes
Modify the text UI element to change the text on the dialog
becomes
Note that in this mod Template/Citizen.rsc and Template/StorageBarn.rsc have been modified to be able to store certain resource types. For your own storage areas you’ll have to modify them as needed.
If desired change all the string table entries for Custom5 to match whatever you want your resource type and limit to be called. There are several places to change in the StringTable.rsc. Their names are
Custom5Limit
Custom5LimitShort
Custom5LimitTip
Custom5Tip
Type18 (this string entry is the named use when displayed as a graph in the town hall)
You’ll want to eventually modify the user interfaces to only display the limits and graphs that you want. Generally look for the word ‘custom’ in these resource files:
Dialog/StatusBar.rsc contains the custom items listed on the Status Bar in game. Any custom field can be ommited if not all 10 custom resource limits are used.
Dialog/TownHall.rsc contains fields where resource limits are placed used on the Production Tab in the town hall. It also modifies the production tab to have a scroll bar to keep the town hall window small. Some additional UI resizing may be needed.
Template/TownHall.rsc contains the UI config that adds the resource limits to the TownHall dialog.
Template/UtilityLimits.rsc contains the UI config that add the resource limits to the limits dialog.
Dialog/StringTable.rsc contains strings used to name the custom resources. To remove custom resources that are unused from the graphs, simply leave the strings blank, or truncate the list.
Template/TradingPost.rsc contains changes to add custom resource types to the auto purchase UI list. Note that if you change this list you need to update the number of entries in the table in the UI. This is located in Dialog/Trade.rsc. (TableDescription tablePurchase needs the _height value to match the number of entries)
Note that if two mods are loaded that both use a custom resource types that clash, behavior is undefined – resources you expect to be grouped with a certain type may have the wrong name and logically unrelated types will end up with the same resource type and limit.
H. More than 3 resource requirements for a building
This example shows how to use more than 3 resource items when constructing a building. Previous versions of the game were limited to 3, and if more were used a crash was seen.
Once the mod is loaded, the basic wooden house requires six items for construction, Wood, Stone, Iron, Tools, Firewood, and Coal
To build this mod, run
You can build the mod into a package like so:
To test the mod by itself, you can run the game forcing it to only use packages.
Here’s a basic list of changes required to use more resources when constructing buildings
In ToolTipToolBar.rsc, change the layout to have as many labelBuildX as are required (i.e. labelBuild3, labelBuild4, …)
In CreateBar.rsc, change make a similar change adding more labelBuildX as are required
In Build.rsc change the storageTable to have as many entries as are required, plus an additional one thats used for the amount of work required.
In whichever building you want, change the build section to have more items, See WoodHouse.rsc:build.
Optional: If desired, per building, the UI can be changed to match the number of required resources. You’d have to change the UIDescription to point at a dialog with the correct number of items in the storage table, instead of the default “Dialog/Build.rsc:build”