Play

Right Here! This game works best in Firefox or Chrome.

Idea

I've always wondered if it was possible to make a decent FPS in browser, and I decided to try my hand at it using WebGL. As I result, I made this game. It is playable (for some values of playable), and I will revist this game at some point. It has potential, I think, though it is limited by performance and compatibility issues. I wanted a open-world run-and-gun FPS with gear-swapping, and achieved most of that. I have verified that this game runs on at least some Chromebooks. I current have three models in the game which were made by a friend of mine, who is trying to get a website online right now. I would also like to thank another friend of mine, who helped test this game across multiple computers and was veru helpful throughout. I used sound from Evan King's 20XX album of royalty free music and sound effects, which can be found at http://evanking.bandcamp.com/. I would recommend this album to anyone looking for sound or music for a game.

Language

All in javascript, CSS, and HTML. I used JQuery and JQuery-UI, for AJAX and Deferreds. I also used the excelent glMatrix.js library, which worked well. Webgl was difficult to work with despite having worked with JOGL before, partitially because it seems to silently fail whenever 'undefined' is passed to a function, only giving a generic error message when a draw call is later made. On some computers and browsers, WebGL silently replaces null values with zeros when passing uniforms: on other platforms, it silently crashes the entire tab or browser. Most OpenGL resources say the default behavior is to replace with zeros, but in practice, this absolutely cannot be depended on. This was very difficult to debug, as you have to either log every call or use a plugin like WebGL Inpector. The WebGL inspector does make life much easier, since it has buffer inspection, call logging, and many other useful features. Because of the odd issues which can crop up, I'd go so far as to say it's nigh-indispensible. However, I am interested in work more with WebGL, as the potential for games like this one is huge. I'd like to continue work from this code; however, it is rather disorganized (I'm no javascript wizard). It would be fun to try to build a larger game from this, but I think I'll give this a couple months rest at least.

Old version of this page and game