Penumbra: Overture

Screenshot

Penumbra: Overture is a first person survival horror game, emphasizing on survival and problem solving instead of mindless violence and gore.

Port Details

Genres

adventure
puzzle

Requirements

Porter

Omka1337

Downloads

107

Last Updated

2026-10-21

Rating

None

Miscellaneous

Instructions

Copy these folders and files listed below to roms/ports/penumbra/ from your game's folder: billboards/, lights/, particles/, config/, maps/, sounds/, core/, models/, textures/, fonts/, music/, graphics/, materials.cfg, resources.cfg.

Additional Information

Notes

Thanks to Frictional Games for creating Penumbra: Overture.

Boots and plays. Confirmed on RG40XX + ROCKNIX. Full playthrough and other CFWs untested.

[!IMPORTANT] This is a paid title. To play this port, you must have a legally purchased copy of the game on Steam or GOG.

Disclaimer

This project uses AI to write code and documentation. All code and documentation generated by the AI are reviewed and tested by a human.

Contents

Installing

1. Install the port

  • Drop penumbra.zip from the latest release into PortMaster’s autoinstall and run PortMaster, or
  • SSH: harbourmaster install https://github.com/omka-1337/PenumbraOverture-PortMaster/releases/latest/download/penumbra.zip

Result: Penumbra Overture.sh + ports/penumbra/ (engine, shaders, OpenAL).

2. Copy the game across

Copy the folders and files listed below to roms/ports/penumbra/ from your game's folder.

[!TIP] For Steam, this is: steam/steamapps/common/Penumbra Overture or right-click the game in your library > browse local files.

billboards/   lights/      particles/    materials.cfg
config/       maps/        sounds/       resources.cfg
core/         models/      textures/
fonts/        music/
graphics/

Leave behind penumbra, penumbra.bin, lib/ and docs.
Do not overwrite rehatched/ — it holds the port’s shaders and overrides; without it the game draws nothing.

3. Play

Launch from Ports menu. First run writes settings (slightly slower).
Saves/settings live in ports/penumbra/.frictionalgames/ (survive port reinstalls).
If it fails, check ports/penumbra/log.txt (GL vendor line shows Mesa/Panfrost vs ARM blob).

Graphics switches

Set in the launch script before ./PenumbraOverture.

Variable Default Effect
HPL_SHADOW_BUDGET 2 Point lights with shadow cube maps. 0 = biggest FPS gain (spot shadows only)
HPL_POINT_SHADOWS on 0 disables point-light shadows
HPL_POST on 0 skips post-process (no gamma/bloom, saves resolve)
HPL_BLOOM config Number overrides bloom; 0 disables bloom but keeps pass
HPL_GAMMA config Number overrides gamma
HPL_BUMP on 0 flat lighting (no normal maps)
HPL_PARTICLE_SCALE 1 Scales all particles

Debug-only (not for everyday use): HPL_NO_LIGHTS, HPL_FRAME_TRACE, HPL_SCREENSHOT.

Controls

Button Key Action
Left stick WASD Move
Right stick Mouse Look / drag (while Interact held)
R1 LMB Interact (hold + pull doors/drawers/valves)
L1 RMB Examine
A R Interaction mode
B Space Jump
X G Glowstick
Y F Flashlight
L2 / R2 Q / E Lean left / right
L3 / R3 Shift / Ctrl Run / Crouch
D-pad ←/→ PgUp/PgDn Cycle quick slots that hold items
D-pad ↑ Home Use selected quick slot
D-pad ↓ N Notebook
Select Tab Inventory
Start Escape Menu

Face buttons follow device layout (A/B may be swapped). Mapping is in penumbra.gptk via gptokeyb — no in-game remapping.

Quick slots: D-pad cycles occupied slots (names the item); second button uses it. Never auto-uses.

Right-stick acceleration: short nudge = precise, hold = ramps to full speed (~0.5 s).

  • mouse_scale in penumbra.gptk (higher = slower; default 6144)
  • HPL_MOUSE_ACCEL=<top>:<ramp>:<start> in launch script — lower start if overshooting, raise if crawling.

Compile

Engine lives in HPL1 Fledged; this repo has game sources, packaging and launch script. Clone side-by-side.

Device (PortMaster container):

docker run --privileged --rm tonistiigi/binfmt --install arm64
./build-arm64.sh          # → build-arm64/PenumbraOverture (7 MB, glibc ≥ 2.29, libGLESv2)
./deploy.sh               # push binary + shaders + script over ssh
# override address if needed:
PENUMBRA_DEVICE=root@192.168.1.50 ./deploy.sh

Package for PortMaster:

./build-openal-arm64.sh   # OpenAL without sndio
./package.sh              # → build-arm64/penumbra.zip

Releases built by .github/workflows/release.yml on arm64 runners. Tag v1.0 publishes; manual run builds without release.

Desktop:

cmake -S . -B build && cmake --build build
./play.sh

See port/README.md for device layout. capture.sh grabs a single frame for renderer comparison.

License

Port files: GPL