QuickEntity - a format and editor for entities

QuickEntity version 1.11


Converts between ResourceTool JSON and a much easier to deal with JSON format.


Changelog for version 1.11

I am speed QuickEntity now takes 99% (actual statistic) less time to rebuild from QN JSONs to RT Source.
Shut up Tony The “Always ask for conversion mode” checkbox now remembers its state when the app is opened and closed.

Previous QN JSONs should be compatible with this version.


Changelog for version 1.10

This is for you, Notex You can now require("uh huh.js") and use the convert and generate functions with new automation parameters.
Science never stops SColorRGB and SColorRGBA types are now parsed into hex format (#RRGGBB and #RRGGBBAA respectively).

You will need to convert to a new QN JSON - use the guide.


Changelog for version 1.9

b u g f i x e s uh huh
Support for the editor Added an “always ask for conversion mode” checkbox.

There shouldn’t be any breaking changes this update.


Changelog for version 1.8

insect improvements Fixed some :b:ugs.
You see, I lied Actually added H2016 support.
"I should probably parse those" QuickEntity now parses property overrides.
"its kind of annoying" QuickEntity now asks for TEMP/TEMP meta/TBLU/TBLU meta instead of leaving the metas to the end.
"I want my static JSON file to contact a web server and check its QN version" Well I can’t do that but it does have the version in the JSON now.
"you’re telling me i’ve probably fucked my TEMPs" The choice between modes has been improved; it now automatically selects names if no duplicate names are found, and provides the choice between ids and names if there are. QuickEntity now stores the mode in the JSON as well, so it will no longer ask when converting to ResourceTool Source.
Begone Extra dependencies are no longer tracked by QuickEntity.
"can we get a QN to TEMP/TBLU" Yes
O p t i m i s a t i o n Performance has been improved significantly through the power of removing a few lines of code.

It’s a good idea to use the original files from the game.


Changelog for version 1.7

shut up sieni The dialog boxes no longer cut off the text.
oops Fixed multiple critical bugs.
TArray support idk I can’t think of a witty headline for it.

You will need to convert to a new QN JSON if you have any lying around.


Changelog for version 1.6

Fuck you IO, not cool Properties sometimes have no value. QuickEntity now accounts for this bullshit.
"You stab yourself with them until the TEMP works" QuickEntity now correctly rebuilds non-void pin values.
"makes like, a lot more sense" QuickEntity now represents entity IDs as hex like IO does.

You will not be able to convert to a new QN JSON. Use the original files from the game.


Changelog for version 1.5

  • Renamed Howard’s Number to Use EntityID (thank you Anthony Fuller)
  • propertyOverrides now use paths instead of external scene indexes

You will need to convert to a new QN JSON if you have any lying around.


Changelog for version 1.4

  • Signficant accuracy improvements in conversion

You will not be able to convert to a new QN JSON. Use the original files from the game.


Changelog for version 1.3

  • Fixed entity IDs
  • Fixed overrides
  • Fixed parents
  • Redesigned the GUI

You will not be able to convert to a new QN JSON. Use the original files from the game.


Changelog for version 1.2

  • Fixed external scene based eidParents
  • Improved support for pins - you’ll notice new keys called events, inputCopying and outputCopying on entities
  • Added the ability to change which game QuickEntity uses when converting to and from TEMP/TBLU with ResourceTool

You will need to convert to a new QN JSON. You also may need to run QuickEntity as administrator for the game setting to work.


Changelog for version 1.1

  • Added custom parsing for SMatrix43 type - rotations now use Euler angles for X, Y and Z axis rotation. This is a breaking change. You will need to convert to a new QN JSON for your file to be parsed.
  • Added custom parsing for ZGuid type - now displays the hex UUID used in the REPO and the RPKG Tool GUI. This is also a breaking change.

Converting to a new QuickEntity JSON format
If you’re OK with losing changes for a possibly more stable end result, convert from the original TEMP/TBLU/metas using the new version of QuickEntity. If you have changes that you want to keep, convert to ResourceTool Source using the old version of QN, then convert to QN JSON with the new version (there is a small chance this may cause issues with stability, I have not tested but it should be OK).


Setup

  • Extract the 7z file into a folder
  • Place ResourceTool, rpkg-cli and hash_list.txt (from the RPKG Tool) into the same folder

Usage
Make sure to set which game to use first with Set Game.

Convert to QuickEntity JSON
Converts a TEMP.json and TBLU.json (ResourceTool), as well as a TEMP.meta.json and TBLU.meta.json (rpkg-cli), into a single QuickEntity JSON file, which is easier to read and change.

Convert to ResourceTool JSON
Converts a single QuickEntity JSON file into a TEMP.json and TBLU.json (ResourceTool) and a TEMP.meta.json and TBLU.meta.json (rpkg-cli).

TEMP/TBLU to ResourceTool Source
Converts a binary TEMP file, a binary TBLU file, and two binary meta files into a TEMP.json and TBLU.json and a TEMP.meta.json and TBLU.meta.json.

ResourceTool Source to TEMP/TBLU
Converts a TEMP.json and TBLU.json and a TEMP.meta.json and TBLU.meta.json into a binary TEMP file, a binary TBLU file, and two binary meta files.


Notes

  • Don’t worry about dependencies so long as they are in an accessible chunk - QuickEntity creates metas automatically from any referenced files in the JSON.
    • If your dependency isn’t in an accessible chunk, you can likely port it by extracting all hash depends of the generated TEMP with RPKG Tool

Credits

  • Anthony Fuller for helping me with entity IDs as well as working out the significance of -2

(Slightly outdated) example of QuickEntity JSON format

{
    "parent": "TestEntity",
    "name": "PathfinderConfiguration",
    "template": "[modules:/zpathfinderconfiguration.class].pc_entitytype", // Dependencies are automatically computed so you can reference paths directly
    "blueprint": "[modules:/zpathfinderconfiguration.class].pc_entityblueprint",
    "properties": [{
        "name": "m_NavpowerResourceID",
        "type": "ZRuntimeResourceID",
        "value": "[assembly:/_pro/scenes/missions/thefacility/_scene_mission_polarbear_module_002.navp].pc_navp" // Runtime resources are replaced with paths or hashes for easier editing
    }],
    "postInitProperties": []
},
{
    "parent": "Props", // Parents can be referenced with names or IDs if you want
    "name": "ItemKeyForRemoteSedativeGas",
    "template": "[modules:/zitemrepositorykeyentity.class].pc_entitytype", 
    "blueprint": "[modules:/zitemrepositorykeyentity.class].pc_entityblueprint",
    "properties": [{
        "name": "m_RepositoryId",
        "type": "ZGuid",
        "value": "689e578c-938-47ad-9605-32e89aa9f195" // UUIDs as seen in the rest of the game
    }],
    "postInitProperties": [{
        "name": "m_eidParent",
        "type": "SEntityTemplateReference",
        "value": "Notex_Test"
    }]
},
{
    "parent": "Props",
    "name": "RemoteSedativeGas",
    "template": "[modules:/zitemspawner.class].pc_entitytype",
    "blueprint": "[modules:/zitemspawner.class].pc_entityblueprint",
	"commentOrWhatever": "This is the item spawner for the remote sedative gas", // Support for arbitrary fields that won't get packed into ResTool source
    "properties": [{
        "name": "m_mTransform",
        "type": "SMatrix43",
        "value": {
            "rotation": {
                "x": 90, // Euler angles for rotation around the three axes
                "y": 0,
                "z": 90
            },
            "position": {
                "x": 2.5,
                "y": -8.7,
                "z": 4.3
            }
        }
    }, {
        "name": "m_bSpawnOnStart",
        "type": "bool",
        "value": true
    }, {
        "name": "m_bUsePlacementAttach",
        "type": "bool",
        "value": false
    }, {
        "name": "m_ePhysicsMode",
        "type": "ZItemSpawner.EPhysicsMode",
        "value": "EPM_DYNAMIC"
    }, {
        "name": "m_rMainItemKey",
        "type": "SEntityTemplateReference",
        "value": "ItemKeyForRemoteSedativeGas" // References can use names or IDs if you want
    }],
    "postInitProperties": [{
        "name": "m_eidParent",
        "type": "SEntityTemplateReference",
        "value": "Notex_Test"
    }]
}

Download release v1.11 here
Download patch v1.114 (put in resources/app, also replace the underscore with a space) here


QuickEntity Editor version 1.01


Like the RPKG brick editor but competent


Download release v1.01 here
Place enums.json in the same folder

7 Likes