{"id":1992,"date":"2026-07-18T06:37:18","date_gmt":"2026-07-18T13:37:18","guid":{"rendered":"http:\/\/macdaddy4sure.ai\/?p=1992"},"modified":"2026-07-18T06:37:18","modified_gmt":"2026-07-18T13:37:18","slug":"gaming-rl-fps-guide","status":"publish","type":"post","link":"http:\/\/macdaddy4sure.ai\/index.php\/2026\/07\/18\/gaming-rl-fps-guide\/","title":{"rendered":"Gaming RL FPS Guide"},"content":{"rendered":"\n<p>This guide covers the first-person gaming RL subsystem in _AugmentedIntelligence.<\/p>\n\n\n\n<p>It is separate from the Minecraft Spigot plugin, but it uses the same idea:<\/p>\n\n\n\n<p>observe game state, choose actions, record transitions, train offline or online,<\/p>\n\n\n\n<p>and only actuate when the run mode allows it.<\/p>\n\n\n\n<p>For the shorter command overview, see docs\/GamingRL.md. For SourceMod,<\/p>\n\n\n\n<p>Quake, Garry&#8217;s Mod, and Civilization bridge setup, see<\/p>\n\n\n\n<p>docs\/GameModBridges.md.<\/p>\n\n\n\n<p>Use this only on your own local\/private games and servers. Do not use it to evade<\/p>\n\n\n\n<p>anti-cheat systems or automate play on public multiplayer servers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Was Added<\/h2>\n\n\n\n<p>The FPS subsystem now has:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A 32-feature state vector for target tracking, HUD status, resources, threat,<\/li>\n<\/ul>\n\n\n\n<p>&nbsp; cover, objective pressure, audio cues, death\/menu terminal states, and movement<\/p>\n\n\n\n<p>&nbsp; context.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A 24-action discrete control library covering aiming, firing, movement, sprint,<\/li>\n<\/ul>\n\n\n\n<p>&nbsp; crouch, jump, reload, interact, melee, heal\/armor, peeking, retreat reload, and<\/p>\n\n\n\n<p>&nbsp; objective push.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Skill labels on top of actions: observe, aim_adjust, combat,<\/li>\n<\/ul>\n\n\n\n<p>&nbsp; peek_strafe, movement, weapon_resource, and objective_use.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Behavior cloning hooks, offline replay training, self-play mode flag, human<\/li>\n<\/ul>\n\n\n\n<p>&nbsp; feedback, checkpoint tags, rollback, policy explanation, evaluation, dashboard<\/p>\n\n\n\n<p>&nbsp; export, heatmap export, replay summaries, and bridge protocol export.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Smooth input controls for mouse step limits and timed key holds.<\/li>\n\n\n\n<li>Adapter hooks for game-specific perception such as HUD OCR, minimap threat,<\/li>\n<\/ul>\n\n\n\n<p>&nbsp; audio direction, hit markers, damage, death screen, menus, and objective state.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MathNN\/model integration points through the existing policy selection path.<\/li>\n\n\n\n<li>Native Source\/Quake\/Garry&#8217;s Mod game-mod bridge receiver commands under<\/li>\n<\/ul>\n\n\n\n<p>&nbsp; gaming mod bridge &#8230;.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Civilization turn-strategy bridge support through GamingStrategyRL.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Quick Start<\/h2>\n\n\n\n<p>Start in dry-run mode before allowing key and mouse output:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl init<br>gaming rl adapter set generic_fps<br>gaming rl input hold 120<br>gaming rl input mouse 32<br>gaming rl dry-run on<br>gaming rl curriculum start input_smoke<br>gaming rl status<br>gaming rl skills<br>gaming rl explain<\/p>\n\n\n\n<p>When the actions and observations look reasonable:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl dry-run off<br>gaming rl mode bot<br>gaming rl train on<br>gaming rl eval 3<br>gaming rl dashboard<br>gaming rl heatmap<br>gaming rl checkpoint tag baseline<\/p>\n\n\n\n<p>If behavior gets worse:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl checkpoint list<br>gaming rl checkpoint rollback baseline<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Important Commands<\/h2>\n\n\n\n<p><em>[text]<br><\/em>gaming rl status<br>gaming rl features<br>gaming rl systems<br>gaming rl skills<br>gaming rl skill use &lt;action_id&gt;<br>gaming rl explain<br>gaming rl why<br><br>gaming rl mode off|assist|bot|train|eval<br>gaming rl train on|off|episode start|episode end<br>gaming rl eval [episodes]<br>gaming rl selfplay on|off<br><br>gaming rl adapter set &lt;name&gt;<br>gaming rl adapter status<br>gaming rl perception &lt;request&gt;<br><br>gaming rl input hold &lt;milliseconds&gt;<br>gaming rl input mouse &lt;max_pixels_per_tick&gt;<br>gaming rl dry-run on|off<br><br>gaming rl curriculum status<br>gaming rl curriculum start [phase]<br>gaming rl curriculum next<br>gaming rl curriculum phase &lt;name&gt;<br><br>gaming rl replay summary [path]<br>gaming rl replay tail<br>gaming rl replay train [path]<br>gaming rl bc train [epochs]<br>gaming rl bc status<br><br>gaming rl reward good [note]<br>gaming rl reward bad [note]<br>gaming rl reward &lt;number&gt; [note]<br><br>gaming rl dashboard<br>gaming rl heatmap<br>gaming rl bridge spec<br>gaming mod bridge status<br>gaming mod bridge configure source_mod 0.0.0.0 8767 YOUR_TOKEN true<br>gaming mod bridge configure quake_mod 0.0.0.0 8768 YOUR_TOKEN true<br>gaming mod bridge configure garrys_mod 0.0.0.0 8771 YOUR_TOKEN true<br>gaming mod bridge configure civilization_mod 0.0.0.0 8772 YOUR_TOKEN true<br><br>gaming rl checkpoint tag &lt;tag&gt;<br>gaming rl checkpoint list<br>gaming rl checkpoint rollback &lt;tag&gt;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">State Vector<\/h2>\n\n\n\n<p>The transition log writes state features as s0 through s31.<\/p>\n\n\n\n<p><em>[text]<br><\/em>s0&nbsp;&nbsp; target visible<br>s1&nbsp;&nbsp; target dx<br>s2&nbsp;&nbsp; target dy<br>s3&nbsp;&nbsp; target size<br>s4&nbsp;&nbsp; target velocity x<br>s5&nbsp;&nbsp; target velocity y<br>s6&nbsp;&nbsp; target confidence<br>s7&nbsp;&nbsp; target centered\/alignment<br>s8&nbsp;&nbsp; aim error magnitude<br>s9&nbsp;&nbsp; recent action bias<br>s10&nbsp; recent reward signal<br>s11&nbsp; fire readiness<br>s12&nbsp; movement context x<br>s13&nbsp; movement context y<br>s14&nbsp; training mode flag<br>s15&nbsp; bias feature<br>s16&nbsp; health normalized<br>s17&nbsp; armor normalized<br>s18&nbsp; ammo normalized<br>s19&nbsp; reserve ammo normalized<br>s20&nbsp; objective distance normalized<br>s21&nbsp; damage taken recently<br>s22&nbsp; hit marker<br>s23&nbsp; death screen<br>s24&nbsp; menu open<br>s25&nbsp; reloading<br>s26&nbsp; scoped<br>s27&nbsp; on ground<br>s28&nbsp; cover score<br>s29&nbsp; minimap threat<br>s30&nbsp; audio threat yaw<br>s31&nbsp; audio threat strength<\/p>\n\n\n\n<p>Adapters should normalize values to 0.0..1.0 where possible. Directional<\/p>\n\n\n\n<p>values such as target dx, target dy, and audio threat yaw can use<\/p>\n\n\n\n<p>-1.0..1.0.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Action Library<\/h2>\n\n\n\n<p><em>[text]<br><\/em>0&nbsp;&nbsp; noop<br>1&nbsp;&nbsp; aim_left<br>2&nbsp;&nbsp; aim_right<br>3&nbsp;&nbsp; aim_up<br>4&nbsp;&nbsp; aim_down<br>5&nbsp;&nbsp; fire<br>6&nbsp;&nbsp; strafe_left<br>7&nbsp;&nbsp; peek_left_forward<br>8&nbsp;&nbsp; peek_right_forward<br>9&nbsp;&nbsp; move_forward<br>10&nbsp; move_back<br>11&nbsp; strafe_right<br>12&nbsp; jump<br>13&nbsp; crouch<br>14&nbsp; sprint_forward<br>15&nbsp; reload<br>16&nbsp; use_interact<br>17&nbsp; swap_weapon<br>18&nbsp; melee<br>19&nbsp; heal_or_armor<br>20&nbsp; peek_left_crouch<br>21&nbsp; peek_right_crouch<br>22&nbsp; retreat_reload<br>23&nbsp; objective_push<\/p>\n\n\n\n<p>Use gaming rl skill use &lt;action_id&gt; to force one action once. This is useful<\/p>\n\n\n\n<p>for verifying that the focused window is receiving input correctly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Files Written<\/h2>\n\n\n\n<p>The subsystem writes runtime data under:<\/p>\n\n\n\n<p><em>[text]<br><\/em>C:\/gaming_rl_logs\/<\/p>\n\n\n\n<p>Important files:<\/p>\n\n\n\n<p><em>[text]<br><\/em>transitions.csv<br>fps_dashboard.json<br>fps_heatmap.csv<br>fps_bridge_protocol.json<br>fps_perception_requests.jsonl<br>fps_episode_events.jsonl<br>checkpoint.txt<br>checkpoint_&lt;tag&gt;.txt<\/p>\n\n\n\n<p>The Python trainer in gaming_rl\/train_fps_rl.py now detects the state columns<\/p>\n\n\n\n<p>from transitions.csv, so it can train on both old 16-feature logs and new<\/p>\n\n\n\n<p>32-feature logs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Adapter Boundary<\/h2>\n\n\n\n<p>The core RL code does not perform game-specific OCR or minimap parsing directly.<\/p>\n\n\n\n<p>It expects an adapter to populate FPSPerception. A complete adapter should<\/p>\n\n\n\n<p>provide:<\/p>\n\n\n\n<p><em>[text]<br><\/em>target bbox\/center\/confidence<br>health, armor, ammo, reserve ammo<br>hit marker and recent damage<br>death screen and menu state<br>reload\/scoped\/on-ground state<br>cover score<br>objective distance<br>visible enemy count<br>minimap threat<br>audio threat yaw and strength<\/p>\n\n\n\n<p>gaming rl perception &lt;request&gt; records adapter requests to<\/p>\n\n\n\n<p>fps_perception_requests.jsonl. gaming rl bridge spec exports the JSON bridge<\/p>\n\n\n\n<p>schema to fps_bridge_protocol.json.<\/p>\n\n\n\n<p>The GameModBridge receiver handles server-side Source\/Quake JSON telemetry and<\/p>\n\n\n\n<p>feeds simple health, damage, and death signals into FPSPerception. It does not<\/p>\n\n\n\n<p>replace richer client perception for aim targets, HUD OCR, audio threat, or<\/p>\n\n\n\n<p>minimap reasoning.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Training Curriculum<\/h2>\n\n\n\n<p>Recommended staged curriculum:<\/p>\n\n\n\n<p><em>[text]<br><\/em>input_smoke<br>&nbsp; Dry-run first. Then force every action with `gaming rl skill use &lt;id&gt;`.<br>&nbsp; Verify mouse limits, key holds, sprint holding W, reload, crouch, jump, and<br>&nbsp; no accidental input into the wrong window.<br><br>aim_static<br>&nbsp; Use a stationary local target or aim trainer. Reward should come mostly from<br>&nbsp; target centering and hit markers. Keep movement disabled or ignored.<br><br>aim_tracking<br>&nbsp; Add moving targets. Watch `gaming rl explain` and `fps_heatmap.csv` to confirm<br>&nbsp; it is correcting yaw\/pitch rather than firing randomly.<br><br>movement_basic<br>&nbsp; Train forward, back, strafe, jump, crouch, and sprint in an empty area. Use<br>&nbsp; `gaming rl input hold 120` or higher if movement feels choppy.<br><br>cover_peek<br>&nbsp; Add cover. Reward cover score and penalize recent damage. Check that peek<br>&nbsp; actions appear in the action summary.<br><br>resource_loop<br>&nbsp; Add limited ammo and reload timing. Penalize firing while empty\/reloading and<br>&nbsp; reward clean reloads from cover.<br><br>combat_close<br>&nbsp; Add close-range combat. Enable melee and retreat_reload. Penalize death and<br>&nbsp; menu-open terminal states heavily.<br><br>objective_route<br>&nbsp; Add objective distance. Reward objective progress while preserving health and<br>&nbsp; avoiding visible threats.<br><br>mixed_eval<br>&nbsp; Run `gaming rl eval 10`, export dashboard and heatmap, then tag a checkpoint<br>&nbsp; only if returns and death rate improve.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Human Feedback<\/h2>\n\n\n\n<p>Use feedback to bias the policy after a behavior happens:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl reward good held angle correctly<br>gaming rl reward bad fired while reloading<br>gaming rl reward -0.5 walked into wall<br>gaming rl reward 1.0 took cover before reload<\/p>\n\n\n\n<p>This records a feedback event and feeds a shaped transition through the same<\/p>\n\n\n\n<p>learning path.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Offline Training<\/h2>\n\n\n\n<p>Collect transitions during dry-run, assist, bot, train, or eval modes. Then run:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl replay summary<br>gaming rl replay train<br>gaming rl bc train 5<\/p>\n\n\n\n<p>For Python-side PPO or linear export:<\/p>\n\n\n\n<p><em>[text]<br><\/em>python gaming_rl\/train_fps_rl.py &#8211;algo linear<br>python gaming_rl\/train_fps_rl.py &#8211;algo ppo<\/p>\n\n\n\n<p>The Python script reads C:\/gaming_rl_logs\/transitions.csv by default.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Practical Operating Loop<\/h2>\n\n\n\n<p><em>[text]<br><\/em>gaming rl dry-run on<br>gaming rl curriculum start input_smoke<br>gaming rl skill use 9<br>gaming rl skill use 14<br>gaming rl skill use 5<br>gaming rl explain<br>gaming rl dashboard<br><br>gaming rl dry-run off<br>gaming rl curriculum phase aim_static<br>gaming rl mode train<br>gaming rl train on<br><br>gaming rl eval 5<br>gaming rl dashboard<br>gaming rl heatmap<br>gaming rl checkpoint tag aim_static_good<br>gaming rl curriculum next<\/p>\n\n\n\n<p>Do not move to the next phase until the current phase is boringly reliable.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide covers the first-person gaming RL subsystem in _AugmentedIntelligence. It is separate from the Minecraft Spigot plugin, but it uses the same idea: observe game state, choose actions, record transitions, train offline or online, and only actuate when the run mode allows it. For the shorter command overview, see docs\/GamingRL.md. For SourceMod, Quake, Garry&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1992","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/comments?post=1992"}],"version-history":[{"count":1,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1992\/revisions"}],"predecessor-version":[{"id":1993,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1992\/revisions\/1993"}],"wp:attachment":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/media?parent=1992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/categories?post=1992"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/tags?post=1992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}