projects::Snake3D

About

Snake3D is a simple but amusing 3D video game I put together several years ago to prove to myself that I could do game programming with C and OpenGL. It is a re-imagining of the traditional snake game, which I embarassingly admit that I managed to beat on my first cell phone. If you don't know what is embarassing about that, then you probably haven't figured out exactly what it takes to beat the game. If you'd like to find out, you are welcome to give it a go with my version.

Screenshots


preboot       preboot       preboot
Snake3D: Main Menu, Classic Mode, Vs. (2P) Mode

Download

I intend to have a fedora/centos source rpm and yum repo up soon, but until then, here is the tarball of snake3d v0.9. You may also browse the source code, including html versions generated with webcpp, here.

Build

Currently you have to know a little something about compiling glut/opengl programs under linux to use it. On fedora, doing 'yum -y install freeglut-devel libXmu-devel' will be required. There are probably other build dependencies as well. Then, extract the tarball, run make in the toplevel, and then try it out by running './snake3d'.

Instructions

I suppose since selecting 'Instructions' on the main menu of the game goes to black screen of no fun, I should mention how to play. For a one player - 'classic' or 'quest', the controls are simply the standard arrow keys. For a two player game, you can find the controls for the second player in the source code ;). Actually, a long time ago it would utilize /dev/js[01] for joysticks if they were present. Also, sound effects are supported, though for the timebeing I haven't included those in the tarball above. Have fun...

Looking Forward...

It may well be another 7 years before I find the time to finally implement improvements... But obviously there is a lot I could incrementally do to make the game better. Online multiplayer, animations for food and death, computer AI opponent botsnakes, obstacles, fun graphics effects, etc... I'll gladly accept patches :)