Repository navigation
BytArch GTA-V for Android 0.1.12-patch (game folder found, real heap limit)
BytArch GTA-V - the GTA V web port running natively on Android, ARM64 / Android 10+ / Vulkan.
BytArch-GTA-V-android-0.1.12-patch-debug.apk - debug build, sideload it over 0.1.11-patch.
This patch fixes the launcher not finding game data that is there, and it makes
the heap limit the engine is told match the limit the phone can actually give.
The game folder is now found inside the folder you pick
The release ships the game inside a wrapper folder:
GrandV-assets/
START_HERE.txt
grandv-assets.json
mirror/playgta5.com/
data/manifest.json
b/<build>/shaders/index.json
b/<build>/game.wasm
START_HERE.txt says to pick the GrandV-assets folder. The launcher only
accepted a folder with data/manifest.json directly in it, so following those
instructions produced "That folder has no data/manifest.json" - the file was
right there, two levels down.
The game folder is the one that holds data/ and b/<build>/, and the launcher
now looks for it inside whatever you picked (a few levels deep, without walking
the game tree). Picking GrandV-assets works, picking
GrandV-assets/mirror/playgta5.com works, and the folder the game is read
from is the same one the engine gets, so the game runs from your download
without a copy.
The same applies to Import game ZIP: a wrapper folder inside the archive is
stripped, so the release archive works as it is.
The heap limit is the real one now, and it shows in the log
The engine asks the host how much memory it may use, and it sizes its pools
from that answer. Two numbers have to agree: the limit the engine is told, and
the limit the phone can really give. They now do, and the log prints them:
[host] game module memory: initial 3072 MB, module maximum 16384 MB, Android cap 5120 MB
[host] engine asked for the heap maximum: 5368709120 bytes (5120 MB)
If the cap is too small for the settings you picked, the engine fills the
memory it was promised and the game dies with:
[host] thread 0x... trapped: ... emscripten_builtin_malloc
Caused by: wasm trap: out of bounds memory access
The heap setting in the launcher (Maximum game heap (not total app
memory)) is that cap: 3 GB to 8 GB, 5 GB by default. On a phone with 8 GB, 5 GB
works (measured on a Galaxy A34 5G). With 12 GB or more, 8 GB gives the engine
room for the higher graphics settings. Lower it if the phone is short on
memory - a smaller cap makes the engine plan for less instead of running out
halfway.
The 0.1.11-patch fixes stay in: the Adreno black screen (software clip
distance emulation), the compressed texture uploads, the renderer memory bound
and the reported GPU device loss.
What to test
- Sideload this APK over 0.1.11-patch.
- Point the app at the game: Use a game files folder and pick
GrandV-assets(or the folder withdata/andb/in it). The launcher
should sayGame folder: .../mirror/playgta5.com. - Set the heap in the launcher to what your phone can give (5 GB on 8 GB
phones, 8 GB on 12 GB and up). - Play, and export the logs if anything goes wrong - the export now carries
the heap limits the engine was given.
Getting game data in
The app ships no game content; you supply your own copy of the web port's data,
which must have this layout:
data/manifest.json
b/<build>/shaders/index.json
b/<build>/game.wasm (native wasm2c engine only)
Two ways to point the app at it:
- Use a game files folder - pick a folder that already holds
data/and
b/. Nothing is copied, so it works with no free space. The folder may have
the game a few levels down, the launcher finds it. - Import game ZIP - pick a
.zipof the same tree. It is extracted into app
storage, which needs free space for both the archive and the extracted data.
Whichever you choose, the folder must be on internal storage (/sdcard/...).
If the launcher says the folder cannot be read, tap Grant file access and
allow "All files access".
Graphics
Every knob the web launcher exposes is in the launcher, under Graphics,
with the same names: texture, reflection, water, particle and grass quality,
scenery/pedestrian/vehicle detail, city density, variety, post FX, motion blur,
depth of field, shadow quality and softness, ambient occlusion, render distance,
fog, particle and long shadows, loading ahead, and distant lights. Low (phone
default) turns shadows off entirely and pulls the render distance in.
Multiplayer
Multiplayer uses the Grand-V relay - the same transport as the web version, so
you can share a room with browser players. You need a relay address
(ws://host:8012/relay), a room name and the access code from whoever is
hosting. Rooms hold two players and carry pose only: position, rotation and
model. Plain ws:// for now, no TLS.
Known limits
- ARM64 only, Vulkan required, Android 10+.
- First launch compiles the game and takes several minutes; early stutter is
mostly loading from storage. - Signed with a debug key. Fine for sideloading, not for any store.
- This patch covers the Wasmtime engine. The native wasm2c engine button still
boots and logs but does not render; use the wasmtime engine for gameplay.
Tested
Galaxy A34 5G (8 GB) with the Wasmtime engine: the game folder picked as
GrandV-assets, heap 5 GB.