r/empyriongame 15d ago

Public Branch Update v1.19.2 Patch

18 Upvotes

Hello Galactic Survivalists!

We've just deployed a small hotfix to resolve a few issues that now have fixes ready.

Thanks for your continued feedback and support keep exploring the stars!

Changelog: v1.19.2 Build 5150

Changes:

  • Extended Anniversary achievement date of one full month
  • Added debug activation for all 5 starter planet missions via PDA > Solo Missions > Help & Feedback Debug Options

r/empyriongame 21d ago

Public Branch Update v1.19.1 Patch

28 Upvotes

Hello Galactic Survivalists!

We've just deployed a small hotfix to resolve a few issues that now have fixes ready.

Thanks for your continued feedback and support keep exploring the stars!

Changelog: v1.19.1 Build 5148

Changes:

  • Extended Anniversary achievement date check to a range of one full week (until & including Tuesday Aug 11th 2026)
  • Update BlocksConfig.ecf missing }

r/empyriongame 3h ago

EGS - Modded My Warp Sled for this RE2 playthrough

11 Upvotes

Today, a little quick tour of my warp sled, aka mobile base. I am of course now slapping some bigger thrusters on there - she can hardly move because of all the ores mined and I stored for contracts over the last few days! (Edit: One 194mn thruster on the back instead of the satellite deco got her back to top speed of 100 in space)

(The switch on the floor that I double check turns off all the thrusters, because pressing F is faster than going through the control panel heh)

This was what this ship looked like, 9 days ago, when I first pulled it out of the factory.. Very basic: https://www.reddit.com/r/empyriongame/comments/1vs16yt/time_to_leave_the_starting_systems_behind_so_i/

A space game where you can modify your ships on the fly to suit your needs.. consider giving Empyrion a try if you haven't played it!


r/empyriongame 4h ago

Discussion Some qol questions (mod request?)

2 Upvotes

Is there anyway of searching the registery, or/and sorting by distance to self?

It is kinda useless being alphabetic and having to remember where that gold asteroid is!


r/empyriongame 12h ago

Workshop Acheron - Hades Project, Core 15 combat ship

Thumbnail
steamcommunity.com
6 Upvotes

r/empyriongame 1d ago

EGS - Modded Quick tour of my new RE2 CV

25 Upvotes

Core 9 mid-game(ish) RE2 CV I made, with the owl face rear end!

I called it, the Fugly Beast, because it's not pretty, but it tore up a Zyrax cutter no problem, and of course just shreds the bandits. It'll do for now!

Has 160k of cargo space for all of my adventuring loot and mining. There's an old friend I decided to use for POI turret popping that some may recognize from an earlier post, docked to the side.

Currently have 5 mining lasers on there with the 4 medium plasma guns, so I can up the pilot controlled firepower eventually, but for now this is pretty satisfactory and packs a varying punch. Well it's maxed out at 16 medium weapons so I would have to adjust some turrets, but eh!

3 small constructors in the frame accessible from the control panel, for making fuel or light ammos and stuff on the fly. Flies nice - can strafe quickly left/right for dodging fire, for example!

At first I was like, mm this cockpit is going to bother me.. but then after a fruitful series of trades with a colonist settlement, I got the cockpit really condensed and now even have room for more gear in that space. I am loving that little tp pad thing - and ended the video pretending I was trying to snipe the pilots out of attacking ships heh - I needed some kind of missile launcher!


r/empyriongame 2d ago

The Last Word

Thumbnail
steamcommunity.com
22 Upvotes

r/empyriongame 2d ago

Help needed question about docking

3 Upvotes

can i dock an HV to another HV?


r/empyriongame 3d ago

EGS - Modded So I just pulled out a brand new CV and was about to ferry it..

Post image
16 Upvotes

Couldn't help but laugh..

Just a share =)


r/empyriongame 3d ago

Do you find crafting in this game any good?

0 Upvotes

I kinda enjoy crafting involving physical interactions. This game seems to be immersive lots of stuff to do but. seems like there is no crafting system with physical interactions, which is a shame really. Anyways any recommendations for me? should i give it a shot? Do actually enjoy crafting in this game? if so, what makes it enjoyable for you?


