Skip to content

Roadmap

Zack Middleton edited this page Oct 31, 2017 · 34 revisions

Spearmint 1.0 Roadmap

Roadmap subject to change. The original target for Spearmint 1.0 was June 2013, but was push back a year to add RTCW-MP and ET features (June 2014). There is no target for when Spearmint 1.0 will be released.

The plan is to be compatible with Spearmint 1.0 mods forever. This probably won't happen, but I want to try.

Future Compatible

  • Done: Allow extending most structures that are part of rendering VM API (refEntity_t, refdef_t, etc) issue 161
  • Done: Ignore unknown extra shader arguments for known keywords issue 98
  • Done?: Plan for adding more collision types. capsule qboolean in entity should be an int and whatnot.

Support More Engine Features (VM API calls, shaders, ...)

Spearmint 1.0 may only have partial support for features from some of the listed game engine. The plan would be to add missing things later without breaking mod compatibility with 1.0.

  • Done: Quake 3, Team Arena
  • Done: Turtle Arena
  • Basically done: Tremulous (missing two system calls for get news and send game stats)
  • Almost done: Elite Force (see issue 168.)
  • Partial: RTCW-MP
  • Partial: WolfET

I need to review these more to find all the changes...

  • Partial: World of Padman
  • Smokin' Guns

Improve Mod Support

  • Done: Make playerState_t and entityState_t modable.
  • Done: Merge cgame and ui VMs.
  • Done: Move game-specific cvars out of client into cgame.
  • Done: Add API major and minor version to game and cgame. Major changes when API compatibility to broken, minor is increased when new API functions are added.
  • Done: Don't allow vms to make syscalls when engine asks for API version. (Engine don't know if it's compatible yet.)
  • Done: Move console and message mode from client to cgame.

Improve Handling Multiple Separate Games

Allow changing window icon/title and proper networking with varying BASEGAME.

  • Done: Get base game(s) from mint-game.settings in fs_game directory.
  • Done: Add support for games to set window title. (description.txt in fs_game directory is used.)
  • Done: Load window icon from windowicon32.png (Windows) or windowicon.png (GNU/Linux, OS X, other platforms) from game search paths.

Extend Base Game (Q3A)

As all games have to be ported to Spearmint, it's definitely worth improving the central core they share.

  • Done: Use clip region feature from Tremulous for clipping scrolling text in Team Arena UI and scoreboard.
  • Done: Added "addbot random" to add a random bot. Also added to bot select in UI.
  • Done: Add support for "!gametype" entity key for specifying which gametypes to not spawn an entity. (From OpenArena.)

Probably not; only benefits new maps:

  • Make more entity sounds configurable, based on code in Turtle Arena.
  • Fix func_train to be able to play sounds.

Input

  • Post-1.0: Add touch-screen event API for cgame/ui VM.

Sound

  • Post-1.0: Add support for multiple listeners using OpenAL sound system, mainly for splitscreen.
  • Done: Add support for playing Ogg Opus sounds.
  • Done: Use Opus, instead of Speex, for VOIP.

Video

  • Post-1.0: Add support for Ogg Theora video playback.

Models

  • Done: Add support for loading models in game to get tag locations.
  • Post-1.0: Add support for modifying IQM skeletons in cgame/ui and game for rendering / getting tags.

i10n

  • Done: Add support for UTF-8 in game chat messages, only usable with games that use TrueType fonts.
  • Add support for Unicode characters beyond 255.
  • Post-1.0: Support for translating server/client/game/cgame/ui using textget will be considered.

Platforms

  • Post-1.0: Add support for running client on Android, Ouya, and GameStick.

Documentation

  • Document how to create a 'game' and 'mod' running on unmodified Spearmint.
  • Document new/changed mod API functions (might try to document them all).
  • Exists: Document new entity types and new entity keys.
  • Exists: Document new shader stuff, like the new waveform types noise and random.
  • Exists: Create credits list.