Skip to content

Port Yuoki Engines 1.3.0 to Factorio 2.1 - #3

Merged
jatmn merged 2 commits into
release/1.3.0from
codex/engines-1.3.0-factorio-2.1
Oct 8, 2026
Merged

jatmn merged 2 commits into
release/1.3.0from
codex/engines-1.3.0-factorio-2.1

Conversation

@jatmn

@jatmn jatmn commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

Yuoki Engines 1.2.9 fails to start on Factorio 2.1 because it calls a removed assembler-picture helper, uses the removed module inventory constant and singular category fields, references obsolete Space Age recipe categories, and produces steam above the new vanilla maximum. This ports Engines 1.3.0 to Factorio 2.1.20 with source-level compatibility changes, including the two generator animation definitions.

  • Import and copy the current base assembler pictures; use defines.inventory.crafter_modules for all three factories.
  • Convert active recipe and fuel category fields at their definitions, before downstream recipe processing. Preserve the three Space Age green transport-tube recipes as metallurgy-only.
  • Use the current standard factory crafting categories, preserving the C1 factory's original non-Space-Age distinction and avoiding specialist-only recipes.
  • Raise steam's maximum to at least 1000 while preserving any higher existing value. Keep Rheinsberg's 1000-degree product and the turbine's 950-degree minimum, quantities, and energy settings unchanged.
  • Migrate the 50 MW generator and 70 MW turbine to pictures.north/east.animation with two_direction_only = true, preserving every sprite/frame/speed/offset and all power/fluid settings.
  • Set version 1.3.0, Factorio 2.1, base/optional Space Age minimum 2.1.20, and parent Yuoki >= 1.3.0; add a concise changelog entry.

This PR targets release/1.3.0 in jatmn/Yuoki-Engines-Factorio-2.0. Parent Yuoki changes remain separate in parent port PR #11.

Validation

The official latest-release endpoint reported experimental 2.1.20. Tested with a fresh official Factorio 2.1.20 (build 87512, linux64, headless) download, its versioned API schemas/changelog, isolated mod/write/save directories, and the actual Yuoki 1.3.0 port at ce7918f2b252f2d79ba86b9ae05d991e7af1f261. No temporary parent adapter was used.

Both Yuoki 1.3.0 and yi_engines 1.3.0 were confirmed loaded in every configuration:

Enabled mods (plus core) Fresh map Simulation
Base + Yuoki + Engines Pass 600 ticks passed
Base + Recycler + Quality + Yuoki + Engines Pass 600 ticks passed
Base + Elevated Rails + Recycler + Quality + Space Age + Yuoki + Engines Pass 600 ticks passed
Base + Elevated Rails + Recycler + Space Age + Yuoki + Engines; Quality disabled Pass 600 ticks passed

Generated-data checks cover all three factory inventories/categories, representative ordinary and Space Age recipes, specialist-only exclusions, green tube restrictions, steam temperatures and quantities, and chemical fuel values (80 MJ and 2 MJ). Category substitutions were independently reversed against the baseline to prove no unrelated recipe or fuel changes. Independent sub-agent review and controller review covered the changed hunks; git diff --check passed. The baseline with only version metadata updated reproduced the removed assembler2pipepictures startup failure.

All configurations used --check-unused-prototype-data. Startup succeeds despite remaining legacy unused-field warnings. The exact test commands, logs, generated dumps, and review evidence are retained in the local task workspace; no new test framework is added to the mod.

Deferred work and limits

The two generator animation definitions have been migrated and no longer produce ignored-animation warnings. Other legacy unused fields remain deferred. The 50 MW generator retains its original single-frame east-facing image; new artwork is outside scope. Recipes, production amounts, energy settings, and quality effects/balance remain unchanged. No explicit product-probability conversion was needed.

Headless validation does not prove graphical correctness, old-save migration, full production-chain balance, or unrelated third-party integrations. Integration was tested against the actual parent implementation commit above; the parent release branch has not yet incorporated that port. Do not merge or publish this PR as part of this task.

Reviewed, tested, and pushed implementation commit: dd13f42.

Complete factory coverage comparison

Following review of the category-list reduction, compared every recipe in actual Factorio 2.0.77 data-stage dumps (Engines 1.2.9 at 7735c9 and parent Yuoki 1.2.23 at ccbd5bb) against the validated 2.1.20 dumps. No previously supported recipe loses category eligibility:

  • Base: C1 retains all 397 recipes; Y2 and P3 each retain all 457.
  • Full Space Age: each factory retains all 507 previous recipes, accounting for Factorio's official wood-processing to tree-seed rename, and supports the new landing-pad-unloading-bay recipe (508 total).
  • A separate static audit corroborated all 48 recipes formerly assigned to the removed categories.

