Scripted and rule-based non-player characters (NPCs) in combat video games often exhibit predictable behaviors that experienced players can exploit, while reinforcement learning (RL) agents typically retain a fixed policy after training and cannot readily adapt their strategy to different opponents. We investigate a runtime strategy-selection framework in which a large language model (LLM) guides a trained RL policy without modifying its underlying behavior. To demonstrate this, we train five NPC agents with a shared PPO policy in Unity and compare a baseline configuration, in which the policy acts independently, with an LLM-augmented configuration in which a locally hosted Mistral 7B model, accessed through Ollama, reads the live game state every five seconds and assigns one of four tactical tags. We evaluate both configurations against three scripted opponent types across 600 episodes and analyze outcomes using the Mann-Whitney U test. Against a Balanced opponent that changes tactics during an episode, the LLM-augmented agents more than doubled their win rate from 11% to 24% and produced significantly longer episodes. Against an Evasive opponent, the augmented agents achieved a higher win rate and faster kills, although their shorter episode duration did not satisfy the strict hypothesis definition. Against an Aggressive opponent, the LLM's near-constant preference for encirclement was counterproductive. Analysis of 2,430 strategy selections showed that Surround was selected in 83.8% of cases regardless of opponent type, indicating limited zero-shot strategic differentiation at this model scale. These results demonstrate both the potential and limitations of LLM-guided runtime strategy selection for adaptive multi-agent game AI.
Figures & tables
Figure 1. System overview comparing Combination A (RL-only baseline) and Combination B (RL plus Mistral 7B strategy selector via Ollama), both evaluated in the same Unity 3D arena.
Figure 2. Combination A: RL-only shared policy. Five NPCs share one PPO policy; the strategy tag is fixed at zero.
Figure 3. Combination B: RL with LLM strategy selector. The Python sidecar queries Mistral 7B every five seconds and writes a strategy tag conditioning all five NPC observations.
Figure 4. Top-down layout of the 30×30 combat arena, showing obstacle placement and the NPC/bot spawn zones.
Entity
HP
Speed
Range
Dmg / CD
Bot
300
5 u/s
3.0 u
15 / 0.8s
NPC ( ×5 )
60
4 u/s
2.5 u
15 / 0.5s
Table 1. Entity combat statistics
Component
Specification
CPU
AMD Ryzen 7 5000 Series
RAM
16 GB
GPU
NVIDIA GeForce RTX 4060 Laptop GPU
OS
Windows 11 Home 24H2
Storage
512 GB SSD + 1 TB HDD
Unity Editor
6.3.3 LTS (URP)
Table 2. Hardware and software specification
Block
Floats
Contents
Self
3
Normalised X position, normalised Z position, HP ratio
Bot
7
Bot X, bot Z, bot HP ratio, distance to bot (normalised), can-attack binary, nearest cover X, nearest cover Z
Allies
12
Four allies × (X, Z, HP ratio)
Strategy tag
1
Current tag / 3.0, bounded in [0,1] ; always 0.0 in Combination A