Skip to content

GameCore 3.5

Choose a tag to compare

@Dreamucxe Dreamucxe released this 23 Sep 12:50
· 2 commits to main since this release

GameCore 3.5 — the app now sets itself up, and then looks after the session on its own. Four new
features, plus two versions of redesign work (3.3 and 3.4) that never reached a release until now.

Download

GameCore.apk — Android 8.0 (API 26) or newer, arm64-v8a and armeabi-v7a.

size    12,859,169 bytes (12.3 MB)
sha256  b6bfe5cb846ac7c924788701fabf6b105fba0b73024367c9d84855940ce3bfde

The release variant: R8 with obfuscation and resource shrinking, signed with the project's own
release key (CN=GameCore, RSA 2048) under the v2 APK signature scheme. Certificate SHA-256:

8eef17e0163198517f765b91a29aa9414710a852281b5e6fdd6362442586d42b

Same key as every release since 1.0, so this installs straight over any of them — versionCode
16 → 19. With minSdk 26 the build omits the legacy v1 JAR signature, so the absence of
META-INF/*.RSA is expected and does not mean the APK is unsigned; apksigner verify reports it
as verified under v2. Your profiles, HUD layouts, crosshairs, sessions and Aim Lab runs survive the
upgrade: the database moves from schema 10 to 11 through one additive migration, and every statement
in it adds a column.

A first-run setup wizard, and a Setup health screen

A new install used to land you on an empty Home screen, where the way to find out what GameCore
needed was to try something and watch it not work. It now walks through it: which features you want,
and then only the permissions those features actually use.

Nothing is granted on your behalf and no step is required. Skip all of it and the app still runs,
minus whatever you skipped — which is the honest outcome rather than a nag screen that will not let
go. Every permission the wizard offers says what stops working without it.

Afterwards, Settings › Setup health is the same information as a report: every item with its
real state — Ready, Not set up, or Unavailable with the reason Android gave — a Fix button that opens
the exact system page, and a re-check when you come back from it. The two halves of each row come
from deliberately different places: whether you want a thing is read from your own profiles and
settings, whether it is present is read from the platform. A screen that read both from one place is
how a permission ends up reported as missing because it is granted.

Upgrading never re-runs the wizard over your existing setup. If something needs attention it offers a
dismissible card on Home, and only then.

Thermal auto-downshift

Off by default, per profile. When the device holds a temperature you choose, or the thermal status
Android reports crosses the floor you set, the refresh rate steps down — and steps back up once it
has stayed cool for long enough.

The reason it is not a single threshold is that a single threshold oscillates. You set the
hysteresis, the sustain window in each direction and the minimum time between changes, so a
temperature sitting on the line produces one decision rather than a stream of them. The state
machine that makes that decision is pure Kotlin with an injected clock, and it is tested against
held, spiking and drifting temperatures rather than against one reading.

The session records how many times it stepped down and the lowest rate it reached, so the question
"did this actually do anything during that match" has an answer that is not a guess.

This is not a thermal limit override, and it is not a governor tweak. It lowers a refresh rate that
GameCore had already been asked to pin, and it reports what it did.

Network check

Off by default, per profile. Before a launch it can warn you about the connection you are about to
play on; during a session it can alert you when the connection turns poor.

It reads the transport, the Wi-Fi band and the link speed — and nothing else. No SSID, no BSSID,
and no location permission, which is the permission Android would demand before handing either of
those over. The app declares no new permission of any kind for this feature.

"Poor" is latency, jitter, or probes that stop coming back, each rated separately so the alert can
say which one it was. A probe that did not complete is reported as a probe that did not complete —
it is still not called packet loss, because a TCP handshake that times out is not a dropped packet,
and that distinction has been in this app since the latency log shipped.

Anything Android will not report shows as Unavailable with the reason it gave.

Keep full performance under battery saver

Off by default, per profile. Battery saver caps the refresh rate and the governor on most builds,
which is correct for a phone in a pocket and wrong for the twenty minutes you spend in a match.

With this on, a profile holds full performance for that game anyway, puts the saver's own behaviour
back when the game exits, and notices when the system switched the saver back on behind it — which
some builds do, at a low battery level, without telling the app. That case is recorded on the session
rather than silently ignored, because a session that ran at half the rate you asked for should say so.

No new access of any kind: it goes through the same elevated shell the refresh-rate setting already
uses, and says so when Shizuku is absent instead of failing quietly.

Also new here: the 3.3 and 3.4 redesigns

Neither of these has been in a release before.

The in-game overlay (3.4). The floating button has real states — dimmed after a few seconds
idle, with a small orange or red dot when the shared thermal classifier says hot or critical — three
sizes, four corner snaps, and a position stored as fractions per orientation, so it is where you left
it after a rotation rather than near where it was.

Tapping it now opens a quick sheet: a narrow panel on the screen edge nearest the button, holding
up to six toggles you pin yourself, brightness and media volume, the game's own icon and the session
clock. It is narrow on purpose. The point of the redesign is that the things you reach for mid-game
should not cover the game to reach them.

The full panel is still there, behind More or an optional double tap, now divided into
Display, Overlays, Capture and Session tabs, with a hold-to-confirm End session so a
misplaced tap cannot end a run. Every control that was reachable before is still reachable and still
does exactly what it did; a test enumerates them to keep that true. Switching the panel's layout to
split-across-both-edges keeps the earlier design.

The stats pill comes as a compact single line or a detailed card, with one shared formatter for units,
rounding and unavailable values — so the pill, the HUD and the panel cannot disagree about the same
number. And it stops sampling the moment nothing is looking at it, including when the screen goes
off
, which is where it previously kept ticking under the foreground service's doze exemption.

Themes (3.3). Follow system, Dark, Light or AMOLED black — a true #000000 background that
switches OLED pixels off rather than dimming them, with near-black surfaces separated by outlines
instead of by a lighter fill. Eight accent colours or one you pick yourself, applied across the app
and the overlay windows alike, with contrast checked rather than assumed.

Also from 3.3: one shared thermal classifier instead of eight independent call sites, which is what
fixed the HUD reporting "Normal" at 85 °C.

Under it

  • Room schema 10 → 11. One hand-written migration, every statement an ALTER TABLE … ADD COLUMN,
    schema JSON checked in, no destructive fallback anywhere in the app.
  • 1254 JVM unit tests across 97 classes, no failures and no errors. The four new features are four
    pure state machines with injected clocks, tested independently of Android.
  • No new permissions, no new services, no new exported components. The manifest is byte-identical
    to 3.4's.
  • No new network access. The network check reuses the existing latency probe — a payload-free TCP
    handshake to a host you choose — and reads everything else from the platform on the device.
  • Still no root, no game-file modification, no code injection, no process-memory access, no anti-cheat
    interference, no fabricated statistics and no thermal-limit override.
  • No ads and no advertising SDK. The README paragraph that still described a banner has been removed;
    it had been stale since the ads came out.

Unchanged

Per-game profiles, automatic profile detection, the crosshair overlay and its eleven designs, the HUD
builder, monitoring, encrypted session tracking, the shareable session card, colour correction,
display size, game storage, the Aim Lab and its seven modes, fire modes, and the closed elevated
command set with no shell interpreter in it.

Untested on hardware

The build host is an aarch64 device with no working adb, so the instrumented suite was not run and
the on-device visual pass is not part of this build. What is covered is the pure seams: the samplers,
the aggregators, the capability reasoning, the wizard's entry and step logic, the thermal, network and
battery-saver state machines, the formatters, and the reachability of every overlay control.