Much like the original Cube, the aim of this game is not necessarily to produce the most features & eyecandy possible, but rather to allow map/geometry editing to be done dynamically in-game, to create fun gameplay and an elegant engine. The engine supporting the game is entirely original in code & design, and its code is Open Source (ZLIB license, read the docs for more on how you can use the engine).
Cube 2: Sauerbraten (free) is an engine/editor for designing and playing first person shooter games, primarily aimed at multiplayer LAN games. It is an entirely open source/freeware project, actively supported and developed, and supports a good set of features, all of which ultimately lead to getting some friends together and blowing each other to bloody gobbets. Good times, good times.
While many systems for designing FPS maps use an editor/engine split, where you engage in an edit/test/edit again cycle, Sauerbraten makes no such distinction. You load up, or create, a map, then press “E” to begin editing it, and “E” again to leave edit mode. At the simplest level, editing consists of extruding or deleting cubes and adding textures, but to create the kind of beautiful maps you can see in screenshots or play as part of Sauerbraten’s distribution package, you will need to master a variety of skills, as well as creating or importing textures designed for your specific needs.
Sauerbraten does not use a standard Windows interface. Most editing in Cube 2: Sauerbraten is accomplished by some mix of “click a key, then spin the mousewheel.” In essence, you constantly shift into different modes. Press “y” to make the mousewheel cycle through textures. Press “g” to make the grid size smaller or larger. Multiple players logged into a map can all edit it cooperatively, allowing teams to work on a project and see each other’s changes happening dynamically.
In some cases, you need as much coordination to edit a map as to frag your friends. For example, bending and deforming corners requires holding down the mousewheel while dragging to select a range, then spinning the mousewheel to edit the corners, all without ever letting the mousewheel up or clicking any of the other mouse buttons. My failure to master this skill meant that I constantly lost my selection, selected the wrong squares, or was only able to perform a partial edit before my fingers slipped.
As with many open-source projects, documentation is sparse and sometimes out of date. There is a forum for asking questions, and I did find it useful, but it uses very non-standard forum software that seems to have fallen through a timewarp from 1998, with a simple list of topics-as-links. There’s a wiki, but it consists mostly of stub articles and partially written guides that tend to make assumptions about prior knowledge.
A fairly basic scripting language (CubeScript) is also part of Sauerbraten. It’s intended primarily for trigger events (such as causing a monster to spawn when you cross a square), rather than scripting advanced AI or adding complex new features. The engine source code, though, is open source, so it is certainly possible to use it as a base for adding additional functionality via more traditional means.
If you’re interested in FPS map design–and aren’t afraid to get your hands a little dirty and experiment a bit to figure out what works and what doesn’t–download Sauerbraten and check it out. Just make sure your mousewheel finger isn’t as itchy as your trigger finger.
Links for Cube 2 users:
Quadropolis (community site for maps etc.)
Premier Sauerbraten League (competitive league)
Cube2.FR (French community site)
sourceforge project page (downloads/cvs)
Cube Server Lister (external browsing app)
Wouter’s homepage (developer/designer)
Lee’s homepage (developer)
- 6 directional heightfield in octree world structure allowing for instant easy in-game geometry editing (even in multiplayer, coop edit).
- Rendering engine optimized for high geometry throughput, supporting hardware occlusion culling and software precomputed conservative PVS with occluder fusion.
- Lightmap based lighting with accurate shadows from everything including mapmodels, smooth lighting for faceted geometry, and fast compiles. Soft shadowmap based shadows for dynamic entities.
- Pixel and vertex shader support, each model and world texture can have its own shader assigned. Supports normal and parallax mapping, specular and dynamic lighting with bloom and glow, environment-mapped and planar reflections/refractions, and post-process effects.
- Robust physics written specifically for this world structure.
- Loading of md2/md3/md5/obj/smd models for skeletal and vertex animated characters, weapons, items, and world objects. Supports animation blending, procedural pitch animation, and ragdoll physics for skeletally-animated characters.
- Network library designed for high speed games, client/server network system.
- Small but complete configuration/scripting language.
- Simple stereo positional sound system.
- Particle engine, supporting text particles, volumetric explosions, soft particles, and decals.
- 3d menu/gui system, for in-world representation of choices.