Skip to content

Releases: wayl-t/ror-ios

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 21 Oct 01:34

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 88e4fc3.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114920088 sha256:220e0dced1768ba7ced973a5cae834799ca80013d77306d0f89f91c5f0260fb1
RoR-ios-lite.ipa 43280043 sha256:4566c3be44eabd927c867ff0a84eeffc8433aca850c191001c3c6d5292224fa1
RoR-ios-tiny.ipa 37864 sha256:e66f0b7c6b5840b69fdc8fe52fb0884e587717a67ad6e1b3079ffa201ca269ea
RoR-ios-bin.ipa 6788934 sha256:fb532fb4c4a372723aa251049ab441f5f3966e1016a9a44c5fb926457311a805
RoR-ios-res0.ipa 6789398 sha256:c90b0396baa68c325cdc1b76eba7b5f125d151fe07b1cf7da4456f2939e27083
RoR-ios-res0r.ipa 6789391 sha256:9c3834f69f1c9402b65b608af7b604a667b1b8b06153966dca3e7776fe0ca413

Pipeline smoke test - NOT the game (built 2026-10-21)

Choose a tag to compare

@github-actions github-actions released this 21 Oct 01:31

This is a Hello-World iOS app. It exists only to prove the build-and-package pipeline works end to end on a free macOS runner. The game itself is in the latest-ipa release.

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:09

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from c9c0243.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114920088 sha256:ba79d3ac9b09a96eb006af4a136a85eb158d68e2ab224a268d0fbf04411d1368
RoR-ios-lite.ipa 43280043 sha256:e7899efbe2fef4255c3b6295dc99c6e2545e23abe2064d7597892b2701bafac2
RoR-ios-tiny.ipa 37864 sha256:785c106e07b41c9b60100006e50272e28fe93f4af505fc9179662eb583253350
RoR-ios-bin.ipa 6788935 sha256:c16fbc8b1e06341d3d79b81dba65ed88ec6132bdbe24fa861855798f2b6e1bd0
RoR-ios-res0.ipa 6789397 sha256:b337aa8bf72d9cf7b44b7504afdd00a0122ca052e16f75b3d490b04c9dd7d632
RoR-ios-res0r.ipa 6789391 sha256:5ce556df830627f77234f3a23c49f170302437a7e29fcf2018c6840ad02de132

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:36

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 2141a89.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114921644 sha256:92781738a81264e834ebc145144c1fe80daae9b6bfa83864aff29bbfe06d938f
RoR-ios-lite.ipa 43281597 sha256:7a7f81034cdcc57313ffbe3e566d094df266fa5089861a4cae35b2525dec5b3b
RoR-ios-tiny.ipa 37864 sha256:5b6e427bcdbb99a75bc991d6dfee211dcd115474fdbdc1d26280e7b3c2d95497
RoR-ios-bin.ipa 6790628 sha256:c9a303abcd6382cb960d513fd90cdbed960d0e98f787d4129ae7d194dddf856e
RoR-ios-res0.ipa 6791091 sha256:dedc674a6732b639b0aa3129bd8639cb8c05c6298c6e199a157eca160a76e8cb
RoR-ios-res0r.ipa 6791083 sha256:a86a86c078ebbf88a2047341985aa8e1c92a8805479eea96e33f20742e9d5731

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 11:11

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 3f7d08b.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114898719 sha256:0fc0c529e97b324195f23099192cf45dbc5cf28288917300c771462d7a1b9d4a
RoR-ios-lite.ipa 43258672 sha256:52ae0eb057cf2a026957971bb58858914acf2d37537c7d5dd2a76aa630a9c955
RoR-ios-tiny.ipa 37864 sha256:5fe264c10d33182bb0744ef5ef64359a6e30dfbb7a52335a258b63e3499b72fe
RoR-ios-bin.ipa 6767329 sha256:0f92a66c82e8bc9748de4cef37f1cdc40d90901ed38e340606e89e48eb8baa7c
RoR-ios-res0.ipa 6767792 sha256:953909b9f3a3eb53d05f234131edff8d568954dcc5559afa5117ca8635400b89
RoR-ios-res0r.ipa 6767788 sha256:bb96b5a9d8e6108b062271c4c84e5931073775135be4f4bca8b5b93d5e4094ea

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:53

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 70cbcc2.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114898950 sha256:6dc204d80a697a09650e3cb7366117bfac6e4a8c1d2b4251b6dbfb238c912db8
RoR-ios-lite.ipa 43258900 sha256:ac5c20c3f43dd187973a81c16667493707ed4215f2432bcc71c105b9e7d34c0e
RoR-ios-tiny.ipa 37864 sha256:46cb7ea910e04afe409e438f6adbcd58915d8111a8b9fa514f847b0e3752fcbc
RoR-ios-bin.ipa 6767665 sha256:b8d8d3b88b64471303d3cbbccd9223d7e2b3612de00239d2e8029b0d203e485d
RoR-ios-res0.ipa 6768129 sha256:0d6a3e6d0d0614611437bb6b9659b3b8a8ca33f0e5239dd931ab89df36b459bc
RoR-ios-res0r.ipa 6768124 sha256:a7f78542ea4c418409235ccb9482a431b6143a27db875938dafb1e0515869789

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 20 Oct 07:27

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 7411fe1.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114898466 sha256:1e7dee6ee65c462c3afb82d3c2f912fbea32e01e874429acf75e4e08be131083
RoR-ios-lite.ipa 43258416 sha256:f434b6c341ea70fbe6aeb3d94c5007ea119c198c379daf639b50064f3f2811e4
RoR-ios-tiny.ipa 37864 sha256:b39e38e3bad14516d165d0649e7e3b8933e41ff004f43d7d8e94f63520dbcc3a
RoR-ios-bin.ipa 6767104 sha256:4d531b71be1058abd790471c13d70f3ae69b0bb143891f287748626083cb2311
RoR-ios-res0.ipa 6767568 sha256:4cd88fdcff70206ed2087b410b1c4681b645535c4323016f7cea5ccdd9060006
RoR-ios-res0r.ipa 6767563 sha256:93cef25c1deac04ce7bcbed20dbd00cdce075dfbf28e7dfb92843925a8fb45f0

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 19 Oct 12:06

