Awesome
Oxid
Oxid is an arcade-style game where you fight waves of monsters in a fixed-screen maze. This is more or less a clone of Verminian Trap (2013, Locomalito). Verminian Trap was originally inspired by Wizard of Wor (1980, Midway).
Oxid is written in the Zig programming language (requires version 0.7.x).
Building
Note: After cloning the oxid repository, make sure to update the submodules (git submodule init
followed by git submodule update
).
Oxid can be built into a native executable or a WebAssembly binary.
Native (OpenGL) build
The native build requires SDL2 and should work on Linux, Mac and Windows (untested).
To build and run the debug build:
zig build play
# or, equivalently:
zig build
zig-cache/oxid
To build and run the release build:
zig build -Drelease-safe=true
zig-cache/oxid
Oxid supports a few command-line options for things like refresh rate and audio sample rate. Run zig-cache/oxid --help
for a listing.
WebAssembly build
The WebAssembly build has no third-party requirements.
To build and serve:
sh build_web.sh www # choose any destination directory
cd www
python3 -m http.server # or any other web server of your choice
How to play
Game controls (these can be rebound in the menu):
- arrow keys: move
- space: shoot
- esc: open menu
Menu controls:
- arrow keys: move cursor
- enter: select
- esc: go back
Debug/cheat controls:
- backquote: fast forward (4x speed)
- shift-backquote: super fast forward (16x speed)
- backspace: skip to next wave
- F2: toggle rendering of move boxes
- F4: toggle profiling spam (not available in web version or in ReleaseSmall)
Code organization
Version history
Notes
Low-level graphics code was originally based on andrewrk's Tetris demo for Zig. WebAssembly code was based on raulgrell's fork of the same project.
Some sound effects from https://opengameart.org/content/512-sound-effects-8-bit-style
Uses Dawnbringer's 16-color palette.
Uses Hejsil's zig-clap, my zig-hunk, zig-pcx and zig-wav one-file libraries, as well as zang for audio.