2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00
2026-10-27 19:02:27 +01:00

First Person Maze

A native Rust / Bevy game. Collect every pellet in the maze while avoiding four ghosts. Power pellets let you catch ghosts for bonus points. You have three lives.

Play

Run first_person_maze.exe on Windows or ./first_person_maze on Linux from a release package. Keep assets/ next to the executable. A graphical desktop and working GPU drivers are required.

Input Action
W / A / S / D Move / strafe
Mouse or left / right arrows Look / turn
Enter Start / activate menu selection
Escape Pause / resume / leave settings
Arrow keys Navigate menus / adjust settings
F3 Toggle performance HUD
Gamepad sticks Move / look
Gamepad D-pad / south button Navigate / activate
Gamepad Start Pause / resume

Losing focus pauses the game. Settings include resolution, fullscreen, volume, mouse sensitivity, keyboard-only camera, head bob, 30/60 FPS and low graphics. ARM64 defaults to low graphics and 30 FPS; other architectures default to 60 FPS.

Settings save to %APPDATA%/first_person_maze/settings.ron on Windows, or $XDG_CONFIG_HOME/first_person_maze/settings.ron on Linux (default: ~/.config/first_person_maze/settings.ron). Delete this file to restore defaults.

Build

Requires Rust 1.95 or newer. Keep Cargo.lock and build with --locked.

Windows requires the MSVC Rust toolchain, Visual Studio C++ Build Tools and a Windows SDK. Linux requires native development libraries; on Debian / Ubuntu:

sudo apt install build-essential pkg-config libasound2-dev libudev-dev \
  libx11-dev libxi-dev libxrandr-dev libxcursor-dev libxinerama-dev \
  libxkbcommon-dev libwayland-dev libvulkan-dev
cargo build --release --locked
cargo run --release --locked

When building from a network share, use a local build directory. In PowerShell:

$env:CARGO_TARGET_DIR = "$env:LOCALAPPDATA/first_person_maze/target"

Linux also needs a Vulkan loader and GPU driver at runtime. For Raspberry Pi, use a 64-bit desktop OS and a working V3DV driver; build natively on the device. Linux, ARM64 and physical gamepads have not been validated in this cleanup.

Package

From PowerShell on Windows:

powershell -NoProfile -ExecutionPolicy Bypass -File tools/package.ps1

From a POSIX shell on Linux:

sh tools/package.sh

An optional target triple can be supplied as the first argument. Cross builds require the corresponding Rust target, linker and native target libraries. CARGO_TARGET_DIR is supported by both scripts.

Packages are written to release/<target>/first_person_maze/ and contain only the executable, this README and runtime audio. Each packaging run replaces the previous package for that target. Distribute the folder as an archive. Windows players may need the Microsoft Visual C++ runtime; Linux players need the system libraries matching the build environment.

Audio and maintenance

Seven synthesized WAV effects are included. To regenerate them, run python tools/generate_audio.py (Python is only needed for regeneration). Add your own licensed assets/audio/music.wav to enable looping background music. Geometry and the default font are generated or embedded. Missing audio is skipped.

Before packaging:

cargo fmt --check
cargo clippy --locked --all-targets -- -D warnings
cargo build --release --locked

Manually verify start, movement, pellet collection, ghost contact, pause/resume, settings, restart and result screens on each supported platform before release.

Description
PacMan First Person Clone
Readme 195 KiB
2026-10-27 18:19:13 +00:00
Languages
Rust 91.2%
PowerShell 4.2%
Python 2.8%
Shell 1.8%