rtss23 — ставьте эту сборку. В ней не падает спавн машины с мягким кузовом (flexbody). В OGRE 1.11.6 GLES2HardwareBuffer::readData() отображал видеобуфер, не привязав его, поэтому glMapBufferRangeEXT() возвращал NULL, а memcpy() читал по адресу 0 — и на этом падали и мод F-150, и штатный DAF Semi. Теперь буфер привязывается до отображения; разбор — README (§ «Диагностика на телефоне») и §7.39 в PORT_FINDINGS.md.

Сборки rtss22 и старше ставить не нужно: в rtss22 мод падал при спавне, а в rtss21 не работала перезапись CVar'ов после RoR.cfg.


Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 946394e.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114898666 sha256:67e1eb13440d48dcbc11434334ccf4c0be4d2209b0825c5bdf49060546e262e5
RoR-ios-lite.ipa 43258616 sha256:4f2bd3c13ad3447045842c11b6c8a4769ac8d49b8cf3f68ed12bfd66871f9889
RoR-ios-tiny.ipa 37864 sha256:0a44b503a138f70de8bb72d5f2c15499f008d59866fbe42307f4188509e6abaf
RoR-ios-bin.ipa 6767319 sha256:f55ad83d26133a0eeac00655fbcaac3ae4bd2d2bcf77a9efc0c08d18dbeaa602
RoR-ios-res0.ipa 6767783 sha256:7c065d7abdb6abdff14bf40b46c00544470a87fc7922d0cf03b49b4fbdde2d21
RoR-ios-res0r.ipa 6767778 sha256:8119e156e616e84085c18cfb0836740ad09bce6003f129226ab8008585699c85

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 19 Oct 11:24

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from 401eeea.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114899254 sha256:86a67d11ff3eed72e58fd6e7733e60e89d6cc4be9b003af530d15bd5eedecb7b
RoR-ios-lite.ipa 43259207 sha256:676bb5517f8ff80476ab3b764f804176af503858eab6111582cfe5185a51a09a
RoR-ios-tiny.ipa 37864 sha256:285b44b690c8f840fe914943c8d1055e12186926a5e29df2e893665dc46be026
RoR-ios-bin.ipa 6767899 sha256:d206cbaebfd43296f5cc17487d9ecdd77ae4c3197ae4ed0cdfb6b53dedfd267f
RoR-ios-res0.ipa 6768360 sha256:11943c0953e9b0597134e9bb194946810a856cdecfb3ef6ec75dfe129c3bbfa2
RoR-ios-res0r.ipa 6768357 sha256:8f0f5eda5a0b0319f32dae73c80951cf0b4837961561b68e0e7cbd7e7cc0097e

