Skip to content
master
Switch branches/tags
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
doc
 
 
lib
 
 
src
 
 
web
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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).

Play online here!

Screenshot

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

See doc/Code organization.md

Version history

See doc/Version history.md

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.