Repository navigation
Rigs of Rods for iOS - unsigned IPA (rolling)
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