Rigs of Rods for iOS - unsigned IPA (rolling)

Choose a tag to compare

@github-actions github-actions released this 19 Oct 10:02

Unsigned, ad-hoc-signed RoR IPA for arm64 iPhone/iPad, built from ccce37f.

Files (release-dependent):

  • RoR-ios.ipa - the full game, ~112 MB. Ships its data in
    RoR.app/rorres/ (not resources/ - see below).
  • RoR-ios-lite.ipa - the same app with the content-only archives
    dropped (meshes/textures/sounds/caelum/SkyX/
    hydrax), ~40 MB. Every archive the startup path
    loads is kept, so it launches exactly like the
    full build - this is what makes it a usable
    launch diagnostic.
  • RoR-ios-tiny.ipa - NOT the game. Shares Info.plist/signature/packaging
    with the game. Installs and launches (green screen).
  • RoR-ios-bin.ipa - diagnostic (only on 'diag' tag). Real RoR binary,
    no data directory at all. The known-good baseline.
  • RoR-ios-res0.ipa - diagnostic (only on 'diag' tag). bin plus a single
    file in resources/ . The known-BAD reference.
  • RoR-ios-res0r.ipa - diagnostic (only on 'diag' tag). bin plus the same
    single file, in rorres/ instead. What the fix does.

Why the directory is called rorres:

An .app whose bundle contains a top-level directory named resources
(or Resources - the check is case-insensitive) is refused by the iOS
installer with the generic "Unable to Install", while the very same
directory under any other name (zzz/, Base.lproj/, rorres/) installs
and runs. Measured on device: bin - no directory -> installs
zzz/rotest.txt -> installs
Base.lproj/rotest.txt -> installs
resources/rotest.txt -> refused
Resources/rotest.txt -> refused

codesign is what flips. With a resources/ (or Resources/) directory
present it switches its resource rules to the macOS "resource
envelope" set - rules=^Resources/, plus a '^[^/]+$ -> nested' rule in
rules2 - and iOS will not install a bundle sealed that way. With any
other directory name it keeps the plain ^.* rules that iOS accepts.
The ad-hoc signature was never the problem: an unsigned variant with
resources/ is refused just the same.

If the game installs but crashes right after launching:

It now writes Documents/ror-trace.log - one line per startup phase,
plus every OGRE log line and, if it dies, the reason (SIGSEGV, or the
uncaught exception's message). That file is flushed line by line with
write(2), so it is complete even when the process is killed mid-line.
Open it on the phone: Files app -> On My iPhone -> Rigs of Rods ->
ror-trace.log. The last lines are the interesting ones. The same
folder holds RigsOfRods/logs/RoR.log, which OGRE writes - but that one
is buffered and loses its tail on a crash, so prefer ror-trace.log.

Hand the file itself to ESIGN / Sideloadly / SideStore - it is served
as a plain file, nothing to unpack. An .ipa is a zip whose root
contains Payload/.

CHECK THE DOWNLOAD BEFORE INSTALLING

A truncated download makes every installer fail, and the error looks
like a build problem ("Truncated input file", "Unable to Install").
Compare the byte size of the file you downloaded with the list below;
if it differs by even one byte, download the file again.

RoR-ios.ipa 114899322 sha256:b75e650c6f7dbfbb350f5bfe31006ab8bfd78b1866db68261c3f7b3f847572ff
RoR-ios-lite.ipa 43259277 sha256:934608ad8d7c7b6589fcdeb751f5a4ccf609153ac635c5b785c0223ed04c9d08
RoR-ios-tiny.ipa 37864 sha256:f4bef12b5afb124ffa4185a729230b0a19a6021ee3bcb5af9bc037ea33b914ff
RoR-ios-bin.ipa 6767972 sha256:42a3db151e2f16b6b3e16c12234b2b7d7f93e0799172d38fc9da080909720896
RoR-ios-res0.ipa 6768434 sha256:b950039769c5b66a02fbd72e358a6f361ea6a71a18f410265c7f79b45d6f950e
RoR-ios-res0r.ipa 6768430 sha256:b075153d3966daca6b4e7d2929f3668cce5a1518ed13b31eb7b0f8a4d3a62bf2