Zack Middleton edited this page Mar 12, 2018 · 49 revisions

Incomplete overview of features in Spearmint, features from vanilla quake3 and ioquake3 are not listed.

End Users

  • 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 cg_fadeExplosions cvar to 1).
  • PNG screenshots (screenshot or screenshotPNG command).

** denotes features possible without engine changes.

Game/Mod Developers

  • 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

data formats

  • 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.)

model info/rendering

  • 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_BODY regardless 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_betterSurfaceNums cvar 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 g_playerCapsule cvar is 1 (set before spawning). See issue for info about bugs.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.