Sauerbraten is an experimental engine based on Cube, can be seen as "Next-Gen Cube", or "Cube 2". Much like cube, the aim of this engine is not to produce the most eyecandy possible, but rather allow map/geometry editing to be done dynamically in-game, and make map editing a lot of fun.
Sauerbraten has an even simpler world model than cube (fewer exceptions, just one kind of building block), is quicker to edit geometry with, yet allows for significantly greater class of shapes. One way to see the transition from Cube to Sauerbraten is to say Cube was a 2-directional heightfield (floor and ceiling), and Sauerbraten is a 6-directional heighfield (heighfields can be modeled in all 6 directions).
The world consists of an octree of deformable cubes. It being an octree has just one important effect: it allows the mapper to work at any scale, from large landscape areas to small architectural details. The octree is largely invisible to the mapper though, he can arbitrarily break up larger cubes or merge them, and the engine takes care of the rest.
The deformable cubes are geometric shapes made out of maximally 8 vertices. In its maximum size, it is a regular cube that fills the entire octree node it sits in, as minimum size all 8 vertices coincide which is to say the cube is "empty". Anywhere in between there's a variety of slanted cubes and wedge shapes that are possible to any degree and orientation, and together with neighbouring cubes can form any shape easily.
The editor is similar to the one in Cube but much easier / direct to use, as there aren't all the different kinds of cube's to worry about. Here, you can simply "push and pull" geometry with your mousewheel in 6 directions, depending on the orientation of the surface you are looking at. Modifier keys allow you to influence single vertices on a cube, connected vertices touching multiple cubes, edges, faces and entire cubes. Selections can be made to operate on more primitives at once. Many complex shapes are quick and easy to make. It is definitely the most fun way to model architecture to date.
The internal representation of a deformable cube is very different from a vertex based representation, and is based on "edge spans" which allows the engine to represent any kind of shape uniformly in just 12 bytes. This means it can hold great amounts of geometry in memory and maps on disk are small. To render this kind of geometry, the engine goes through a process of converting the internal representation to vertices using plane intersections based on the edge ranges, culls coinciding faces, merges vertices etc. to arrive at something which renders efficiently by hardware and caches this in chunks based on the octree. This allows Sauerbraten a significantly higher polygon throughput than Cube while maintaining its ability to have dynamic geometry.
The current implementation inherents all the non-world geometry related code from Cube, and as such works without modification: entities, AI, gameplay, network, console/script. For the new code, rendering and editing are close to done, physics and lighting are working quite well, level loading/saving is complete, SP & MP work, but plenty of more advanced stuff like occlusion culling & LOD is missing.
UPDATE: Sauerbraten has now started as a Cube community Open Source Engine (& Game) project. It interesting for developers & mappers, but maybe not players yet (though SP & MP do work).
Product's homepage
What's New in This Release: [ read full changelog ]
· added new player models Inky and Captain Cannon by Geartrooper
· added new MP maps by t-chen & MisanthropX (tempest), MisanthropX & Finn & t-chen (xenon), mIscreant (mercury), Nieb & Geartrooper (justice), Blindabuser & PainKillAH (fc5), KI113R & Redon & SkiingPenguins (alloy), TomekGNO (ruine), Kretren (core_refuge), KaiserTodretter (infamy, desecration), Nieb (bt_falls), viruz (abbey, tortuga), Jonlimle & Argh! & Nieb (injustice), Jonlimle & Nieb & Razgriz (curvy_castle), Nieb & Jonlimle (authentic), t-chen (duel7, duel8, mbt1, mbt2, mbt10, caribbean), MisanthropX & t-chen & Nieb (industry), Fatum (nitro), Vincent (suburb), BlikjeBier (akaritori), Nieb & Destroyer & MisanthropX & viruz (park), KaZ (dune), Justin (pitch_black), and Meister (osiris)
· added trak5 texture set by TRaK
· added "efficiency ctf", "efficiency protect", "hold", "insta hold", and "efficiency hold" game modes
· green and yellow armour spawn delay is now partially randomized and do not spawn immediately
· can return the flag to base in protect mode by dropping the flag on top of the base
· if a player explicitly drops a flag in ctf mode, he can't pick it back up (only his teammates can)
· added numbered base blips for capture modes (toggled via "basenumbers" var, contributed by NancyWilliams)
· players are now notified of team switches, and team switches can only be done while dead (forces player to die if alive)
· teleports now preserve velocity if third attribute of teledest is set to 1
· smoothed out climbing of 1:1 stairs
· added mini-map to radar
· match time remaining is now displayed in minutes and seconds
· added crosshair selection menu
· can now change the texture configuration in-game of all textures within a selection (via "vrotate", "voffset", "vscale", "vscroll", "vlayer", "valpha", "vshaderparam", "vcolor", "vreset", and "vdelta" commands)
· added support for alpha-blended textures (controlled via "editmat alpha", "texalpha", and "valpha" commands)
· added color scaling for diffuse textures in all shaders (via "texcolor" and "vcolor" commands)
· added support for fogging skybox (controlled via "fogdomemax", "fogdomemin", and "fogdomeheight" vars)
· added support for coloring skybox (via "skyboxcolour" var)
· sky-textured geometry no longer blocks skylight (controlled via "skytexturelight" var)
· added multi-threading for "calclight" command (controlled via "lightthreads" var)
· edit clipboard is now synchronized when a new player connects to a coop-edit
· added "replacesel" command that only replaces textures within the current selection
· added "shrinkmap" command for reducing oversized maps
· cubes are now textured on all sides with the second texture slot by default
· added optional Quake-like mouse acceleration (controlled via "mouseaccel" var)
· added "reconnect" command for connecting to the last connected server
· added optional wall clock (controlled via "wallclock", "wallclock24", and "wallclocksecs" vars)
· added "conscale" var that controls the size of console text
· added teamkill filter for console
· added "screenshotdir" var that controls where screenshots are placed
· "writeobj" command now exports texture assignments
· revised vertex format to be more efficient on older/generic 3D cards
· added GLSL render path (toggled via "forceglsl" var)
· added support for uniform buffer objects to GLSL skeletal animation path
· improved skeletal animation blending quality in fixed-function mode
· added support for environment-mapped world geometry in fixed-function mode
· added rotational friction for ragdolls to make them settle more quickly
· revised collision detection to use Minkowski Portal Refinement (allows for easier extending of collision to new shapes)
· improved adaptive sampling for calclight (faster "calclight 1")
· added motion blur effect (toggled via "motionblur" var)
· "deathscore" variable controls whether scoreboard is shown on death
· scoreboard shows the server you are currently connected to (toggled via "showservinfo")
· added "guinameslider" for selecting from a list of names with a slider
· added "guialign" for creating aligned lists
· added SMD and IQM model support (see models.html)