-
-
Notifications
You must be signed in to change notification settings - Fork 28
Features
Zack Middleton edited this page Apr 16, 2014
·
49 revisions
Incomplete overview of features in Spearmint, features from vanilla quake3 and ioquake3 are not listed.
- Four player splitscreen support.
- Aspect correct wide screen FOV and HUD in Q3A (possible without engine changes).
- Improved Bot AI.
- Fade out explosion lights instead of shrinking them (set
cg_fadeExplosions
cvar to1
). - PNG screenshots (
screenshot
orscreenshotPNG
command).
- Control drawing everything.
- Initial loading screen, size/placement of videos (you control starting the intro videos!), console, 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.
- Combined with using cross-platform Quake Virtual Machine (QVM) this will eventually allow you to release a game for many platforms easily.
- 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 only supported by Spearmint. (Note: Not quite all RTCW and ET keywords are supported yet.)
- 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 BSP levels.
- Support for RTCW/ET MDC models.
- Support for FAKK2 .ftx (fakk texture) images.
- Partial support for SoF2/JK2/JA BSP levels. (Missing per-flare shaders and light styles.)
- Partial support for FAKK/Alice BSP levels. (Missing light grid and new lighting system support.)
- Partial support for Elite Force 2 BSP levels. (Missing lighting support and terrain support.)
- 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.
- See Entities for new entities and keys (mainly from RTCW and ET).
- Correct collision contents (in vanilla Quake 3, entities always collide with
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) to 1024, max supported by q3map2. (Q3/RTCW/ET only allow 256.)
- Increased map limits to highest of Q3, RTCW, ET values (FIXME: don't remember what things these were).
-
Get shader from map surface using a trace (requires
cm_betterSurfaceNums
cvar to be1
, 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 is1
(set before spawning). See issue for info about bugs.