Tactical FPS

Plays a native tactical first-person match: movement, hitscan weapons, teams, bots, an economy, plant and defuse, and round transitions.

Source: module-kits:kits/fps_tactical/usage/en.mdView Markdown source

Also read offline — CLI: grip-forge docs fps-tacticalMCP tool: gripforge_docs { "topic": "fps-tactical" }

Tactical FPS (fps.tactical) #

What it is for #

Plays a native tactical first-person match: movement, hitscan weapons, teams, bots, an economy, plant and defuse, and round transitions.

It needs runtime.core, game.engine; installing it brings them in.

Turn it on #

Install the kit in a project, then change a setting (the values shown are its defaults):

gripforge_gamekit_install   { project_id: "gkp_…", id: "fps.tactical" }
gripforge_gamekit_configure { project_id: "gkp_…", id: "fps.tactical",
                              config: { "rules": {}, "siteRadius": 3 } }

First example #

<!-- test: kits/game_engine/host/tests/fps_tactical.rs::presentation_getters_are_read_only_and_describe_the_match --> This is the body of the passing test presentation_getters_are_read_only_and_describe_the_match; the helper functions it calls are defined at the top of the same test file.

#[test]
fn presentation_getters_are_read_only_and_describe_the_match() {
    let mut s = session(&[]);
    let before = call(&mut s, "fps.match", "simInfo", json!([])).unwrap();
    let plan = call(&mut s, "fps.match", "presentation", json!([])).unwrap();
    let view = call(&mut s, "fps.match", "view", json!([])).unwrap();
    assert!(plan["map"]["boxes"].as_array().unwrap().len() > 0);
    assert_eq!(plan["local"], before["localActorId"]);
    assert!(view["grenades"].is_array());
    assert_eq!(
        call(&mut s, "fps.match", "simInfo", json!([])).unwrap(),
        before
    );
}

Settings and defaults #

Descriptions come from the kit manifest and stay in English.

SettingTypeDefaultRange or valuesMeaning
rulesobject{}Bounded FpsRules overrides on top of the kit base rules (round buy 18 s, duration 100 s, target 5, start money 4000; bots normal,…
siteRadiusnumber30.5–20Radius of the bomb-site zones published for other kits, metres.
eventBufferinteger51216–4096Match events kept between two drainEvents reads.
mapstring"sunport_docks"
teamstring"T"T, CT
presentationobject—

Services, events, variables #

  • Service fps.match:
  • Service movement.fps:
  • Service camera.first_person:
  • Service combat.hitscan:
  • Service animation.viewmodel:
  • Service grenades.tactical:
  • Service ai.tactical:
  • Service objective.bomb:
  • Events emitted:
    • fps.shot (type, actor, target, point, origin, normal, material, weapon)
    • fps.damage (type, actor, target, point, origin, normal, material, weapon)
    • fps.kill (type, actor, target, point, origin, normal, material, weapon)
    • fps.round_start (type, actor, target, point, origin, normal, material, weapon)
    • fps.round_end (type, actor, target, point, origin, normal, material, weapon)
    • fps.bomb_plant (type, actor, target, point, origin, normal, material, weapon)
    • fps.bomb_defuse (type, actor, target, point, origin, normal, material, weapon)
    • fps.bomb_explode (type, actor, target, point, origin, normal, material, weapon)
    • fps.match_start (type, actor, target, point, origin, normal, material, weapon)
    • fps.match_end (type, actor, target, point, origin, normal, material, weapon)
    • fps.respawn (type, actor, target, point, origin, normal, material, weapon)
    • fps.objective_capture (type, actor, target, point, origin, normal, material, weapon)
    • fps.loadout_selected (type, actor, target, point, origin, normal, material, weapon)
    • fps.step (type, actor, target, point, origin, normal, material, weapon)
    • fps.slide (type, actor, target, point, origin, normal, material, weapon)
    • fps.vault (type, actor, target, point, origin, normal, material, weapon)
    • fps.equip (type, actor, target, point, origin, normal, material, weapon)
    • fps.fire_mode (type, actor, target, point, origin, normal, material, weapon)
    • fps.reload_start (type, actor, target, point, origin, normal, material, weapon)
    • fps.magazine_insert (type, actor, target, point, origin, normal, material, weapon)
    • fps.reload_end (type, actor, target, point, origin, normal, material, weapon)
    • fps.he (type, actor, target, point, origin, normal, material, weapon)
    • fps.flash (type, actor, target, point, origin, normal, material, weapon)
    • fps.smoke (type, actor, target, point, origin, normal, material, weapon)
    • fps.stun (type, actor, target, point, origin, normal, material, weapon)
    • fps.incendiary (type, actor, target, point, origin, normal, material, weapon)
  • Variables:
    • fps.phase (string) — Round phase
    • fps.mode (string) — Match mode
    • fps.round (number) — Round
    • player.health (number) — Health
    • player.respawn_remaining (number) — Respawn countdown

Hooks and modding #

  • Hooks (a game or a mod can intercept them):
    • fps.round.start (fields a tap may change: buy) — A new round of a bomb match is about to start (the five seconds after a round are over; not the first round of a match).
    • fps.round.end (fields a tap may change: team) — A round of a bomb match is won, before the score, the money and fps.round_end: team is the winner (a tap may give the round to the other team).
    • fps.match.end (cancellable) — The match is about to end: the round target is reached (bomb mode, after fps.round_end), or the clock or the score limit of a deathmatch or domination match (team is empty on a draw).
    • fps.bomb.plant (fields a tap may change: fuse; cancellable) — An attacker finished planting the bomb at a site: fuse is the time before it explodes, seconds.
    • fps.bomb.defuse (cancellable) — A defender finished defusing the planted bomb (remaining: seconds left on the fuse).
  • Moddable settings: rules, siteRadius, map, team, presentation
  • Moddable collections: tactical_maps

Engines #

Declared targets: web, godot, unity, unreal, rust. gripforge kit api fps.tactical lists the exact settings and services of your version.

Versions #

Kit version 1.16.0.