When building for Sinfar, you will only need to use the Toolset to create and edit area. All other blueprints can be created and changed using Sinfar development website: https://nwn.sinfar.net.
Changes are live and can even sometime instantly be seen in game. At worst you will have to reload the area or re-create the object in game.
Sinfar worlds are not made of big module but of plenty of resources (blueprints / ResRef) classified into ERFs and the websites allows you to mange those ERFs and their resources.
It stands for “Encapsulated Resources File” but we just call them ERFs. They are containers of blueprints that are using the same prefix(es).
They are represented that way on the website:
They can contain any number of resources of the following resource types:
Their main purpose is to split resources into meaningful entities, for example: an island, a scripting system, a set of generic items…
Splitting resources into multiple ERFs is a good way to document what you are building but it also lets you use many of the ERFs features on more specific resources.
Each ERFs has the following possibilities:
The prefix is the part of the ResRef / Blueprint that is before the first undercore. For exampl:
Full ResRef | Extracted Prefix |
---|---|
agn_area_001 | agn |
test___001 | test |
0_1_2_3 | 0_ |
_abcd |
It it used to determine from which ERF a resource come from and from there (the ERF) the server can know the remaining (which server / who has access, what weather to use…)
ERFs have one main prefix and can have secondary prefixs (but secondary prefixes are not recommended).
Sinfar development system uses Git under the hood. Everytime that you:
A commit is created with all changes and pushed into the Git repository. So all changes can be tracked and reverted.
Each ERF has their own folder and the folder containing all those ERF folders is a Git repository:
GFF resources (*.ut?, *.ifo, *.are and *.git) are stored in a JSON format, for example:
[ 4294967295, { "AddCost": [ 4, 0 ], "BaseItem": [ 5, 22 ], "DescIdentified": [ 12, { "s0": "A multifunctional combat cutter appears in your hand. It seems particulary effective against living tissue as the hot edge not only cuts but burns through flesh like butter." } ], ...
Sot it possible (but far from perfect…) for the system to merge, revert and display changes. GFF resources have the extra extension .json added to them:
Remmber that this is only for the Git repository, the game server doesn't understand this JSON format. The game server load the resources from a clone of the repository that has the binary (GFF) format of the resources.