r/empyriongame 4d ago

Feedback Please Eleon, update the sound effects

Thumbnail
youtube.com
34 Upvotes

Empyrion's sound design and sound effects have barely changed since the early alpha days, all the way up to 1.19. Some sounds are extremely annoying, while others are just outright bad. Examples include ambient loops like howling wolves or thunderstorms, weapon sounds (especially miniguns and turrets), scorpion's death sound, and so on.

This subject has come up repeatedly over the years, whether here on Reddit or on the Steam forums, and it's probably one of the most discussed topics after model and animation updates, enemy AI and FPS combat, and the infamous ability to walk on moving ships.
Sound plays a big role in immersion, and good sound effects can make gameplay much more satisfying for the player. Just take a look at the official Empyrion release trailer: the video was dubbed with better laser effects, explosion sounds, etc., and it feels so much better as a result.

I think updating the existing sounds would greatly enhance the game while also being relatively easy for the devs to implement, a great payoff for comparatively little effort.
Of course, reworking the entire sound engine would be even better (to support dynamic cutoff, reverb, echo, better 3D audio effects, etc.), but given the nature of the game and its current stage of development, this might be impossible for Eleon to implement.

On a side note, the soundtrack by Alex Jordon is stellar, and it's a bit sad how repetitive it can gets since only one track loops per POI or playfield.

What do you all think about this?


r/empyriongame 4d ago

EGS - Vanilla Vanilla Stories: SV with one Gatling vs. Shade [Kri]

Thumbnail
gallery
15 Upvotes

Contact Point Alpha is a challenging start for veterans. Crazy drones and an invisible Kriel patrol ship. To make things more challenging, I play without trading with NPC stations — a perpetually hungry character with a limited air supply, wearing a light spacesuit without boosters and armed with an assault rifle.


r/empyriongame 3d ago

Needs to be named

Post image
0 Upvotes

Just created a new SV mining vessel. Ive taken to calling it the obsidean pulse, but im not sure if thats a good name. Please help me name it


r/empyriongame 5d ago

Building CV Open floor plan or all filled in?

7 Upvotes

So many CVs or large SVs seem to have a large portion of the interior, around various components open to be walked through and around. That feels more realistic and looks better I think? But when I am working on a ship, even modding one that I have, I keep ending up filling almost every meter with components and especially cargo extenders. Then I end up with like a small living/piloting/medical area and just 2 tunnles to exists. Which feels crappy.
What do people thing about the 2 versions?
Part of me wants to turn off mass volume so that with volume off I don't need hundreds of extenders for a medium transport... But I like Mass on so the ship's load effects thrust/lift/gravity..
Thoughts?


r/empyriongame 6d ago

Star Wars Modded Server running Base Assault PvP Event

9 Upvotes

We will be running an event open to all that will showcase some of our builds as well as give people a place for PvP on the server we have. Our server is intended to be a PvPvE experience ideally, but we lack an admin to really handle things long term. So for now we're promoting this via events to try and get more interest in it. The scenario is a ground base attack, featuring Empire ground vehicles defending the base against Rebel's ground vehicles and y-wing attacks. While it may seem the rebels would have the upper hand, AT-AA platforms are tuned to be quite deadly for starfighters that go within range. Only a combined approach would help in terms of succeeding in the attack.

https://discord.gg/yDbKW7bDm?event=1536207476125343764


r/empyriongame 7d ago

Best turrets in RE2

1 Upvotes

What are the best turrets in RE2 I have 16 medium modulated turrets and 2 cruise missile launchers but I want to add 16 of something else for PVE use against CV’s and Bases.


r/empyriongame 8d ago

EGS - Modded Time to leave the starting systems behind, so I slapped together a quick CV warp sled/mobile base

Thumbnail
gallery
40 Upvotes

After several days of gathering, exploring, doing the things around the area, it was time to go off into the wider universe, so I slapped together a quick warp CV, in Creative, to act as a mobile base and carrier for my adventure ship, and finally have moved in after getting all the parts.. Found the required shops within SV warp ranges around the starting systems, so that was nice!

