Current release: Version 195 / 1.2.95-ue427-powershell-null-collection-selftest-hotfix.
node2code is an Editor-only source plugin for Unreal Engine 4.27.2 on Windows/Win64. It exports supported Unreal Engine assets to AI-friendly JSON/ZIP packages and imports strict, versioned Blueprint JSON changes generated by an AI back into the project.
The product name shown in Unreal Editor is node2code. Existing technical identifiers such as the module name NodeToCode, schema prefix N2C_, command IDs and historical filenames are intentionally retained for compatibility.
node2code can export selected assets, folders and supported project content to structured JSON/ZIP packages. Depending on the asset type, exports may include:
- Blueprint asset identity, parent class and metadata;
- graphs, functions, macros, nodes, pins and links;
- variables, defaults, containers and reference types;
- components and SCS hierarchy;
- interfaces, delegates and event dispatchers;
- User Defined Enum and User Defined Struct definitions;
- DataTable-related graph identities and row-struct information;
- Niagara systems, emitters, modules, inputs, user parameters and supported formula/curve data;
- coverage sidecars, blocker reports and round-trip evidence;
- project-level ZIP packaging for AI review.
A project export is always valid as capture and coverage evidence. It is directly reimportable only when its sidecars explicitly report that the relevant asset/path is supported for import.
The production importer accepts strict versioned schemas:
N2C_PATCH_V1— one existing Blueprint;N2C_PROJECT_PATCH_V1— several existing Blueprints in one project-level operation;N2C_ENUM_PATCH_V1— one existing User Defined Enum;N2C_STRUCT_PATCH_V1— one existing User Defined Struct.
N2C_PROJECT_PATCH_V1 currently accepts Blueprint entries only. Struct and Enum patches are imported through their dedicated asset-level flows.
Supported Blueprint classes include:
- ordinary Blueprint/Actor Blueprint;
- Widget Blueprint;
- AIController Blueprint;
- BTTask Blueprint;
- BTService Blueprint;
- BTDecorator Blueprint.
The importer supports creating, changing, renaming, deleting, reading and writing Blueprint variables, including:
bool,int,float;- raw
Byteand enum-backed Byte; Name,String,Text;Vector,Rotator,Transform;- object, class, soft-object and soft-class references;
- User Defined Struct values;
Array,SetandMapcontainers;- category and supported variable options;
- generated-class CDO persistence checks after compile/save/reopen.
Supported graph use includes Variable Get, Variable Set, Get-to-function-input links and function-result-to-Set links.
Supported function operations include:
- create pure and impure functions;
- input parameters, outputs and local variables;
- multiple Function Result nodes;
- category and supported flags;
- replace function body;
- rename and delete functions;
- regular calls, parent calls, member calls and interface/message calls;
- compile, save, reopen and repeated-import verification.
Pure function call nodes have no external exec pins, but generated function bodies still require a valid internal FunctionEntry -> FunctionResult execution route.
The importer supports patching EventGraph, function graphs, macro graphs, Widget graphs and supported collapsed/composite graphs. Verified families include:
- Branch, Sequence and Select;
- Knot/Reroute;
- Custom Event and contextual event nodes;
- Self and Dynamic Cast;
- CallFunction, CallFunctionOnMember, parent call and interface/message call;
- Array Length, Get Array Item and verified array/custom-thunk operations;
- SpawnActorFromClass;
- CreateWidget;
- supported input action/key/axis nodes;
- exec and data links;
- literal, object, class, text and struct pin defaults;
- stable authored node IDs and repeat-import reuse.
For SpawnActorFromClass, SpawnTransform must be connected to a Transform output such as MakeTransform.ReturnValue.
Supported specialized nodes include:
- Make Struct;
- Break Struct;
- Set Fields in Struct;
- enum literal/cast/equality/inequality;
- Switch on Enum;
- ForEach Enum;
- enum-to-Name conversion;
- GetDataTableRow with literal or linked DataTable input;
- typed
Out Rowand row-struct compatibility validation.
Supported operations include:
- create/delete Event Dispatcher;
- CreateDelegate;
- bind/add, call/broadcast, remove and clear;
- ComponentBoundEvent;
- handlers created in the same patch when dependency order allows it.
The canonical UE4.27 CreateDelegate output pin is OutputDelegate. Delegate and Event are legacy aliases only.
Supported operations include:
- create/delete Blueprint macros;
- StandardMacros references;
- external Blueprint Macro Library references;
- collapsed/composite graph creation and replacement;
- Tunnel boundary identities and mappings;
- add/update SCS components and hierarchy;
- ComponentBoundEvent for compiled component properties;
- add Blueprint Interfaces and create interface/message calls.
Before changing the real asset, node2code performs strict validation and a transient duplicate-Blueprint dry run using real UE4.27 graph allocation, pin lookup, default conversion and schema connection rules.
The apply pipeline includes:
- strict preflight;
- transient sandbox dry run;
- disk backup;
- transactional apply;
- compile;
- save;
- rollback or queued disk restore when required.
The plugin can block opening an asset that is waiting for recovery and can complete deferred restore in a fresh Editor process.
Long-lived graph actions should provide a stable import_scope or action_id, and every authored node should use a stable unique id.
Reapplying the same JSON is expected to:
- reuse imported nodes;
- reuse existing identical links;
- avoid duplicate variables, functions, delegates, macros and components;
- compile and persist after full Editor restart.
Version 195 is production-verified for its declared UE4.27.2 scope:
- 11/11 release stages PASS;
- ContractMatrix: 117/117 Apply, FreshFirst, Reapply and FreshSecond;
- cleanup PASS;
- Legacy ManualReplay 21/21;
- both deferred restore passes;
- real Level Editor UI import of six Blueprint classes;
- fresh compile, duplicate-free second import and Project Export verification.
The mandatory extension rule is N2C_NEW_NODE_TEST_GATE: a new importer action, node branch, pin/default rule, alias or guard is not release-claimable until it has positive/negative contract coverage, both fresh-process checks, idempotent reapply proof, cleanup and documentation.
The current production claim does not include:
- full arbitrary-project round trip;
- full AnimGraph/state-machine/transition reconstruction;
- Behavior Tree asset graph editing;
- Blackboard or EQS asset editing;
- full Niagara graph import/round trip;
- automatic Project Settings input-mapping creation;
- modification of native C++ Enum or Struct definitions;
- project-level Struct/Enum entries inside
N2C_PROJECT_PATCH_V1; - Timeline;
- graph-level
K2Node_AddComponent(use SCS component operations); - InputTouch;
- Ease Function;
- Material Parameter Collection function nodes;
- function-local default values;
- cosmetic comment/layout fidelity.
Unsupported operations must be rejected before mutation rather than approximated.
- Close Unreal Editor and Visual Studio.
- Delete the existing
<PROJECT_ROOT>/Plugins/node2codefolder completely. - Extract the top-level
node2codefolder into<PROJECT_ROOT>/Plugins/. - Build the Editor target or run the complete release gate.
Plugins\node2code\Scripts\RUN_N2C_AUTOMATION_AND_PACK.cmd -EngineRoot "<UE4_ROOT>" -KeepResultDirectoryExpected final result:
N2C_AUTOMATION_RESULT|result=PASS
The result bundle is written under:
<PROJECT_ROOT>/Saved/NodeToCode/TestBundles/
After automation passes, use N2C_FINAL_MANUAL_ALL_STRICT_SUPPORTED_V195.json for the real Level Editor import/restart/reimport/export acceptance flow described in Source/Documentation/N2C_VERIFICATION_WORKFLOW.md.
Any AI creating import JSON must read:
N2C_AI_JSON_IMPORT_AUTHORING_RULES.md
The AI must use exact exported asset paths, node classes, pin names, function identities and supported schemas. It must not invent plausible-looking Unreal identities.
The next feature release must add remappable Editor shortcuts for opening/focusing Import and Export. The real UI release test must use those commands rather than unchecked coordinate clicks. See:
Source/Documentation/N2C_P0_EDITOR_COMMAND_SHORTCUTS.md
node2code is developed and maintained by sadnessinc. It was originally based on the concept and early code of Node To Code by Protospatial / Nick McClure, but the current plugin has been extensively rewritten and is no longer presented as a product fork in its name or Unreal Editor metadata.
The original Apache 2.0 license and source copyright notices are retained as required. Product metadata, maintenance and current release responsibility belong to sadnessinc.
- Author:
sadnessinc - GitHub:
https://github.com/sadnessinc - Documentation:
https://github.com/sadnessinc/node2code-fork-ue4 - Issues:
https://github.com/sadnessinc/node2code-fork-ue4/issues