Clone this wiki locally
This is the original documentation written in the planning stages of Phase I of BananaBread. That phase is now complete, so this page and those it links to could be outdated.
Phase I aka "let's see something working"
- Botmatch game (i.e., player plays against AI bots), visually impressive and fun
- Works on modern browsers that support WebGL
- New art assets
- Works on mid-range hardware
- No networking
- No editing (it will work, but no way to save etc.)
- No new gameplay, no new effects - keep all that exactly as in Sauerbraten
- Populate the github repo with the latest Sauerbraten code and the best freely-usable content we can find (just enough to get working while we wait for the art assets). Make sure the game compiles and runs natively. Details: Populate-the-Repo
- Decide on a theme for the game, that will influence all the artwork. Details: Game-Theme
- Add WebGL-friendly rendering path. The game will still compile natively for easy testing on desktop, and the subset of OpenGL it uses will be trivial to hook up to WebGL calls. Details: WebGL-Rendering
- Add texture set(s) and map(s), optimized for the web. If possible, several sets with different themes with different performance characteristics. Details: Maps-and-Textures Maps
- Add character model with various weapons and colors, optimized for the web. Details: Character-Model
- Add miscellaneous necessary artwork (splash screen, bullet impact texture, etc.). Details: Other-Artwork
- Add sound effects. Details: Sound-Effects
- Package the game for distribution so it is easy to just visit a website and have the game start up and run. Details: Packaging
- Wait on browser features and fixes that we need. Details: Browser-Dependencies
- Mapping and testing of models can begin immediately, by using native builds from Sauerbraten svn. Note that svn has some nice improvements since the last stable release, and that is what we are targeting.
- Also possible to use native builds from the repo here, there should be no difference with Sauerbraten svn builds at first. Later when GL conversion is further along and some art assets have landed, we should move to working entirely with native builds from here.
- The GL conversion can begin immediately in this repo, using the placeholder art assets.
- Need to set up a Sauerbraten server for multiplayer mapping.
Part of the goal of this project is to find how much we can do on the web, what size maps, what shaders, etc. we can run while keeping the frame rate high. So setting specific goals ahead of time is not possible. However, in general terms the following should be taken into consideration:
- WebGL shader performance should be very close to a natively compiled game. However, there is overhead in each WebGL call. Let's assume GL rendering will be 2x slower than a native build.
- Assuming general code and GL rendering take about equal time (handwavey estimate), that means maps run about 4x slower than natively, which means to get to 50fps on the web, we need 200fps in a native build.
- kripken's old laptop can do 200fps on douze (a smallish map) with 1 bot. We would have smaller textures and less detailed character models so the comparison is a very conservative one.
- Download size is very important on the web. We will use LZMA to compress the download to make it as efficient as possible. Let's assume that the total acceptable download - including code, map, model, etc., and after compression - is 5MB (random number that needs revision).