Sauerbraten 2006_12_04 review

Download
by rbytes.net on

Sauerbraten is an experimental engine based on Cube, can be seen as "Next-Gen Cube", or "Cube 2"

License: GPL (GNU General Public License)
File size: 0K
Developer: Sauerbraten Team
0 stars award from rbytes.net

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). If you are interested in checking it out, or even in contributing, I suggest you visit the forums (see below).

NEWS: may 24 2005 release with lightmaps and working MP/SP gameplay! download from sourceforge below.

What's New in This Release:
added 'particletext' var for toggling particle text alias arguments now set by 'push' on execution, and restored by 'pop' after added 'push' and 'pop' commands for saving and restoring aliases glass reflection using environment maps
added environment map entities (created by "newent envmap") for reflecting geometry
added S3 texture compression support (controlled by "mintexcompresssize" var)
added Gregor's new texture set and map, and many other new maps/media
added heightmaps for most existing normalmapped textures, so we can have parallax on everything
added scripting documentation for the rpg model rendering code now automatically generates triangle strips for both md2s and md3s
added workaround for garbage in skybox on ATI cards (must be enabled explicitly by "/ati_skybox_bug 1" if necessary)
fixed lighting bug in fixed-function mode that caused textures to saturate made selections solid. you can still use 'passthrough' to suppress it changed some default editing key bindings. right mouse is now the 'editextend' command, B is now change brush, Alt is now passthrough
added multiple entity selection.
added boolean operators to cubescript: &&(and), ||(or), ^(xor), !(not) exposed selecting to cube script. see "entselect, moving, dragging, entmoving" and related commands. ex: KP_Enter selects entity's within selection, etc.
added a bunch of new editing commands to seperate much of the entity and cube commands in engine. overloading behaviours is now left to scripts. see data/stdedit.cfg
new gui/menu system
added surface merging that drastically reduces world geometry (done on remip/calclight)
teams now automatically selected on any team mode by server added support for md3 vweps
default enemy ogro skin is now always red (teammates always blue)
added progress meters for base captures
server will now pick map with most pending votes (if possible) at the end of a match
reflections now use occlusion queries instead of distance check changed geometry rendering to use triangles instead of quads (consistent subdivision on all platforms)
"newmap" is now synchronized across all clients in coopedit revised networking code to better utilize enet (less lag and bandwidth usage)

Sauerbraten 2006_12_04 keywords