{"id":1987,"date":"2026-07-18T06:34:11","date_gmt":"2026-07-18T13:34:11","guid":{"rendered":"http:\/\/macdaddy4sure.ai\/?p=1987"},"modified":"2026-07-18T06:34:11","modified_gmt":"2026-07-18T13:34:11","slug":"source-quake-garrys-mod-and-civilization-game-mod-bridges","status":"publish","type":"post","link":"http:\/\/macdaddy4sure.ai\/index.php\/2026\/07\/18\/source-quake-garrys-mod-and-civilization-game-mod-bridges\/","title":{"rendered":"Source, Quake, Garry&#8217;s Mod, And Civilization Game Mod Bridges"},"content":{"rendered":"\n<p>This document covers the non-Minecraft FPS game bridge packages in<\/p>\n\n\n\n<p>game_mods\/ and their _AugmentedIntelligence runtime commands.<\/p>\n\n\n\n<p>Use these only on private\/local servers you own or administer. Do not use them<\/p>\n\n\n\n<p>to bypass anti-cheat systems or automate public multiplayer play.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Was Added<\/h2>\n\n\n\n<p><em>[text]<br><\/em>GameModBridge.hpp \/ GameModBridge.cpp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Native _AI UDP receiver<br>game_mods\/source_mod\/ai_bridge.sp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceMod server plugin<br>game_mods\/source_mod\/cfg\/ai_bridge.cfg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceMod cvar template<br>game_mods\/source_mod\/tools\/source_action_bridge.py&nbsp; Optional UDP-to-RCON action sidecar<br>game_mods\/quake_mod\/ai_bridge_defs.qc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QuakeC field\/function declarations<br>game_mods\/quake_mod\/ai_bridge.qc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QuakeC telemetry\/action hooks<br>game_mods\/quake_mod\/tools\/quake_log_bridge.py&nbsp; Quake log\/action sidecar<br>game_mods\/garrys_mod\/addons\/augmentedintelligence_bridge\/&nbsp; Garry&#8217;s Mod GLua addon<br>game_mods\/garrys_mod\/tools\/gmod_file_bridge.py&nbsp; Garry&#8217;s Mod file\/UDP sidecar<br>game_mods\/civilization_mod\/AugmentedAICivilization.modinfo&nbsp; Civilization VI mod package<br>game_mods\/civilization_mod\/tools\/civ_log_bridge.py&nbsp; Civilization Lua.log\/UDP sidecar<\/p>\n\n\n\n<p>The native receiver accepts authenticated UDP JSON, keeps per-adapter packet<\/p>\n\n\n\n<p>counts, stores a recent packet tail, and maps simple health\/damage\/death fields<\/p>\n\n\n\n<p>into GamingRL::FPSPerception. Civilization packets are routed into<\/p>\n\n\n\n<p>GamingStrategyRL::CivilizationState and receive a high-level strategy<\/p>\n\n\n\n<p>decision response.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">_AI Commands<\/h2>\n\n\n\n<p><em>[text]<br><\/em>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>gaming mod bridge start source_mod<br>gaming mod bridge start quake_mod<br>gaming mod bridge start garrys_mod<br>gaming mod bridge start civilization_mod<br>gaming mod bridge start all<br>gaming mod bridge stop source_mod<br>gaming mod bridge tail source_mod 10<br>gaming mod bridge tail quake_mod 10<br>gaming mod bridge tail garrys_mod 10<br>gaming mod bridge tail civilization_mod 10<\/p>\n\n\n\n<p>Configuration is persisted in:<\/p>\n\n\n\n<p><em>[text]<br><\/em>game_mod_bridge.local.txt<\/p>\n\n\n\n<p>Recommended FPS RL startup:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl init<br>gaming rl dry-run on<br>gaming rl input hold 120<br>gaming rl input mouse 32<br>gaming rl bridge spec<br>gaming mod bridge configure source_mod 0.0.0.0 8767 YOUR_TOKEN true<br>gaming mod bridge status<\/p>\n\n\n\n<p>Use dry-run on until tail, packet counts, and gaming rl explain look sane.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SourceMod Bridge<\/h2>\n\n\n\n<p>The Source bridge is an in-server SourceMod plugin.<\/p>\n\n\n\n<p>Requirements:<\/p>\n\n\n\n<p><em>[text]<br><\/em>Source Dedicated Server<br>Metamod:Source<br>SourceMod<br>SourceMod Socket extension<\/p>\n\n\n\n<p>Build and install:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>copy game_mods\\source_mod\\ai_bridge.sp C:\\srcds\\addons\\sourcemod\\scripting\\<br>cd C:\\srcds\\addons\\sourcemod\\scripting<br>spcomp ai_bridge.sp<br>copy ai_bridge.smx C:\\srcds\\addons\\sourcemod\\plugins\\<br>copy E:\\_AugmentedIntelligence\\_src\\_AugmentedIntelligence_v11.0 &#8211; Typed Commands\\game_mods\\source_mod\\cfg\\ai_bridge.cfg C:\\srcds\\cfg\\sourcemod\\<\/p>\n\n\n\n<p>Configure cfg\/sourcemod\/ai_bridge.cfg:<\/p>\n\n\n\n<p><em>[text]<br><\/em>ai_bridge_enable &#8220;1&#8221;<br>ai_bridge_host &#8220;10.0.0.151&#8221;<br>ai_bridge_port &#8220;8767&#8221;<br>ai_bridge_token &#8220;YOUR_TOKEN&#8221;<br>ai_bridge_interval &#8220;0.25&#8221;<br>ai_bridge_observe_bots &#8220;1&#8221;<br>ai_bridge_actuation &#8220;0&#8221;<br>ai_bridge_dry_run &#8220;1&#8221;<br>ai_bridge_safety &#8220;1&#8221;<br>ai_bridge_chat_enable &#8220;1&#8221;<br>ai_bridge_goal &#8220;survive_and_learn&#8221;<br>ai_bridge_curriculum &#8220;input_smoke&#8221;<\/p>\n\n\n\n<p>Server commands:<\/p>\n\n\n\n<p><em>[text]<br><\/em>sm_ai help<br>sm_ai status<br>sm_ai connect<br>sm_ai disconnect<br>sm_ai reload<br>sm_ai observe<br>sm_ai chat &lt;message&gt;<br>sm_ai dryrun on|off<br>sm_ai safety on|off<br>sm_ai monitor on|off<br>sm_ai replay on|off<br>sm_ai goal &lt;text&gt;<br>sm_ai curriculum &lt;phase&gt;<br>sm_ai metrics<br>sm_ai debug<br>sm_ai action &lt;userid|@me&gt; &lt;action&gt; [text]<br>ai_bridge_status<br>ai_bridge_action &lt;userid&gt; observe<br>ai_bridge_action &lt;userid&gt; hint &#8220;Move to cover.&#8221;<br>ai_bridge_action &lt;userid&gt; say &#8220;Training observation received.&#8221;<br>ai_bridge_action &lt;userid&gt; nudge_forward<br>ai_bridge_action &lt;userid&gt; look_left<br>ai_bridge_action &lt;userid&gt; look_right<br>ai_bridge_reply &lt;userid|@all&gt; chat|hint|center &lt;message&gt;<\/p>\n\n\n\n<p>ai_bridge_action requires admin permission, ai_bridge_actuation 1, and<\/p>\n\n\n\n<p>ai_bridge_dry_run 0 for movement\/rotation actions. Actuation is intentionally<\/p>\n\n\n\n<p>limited to server-safe lab actions. A Source server<\/p>\n\n\n\n<p>cannot hold a real player client&#8217;s movement keys; use a local client controller<\/p>\n\n\n\n<p>for full key\/mouse control.<\/p>\n\n\n\n<p>Optional Source action sidecar:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>python .\\game_mods\\source_mod\\tools\\source_action_bridge.py &#8211;listen-port 8769 &#8211;rcon-host 127.0.0.1 &#8211;rcon-port 27015 &#8211;rcon-password YOUR_RCON_PASSWORD &#8211;token YOUR_TOKEN &#8211;print<\/p>\n\n\n\n<p>The sidecar accepts action\/reply JSON and dispatches plugin commands over RCON:<\/p>\n\n\n\n<p><em>[json]<br><\/em>{&#8220;type&#8221;:&#8221;action&#8221;,&#8221;userid&#8221;:2,&#8221;action&#8221;:&#8221;hint&#8221;,&#8221;message&#8221;:&#8221;Move to cover.&#8221;,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<br>{&#8220;type&#8221;:&#8221;reply&#8221;,&#8221;target&#8221;:&#8221;@all&#8221;,&#8221;channel&#8221;:&#8221;chat&#8221;,&#8221;message&#8221;:&#8221;Training round started.&#8221;,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quake Bridge<\/h2>\n\n\n\n<p>Classic QuakeC has no portable socket API, so the Quake bridge emits structured<\/p>\n\n\n\n<p>server log lines and a sidecar forwards them to _AI.<\/p>\n\n\n\n<p>Wire the QuakeC hooks:<\/p>\n\n\n\n<p><em>[c]<br><\/em>\/\/ worldspawn<br>ai_bridge_init();<br><br>\/\/ PutClientInServer<br>ai_bridge_player_spawn();<br><br>\/\/ ClientDisconnect<br>ai_bridge_player_disconnect();<br><br>\/\/ player death \/ obituary path<br>ai_bridge_player_death();<br><br>\/\/ PlayerPostThink<br>ai_bridge_player_postthink();<br><br>\/\/ Optional chat\/command hooks if your mod exposes them<br>ai_bridge_player_chat(message);<br>ai_bridge_player_command(&#8220;status&#8221;);<br>ai_bridge_print_status();<\/p>\n\n\n\n<p>Load the cvars:<\/p>\n\n\n\n<p><em>[text]<br><\/em>exec quake_ai_bridge.cfg<\/p>\n\n\n\n<p>Run the sidecar:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>python .\\game_mods\\quake_mod\\tools\\quake_log_bridge.py &#8211;log C:\\quake\\id1\\qconsole.log &#8211;host 10.0.0.151 &#8211;port 8768 &#8211;token YOUR_TOKEN &#8211;print &#8211;action-listen-port 8770 &#8211;action-file C:\\quake\\id1\\ai_bridge_actions.cfg &#8211;print-actions<\/p>\n\n\n\n<p>Optional private-server cvar actuation:<\/p>\n\n\n\n<p><em>[text]<br><\/em>set ai_bridge_actuation 1<br>set ai_bridge_dry_run 0<br>set ai_bridge_action_slot 0<br>set ai_bridge_action_id 1<br>set ai_bridge_action_time 1<\/p>\n\n\n\n<p>Increment ai_bridge_action_time for each action. Action IDs are:<\/p>\n\n\n\n<p><em>[text]<br><\/em>1 turn_left<br>2 turn_right<br>3 nudge_forward<br>4 jump<br>5 weapon_1<br>6 weapon_2<br>7 weapon_3<br>8 freeze<br>9 nudge_back<br>10 observe<br>11 hint<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Garry&#8217;s Mod Bridge<\/h2>\n\n\n\n<p>The Garry&#8217;s Mod bridge is a server-side GLua addon plus a file\/UDP sidecar. The<\/p>\n\n\n\n<p>addon uses normal garrysmod\/data files, so it does not need a binary socket<\/p>\n\n\n\n<p>module inside GMod.<\/p>\n\n\n\n<p>Install:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>copy game_mods\\garrys_mod\\addons\\augmentedintelligence_bridge C:\\gmodserver\\garrysmod\\addons\\augmentedintelligence_bridge -Recurse<\/p>\n\n\n\n<p>Start _AI:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl init<br>gaming rl adapter set garrys_mod<br>gaming rl dry-run on<br>gaming mod bridge configure garrys_mod 0.0.0.0 8771 YOUR_TOKEN true<\/p>\n\n\n\n<p>Run the sidecar on the GMod server host:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>python .\\game_mods\\garrys_mod\\tools\\gmod_file_bridge.py &#8211;data-dir C:\\gmodserver\\garrysmod\\data\\augmentedintelligence_bridge &#8211;host 10.0.0.151 &#8211;port 8771 &#8211;token YOUR_TOKEN &#8211;print<\/p>\n\n\n\n<p>Server commands:<\/p>\n\n\n\n<p><em>[text]<br><\/em>ai_bridge_status<br>ai_bridge_observe<br>ai_bridge_action &lt;userid|steamid64|name|@all|@bots&gt; observe<br>ai_bridge_action &lt;target&gt; hint &#8220;Move to cover.&#8221;<br>ai_bridge_action &lt;target&gt; nudge_forward<br>ai_bridge_action &lt;target&gt; look_left<br>ai_bridge_action &lt;target&gt; look_right<br>ai_bridge_action &lt;target&gt; freeze<\/p>\n\n\n\n<p>Movement and effect actions require:<\/p>\n\n\n\n<p><em>[text]<br><\/em>ai_bridge_actuation 1<br>ai_bridge_dry_run 0<\/p>\n\n\n\n<p>Packet fields include health, armor, ammo, team, origin, velocity, eye angles,<\/p>\n\n\n\n<p>active weapon, and eye-trace target.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Civilization Bridge<\/h2>\n\n\n\n<p>The Civilization bridge is a turn-strategy integration for Civilization VI. It<\/p>\n\n\n\n<p>is advisory by default: the mod emits state and displays\/logs recommendations<\/p>\n\n\n\n<p>instead of silently making irreversible game choices.<\/p>\n\n\n\n<p>Install:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>copy game_mods\\civilization_mod &#8220;$env:USERPROFILE\\Documents\\My Games\\Sid Meier&#8217;s Civilization VI\\Mods\\AugmentedAICivilization&#8221; -Recurse<\/p>\n\n\n\n<p>Start _AI:<\/p>\n\n\n\n<p><em>[text]<br><\/em>gaming rl strategy on<br>gaming mod bridge configure civilization_mod 0.0.0.0 8772 YOUR_TOKEN true<\/p>\n\n\n\n<p>Run the sidecar:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>python .\\game_mods\\civilization_mod\\tools\\civ_log_bridge.py &#8211;host 10.0.0.151 &#8211;port 8772 &#8211;token YOUR_TOKEN &#8211;print<\/p>\n\n\n\n<p>The Civ Lua mod prints AI_CIV_BRIDGE_JSON {&#8230;} records to Lua.log. The<\/p>\n\n\n\n<p>sidecar forwards them to _AI, receives strategy_decision replies, and<\/p>\n\n\n\n<p>appends them to Logs\/augmented_ai_civ_actions.jsonl by default. The Lua mod<\/p>\n\n\n\n<p>polls both augmented_ai_civ_actions.jsonl and<\/p>\n\n\n\n<p>Logs\/augmented_ai_civ_actions.jsonl when file I\/O is available.<\/p>\n\n\n\n<p>Civilization strategy actions:<\/p>\n\n\n\n<p><em>[text]<br><\/em>0 balanced_development<br>1 prioritize_science<br>2 prioritize_culture<br>3 prioritize_gold<br>4 build_infrastructure<br>5 raise_military<br>6 improve_tiles<br>7 scout<br>8 settle_city<br>9 diplomacy<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Packet Contract<\/h2>\n\n\n\n<p>Source observation:<\/p>\n\n\n\n<p><em>[json]<br><\/em>{&#8220;type&#8221;:&#8221;observation&#8221;,&#8221;engine&#8221;:&#8221;source&#8221;,&#8221;adapter&#8221;:&#8221;source_mod&#8221;,&#8221;map&#8221;:&#8221;de_dust2&#8243;,&#8221;userid&#8221;:2,&#8221;player&#8221;:&#8221;Player&#8221;,&#8221;team&#8221;:2,&#8221;alive&#8221;:1,&#8221;health&#8221;:100,&#8221;origin&#8221;:[0.0,0.0,0.0],&#8221;angles&#8221;:[0.0,90.0,0.0],&#8221;reason&#8221;:&#8221;tick&#8221;,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<\/p>\n\n\n\n<p>Quake observation:<\/p>\n\n\n\n<p><em>[json]<br><\/em>{&#8220;type&#8221;:&#8221;observation&#8221;,&#8221;engine&#8221;:&#8221;quake&#8221;,&#8221;adapter&#8221;:&#8221;quake_mod&#8221;,&#8221;time&#8221;:12.25,&#8221;player&#8221;:&#8221;Player&#8221;,&#8221;health&#8221;:100,&#8221;frags&#8221;:0,&#8221;origin&#8221;:&#8221;0 0 0&#8243;,&#8221;angles&#8221;:&#8221;0 90 0&#8243;,&#8221;reason&#8221;:&#8221;tick&#8221;,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<\/p>\n\n\n\n<p>Garry&#8217;s Mod observation:<\/p>\n\n\n\n<p><em>[json]<br><\/em>{&#8220;type&#8221;:&#8221;observation&#8221;,&#8221;engine&#8221;:&#8221;garrys_mod&#8221;,&#8221;adapter&#8221;:&#8221;garrys_mod&#8221;,&#8221;map&#8221;:&#8221;gm_construct&#8221;,&#8221;userid&#8221;:2,&#8221;player&#8221;:&#8221;Player&#8221;,&#8221;steamid&#8221;:&#8221;7656119&#8230;&#8221;,&#8221;alive&#8221;:true,&#8221;health&#8221;:100,&#8221;armor&#8221;:25,&#8221;origin&#8221;:[0,0,0],&#8221;angles&#8221;:[0,90,0],&#8221;weapon&#8221;:&#8221;weapon_crowbar&#8221;,&#8221;ammo&#8221;:0,&#8221;reason&#8221;:&#8221;tick&#8221;,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<\/p>\n\n\n\n<p>Civilization observation:<\/p>\n\n\n\n<p><em>[json]<br><\/em>{&#8220;type&#8221;:&#8221;observation&#8221;,&#8221;engine&#8221;:&#8221;civilization&#8221;,&#8221;adapter&#8221;:&#8221;civilization_mod&#8221;,&#8221;turn&#8221;:42,&#8221;cities&#8221;:3,&#8221;settlers&#8221;:1,&#8221;military_units&#8221;:5,&#8221;enemy_military_units&#8221;:2,&#8221;science_per_turn&#8221;:32,&#8221;culture_per_turn&#8221;:18,&#8221;gold_per_turn&#8221;:11,&#8221;expansion_score&#8221;:0.8,&#8221;war_pressure&#8221;:0.2,&#8221;victory_focus&#8221;:&#8221;science&#8221;,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<\/p>\n\n\n\n<p>Civilization decision response:<\/p>\n\n\n\n<p><em>[json]<br><\/em>{&#8220;type&#8221;:&#8221;strategy_decision&#8221;,&#8221;engine&#8221;:&#8221;civilization&#8221;,&#8221;adapter&#8221;:&#8221;civilization_mod&#8221;,&#8221;action_id&#8221;:8,&#8221;label&#8221;:&#8221;settle_city&#8221;,&#8221;confidence&#8221;:0.72,&#8221;value&#8221;:0.14,&#8221;source&#8221;:&#8221;civilization_actor_critic&#8221;,&#8221;turn&#8221;:42,&#8221;token&#8221;:&#8221;YOUR_TOKEN&#8221;}<\/p>\n\n\n\n<p>Native _AI mapping:<\/p>\n\n\n\n<p><em>[text]<br><\/em>health&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; FPS health feature<br>player_hurt&nbsp;&nbsp; -&gt; recent damage feature<br>player_death&nbsp; -&gt; death\/terminal feature<br>round_end&nbsp;&nbsp;&nbsp;&nbsp; -&gt; terminal cause<br>origin\/angles -&gt; retained in packet tail for adapters and later richer mapping<br>civilization turn state -&gt; GamingStrategyRL civilization policy<\/p>\n\n\n\n<p>For richer aiming\/objective features, pair these server bridges with the normal<\/p>\n\n\n\n<p>client-side FPS perception path: screen capture, HUD OCR, audio threat, minimap<\/p>\n\n\n\n<p>threat, and target detection.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Firewall<\/h2>\n\n\n\n<p>On the _AI machine, allow inbound UDP for the bridge ports you actually use:<\/p>\n\n\n\n<p><em>[powershell]<br><\/em>New-NetFirewallRule -DisplayName &#8220;_AI SourceMod Bridge UDP 8767&#8221; -Direction Inbound -Protocol UDP -LocalPort 8767 -Action Allow<br>New-NetFirewallRule -DisplayName &#8220;_AI Quake Bridge UDP 8768&#8221; -Direction Inbound -Protocol UDP -LocalPort 8768 -Action Allow<br>New-NetFirewallRule -DisplayName &#8220;_AI Garrys Mod Bridge UDP 8771&#8221; -Direction Inbound -Protocol UDP -LocalPort 8771 -Action Allow<br>New-NetFirewallRule -DisplayName &#8220;_AI Civilization Bridge UDP 8772&#8221; -Direction Inbound -Protocol UDP -LocalPort 8772 -Action Allow<\/p>\n\n\n\n<p>On the game server, allow outbound UDP to the _AI machine on those ports. Keep<\/p>\n\n\n\n<p>tokens private and do not expose these ports to the public Internet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Training Flow<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Start _AI with gaming rl dry-run on.<\/li>\n\n\n\n<li>Start gaming mod bridge &#8230; for the target adapter.<\/li>\n\n\n\n<li>Join a private game\/server with bots or a controlled test map.<\/li>\n\n\n\n<li>Verify gaming mod bridge tail &lt;adapter> 10.<\/li>\n\n\n\n<li>Verify gaming rl status and gaming rl explain.<\/li>\n\n\n\n<li>Run curriculum phases in a private arena.<\/li>\n\n\n\n<li>Only enable limited mod\/server actuation after telemetry is reliable.<\/li>\n\n\n\n<li>Prefer replay and behavior cloning before live bot mode.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>This document covers the non-Minecraft FPS game bridge packages in game_mods\/ and their _AugmentedIntelligence runtime commands. Use these only on private\/local servers you own or administer. Do not use them to bypass anti-cheat systems or automate public multiplayer play. What Was Added [text]GameModBridge.hpp \/ GameModBridge.cpp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Native _AI UDP receivergame_mods\/source_mod\/ai_bridge.sp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceMod server plugingame_mods\/source_mod\/cfg\/ai_bridge.cfg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SourceMod cvar templategame_mods\/source_mod\/tools\/source_action_bridge.py&nbsp; [&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-1987","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1987","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=1987"}],"version-history":[{"count":1,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1987\/revisions"}],"predecessor-version":[{"id":1988,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/posts\/1987\/revisions\/1988"}],"wp:attachment":[{"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/media?parent=1987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/categories?post=1987"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/macdaddy4sure.ai\/index.php\/wp-json\/wp\/v2\/tags?post=1987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}