Skip to content

RTCW SP

Zack Middleton edited this page Oct 21, 2015 · 10 revisions

RTCW-SP engine features missing from Spearmint. A lot of SP engine features are listed on RTCW-MP and EnemyTerritory page instead of here. My plan is to port them first and then add whatever is needed for SP. SP notes counting all three pages is still incomplete though.

Additional API calls

  • More sound VM API calls.

  • G_BOT_ALLOCATE_CLIENT (modified argument list, takes clientNum) // ZTM: for spearmint it would be a entity/playerNum.

    • ZTM: should it give clientNum and playerNum? or does clientNum (aka connectionNum in game VM) not matter?

Bot AAS Support

  • Missing support for new AAS version and loading multiple AAS files at once

Misc Changes from MP

Server:

  • SV_ClipToEntities: ZTM: Could probably unlink/relink the chair when player moves? Though, might be ignored to allow shooting through it or something.
		// RF, special case, ignore chairs if we are carrying them
		if ( touch->s.eType == ET_PROP && touch->s.otherEntityNum == clip->passEntityNum + 1 ) {
			continue;
		}
  • SV_SendClientSnapshot: Snapshots aren't built for SVF_CASTAI. (NOTE: They are built for bots in q3/rtcw/etc.)
  • SV_CheckTimeouts: SVF_CASTAI don't time out.
  • SV_SetConfigstring: Not sent to SVF_CASTAI (in any gametype, RTCW MP limits to GT_SINGLE_PLAYER).
  • SV_DropClient: Doesn't print disconnect message for SVF_CASTAI.

Client:

  • cl_cin.c: Uses roqFPS. Q3 and RTCW MP do not. Sounds like a good idea.
  • cl_cin.c: Makes sure finishes playing sound after video ends?
  • cl_cin.c: Has letterbox RoQ support, can be done in Spearmint cgame I think.

Renderer

  • REFLAG_FULL_LOD. Forces full level of detail for MDS (player/cast AI) models. Used during cinematics. I'm not sure this is really valuable to add, modern hardware can probably have game with full LOD fine. So if some one wants to use low LOD, why override in cutscenes? Hmm, maybe because models are far from camera and use low LOD be default.

Port notes

  • Last argument for trap_R_AddCoronaToScene is now shader handle. Register and use handle for "flareShader" or "spotLight" instead of passing bit flag 2 (to use spotLight). Bit flag 1 means visible, which in Spearmint is a qboolean argument like in RTCW-MP.
  • RF_BLINK is handled different from MP (see tr_animation.c), but both can be done with Spearmint skin handling.
  • RDF_SNOOPERVIEW changes the (global) GL fog start / end (R_Fog/R_SetFrameFog in tr_main.c). Can be done in Spearmint CGame.

RTCW MP vs SP notes

Nothing needs to be done in Spearmint because of these, but keeping them around for luls.

  • NOTE: Sky portal changes from MP.

    • If map has a skyportal (passed in a refdef with RDF_SKYBOXPORTAL), does not draw sky for refdef without RDF_SKYBOXPORTAL (e.g., world view point). Spearmint has a RDF_NOSKY which allows this (set on world view point).
    • If refdef has RDF_SKYBOXPORTAL and does not have RDF_DRAWSKYBOX, only draws sky surfaces in sky portal. Spearmint has a RDF_ONLYSKY which allows this (set on skybox portal).
  • NOTE: Corona changes from MP.

    • Changed visible argument to flags. bit 1 means visible. bit 2 means use spotLight shader.
  • NOTE: SP doesn't have the MDS 'vertex fixedParent' code.

Not required

  • Missing support for ATI tessellation extension.
  • Missing support for nVidia fog dist extension.
  • Missing support for REFLAG_ZOMBIEFX and REFLAG_ZOMBIEFX2 which are not used in the final game (cgame code is disabled).
  • Missing support for r_lowMemTextureSize and r_lowMemTextureThreshold.
  • Missing support for r_dlightScale (scales dlight radius) -- could be done in cgame, not really sure why user would want this.
  • r_showtris and r_shownormals when set to 2 aren't visible through walls. It's kind of buggy though, not always visible in front of wall either.
Clone this wiki locally