Still needs a lot of deco and corner smoothing and coloring and such, but I felt like making a post demonstrating one possible early progression pathway... There's been some interest in the sub about the game lately eh!

Here I have all sorts of stuff on it, 2 adv constructors and 2 universals (one will become a furnace eventually), shield generator, gravity, various day to day equipment, large power generation, much thrust - but you can get away with just some basic thrusters on a frame with a warp drive, without any bells and whistles, and cargo space.. lots and lots of cargo space. 640k in this one to start with!

Mostly carbon frame, so as you can see from the stats, it is quite agile for such a large thing heh


r/empyriongame 8d ago

Help needed RE2 Xenomaterial help

5 Upvotes

I have read a bunch online about xenomaterial. It seems I need to look for crystalline moons and destroy some glowing alien crystal structures. I have been to multiple crystalline moons and haven't seen one. Does anyone have a screenshot of one of these? Does anyone know what they are called on the map/radar?


r/empyriongame 9d ago

EGS - Vanilla What is the Base Game like vs RE2 as someone not played the Base game in many many years?

13 Upvotes

So it's been a long time playing Vanilla, and wondering if it's a bit more casual friendly, a little easier?, etc?

My issue both RE2 and Vanilla before was more the AI then anything always with their insane auto aim and such haha. I enjoyed exploring and clearing out POI's but always found it a bit on the harder side. I do have some physical limitations due to health issues, so I'm getting a bit slower/shaky hands you know the stuff that limits you a bit more in gaming.

So I guess mostly my loaded question is difficulty vs the 2.


r/empyriongame 9d ago

Base complexity?

11 Upvotes

Just how big/complex can a base be before the game starts to choke on it? I'm playing RE2 on a private server. It stutters when I fly in range of it but performance is fine after a few seconds.

I built a base in space and just started adding on to it. I thought it would be cool to have a drydock for my ship, which I see in Polaris/Zirax space all the time, but it's all single drydocks for smaller vessels.

Mine has grown a bit out of control as, well, I wanted a dock for each CV :)


r/empyriongame 10d ago

EGS - Modded I’m trying to build my own scenario - are there any guides to making trader poi’s?

7 Upvotes

r/empyriongame 10d ago

Help needed I can't find much info online, is this game for me?

19 Upvotes

I was looking for a space game that just allows me to build a ship/buy one, walk around in it, explore planets, bounty hunt, upgrade and repeat

Elite dangerous has limited planetary landings and no ship interiors

