Pseudo-3D shooter written completely in awk using raycasting technique
Awk
Switch branches/tags
Nothing to show
Clone or download
Latest commit 43826af Jul 23, 2017
Permalink
Failed to load latest commit information.
Dockerfile Add Dockerfile Jul 19, 2017
LICENSE Initial commit Jan 12, 2016
README.md Fix README.md markdown headings Jun 30, 2017
awkaster.awk Improved movement, added strafe Jan 15, 2016
screenshot.png Initial commit Jan 12, 2016

README.md

awkaster

Bring some old-school fun to your terminal! Explore the dungeon and shoot monsters in this pseudo-3D game inspired by the classic Wolfenstein 3D and Doom.

Screenshot

Running the game

gawk -f awkaster.awk

You need gawk version >= 4.0.0

OS X users must install gawk first. The easiest way to do this is to use Homebrew. Once it has been installed, run the following commands:

brew update
brew install gawk

NetBSD users require gawk. The easiest way to do it is install it with pkgin:

pkgin install gawk

Alternatively install from sources using the pkgsrc framework:

cd /usr/pkgsrc/lang/gawk && make install

OpenBSD users require gawk. The easiest way to do it is install it with pkg_add:

pkg_add gawk

Alternatively install from sources using the OpenBSD ports:

cd /usr/ports/lang/gawk && make install clean

Your machine will now be ready to run awkaster.

How to play

Your objective is to navigate the map and activate exit elevator, killing hoards of monsters in the process.

Controls:

  • WASD - movement
  • J/L - turn left/right. Hold shift to turn quicker
  • spacebar - shoot
  • num 1-4 - change color mode
  • x - activate elevator (arrives after 1000 moves)

Adjusting resolution

By default game resolution is 64x48 "pixels", which are just a pair of ASCII symbols. That means your terminal needs to be at least 128 chars wide. You may change variables w and h to your liking.

Game engine

Wall rendering is done using ray casting. Monsters and projectiles are added after that as sprites. Ray casting is a simple rendering algorithm that doesn't require any 3d modeling or complex computation.

You can find an excellent tutorial here: http://lodev.org/cgtutor/raycasting.html