Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Incomplete overview of features in Spearmint, features from vanilla quake3 and ioquake3 are not listed.
- Four player splitscreen support.
- Bullet marks on doors and moving platforms.
- Gibs and bullet shells ride moving platforms.
- Improved Bot AI.
- Improved gamepad support.
- Aspect correct wide screen FOV and HUD in Q3A. **
- In multiplayer with gibs disabled, bodies no longer become invisible when gibbed. **
- Improved third person view (crosshair, no award/team sprites over ones own head, etc). **
- Option to fade out explosion lights instead of shrinking them (set
- PNG screenshots (
** denotes features possible without engine changes.
- Control drawing everything.
- Initial loading screen, size/placement of videos, starting intro video, console, in-game notify text, chat/demo/voip overlay, as well as in-game entities, UI, and HUD.
- Make most common changes without needing to change the engine.
- Change window icon, window title, playerState_t, entityState_t, usercmd_t creation, more bot AI, ...
- Use shader keywords and settings from Quake 3 / Tremulous, Elite Force, RTCW SP/MP, ET, and a few keywords from other games; and some new ones only in Spearmint.
- Merged UI VM into CGame VM, easier to modify as a whole / more flexible.
- Extended API for Game and CGame/UI, adding support for some of the new features in;
- RTCW, WolfET, Tremulous, Turtle Arena, OpenArena, World of Padman, Elite Force, Jedi Knight 2, and Jedi Academy
- Support for RTCW, ET, and Dark Salvation BSP levels.
- Support for RTCW/ET MDC models.
- Support for FAKK/Alice .ftx (fakk texture) images.
- Spearmint 0.2+: Support for DDS images, uncompressed and DXTn. Used by Elite Force 2.
- Spearmint 0.2+: Support for RTCW's MDS and ET's MDM/MDX models.
- Spearmint 0.6+: Support for playing MP3 audio files. Used by several id Tech 3 games.
- Partial support for SoF2/JK2/JA BSP levels. (Missing light styles support.)
- Partial support for FAKK/Alice BSP levels. (Missing lighting system support.)
- Partial support for Elite Force 2 BSP levels. (Missing lighting system support.)
- Partial support for MoHAA BSP levels. (Missing light grid, dynamic lights, terrain, static models.)
- Redesigned skin handling.
- Skin files are loaded in CGame VM, surface names and shader names are passed to renderer which gives a 'skin surface index' for each pair.
- Each frame a list of 'skin surface indexes' are given to renderer which gives a 'skin index' for using with refEntity_t.
- This allows CGame code to decide what remaps to apply to each model instance, without manually creating many skin files. Also since each 'skin' last only one frame you can use more combinations per-level than are allow in Q3 (Q3 1024 skins per-level vs Spearmint 1024 unique skins per-frame).
- Load models and get tags' location/rotation in Game VM (including on dedicated servers)!
- Get model bounds from any frame or lerp between frames in CGame or Game VMs (other games only allow frame 0 and only in CGame VM).
- Separate IQM model and animation file support, see IQM Support.
game entities / maps
- See Entities for new entities and keys (mainly from RTCW and ET).
- Correct collision contents (in vanilla Quake 3, non-brush entities are always treated as having
CONTENTS_BODYregardless of actual contents. It was independently fixed in RTCW and Spearmint).
- Increased max game entities to 4096, it's the max used by Doom 3 and max map entities in q3map2. (Q3/RTCW/ET only allow 1024.)
- Increased max BSP submodels (func_* entities) from 256 (used by Q3/RTCW/ET) to 1024, the max supported by q3map2. However, the bot AAS file format only supports 256.
Not quite ready for prime time
Get shader from map surface using a trace (requires
cm_betterSurfaceNumscvar to be
1, which takes a long time to load map). For example; debris models using shader of whatever was shot. Or camouflage pants (remap player model legs to shader they are standing on).
Change shader on a specific map surface (reverse of above, requires
cm_betterSurfaceNums), you'll likely need to make maps specifically with this in mind after you come up with a reason to do this.
- TODO: cache surface numbers so only need calculate once (not all surface numbers are correct though) and/or support saving them when compiling map using q3map2 (all surface numbers will be correct!).
Capsule collision for players if
1(set before spawning). See issue for info about bugs.