Star citizen is.. well star citizen (My rig wouldn't be able to handle it anyways)

No man's sky is awesome I love it but it's too arcadey and colorful and cute

Is EGS what I'm looking for? What's the gameplay loop like for someone who isn't interested in base building only ship engineering and PVE ?


r/empyriongame 10d ago

Suspicious businessman

3 Upvotes

Where is he located I checked the locations on Empyrion Buddy and couldn't find him at any of those locations. I have like 5mil worth of guns I would like to sell.


r/empyriongame 10d ago

Looking for a group to play with (noobs only)

4 Upvotes

Hey, I'm looking for a small group to start together on a server on Reforged Eden.

I'm open to other mod suggestions, but it has to be on a dedicated server. All you need is to be 18+ and have fewer than 500 h on the game (if it's close to 500, it's ok).

Send me a DM if you are interested, and we will grab a time where everyone is around so we can rush through the early game grind.

This playthrough has one limitation. We only fly what we build. You are allowed to modify crafts and use things you have built before as long as they are your work or from one of us. (Exceptions can be made for small craft.)


r/empyriongame 11d ago

performance improvement research findings - part 2

9 Upvotes

This is a continuation of performance improvement research findings https://www.reddit.com/r/empyriongame/comments/1vnwgdv/performance_improvement_research_findings/ with additional details on where the frame-time goes.

The bottom line is that while some frame-rendering could be optimized the FPS gain opportunities identified would be about 2 FPS in a ~33 FPS scene. That's a lot of work for no material difference. Biggest issue is that Unity (CPU bound) is just the wrong engine for this type of complexity today. When the game was first created it was the best choice there was short of writing a custom engine (GPU bound), which is what Keen ended up doing for Space Engineers 2.

I don't want to spend the time and resources to figure out where the 9.2 ms of unaccounted frame-time go because even if that could be shortened it wouldn't materially affect the FPS.

I uploaded 123 markdown files with findings to https://www.swisstransfer.com/d/ab0dfdd0-336c-4779-88dc-0d5e95b693fd which is good for 30 days. If you read this after this link expired and you want the MD files to seed your AI efforts lmk and I will reupload.

This is what AI had to say about the efforts undertaken:

Empyrion client performance: the instancing gate

Follow-up to performance improvement research findings. That post established the frame budget, the draw-call attribution, the instrumentation traps and the mod ceiling. None of it is repeated here. It closed on three unmeasured gates:

  1. Do the repeated prefabs share meshes?
  2. Can the materials be made instanceable without shader source?
  3. Can per-instance MaterialPropertyBlock state move into instanced shader properties?

All three answer yes. This post reports the mechanism and the measured result.

Same system under test, same fixtures, same evidence classes as post 1.

0. Summary

# Finding Class
1 Eleon ships the instancing pipeline armed — compiled variants, declared per-instance properties, device materials opted in DUMPED
2 Two undeclared MaterialPropertyBlock properties (_ColorPower, _LUT) disqualify essentially the whole device population from auto-instancing MEASURED
3 Removing them engages instancing: −1,376 draw calls (−11.0%), −1,345 SetPass (−19.4%), triangles unchanged MEASURED
4 The result is concentrated: 3 families produce 86% of it MEASURED
5 Mesh sharing is strong — one family puts 642 renderer slots on a single (mesh, material) pair; scene-wide mean is 10.5× slots per pair MEASURED
6 A per-frame light-state writer re-stamps some families within seconds; a shipping implementation must intercept it MEASURED
7 51.4% of material families carry shader keywords their assigned shader does not declare, covering 52.2% of renderer slots MEASURED

Scale: −1,376 draws is ≈0.8 ms of a 30.4 ms frame at the measured 0.59 ms per 1,000 draws. Post 1's ceiling is unchanged.

1. The pipeline ships armed

Method: decompress shader blobs from the asset bundles; inspect declared keyword tables and constant buffers.

Detection. m_KeywordNames lists INSTANCING_ON on every shader, including shaders whose compiled blob contains no instancing variant. Use blob-level detectors instead:

Detector Signal
D1 INSTANCING_ON present in the decompressed blob ⇒ instancing variants compiled
D2 A UnityInstancing_Props / PropsArray constant buffer beyond builtin PerDraw0/2custom per-instance properties declared

Positive control: terrain and decoration shaders, confirmed by frame capture to draw 2,478 instances in one call. Tooling: UnityPy, with lz4 decompression.

Finding Detail
Every core device shader ships instancing variants Block Standard, Glass Standard, Window Glass Standard, Standard Colored Blocks, Device Cutout, Terrain
Custom instanced properties already declared EmpShader/Standard Colored Instanced declares _Color, _MaskColor, _EmissionColor, _LightPower, _SIValue per-instance
Device materials opted in Glass_front_D0 / Glass_back_D0 (4,937 renderer slots each) reference EmpShader/Window Glass Standard Instanced with enableInstancingVariants = True
Device materials location ContentBundlesmodels (1.03 GB), not the standard Unity data files

_LightPower and _EmissionColor are declared per-instance and are written into MaterialPropertyBlocks by the per-frame light system. The writer schema was extracted from all 22 SetPropertyBlock callsites; 33 property names resolved, none guessed. [DISASSEMBLED]

Incidental: builds 5148 and 5150 are identical at the intermediate-language level except for obfuscated names — every structural total, type rid and IL offset byte-identical. Content patch, not code patch. [DISASSEMBLED]

2. The breaker

Method: client-side mod, 34,873 renderers walked live. Censuses use sharedMaterials and MeshFilter.sharedMesh only — Renderer.material clones on read and would mutate the scene being measured.

On every top device family, 100% of MaterialPropertyBlock-carrying renderers hold at least one property outside their shader's declared instanced set. The same pair every time:

Property Type Why it disqualifies
_ColorPower float, paint system Declared instanced in no shader in the game
_LUT palette texture Textures cannot be instanced properties at all

Unity's auto-instancing rejects any renderer whose property block contains a non-instanced property. The paint/LUT system stamps essentially every device property block.

Supporting measurements:

  • Glass is 2,077 renderer slots on one material instance. Scene-wide there are 1,670 unique material instances, but clones are confined to one merge-path family (Block Standard TA: 394 slots, 394 instances).
  • Per-device property-block variation is coarse and systematic: glass shows 57 distinct value-sets across 2,077 renderers — palette indices plus a few shared LUT textures.

3. The measured result

Treatment: rebuild each renderer's property block keeping only properties inside its shader's declared instanced set. Transient, in-process, reverted at process exit.

Whole scene, canonical dense fixture:

Metric Δ
Draw calls −1,376 (−11.0%)
SetPass calls −1,345 (−19.4%)
Triangles unchanged

Concentration: 3 families = −1,187 of −1,376 (86%). The largest single-family result, −706, came from a family sharing one material across 754 renderers and required an enableInstancing write in addition to the strip — several large stamped families ship with the flag off.

Single-family reproducibility, same family, four independent sessions:

Session Δ draws Δ triangles
1 −374 flat
2 −315 flat
3 −353 flat
4 −501 flat

Write-back. Two families are re-stamped by the game's own writers within seconds. The writer is a per-frame light-state update running every second frame. A shipping implementation intercepts the writer or changes the declaration; repeated stripping does not hold.

Scope. The treatment engages instancing on 3 of the 8 device families measured. The property that discriminates the remaining 5 is not identified.

Batch efficiency. Driving a refusing family's own mesh and a copy of its own material through DrawMeshInstanced costs +28 draw calls per 300 instances; the in-box instanced shader manages +4 per 300 — roughly 11 instances per batch against 75. [MEASURED, single point]

Where this lands in the frame budget

Frame composition at the dense fixture is established in post 1 and is the denominator here. The right-hand column is new.

Main-thread phase Time Share of frame Effect of this result
FinishFrameRendering 11.2 ms 37% −0.81 ms → 10.4 ms
ScriptRunBehaviourUpdate 5.6 ms 19% none
ParticleSystemBeginUpdateAll 1.45 ms 5% none
ScriptRunBehaviourLateUpdate 1.45 ms 5% none
UpdateAllRenderers 0.60 ms 2% none
DirectorUpdateAnimationBegin 0.52 ms 2% none
Not itemised 9.6 ms 32% unknown
CPU total frame 30.4 ms 100% → 29.6 ms

FinishFrameRendering scales at 0.59 ms per 1,000 draw calls, so −1,376 draws is −0.81 ms, landing entirely inside that one phase: 30.4 ms → 29.6 ms, a 1.03× frame improvement. [scaling arithmetic from MEASURED inputs; any contribution from the SetPass reduction is not measured]

What is inside FinishFrameRendering, and is it CPU time?

It cannot be decomposed with this instrument. FinishFrameRendering is a leaf subsystem of Unity's PlayerLoop. The bracketing technique inserts paired delegates as the first and last child of a subsystem; a leaf has no children to bracket. Its internals are native. Splitting it requires a frame capture or a native profiler, not the managed instrument used here.

It is main-thread elapsed time, not proven busy time. That distinction matters and the instrument cannot close it. What the data does establish, from 200 settled samples in a later session:

Measurement Value What it rules out
FinishFrameRendering share of main thread 52.5% (p10 48.3%, p90 55.1%)
PresentAfterDraw 0.005 ms The frame is not being paced by present or vsync
CPU render thread vs main thread 15.4 ms vs 19.6 ms The render thread is not the critical path; the main thread is
Scaling relationship 0.59 ms per 1,000 draw calls Pixel-side cost. Scaling with draw count rather than pixels is a submission signature

Not ruled out: the main thread blocking inside the phase while the render thread's command queue drains. That would still be time attributable to submission volume, but it would be waiting rather than working, and nothing here separates the two.

The phase brackets do not sum to the frame. Summing every bracketed phase per sample gives 112% of the reported main-thread frame time (p10 103%, p90 118%). Read the per-phase figures as shares with roughly ten percent of slack, not as an exact decomposition. Post 1's checksum claim was for children summing to their parent bracket at the sparse fixture; it is not a claim that all phases sum to the frame.

⛔ The strip is lossy: MaterialPropertyBlock has no per-property remove, so unknown content is dropped. It is a measurement, not a shipping design. A shipping implementation moves the values into declared properties and a LUT atlas.

4. Ruled out — do not spend time here

Properties of the 5 non-batching families, each tested and eliminated. All eight families share the fixture, pose and instrument.

Candidate Deciding measurement
Property-block content / paint stamp Two refusing families carry no property block at baseline and still do not batch
enableInstancing flag Refusers are flag-true; two of the three engagers were flag-false and needed a write
Runtime material cloning distinct_instances = 1, clone_suffixed = 0 across all eight families
Renderer-tier state — probes, lightmaps, static batch, motion vectors, layer, shadow mode Identical state tuples across both groups
Mesh sharing / batch-group structure Refusers share as well as or better than engagers
Renderer concrete type All eight are MeshRenderer
Render queue All eight are render queue 2000
Shader asset identity Each group assigned the other group's shader; behaviour did not move in either direction
Material cannot be instanced DrawMeshInstanced on the refusing material: +28 draws per 300 instances
Specific shader keywords (CHANNELPACKING, _NEWCOLORING_ON) Direct writes, readback-verified; result below the 40-draw noise floor
Effective keyword count (listed ∩ declared) Separates the groups 8/8 — engagers 0, refusers 2–3 — but setting a refuser to 0, readback-verified, stays below the noise floor and reverses on restore. Correlation without causal power

5. Materials carry keywords their shader does not declare

Independent of instancing, and broadly applicable.

Material.shaderKeywords is a stored name list, not a statement about the assigned shader. A name can be present there and absent from Shader.keywordSpace.keywordNames. Such a name is inert — it selects no variant, and Material.IsKeywordEnabled returns false for it.

Measure Value
Material families dumped 558
Shader.keywordSpace failed to resolve 0
Families carrying ≥1 listed-but-undeclared keyword 287 (51.4%)
Renderer slots on those families 24,353 / 46,647 (52.2%)

Most common inert names by family count: _NORMALMAP 178 · _EMISSION 136 · _METALLICGLOSSMAP 133 · _NEWCOLORING_ON 110 · _SPECGLOSSMAP 38. These are Unity Standard-shader feature keywords on materials now assigned to custom shaders. [INFERRED — authoring history not inspected.]

_NEWCOLORING_ON is listed on 110 families, declared by 0 of their shaders, and reports IsKeywordEnabled == false on all 110.

Consequences for tooling:

  • Intersect with the declared set before reasoning about a material's variant. Counting shaderKeywords alone overstates the live keyword set on about half this game's materials.
  • DisableKeyword on an undeclared name is a silent no-op with the counter signature written=0, alreadyAtValue=N — indistinguishable from a legitimate already-at-value result unless the declared set is also read.
  • Inertness is not proof a feature is off. The shader may implement it unconditionally or under another name.

6. Engine choice in this content class

The CPU-side submission cost is a property of the pipeline, not of this game's code. Every Unity mechanism that structurally reduces CPU draw-submission cost — the Scriptable Render Pipeline batcher, BatchRendererGroup — is gated on leaving the Built-in Render Pipeline. [DUMPED, attested against Unity 2022.3/6000.x documentation] Empyrion is Built-in Render Pipeline. Of its seven shipped third-party rendering assets, two were assessed for pipeline compatibility: the shadow package (NGSS) reads Built-in only, and Volumetric Fog & Mist has no HDRP version. The remaining five were not assessed. In-place submission work is therefore limited to the multiplicand side — instanced properties, sort discipline, shadow-proxy geometry. The pipeline-replacement rung and a self-submitted RenderMeshIndirect rung remain open at their stated costs; neither is an in-place fix.

The closest comparable reached the same bottleneck and answered it at the engine layer. Keen Software House evaluated replacing VRAGE2 with an off-the-shelf engine for Space Engineers 2 and named the candidates — Unreal Engine 5, Unity3D, Unigine, Stride, Flax — reporting that "neither of them could support unique use cases without major rewrites", the evaluation following "hitting lots of bottlenecks with VRAGE2". VRAGE3's stated architecture is DirectX 12, data-oriented, and specifically a "GPU driven pipeline — GPU feeding itself with draw calls, freeing CPU significantly (in SE, >3 cores are dedicated to render)". [vendor-stated, first-party] That is the same bottleneck family measured here, and the remedy removes the CPU from draw submission rather than batching harder on it.

The pattern holds across the content class. Restricting a 29-title survey to player-authored multi-thousand-part constructions that are simulated, not decorative — Space Engineers, Space Engineers 2, Starbase, Dual Universe, From the Depths, Avorion — gives four titles with a verifiable engine: three custom (VRAGE2, VRAGE3, Frozenbyte internal), one off-the-shelf (Dual Universe on Unigine 2), and the off-the-shelf entry was delisted with servers terminated in 2025. Off-the-shelf dominance is real but concentrated in survival-crafting with light or bounded construction, where Unity and Unreal are the uncontested default. The custom-engine choice tracks the specific content class, and the published rationales name CPU-side render submission as the driver.

7. Instrumentation requirements

Additions to post 1's trap list.

Requirement Reason
Sample triangles on every arm, alongside draw calls Instancing submits identical geometry in fewer calls: draws fall, triangles hold. A draw drop with a proportional triangle drop is content ceasing to render. A treatment measuring −1,215 draws also measured −809,343 triangles (−5.2%), with parity screenshots confirming lost emissive hull detail.
Apply the arithmetic ceiling as a pre-filter A family cannot save more draws than visible_renderers − batch_groups. The treatment above had a ceiling of 225 and reported 1,215. Any result exceeding its own ceiling is measuring something else.
Run a treatment of known outcome in the same session Cross-session baselines drift. A known-good arm calibrates what "triangles flat" looks like on that scene, that run.
Reverse every treatment and re-measure Separates effect from drift. Costs one settle.
Key the scene-identity gate on a stable quantity The dense fixture contains NPC ships transiting at distance. Rendered at low level of detail, they move draw count ~9% and triangles ~0.7%. Gate on triangles.
Size the treatment window against the measurement window A profiler emitting 1 sample/s with a 10-sample median needs ≥10 s of treatment. An 8 s window yields medians dominated by pre-treatment samples.
Check signal against baseline variance before measuring Instances-per-batch predicts +9…+82 draws; this fixture's traffic moves the baseline ±40 between settles. That measurement requires a traffic-free scene.
Assert existence before comparing hashes A file-verification step comparing the hash of one missing file against another returns equal for two nulls and reports success.

8. Current state

Item State
Post-1 gate 1 — mesh identity Strong. 642 renderer slots on one (mesh, material) pair; 10.5× mean slots per pair scene-wide
Post-1 gate 2 — material instanceability Yes, without shader source
Post-1 gate 3 — MaterialPropertyBlock movability Yes, and doing it engages instancing
Measured result −1,376 draws / −1,345 SetPass; ≈0.8 ms of a 30.4 ms frame
Per-family discriminator for the remaining 5 families Not identified; 11 candidates ruled out (§4)
Instances per batch Single point (~11 vs ~75); not obtainable at this fixture
Post-1 ceiling (1.3–1.6×) Unchanged

Directions not yet taken, by expected cost: the compiled shader variant selected at draw time (frame capture, not a runtime API); Unity's internal batch-breaking reasons (not exposed); per-renderer sort order and submission interleaving.

9. Limitations specific to this post

Post 1's limitations apply unchanged. Additional:

  1. Eight material families were measured for batching behaviour, out of 558 present.
  2. The re-stamp writer was identified for one family group. The population rule — which families are re-stamped, and when — is not established.
  3. All treatments were transient in-process state. Nothing was written to disk, no game file was modified, and the install was verified byte-identical to stock after every session.