The shorter lists preserve coverage because 2.1 recipes now carry multiple categories; for example electronic circuits retain crafting alongside electromagnetics. This exhaustive comparison strengthens the original representative checks; no implementation amendment was needed.

Generator animation validation

Repeated all four fresh-map + 600-tick + data-dump configurations on dd13f42 using the same actual parent port ce7918f2. Every check passed. Complete before/after data.raw comparison confirms the only differences from the prior tested commit are the two generators original animation tables moving into the new picture structure and two_direction_only = true; all other prototype data is identical. Independent review verified the official orientation mapping and all sprite-sheet frame dimensions.

Graphical validation was attempted with the installed official Factorio 2.1.20 (build 87512, win64, Steam) using an isolated idle/running fixture. Fixture map creation passed, but the graphical invocation exited before rendering with Steam requires game restart, restarting..., including on retry outside sandbox isolation. No screenshots were produced; an in-game visual check remains unperformed. All test process groups/jobs were stopped.

Summary by Sourcery

Port Yuoki Engines to Factorio 2.1 while preserving its recipes, factory behavior, energy settings, and Space Age integration.

Bug Fixes:

  • Update the mod for Factorio 2.1 compatibility by replacing removed prototype APIs and obsolete recipe, fuel, inventory, and animation fields.
  • Preserve existing recipe coverage and Space Age restrictions while accommodating Factorio 2.1 category changes.
  • Raise the steam temperature limit to support existing high-temperature steam recipes.

Enhancements:

  • Migrate the generator and turbine animations to the Factorio 2.1 directional picture format without changing their visuals or operating settings.

Documentation:

  • Set the mod metadata and dependencies for the 1.3.0 Factorio 2.1 release and add a changelog entry.

Tests:

  • Validate startup, simulation, and generated prototype data across base, Quality, Recycler, Elevated Rails, and Space Age configurations on Factorio 2.1.20.

@jatmn jatmn self-assigned this Oct 5, 2026
@jatmn jatmn changed the title Port Yuoki Engines 1.3.0 startup to Factorio 2.1 Port Yuoki Engines 1.3.0 to Factorio 2.1 Oct 5, 2026
@jatmn
jatmn marked this pull request as ready for review October 8, 2026 19:58
@jatmn

jatmn commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

@pullfrog review

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes: Reviewed all 10 changed files across both commits in the Engines 1.3.0 port to Factorio 2.1.20.

  • Assembler APIs: Replaces the removed picture helper with deep copies of the official picture-table export and updates all three factory module inventory constants.
  • Recipe and fuel categories: Converts active definitions to category arrays without changing their category values, including the Space Age green tubes' metallurgy-only restriction.
  • Factory eligibility: Removes obsolete Space Age category names in favor of the shared standard categories, while retaining C1's base-only distinction and excluding specialist-only categories.
  • Steam support: Raises the steam temperature ceiling to at least 1000 while preserving existing higher limits, recipe quantities, temperatures, and energy settings.
  • Generator graphics and metadata: Moves the two generators' existing animations into the official north/east picture structure with two-direction behavior, and updates release metadata and the changelog.

Independent validation used official Factorio 2.1.20, build 87512, linux64 headless, with the actual merged Yuoki 1.3.0 parent at 18391b1. Base, Recycler + Quality, full Space Age, and Space Age with Quality disabled each passed --dump-data, fresh-map creation, and a 600-tick benchmark, all with --check-unused-prototype-data. Generated-data assertions checked factory categories and inventory indices, tube restrictions, steam settings, generator picture definitions, and both chemical fuels; git diff --check also passed. Validation script, configurations, and engine logs are attached.

Legacy unused-field warnings remain outside the changed behavior. This review does not establish graphical appearance, old-save migration, full production-chain balance, or unrelated third-party integration compatibility; the fresh-map benchmarks are startup and simulation smoke tests, not production-chain tests.

Pullfrog  | View workflow run | Using gpt-6.1-sol | 𝕏

@jatmn
jatmn merged commit 8eddc57 into release/1.3.0 Oct 8, 2026
3 checks passed
@jatmn
jatmn deleted the codex/engines-1.3.0-factorio-2.1 branch October 8, 2026 20:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant