Repository navigation
HD2Runtime ModBuilder v1.7.0
HD2Runtime ModBuilder 1.7.0
HD2Runtime 0.30.0. ModBuilder now bundles the HD2Runtime 0.30.0 SDK, the release, not a 0.30.0-dev test build, and can author what it adds: stratagem call-in codes, names, descriptions and icons (including your own), call-in times, orbital barrage patterns, Eagle attacks and sentry turrets; vehicle handling and mounted turret motion; Jump and Hover Pack movement; enemy gibbing; support weapon charge; 32 new projectile donors (Eagle payloads, orbital shells, sentry rounds) for every projectile selector; and the new Lua APIs in Custom Lua.
Custom content (experimental). ModBuilder can now also create new game content, not only change existing objects: custom stratagems with their own icon, call-in code and delivery, and custom projectiles that existing weapons can fire. It is marked Experimental; where another tab refers to custom content (a projectile selector, the Changes panel), it is shown in violet. HD2Runtime 0.30.0 releases the custom stratagem API, but still calls it experimental with several players, and custom projectiles use Runtime modules outside its public API, which may still change. A mod with custom content requires HD2Runtime 0.30.0. Projects keep ModBuilder's own description of each object, never the Runtime's Lua, so they stay migratable. A mod built now may need rebuilding with a later ModBuilder.
Download: HD2Runtime-ModBuilder-v1.7.0-win-x64.zip (Windows 10/11 x64). Extract it and run HD2RuntimeModBuilder.exe, or use Install update from any earlier version.
New projects bind to HD2Runtime 0.30.0. Existing projects keep their SDK binding (for example 0.28.1) and export exactly as before until you rebind them. Every export states the HD2Runtime it needs in requires.hd2runtime.min_version: the bound SDK's version, raised to 0.30.0 when the project uses anything 0.30 adds (a 0.30 field, a projectile donor, custom content). The generated addon refuses to run on an older Runtime with that reason.
HD2Runtime 0.30
- Binding. The bundled SDK is HD2Runtime 0.30.0. Projects bound to the 0.30.0-dev SDK of the 1.7.0 test builds open and export as before (HD2Runtime 0.30.0 loads mods that declare 0.30.0-dev); once they use anything 0.30 adds, their export requires 0.30.0, and Rebind moves them to 0.30.0. Rebind also keeps a 0.28.x project's edits; where 0.30 asks for an opt-in it did not before (the PLAS-45 Epoch's 30 damage fields now need
allow_unverified_effect), the export writes it and the field shows a warning. Nothing asks you to acknowledge anything. - Stratagems.
- Call-in code on every stratagem: build the arrows (1 to 9) and apply them in one save. A code equal to one of the game's native codes (all 149, mission stratagems included) is written with the opt-in Runtime needs and named in a warning; a code another edit or custom stratagem already uses is resolved right in the editor.
- Presentation: each stratagem's name, cased name, description and icon can come from another stratagem (Look like another stratagem sets all four), and the icon can be your own PNG, packed exactly like custom content icons. It applies aboard the ship.
- Call-in time (0 to 60 s), the orbital barrage pattern (salvos, shells, intervals, scatter, shown next to the vanilla pattern in words), the Eagle attack (bomb landing pattern, drop interval, fire duration, sweep length, target radius, attack angle; the jets that share a pattern are named in a warning) and the sentries' spread, recoil, wind-up, beam rate, pitch/yaw coupling and side and rear range (with a Same as range switch). Sentry turret, targeting and minefield fields that were writable since 0.28 now show on the deployed entity too.
- Vehicles, backpacks and enemies.
- Handling: steering response on 7 vehicles; body turn speed, acceleration and deceleration on the 4 Exosuits.
- Turret motion on 5 mounts: turn speeds and traverse/aim limits. A limit pair that would cross is caught where you type it (Swap them / Keep / Cancel); Runtime would silently skip it.
- Jump and Hover Pack movement, grouped by flight phase. Launch thrust is labelled in m/s², as 0.30 corrects; the stored value and the Lua are unchanged.
- Enemy gibbing: the whole-body gib threshold on 23 Terminid classes, with a Disable bursting switch instead of typing −1.
- Fields Runtime publishes as not active on an object show a Not active badge and the reason.
- Support weapon charge.
- A Charge section on the RS-422 Railgun, PLAS-45 Epoch, ARC-3 and 40-K Meltagun: minimum, full and overcharge stages, bursts, auto-fire at full charge and explode at overcharge (marked as a hazard), with Runtime's meaning and range for each.
charge.level_1/2/3are shown as the charge times in seconds they always were. Deprecated ids are marked and offer a fix in place.- The Epoch's full-charge shot and explosion and the Epoch's and Railgun's overcharge explosions are editable. Two of them share one damage row, which the editor keeps in sync when you ask it to.
- Overcharge explosion: the Railgun can use the Epoch's, and the Epoch the Railgun's.
- On rate-selector weapons, Fire rate says it writes only the middle rate. The Torcher and the Hot Dog name each other where they share damage rows.
- Player (Helldiver) fields. A new Player page edits the Helldiver type (
hd2.helldiver(), HD2Runtime 0.30.0): movement speeds, stamina, the explosion damage every zone takes, and the damage multiplier, damage over time, durable share, share to main health and health of each of the six body zones (a compact zone table, the selected zone edited below it). Damage multipliers are chosen by name. Every write carriesallow_sharedandallow_unverified_effect, shown as warnings: the values apply to every Helldiver this machine simulates, are not live-tested, show only in a mission (the ship's Helldiver keeps a private copy), zone health applies from the next spawn, and speeds end at the game's 10 m/s cap. - Muzzle, optics and underbarrel attachments. Player Weapons has a new section listing each slot's attachments (the default first) with the stat modifiers they carry: ergonomics, sway, recoil, climb and spread (132 fields on 44 attachments). An attachment is shared by every weapon that can equip it, so an edit applies to all of them, and its effect is not live-tested yet; both are warnings, never checkboxes. Which attachment is equipped can't be changed.
- Armor. A new Armor page: piece weights of the 135 armor kits with a live preview of rating, speed and stamina regen; the three weight classes and the damage curve; and, solo only, your own armor bonus, stamina factor and a passive override (a second passive too). Nothing is tested in game except four armor-slot passive swaps; every write carries the opt-ins Runtime needs, shown as warnings.
- Projectile donors. Every projectile selector's Vanilla group offers HD2Runtime 0.30's 32 donors by Runtime's names (
Eagle 500kg Bomb (projectile 239)), with their emitter, flight and how their assets load. None is live-tested; every donor write carries both opt-ins and shows a warning. - Custom Lua.
- Pickers for homing shots, enemy spawn weights, limb injury and heal, velocity changes, loadout / weapon in hand / ammunition, resupply from a pack and the Pelican, and a picker over the 171 weapon sounds.
- Completion knows the 0.30 API (
hd2.enemiesis now callable,hd2.resources.image/model,hd2.diagnostics.performance(), the new field groups) and the Runtime's live-test evidence for each. - New snippets: change a stratagem's call-in code, make a stratagem look like another, and log the slowest mods.
- Checked with HD2Runtime 0.30.0's own validator. Exports with every new field (stratagems, vehicles, charge, donors) and the earlier fixtures validate against the Runtime, with its isolation probe.
Custom Stratagems
-
A new sidebar group, Custom Content, holds Custom Stratagems and Custom Projectiles. The stratagem list shows each one's icon (in its family's category colour), name, ID, family, cooldown, uses, traits, call-in code, HD2Runtime's play status for the family and its readiness, with New, Templates, Import Runtime project…, Duplicate, rename, reorder and delete.
-
Weapon variants on every support weapon. Built against HD2Runtime at
b3f42ec, the weapon variant family offers all 32 support weapons the Runtime can deliver (the TX-41 and MS-11 are left out with the Runtime's reason). A weapon whose type also appears as world loot or in other pods is written with the opt-in it needs and a warning that those copies become the variant too; a beam or flame weapon says it has no round to change. EAT expendable clones can take the reviewed direct hit damage (500) with their impact explosion. -
Several custom stratagems in one mod, in one place. A mod holds up to 16. While one is open, a strip above its editor lists the others (switch, back to all, + Add another); the grid ends with an Add another card; and Overview has a Custom stratagems panel listing them with their call-in codes and readiness.
-
Every family HD2Runtime 0.30 can build. Each shows only its own fields, and what HD2Runtime has shown of it in play (live-tested, partly tested or not live-tested, and its multiplayer status, from the Runtime's own schema):
- Orbital barrage: a Runtime barrage of a reviewed shell in an adjustable vanilla pattern (salvos, shells, intervals, scatter, impact), or a vanilla barrage with each shell's impact replaced.
- Eagle strike: a vanilla Eagle's strike with its own uses per rearm, rearm time and impact payload.
- Pelican gunship: the game's Pelican hovers over the beacon. Set its hover time, approach and orbit, and its chin gun: round (or the vanilla autocannon), the Gatling Sentry's behaviour, rate multiplier or rate, casings, spread, no recoil, unlimited ammo, facing the target, aim height, a firing sound from the catalogue (171) and an impact explosion.
- Support pod: a support weapon or backpack's own pod, its delivered weapon reconfigured.
- Expendable weapon: a disposable clone of a reviewed expendable with its own name and marker and prompt icon (the stratagem's, the donor's, or an imported PNG), another reviewed round or an impact explosion, a clone level, its weapon fields, and its pod's contents.
- Custom pod: a carrier pod packed with support weapons, backpacks and primaries, each with a count and its own reconfiguration.
- Weapon variant: a mission-scoped variant of a reviewed weapon (the M-1000 Maxigun): another round of its class, its own presentation and its own model.
- Sentry: a vanilla sentry with its own gun: round, rate, spread, magazine, zero recoil and a firing sound.
- Missile silo: a silo whose missile detonates as another catalogued explosion, with a fallback. Objective blasts are flagged (about 300 MB of packages).
- Scripted (Lua): nothing is delivered (or a vanilla support pod): your callbacks do the rest.
-
Identity and call-in. HUD name, panel name, description, up to four traits after the automatic CUSTOM STRATAGEM, the internal ID (generated once; changing it is an explicit action), the icon, a graphical arrow code, a cooldown and uses per mission (counted natively by the carrier's slot).
- A code that equals or starts another custom stratagem's is refused.
- So is one that equals a native stratagem's, or starts or extends a selectable one's, exactly as HD2Runtime refuses it.
- New stratagems and copies always get a free code.
-
Carrier. The carrier groups that can carry the payload, the family's default marked, with a pod capacity for pod groups; or a custom beacon and family policy. Then preferred and allowed families, exclusions and extra call-in packages. The carrier itself goes into the loadout slot (HD2Runtime's default since r44), so the slot shows the name, icon, cooldown and uses natively.
-
Custom assets.
- Icons: imported PNGs or placeholders, for the stratagem and for a delivered weapon's own marker.
- Models: a weapon variant's model, recoloured per material zone or with the debug palette (each zone its own colour). The project keeps only the colours. The export derives the unit, material and colour table from your installed game, refusing when the installed base is not the reviewed one, into a patch of the base weapon's own archive. Check my installed game runs the derivation on demand. The model build is a C# port of the SDK's
hd2_model.py, byte-identical on the installed game. - Sounds: catalogue firing sounds for sentries and Pelican guns.
-
Advanced: Lua. Per stratagem:
- a setup chunk (local state and helpers);
- all five callbacks (
on_called,on_beacon_created,on_beacon_landed,on_activate,on_delivered), each the body of a function givenctx; - extra registration fields for Runtime fields ModBuilder does not model.
This is ModBuilder's Lua editor with completion from HD2Runtime 0.30's own API (
ctx:included), syntax markers as you type, snippets (barrage, Pelican, explosion at the beacon, converting delivered rounds, …) and saving shortly after you stop typing. -
A studio. The editor has a section bar that jumps to each section and marks the ones with problems. Beside it, a live preview shows how the stratagem presents (icon, names, traits, code, cooldown, uses, family, carrier) and how ready it is, each problem one click from where it is fixed.
-
Fields come from Runtime's schema. Ranges, units, defaults and choices come from Runtime's published
CustomStratagemSchema.json. A field Runtime refuses stays visible and disabled, with Runtime's reason. Fields the chosen mode or donor does not use are named in one line with the reason. -
Checked by the Runtime's own rules. Custom stratagems are validated by a port of the SDK's own validator (
sdk/tools/custom_stratagem_project.py): the same checks, in the same order and the same words, shown on the field they name. The tests hold it to the SDK validator's exact output on 140 projects that each break one rule. -
Templates to start from. Five simple examples for the main families, with nothing modified (Machine Gun Drop, Quick MG Sentry, Eagle Heavy Bomb, Pelican Flyover, Hellbomb Silo), and two of HD2Runtime's own examples: EAT-40 Expendable Gas and Orbital Gas Barrage. Each is valid under the Runtime SDK's own validator and builds to exactly the registration the SDK compiles for it (tested byte for byte).
-
Runtime projects in and out. Import Runtime project… reads an HD2Runtime
custom_stratagems.json(with its icons when present); Copy as custom_stratagems.json gives the project's custom stratagems in that format; the Build section shows each stratagem's register call and its Runtime project form.
Custom Projectiles
- New projectiles with their own IDs, separate from editing a vanilla projectile. Both can be used in the same project.
- Building one. A custom projectile is a vanilla base projectile. Its whole components can be taken from other catalogued vanilla projectiles: visual, direct damage, impact explosion and ballistics.
- Cloning a vanilla projectile. From a template → Clone a vanilla projectile… lists every projectile the SDK maps, grouped by owner and searchable. The custom projectile starts as an exact copy: that projectile is its base and nothing is taken from another one yet. Runtime defines such a projectile as a copy of the base row, so this works with the current HD2Runtime development API. Projectiles Runtime cannot use as a base (an unknown asset package) stay listed, disabled, with the reason.
- Choosing it for a weapon. Every projectile selector now has two groups: Vanilla and a violet Custom — Experimental group. This covers a player weapon's Projectile section, the Projectile Builder's hosts, support and mounted weapons, and ammunition modes.
- A custom projectile is stored as a typed reference,
{"kind": "custom_projectile", "id": …}, never as a vanilla projectile ID. - Choosing a vanilla projectile replaces it again. Fire its own projectile again clears it.
- Support weapons, mounted weapons and ammunition modes cannot fire custom projectiles with this Runtime target yet. Their group says so, with the reason.
- A custom projectile is stored as a typed reference,
- Creating one from the weapon. + Create New Custom Projectile… opens a draft in the Custom Projectile Builder. It starts from what the attack fires now.
- The weapon keeps what it fires until the draft has no errors and you choose Assign to … and return. You land back on the same attack.
- Cancel and return, or deleting the draft, removes it and leaves the weapon unchanged.
- The draft's ID follows its name until something uses it.
- Working with it from the weapon.
- Open the assigned custom projectile, rename it (its ID stays), or start a Duplicate and edit… draft. The copy replaces it only when completed.
- Its errors show right in the weapon's selector, with Open to fix.
- Conflicts are asked in place. That includes a vanilla swap or projectile edits on the same attack. It also includes this Runtime's one-attack-at-a-time limit: assigning moves the custom projectile from the other attack.
- Runtime support. These use Runtime development modules that
hd2does not export yet. They are host only. Runtime has live-verified them on the SMG-32 Reprimand. - Dependencies. A custom projectile that something uses cannot be deleted or have its ID changed without those uses being handled.
- Changing the ID updates every use.
- Deleting asks to move the uses to another custom projectile or remove them.
Validation and build
-
Validation is immediate, shown on the field and object being edited. It marks:
- ✓ what holds
- ℹ what to know
- ⚗ experimental machinery
- ⚠ warnings
- ✕ errors, which block the build until fixed (the blocked-build banner opens the object)
Multiplayer hints are informational only.
-
Build output.
- One deterministic registration per custom stratagem in
src/addon.lua, its fields exactly as the Runtime SDK's compiler writes them, isolated so a refused one never stops the others. - The compiled icons in the mod's archive with their build record, and the source PNGs at
images/<id>.png. custom_contentinbuild-report.json.- Changes and Export list the custom objects.
- One deterministic registration per custom stratagem in
-
Checked with HD2Runtime 0.30.0's own offline harness.
- An export of all seven templates registers every custom stratagem; the two Runtime examples register exactly as Runtime's SDK fixtures do.
- The Runtime finds every icon in the archive's build record.
- Runtime's export validator resolves the carrier swap against its vanilla baseline.
-
The declared SDK stays the bound one. The wrapper of a mod with custom content requires HD2Runtime 0.30.0 but declares the project's bound SDK (as every other export does), so the Runtime's legacy acknowledgements still apply to its other edits.
Arsenal presentation
- The dependency line is now marked with
//. HD2Arsenal's library shows a mod's description as one paragraph and turns line breaks into spaces. The blank line ModBuilder writes before the dependency line therefore did not show, and your description ran straight into Requires Bingus Shared Loader…. The manifestDescriptionis now your Arsenal description, a blank line, then//and the dependency line. In Arsenal's library it reads:Buffs the jump pack. // Requires Bingus Shared Loader v15+ / API 1 and HD2Runtime 0.28.1+ / API 1; install dependencies separately. - Arsenal cannot show a real line break there: it removes tags such as
<br>, and Unicode line separators do not break in its library either. Projects without an Arsenal description are unchanged.
Game icons
- Every stratagem and booster shows the icon the game's HUD draws, read from the game's texture atlases in your own Helldivers 2 install, as the HD2R Editor does: 94 of 96 stratagems and all 20 boosters (1.6.0: 84 and 18). Ten stratagems the vector icon library left without one (Eagle Gas Airstrike, AC-8 Autocannon, 40-K Meltagun, M-103 Supply FRV, TD-110 Maelstrom, M-1000 Maxigun, LIFT-850 Jump Pack, AX/LAS-5 Rover, AX/FLAM-75 Hot Dog, Resupply), Surplus EAT Allocation and Integrated Extinguishers now have theirs. SG-88 and CQC-72 have no call-in stratagem and keep the category glyph, with the reason.
- Icons are imported again automatically at the next start. An icon the atlases cannot give keeps the vector icon from before. Settings → Game icons warns when your game build differs from the one ModBuilder's icon list was made for.
Project format and compatibility
- A project with custom content saves in format 14 with an optional
customContentsection. The section has its ownversion(1) and versioned migrations. - Earlier ModBuilder versions refuse a format-14 project with Unsupported project format or identity. and leave the file untouched.
- Newer custom content. A section from a newer ModBuilder is refused with the reason.
- A project that saves a 0.30 call-in code, stratagem presentation or overcharge explosion reference also saves in format 14.
- Existing projects stay compatible. They open, save and export as before and keep their SDK binding and format until they create custom content or use one of those.
Unchanged
- Projects bound to an earlier SDK generate the same Lua and export the same ZIPs as with 1.6.0, apart from the ModBuilder version recorded in
build-report.json(as in every release) and, with an Arsenal description, the//before the dependency line inmanifest.json. - Unchanged from 1.6.0:
- project SDK bindings (a project changes SDK only when you rebind it)
- in-game options
- additional packaged files
- the import of projects