A fast-paced 2D grid-based action game built natively with C++, Raylib, and WebAssembly. 👾
CLICK HERE TO PLAY THE LIVE WEB BUILD
Empty_Pointer is a lightweight arcade survival game where you navigate across a clean, minimalist grid while enemies spawn from the edges and close in on you.
Built as an experimental project under Voxion Labs, it is designed to run directly on GitHub Pages as a static WebAssembly build—zero backend, zero installations, and instant browser gameplay.
- Fluid Grid Movement: Interpolated player rendering for buttery-smooth grid transitions.
- Dynamic Threat Spawning: Enemies continuously generate from the edges, increasing the pressure.
- Pulse Attack: Unleash an AoE (Area of Effect) pulse to clear nearby enemies when cornered.
- Boss Encounters: Face a challenging purple boss every 20 kills, complete with escort enemies, warning banners, and alert sounds.
- Juicy Game Feel: Includes AABB collision detection, satisfying player death particles, and screen shake impacts.
- Run Analytics: Tracks survival time, kills, current score, and personal best records.
- Cross-Platform Controls: Fully optimized for keyboard, mouse, and mobile touch displays.
- Procedural Audio: Built-in synthesized sound effects for movement, UI interactions, hits, and game over states.
| Action | Keyboard | Mouse / Touch |
|---|---|---|
| Move | WASD / Arrow Keys |
Tap/Click a grid cell |
| Pulse Attack | E |
Tap PULSE button |
| Start / Restart | ENTER / SPACE |
Tap START / RESTART |
| Pause | P |
Tap PAUSE |
| Main Menu | Pause first, then MAIN MENU |
Tap MAIN MENU |
| Guide | G |
Tap GUIDE |
Note for Mobile: Use the browser control dock below the game canvas for reliable button inputs.
Survive as long as possible! Your player occupies a single grid cell. Use movement to maintain your distance, and trigger your PULSE attack when enemies swarm too close.
Boss Fights: Every 20 kills triggers a boss encounter. A red warning banner will flash, and a dark purple boss will spawn alongside five escort enemies.
- The boss is slower but features a visible aura that causes instant death on contact.
- It takes two pulse hits to destroy the boss.
Pro Tips :
- Conserve your Pulse: Don't spam it when enemies are far; it has a cooldown. Save it for tight clusters.
- Boss Strategy: When the red warning appears, create distance immediately before the escorts spread out. Stay outside the boss's aura and pulse when it gets in range.
- Diagonal Movement: Alternate horizontal and vertical moves to zig-zag across the grid efficiently.
- Audio Check: On mobile browsers, tap any control button once to register a user gesture so the procedural audio can start playing.
This repository uses GitHub Actions to compile the C++ code into WebAssembly and publish the static files directly to GitHub Pages.
If GitHub Pages shows this README instead of the game:
- Go to your repository
Settings > Pages. - Under
Build and deployment, ensureSourceis set to GitHub Actions. - Go to the
Actionstab and run theBuild and Deploy Web Gameworkflow. - Hard refresh (
Ctrl + F5) the live URL once the build turns green.
Requires the Emscripten SDK and a local Raylib checkout:
make -C raylib/src PLATFORM=PLATFORM_WEB
make web RAYLIB_SRC=raylib/srcThe output generates in the public/ directory. Use any static file server (like npx serve) to host it locally.
If Raylib is installed natively on your OS:
make nativeContributions are always welcome! Whether you want to polish the visuals, add new enemy types, fix bugs, or optimize the WebAssembly pipeline, feel free to jump in.
- Fork the repository.
- Create a new feature branch.
- Commit your changes.
- Open a Pull Request with a clear description of your upgrades.
If you enjoy playing Empty_Pointer or found the C++ to WebAssembly pipeline helpful for your own learning, please consider dropping a Star on the repository! It keeps the motivation high and helps others discover the project.
This project is licensed under the MIT License.
You are free to use, copy, modify, merge, publish, and distribute this software, provided the original MIT license notice is included. Built for the community, as-is, without warranty.
Founder @ Voxion Labs