GitHub avatar

Fox's Blog

AI Learns Minecraft PvP -- Imitation Learning, Reinforcement Learning, and the 30 variables that mattered

1,000 duels recorded, neural network trained on pixels, 90% keystroke accuracy : and the bot beelined into a wall. Then came RL, curriculum learning, and 60 hours of training.

Introduction

AI Learns Minecraft PvP thumbnail

There's a video called AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) by Kadambi | AI Engineering, and it's one of the most honest accounts of training a game-playing AI I've seen.

The premise: build a bot that plays Minecraft PvP (sword kit, fully enchanted diamond armor) by watching the screen and outputting mouse and keyboard commands. No reading game memory, no macros, no mods : just pixels in, actions out.

What makes the video interesting isn't the final result. It's the journey: the imitation learning failure, the feature engineering pivot, the catastrophic forgetting cycles, and the 60+ hours of training on a laptop with no GPU.

Phase 1 : Imitation Learning (the failure)

The bot during imitation learning: facing a wall, jumping up and down

The creator started with a sensible approach: record 1,000 duels of their own gameplay, map every mouse click and key press to the corresponding frame, and train a neural network to predict actions from pixels.

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

The network learned to predict keystrokes with 90% accuracy. Promising.

Then they tested it in an actual match. The bot beelined straight to the edge of the map, faced a wall, and jumped up and down.

Why?

The laziness trap. In a PvP fight, the W key is pressed most of the time. The network realized it could achieve high accuracy by simply holding W down and doing nothing else. It optimized for the most common action at the expense of all others.

Human latency. Actions in the dataset are delayed by ~200ms of human reaction time. Frame-by-frame, cause and effect is nearly impossible for a model to learn from raw pixels when the action and its visible consequence are separated by multiple frames.

Inconsistent demonstrations. The creator's own gameplay varied : sometimes strafing with keyboard, sometimes aiming with mouse in identical situations. This conflicting input confused the network.

Phase 2 : Reinforcement Learning with Curriculum

The bot learning to track horizontally during RL training

Ditching imitation learning, the creator switched to RL. But dropping a fresh agent into a full PvP duel is useless : there's too much happening at once for random exploration to find anything.

The solution: curriculum learning. Isolate each mechanic and let the bot master the basics before entering a real fight.

Step 1 : Horizontal aim (7 hours)

The simplest reward function: positive reward for landing a hit, negative penalty for taking damage.

Initially, the bot barely moves (neural network initialized to output neutral values). It shakes from side to side : that's the bot testing different actions to see which ones give rewards.

After an hour, it learns to center itself horizontally, but painfully slowly. After 7 hours, it can track the enemy left and right, though asymmetrically (better at moving right-to-left than left-to-right, a behavior that persisted through training).

Step 2 : Feature Engineering

The raw screen capture was over 2 million pixels. Even downscaled to 360p, that's 200,000 inputs : way too many for efficient learning.

The creator analyzed thousands of duels and identified 30 variables that actually matter, split into three groups:

Vision (enemy tracking) :

  • Enemy's distance from crosshair
  • Enemy bounding box size
  • Enemy height
  • Crosshair state (on/off target)
  • Relative velocity

Instead of processing the whole image, the bot filters pixels strictly by the enemy's armor color, making detection near-instant. Similarly colored background blocks can throw this off : but in Minecraft, you can just change textures.

OCR (HUD reading) : Since the bot can't pull coordinates from the game's code, it scans the screen in real time to extract:

  • Camera pitch
  • Momentum
  • Y level

Standard OCR struggles with Minecraft's transparent text, so critical data is forced to black and white for instant reading.

Time (context window) :

  • Time since you hit the enemy
  • Time since they hit you
  • Rolling buffer of the bot's own previous actions

This gives the network temporal context : without it, the bot has no idea whether it's in the middle of a combo or just starting a fight.

Step 3 : Vertical aim (another 7 hours)

The bot learning to aim up and down during RL training

Adding vertical mouse movement was "a total disaster" at first. The initial performance was broken.

After another hour in the sandbox, the bot figured out how to look up and down. But in the process, it completely forgot how to track horizontally.

This is catastrophic forgetting : a classic machine learning problem where optimizing for new data overwrites previously learned representations. By optimizing for vertical aiming, the neural network accidentally overwrote its horizontal progress, leaving the creator with a bot that could hold its crosshair level but couldn't follow a target.

It took 6 additional hours to regain horizontal tracking while keeping vertical control. The bot then maintained good crosshair placement thanks to the OCR group extracting camera pitch.

Step 4 : Keyboard control

The bot toggling the W key constantly, learning to commit to movement

Giving the bot permission to use the keyboard made the time-based features even more critical. At first, the W key was constantly toggled on and off : rapid switching because the network hadn't learned to commit.

This behavior was penalized, so the bot learned to smooth it out. It started landing more sprint hits (the thud sound vs the whoosh of a standing swing). Some combos looked unsatisfying because the bot exploited its reach advantage over the enemy.

To make things fair, the creator bumped up the enemy's reach. Many of the bot's learned strategies stopped working. But given more time, it adapted.

Step 5 : Teaching the bot when to click

For the final phase, the creator brought back imitation learning : but only to teach the click timing, not the full control policy. The bot tried to mimic the click patterns from the recorded duels.

Initially it was too afraid to try anything, fearing the penalty for wrong clicks. But eventually it worked up the courage to swing and land hits. Of course, it forgot how to aim again in the process : the creator had to leave it alone for 50 more hours to get back to a satisfactory state.

The cheating debate

The video ends by asking: is this bot cheating?

The argument against: the bot only processes what a human sees (same pixels), sends the same keyboard/mouse inputs as a human (no packet manipulation like anti-knockback), and doesn't read game memory (no X-ray or ESP).

The argument for: a bot can process faster than a human, and if the opponent thinks they're playing a human but they're not, that's deception.

The creator's take: it depends on intent. If both parties know it's a bot, it's a fair match. The bot goes on to combo the enemy into the void with a 100-hit streak.

The result

The bot executing a 100-hit combo

A Minecraft PvP bot trained on a laptop with no GPU, built on a custom training pipeline with:

  • Screen capture for pixel input (2M+ pixels → 30 engineered features)
  • Curriculum learning (horizontal → vertical → keyboard → clicking)
  • RL for motor control + imitation learning for click timing
  • Feature engineering over raw pixels (3 groups: vision, OCR, time)
  • 60+ hours of training across multiple phases

Total training time is in the tens of hours, but most of it is passive. The bot shakes its way to understanding, forgets what it learned, re-learns it, and eventually strings together a 100-hit combo.

The video is at youtube.com/watch?v=j5nxDKAjg6U.


This article covers only the video's content. For broader context on Minecraft AI : VPT, DreamerV3, and the imitation learning vs RL landscape : the sections below connect this project to the wider field.

VPT : Behavior cloning at scale

OpenAI's VPT pipeline : labeled contractor data trains an Inverse Dynamics Model, which pseudo-labels 70K hours of YouTube videos for behavioral cloning at scale

The video's "behavior cloning" approach (Phase 1) is the same technique OpenAI used in their Video PreTraining (VPT) project, but at opposite ends of the resource spectrum. VPT proved that imitation learning works for Minecraft when you have 70,000 hours of video, 720 GPUs, and an inverse dynamics model to pseudo-label unlabeled data. The creator here proved it fails with one laptop and 1,000 duels : but for the same fundamental reason: imitation learning is bounded by the quality of its demonstrations.

OpenAI's VPT agent mining a tree in Minecraft

The VPT pipeline solves the data problem by training an Inverse Dynamics Model (IDM) that looks at frame t-1 and frame t+1 to predict the action at frame t. Because the IDM is non-causal (it sees future frames), the task is easier than behavioral cloning and requires far less labeled data. They paid contractors ~$2,000 for 2,000 hours of labeled data, then used the IDM to pseudo-label 70,000 hours of YouTube Minecraft videos.

Scaling effect: craft/collection rate vs pre-training data volume (log scale): crafting tables, wooden tools, stone tools

The scaling effect is clear: on a log axis from 1 hour to 100,000 hours of pre-training data, the rate at which the model crafts a crafting table, wooden tools, and then stone tools climbs in stages. The model trained only on the 2,000 hours labeled by contractors plateaus at crafting tables; it's by adding the 70,000 hours pseudo-labeled by the IDM (dashed line on the chart) that stone tools emerge zero-shot, without a single RL step.

The resulting 0.5B parameter foundation model achieved zero-shot capabilities that were impossible with RL alone : chopping trees, crafting tables, pillar jumping : and fine-tuned with RL, became the first AI to craft diamond tools.

Reward vs RL training episodes: random init vs VPT pre-trained init

This chart shows why pre-training changes everything for downstream RL. RL from a randomly initialized network (orange) stays flat near 0 for nearly a million episodes: the "obtain a diamond" task has a reward too sparse for a naive agent to stumble upon through random exploration. RL fine-tuned from the VPT pre-trained model (green) already starts with basic behavior (mining, crafting, exploring) and climbs steadily to a reward of about 25, corresponding to the full path to a diamond pickaxe.

Official OpenAI VPT project demo videos showing the agent in action.

OpenAI Five : The reward shaping problem

OpenAI Five playing Dota 2 against human professionals

OpenAI Five (2019) defeated the Dota 2 world champions using pure self-play RL : no imitation learning. 256 GPUs, 128,000 CPU cores, 180 years of gameplay per day, 10 months of training.

But the reward function was handcrafted by Dota experts: 28 out of 20,000 available features, each with hand-tuned weights. Net worth, kills, deaths, tower health, lane assignments : all selected and weighted by humans. Without this shaping, the agent barely learned (experiment: reward only win/loss → plateaued at semi-pro level).

The video's bot faces the same problem: its reward function encodes the creator's understanding of what matters in PvP (landing hits good, taking damage bad, maintaining crosshair good). This is unavoidable : RL needs a reward signal, and shaping that signal encodes human bias.

DreamerV3 : World models and sparse rewards

DreamerV3 benchmark scores across over 150 diverse tasks with a single configuration

DeepMind's DreamerV3 (2023) takes a third approach. Instead of behavior cloning or shaped RL, it learns a world model : a neural network that predicts future states and rewards from past actions : and plans by dreaming about possible futures. It was the first algorithm to collect diamonds in Minecraft from scratch without human data or curricula, published in Nature in 2025.

DreamerV3 learns a world model to imagine future trajectories

The diamond environment defines a sparse reward over 12 milestones (log → planks → stick → crafting table → wooden pickaxe → cobblestone → stone pickaxe → iron ore → furnace → iron ingot → iron pickaxe → diamond), each giving +1 exactly once. Plus a small health reward (±0.01 per hp). Total achievable: 11.1 in a 36,000-step episode.

DreamerV3's world model lets it imagine trajectories and evaluate them internally : the actor learns from dreamed rollouts rather than real experience, testing thousands of possible futures for every real step. This makes sparse rewards feasible where they'd kill a standard RL agent.

Across 40 seeds trained for 100M environment steps, 24 of 40 collected at least one diamond. The first diamond appeared after 29M steps (~9 days on one GPU).

ANNA : Symbolic AI meets Minecraft

ANNA's task tree decomposition for a flint-and-steel

Before the video's PvP bot, before VPT and DreamerV3, there was ANNA : a Minecraft bot built with a different philosophy entirely. Instead of learning from pixels or rewards, ANNA uses a symbolic state machine with a French NLP parser and a hand-authored task dependency tree.

Created in 2022 (before "vibe coding" was a term), ANNA connects to a Minecraft server via Mineflayer and understands natural language commands in French. Say "obtiens un briquet" (get a flint-and-steel), and ANNA's parser identifies the verb (obtien → obtain), looks up the item recipe, and recursively decomposes it into subtasks : mine oak logs → craft planks → craft sticks → craft a crafting table → craft a wooden pickaxe → mine stone → craft a stone pickaxe → mine iron ore → smelt iron ingots → craft the flint-and-steel.

ANNA's NLP parser architecture for French command recognition

The NLP layer (utils/id_parser.js) splits commands on "et" (and) to handle parallel orders, maps French verbs to task types (craft, mine, tue, suis moi), and translates French item names to Minecraft IDs through a 5,000-entry dictionary. Unrecognized commands fall through to a GPT-based conversation system that casts ANNA as a sentient Minecraft companion.

The task tree (mc-tasks-tree/) is the core : a recursive algorithm that walks the Minecraft item graph (crafting recipes, mining yields, mob drops, furnace recipes) to produce a step-by-step plan. For a diamond helmet, it generates a 40+ step breakdown spanning wood, stone, iron, and diamond tiers.

ANNA's diamond helmet task tree : a 40+ step breakdown

Where the video's PvP bot learns from experience, ANNA works from knowledge. It doesn't need 1,000 duels or 60 hours of training : it needs the tree, the parser, and the server. But it also can't generalize beyond what its tree encodes. No amount of state machine engineering would teach it to PvP.

ANNA's approach mirrors a different era of AI : before end-to-end learning dominated, when the promise was that symbolic reasoning + careful engineering could produce intelligent behavior. Today, projects like ANNA and the PvP bot represent two poles of Minecraft AI : one reasons about the world, the other perceives it.

Master Gumbo's Mace Bot : AI with command blocks only

The Mace PvP training arena with the bot

In a completely different corner of Minecraft AI, YouTuber Master Gumbo built a PvP training bot using only command blocks : no mods, no plugins, no external code. Just vanilla Minecraft commands, redstone, and a carpet mod for player replica entities. The result is an AI mace PvP opponent that practices breach swapping, wind charging, and shield mechanics with the player.

The bot starts as a zombie with unbreakable gear and a totem in its off-hand (refilled every tick via /item replace), making it effectively immortal. Later, Master Gumbo switches to Carpet Mod's player replica bots, which support human-like mechanics (shield raising, item switching) that zombies can't do.

The settings center : buttons to configure bot behavior

The core innovation is a state machine driven by randomness. An armor stand is teleported above a circle of colored concrete blocks using the /spreadplayers command, which scatters entities randomly. Where the armor stand lands determines the bot's next action :

  • Red concrete → strafe backwards
  • Blue concrete → wind charge upward (attack)
  • Green concrete → raise shield
  • White concrete → pause (adds delay between actions)

The AI decision system : an armor stand on colored concrete

The armor stand's position is read by command blocks that detect the block beneath it and activate the corresponding mechanism. A redstone block is placed or removed to enable/disable each behavior. Because /spreadplayers runs on repeat, the bot continuously makes new decisions, creating unpredictable but structured behavior.

Master Gumbo calls this "a very simple and basic form of AI" : it doesn't learn from interactions like neural networks, but the randomness + state machine produces realistic PvP behavior that's harder to predict than a scripted bot. The settings center includes a book interface to toggle AI on/off, adjust difficulty, and configure movement patterns.

After training with the bot and then dueling the player who called him bad (in the video's intro), Master Gumbo wins. The map is shared via Discord with Carpet Mod required.

The bot in a duel, practicing mace PvP techniques

Where the PvP bot (Kadambi) learns from pixels and ANNA reasons through a task tree, Master Gumbo's bot achieves intelligence through randomized state transitions : a pure command block approach that proves you don't need neural networks to build a convincing PvP opponent.

Altoclef : Baritone + task tree at scale

If ANNA is a symbolic bot that reads to know what to do, and the Mace Bot randomizes decisions, Altoclef is a full autonomous agent that plans its way through the entire game. Built by gaucho-matero as a Fabric mod and powered by Baritone pathfinding, Altoclef decomposes any Minecraft goal into a task tree and executes it without human input.

The interface is deceptively simple : type @gamer in chat, and Altoclef begins the beat-the-game task from a survival world. It gathers wood, crafts tools, mines iron and diamond, builds a Nether portal, collects blaze rods and ender pearls, finds the stronghold, and kills the Ender Dragon. All autonomously, all through the native Minecraft client, on any vanilla server.

Under the hood, this is achieved through a recursive task tree system where each high-level goal (e.g., "craft a diamond pickaxe") is decomposed into prerequisite tasks : mine diamonds → smelt them → craft sticks → combine. The tree walks the full Minecraft recipe graph, handling production chains, mob drops, loot tables, and container access. Unlike ANNA's hand-authored tree, Altoclef's tasks are programmable Java classes that can implement arbitrary logic : combat strategies, bartering with piglins, exploration patterns.

The key architectural insight is the separation of what (the task tree) from how (Baritone pathfinding). Baritone handles the low-level movement : pathfinding, obstacle avoidance, block breaking, inventory management -- while the task system orchestrates the high-level plan. This modularity means neither component needs to be AI : they're both deterministic algorithms, yet their combination produces complex, goal-directed behavior that rivals learned approaches.

Altoclef represents the limit of pure symbolic Minecraft AI : it can beat the game from scratch with zero training, zero GPUs, and zero human data, but it cannot adapt to tasks its programmers didn't anticipate, and it cannot learn from experience. It knows how to craft a diamond pickaxe because a Java class tells it exactly how, not because it figured it out.

What ties these together

Approach Core method Data Compute Result
Video's PvP bot RL + imitation learning 1,000 duels 1 laptop, 60h 100-hit combo
OpenAI Five Self-play RL 180 yrs gameplay/day 256 GPUs, 10mo World champ Dota 2
VPT Semi-supervised IL 70K hrs YouTube + IDM 720 GPUs, 9 days Diamond tools
DreamerV3 World model RL Dreamed trajectories 1 GPU, 9 days Diamond from scratch
ANNA Symbolic NLP + task tree Hand-authored recipes 1 laptop, instant Any craftable item
Altoclef Baritone + task tree FS Java task classes Fabric mod, no GPU Beat the entire game
Mace Bot Command block state machine Randomized decisions Vanilla MC, no GPU Mace PvP training

The video's bot is the most resource-constrained but the most honest about the process. It fails first, then iterates. It forgets what it learned, then re-learns. It ends with a 100-hit combo : but also with a question about whether what it built is cheating.


Video : AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT : Paper · Blog · GitHub

OpenAI Five : Paper · Blog

DreamerV3 : Paper · GitHub

ANNA : GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef : GitHub · Active fork · (Fabric, Baritone, task tree, beats game)

Mace Bot : Video by Master Gumbo · (Command blocks, Carpet Mod, state machine)

L'IA apprend le PvP Minecraft -- Imitation Learning, Reinforcement Learning, et les 30 variables qui comptaient

1 000 duels enregistrés, réseau neuronal entraîné sur des pixels, 90 % de précision des frappes : et le bot fonçait droit dans un mur. Puis sont venus le RL, l'apprentissage curriculaire et 60 heures d'entraînement.

Introduction

AI Learns Minecraft PvP thumbnail

Il y a une vidéo intitulée AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) par Kadambi | AI Engineering, et c'est l'un des récits les plus honnêtes d'entraînement d'une IA de jeu vidéo que j'aie vus.

Le principe : construire un bot qui joue au PvP Minecraft (kit épée, armure de diamant entièrement enchantée) en regardant l'écran et en envoyant des commandes souris et clavier. Pas d'accès à la mémoire du jeu, pas de macros, pas de mods : juste des pixels en entrée, des actions en sortie.

Ce qui rend la vidéo intéressante n'est pas le résultat final. C'est le parcours : l'échec de l'imitation learning, le pivot vers le feature engineering, les cycles d'oubli catastrophique, et les 60+ heures d'entraînement sur un laptop sans GPU.

Phase 1 : Imitation Learning (l'échec)

The bot during imitation learning: facing a wall, jumping up and down

Le créateur a commencé avec une approche sensée : enregistrer 1 000 duels de son propre gameplay, associer chaque clic de souris et pression de touche à l'image correspondante, et entraîner un réseau neuronal à prédire les actions à partir des pixels.

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

Le réseau a appris à prédire les frappes avec 90 % de précision. Prometteur.

Puis ils l'ont testé dans un vrai match. Le bot s'est dirigé tout droit vers le bord de la carte, a fait face à un mur, et a sauté de haut en bas.

Pourquoi ?

Le piège de la paresse. Dans un combat PvP, la touche W est enfoncée la plupart du temps. Le réseau a réalisé qu'il pouvait atteindre une haute précision en maintenant simplement W enfoncé et en ne faisant rien d'autre. Il a optimisé l'action la plus fréquente au détriment de toutes les autres.

La latence humaine. Les actions dans le jeu de données sont retardées d'environ 200 ms de temps de réaction humain. Image par image, la cause et l'effet sont presque impossibles à apprendre pour un modèle à partir de pixels bruts quand l'action et sa conséquence visible sont séparées par plusieurs images.

Démonstrations incohérentes. Le propre gameplay du créateur variait : parfois il strafing avec le clavier, parfois visait à la souris dans des situations identiques. Ces entrées contradictoires ont perturbé le réseau.

Phase 2 : Reinforcement Learning avec curriculum

The bot learning to track horizontally during RL training

Abandonnant l'imitation learning, le créateur a basculé vers le RL. Mais plonger un agent frais dans un duel PvP complet est inutile : il se passe trop de choses à la fois pour qu'une exploration aléatoire trouve quoi que ce soit.

La solution : l'apprentissage curriculaire. Isoler chaque mécanique et laisser le bot maîtriser les bases avant d'entrer dans un vrai combat.

Étape 1 : Visée horizontale (7 heures)

La fonction de récompense la plus simple : récompense positive pour toucher une cible, pénalité négative pour subir des dégâts.

Initialement, le bot bouge à peine (réseau neuronal initialisé avec des valeurs neutres). Il tremble latéralement : c'est le bot qui teste différentes actions pour voir lesquelles donnent des récompenses.

Après une heure, il apprend à se centrer horizontalement, mais péniblement lentement. Après 7 heures, il peut suivre l'ennemi à gauche et à droite, bien qu'asymétriquement (meilleur pour se déplacer de droite à gauche que de gauche à droite, un comportement qui a persisté tout au long de l'entraînement).

Étape 2 : Feature Engineering

La capture d'écran brute faisait plus de 2 millions de pixels. Même réduite à 360p, cela représente 200 000 entrées : beaucoup trop pour un apprentissage efficace.

Le créateur a analysé des milliers de duels et identifié 30 variables qui comptent vraiment, réparties en trois groupes :

Vision (suivi ennemi) :

  • Distance de l'ennemi par rapport au viseur (crosshair)
  • Taille de la boîte englobante de l'ennemi
  • Hauteur de l'ennemi
  • État du viseur (sur cible / hors cible)
  • Vélocité relative

Au lieu de traiter toute l'image, le bot filtre les pixels strictement par la couleur de l'armure ennemie, rendant la détection quasi instantanée. Des blocs d'arrière-plan de couleur similaire peuvent perturber ce filtrage : mais dans Minecraft, on peut simplement changer les textures.

OCR (lecture HUD) : Comme le bot ne peut pas récupérer les coordonnées depuis le code du jeu, il scanne l'écran en temps réel pour extraire :

  • Pitch de la caméra
  • Momentum
  • Niveau Y

L'OCR standard peine avec le texte transparent de Minecraft, donc les données critiques sont forcées en noir et blanc pour une lecture instantanée.

Temps (fenêtre de contexte) :

  • Temps écoulé depuis que vous avez touché l'ennemi
  • Temps écoulé depuis qu'il vous a touché
  • Tampon glissant des actions précédentes du bot

Cela donne au réseau un contexte temporel : sans lui, le bot n'a aucune idée s'il est au milieu d'un combo ou s'il commence juste un combat.

Étape 3 : Visée verticale (7 autres heures)

The bot learning to aim up and down during RL training

Ajouter le mouvement vertical de souris a été « un désastre total » au début. La performance initiale était brisée.

Après encore une heure dans le bac à sable, le bot a compris comment regarder en haut et en bas. Mais dans le processus, il a complètement oublié comment suivre horizontalement.

C'est l'oubli catastrophique : un problème classique d'apprentissage machine où l'optimisation pour de nouvelles données écrase les représentations précédemment apprises. En optimisant la visée verticale, le réseau neuronal a accidentellement écrasé ses progrès horizontaux, laissant le créateur avec un bot qui pouvait maintenir son viseur à niveau mais ne pouvait pas suivre une cible.

Il a fallu 6 heures supplémentaires pour retrouver le suivi horizontal tout en conservant le contrôle vertical. Le bot a alors maintenu un bon placement du viseur grâce au groupe OCR extrayant le pitch de la caméra.

Étape 4 : Contrôle clavier

The bot toggling the W key constantly, learning to commit to movement

Donner au bot la permission d'utiliser le clavier a rendu les caractéristiques temporelles encore plus critiques. Au début, la touche W était constamment activée et désactivée : un changement rapide parce que le réseau n'avait pas appris à s'engager.

Ce comportement a été pénalisé, donc le bot a appris à le lisser. Il a commencé à atterrir plus de coups en sprint (le son sourd contre le swish d'un coup debout). Certains combos semblaient insatisfaisants parce que le bot exploitait son avantage de portée sur l'ennemi.

Pour rendre les choses équitables, le créateur a augmenté la portée de l'ennemi. Beaucoup des stratégies apprises par le bot ont cessé de fonctionner. Mais avec le temps, il s'est adapté.

Étape 5 : Apprendre au bot quand cliquer

Pour la phase finale, le créateur a ramené l'imitation learning : mais seulement pour enseigner le timing des clics, pas la politique de contrôle complète. Le bot a essayé d'imiter les modèles de clics des duels enregistrés.

Initialement, il avait trop peur d'essayer quoi que ce soit, craignant la pénalité pour les mauvais clics. Mais il a finalement trouvé le courage de frapper et d'atterrir des coups. Bien sûr, il a oublié comment viser encore une fois dans le processus : le créateur a dû le laisser tranquille pendant 50 heures supplémentaires pour revenir à un état satisfaisant.

Le débat sur la triche

La vidéo se termine en demandant : ce bot triche-t-il ?

L'argument contre : le bot ne traite que ce qu'un humain voit (les mêmes pixels), envoie les mêmes entrées clavier/souris qu'un humain (pas de manipulation de paquets comme l'anti-knockback), et ne lit pas la mémoire du jeu (pas de X-ray ni d'ESP).

L'argument pour : un bot peut traiter plus vite qu'un humain, et si l'adversaire pense qu'il joue contre un humain mais que ce n'est pas le cas, c'est de la tromperie.

L'avis du créateur : cela dépend de l'intention. Si les deux parties savent que c'est un bot, le match est équitable. Le bot enchaîne l'ennemi dans le vide avec une série de 100 coups.

Le résultat

The bot executing a 100-hit combo

Un bot PvP Minecraft entraîné sur un laptop sans GPU, construit sur un pipeline d'entraînement personnalisé avec :

  • Capture d'écran pour l'entrée pixel (2M+ pixels → 30 caractéristiques conçues)
  • Apprentissage curriculaire (horizontal → vertical → clavier → clics)
  • RL pour le contrôle moteur + imitation learning pour le timing des clics
  • Feature engineering sur les pixels bruts (3 groupes : vision, OCR, temps)
  • 60+ heures d'entraînement sur plusieurs phases

Le temps total d'entraînement est de dizaines d'heures, mais la plupart sont passives. Le bot tremble jusqu'à la compréhension, oublie ce qu'il a appris, ré-apprend, et finit par enchaîner une série de 100 coups.

La vidéo est sur youtube.com/watch?v=j5nxDKAjg6U.


Cet article couvre uniquement le contenu de la vidéo. Pour un contexte plus large sur l'IA Minecraft : VPT, DreamerV3, et le paysage de l'imitation learning vs RL : les sections ci-dessous relient ce projet au domaine plus vaste.

VPT : Behavior cloning à grande échelle

OpenAI's VPT project diagram : the Inverse Dynamics Model predicts actions from pairs of frames

L'approche « behavior cloning » de la vidéo (Phase 1) est la même technique qu'OpenAI a utilisée dans son projet Video PreTraining (VPT), mais aux extrémités opposées du spectre de ressources. VPT a prouvé que l'imitation learning fonctionne pour Minecraft quand on a 70 000 heures de vidéo, 720 GPUs, et un inverse dynamics model pour pseudo-étiqueter des données non labellisées. Le créateur ici a prouvé qu'il échoue avec un laptop et 1 000 duels : mais pour la même raison fondamentale : l'imitation learning est limité par la qualité de ses démonstrations.

OpenAI's VPT agent mining a tree in Minecraft

Le pipeline VPT résout le problème des données en entraînant un Inverse Dynamics Model (IDM) qui regarde l'image t-1 et l'image t+1 pour prédire l'action à l'image t. Parce que l'IDM est non causal (il voit les images futures), la tâche est plus facile que le behavior cloning et nécessite beaucoup moins de données labellisées. Ils ont payé des contracteurs environ 2 000 $ pour 2 000 heures de données labellisées, puis ont utilisé l'IDM pour pseudo-étiqueter 70 000 heures de vidéos YouTube Minecraft.

Taux de crafting/collecte en fonction du volume de données de pré-entraînement (échelle log) : tables de craft, outils en bois, outils en pierre

L'effet d'échelle est net : sur un axe log de 1 heure à 100 000 heures de données de pré-entraînement, le taux auquel le modèle fabrique une table de craft, des outils en bois, puis des outils en pierre grimpe par paliers. Le modèle entraîné uniquement sur les 2 000 heures labellisées par des contracteurs plafonne aux tables de craft ; c'est en ajoutant les 70 000 heures pseudo-étiquetées par l'IDM (ligne pointillée sur le graphique) que les outils en pierre émergent en zero-shot, sans une seule étape de RL.

Le modèle fondamental de 0,5B paramètres résultant a atteint des capacités zero-shot impossibles avec le RL seul : couper des arbres, fabriquer des tables, saut en colonne : et fine-tuné avec du RL, il est devenu la première IA à fabriquer des outils en diamant.

Récompense en fonction du nombre d'épisodes d'entraînement RL : partir d'un modèle initialisé aléatoirement vs partir du modèle VPT pré-entraîné

Ce graphique montre pourquoi le pré-entraînement change tout pour le RL en aval. Le RL parti d'un réseau initialisé aléatoirement (orange) reste plat près de 0 sur près d'un million d'épisodes : la tâche « obtenir un diamant » a une récompense trop éparse pour qu'un agent naïf en tombe dessus par exploration aléatoire. Le RL fine-tuné à partir du modèle VPT pré-entraîné (vert) part déjà avec le comportement de base (miner, fabriquer, explorer) et grimpe régulièrement jusqu'à une récompense d'environ 25, ce qui correspond au chemin complet vers une pioche en diamant.

Démos vidéo officielles du projet VPT d'OpenAI, montrant l'agent en action.

OpenAI Five : Le problème du reward shaping

OpenAI Five playing Dota 2 against human professionals

OpenAI Five (2019) a vaincu les champions du monde de Dota 2 en utilisant du RL pur en auto-apprentissage : pas d'imitation learning. 256 GPUs, 128 000 cœurs CPU, 180 années de jeu par jour, 10 mois d'entraînement.

Mais la fonction de récompense a été conçue à la main par des experts de Dota : 28 caractéristiques sur les 20 000 disponibles, chacune avec des poids ajustés manuellement. Valeur nette, éliminations, morts, santé des tours, assignations de couloirs : tout a été sélectionné et pondéré par des humains. Sans cette modélisation, l'agent apprenait à peine (expérience : récompense seulement victoire/défaite → plateau au niveau semi-pro).

Le bot de la vidéo fait face au même problème : sa fonction de récompense encode la compréhension du créateur de ce qui compte en PvP (toucher est bon, être touché est mauvais, maintenir le viseur est bon). C'est inévitable : le RL a besoin d'un signal de récompense, et la modélisation de ce signal encode un biais humain.

DreamerV3 : World models et récompenses éparses

DreamerV3 benchmark scores across over 150 diverse tasks with a single configuration

Le DreamerV3 de DeepMind (2023) adopte une troisième approche. Au lieu du behavior cloning ou du RL avec incitations, il apprend un world model : un réseau neuronal qui prédit les états futurs et les récompenses à partir des actions passées : et planifie en rêvant de futurs possibles. C'est le premier algorithme à collecter des diamants dans Minecraft de zéro sans données humaines ni curricula, publié dans Nature en 2025.

DreamerV3 learns a world model to imagine future trajectories

L'environnement diamant définit une récompense éparse sur 12 jalons (bûche → planches → bâton → table de craft → pioche en bois → pierre → pioche en pierre → minerai de fer → four → lingot de fer → pioche en fer → diamant), chacun donnant +1 une seule fois. Plus une petite récompense de santé (±0,01 par pv). Total atteignable : 11,1 dans un épisode de 36 000 étapes.

Le world model de DreamerV3 lui permet d'imaginer des trajectoires et de les évaluer en interne : l'acteur apprend des rollouts rêvés plutôt que de l'expérience réelle, testant des milliers de futurs possibles pour chaque étape réelle. Cela rend possibles les récompenses épars la où elles détruiraient un agent RL standard.

Sur 40 graines entraînées pour 100M d'étapes environnementales, 24 des 40 ont collecté au moins un diamant. Le premier diamant est apparu après 29M d'étapes (~9 jours sur un GPU).

ANNA : L'IA symbolique rencontre Minecraft

ANNA's task tree decomposition for a flint-and-steel

Avant le bot PvP de la vidéo, avant VPT et DreamerV3, il y avait ANNA : un bot Minecraft construit avec une philosophie complètement différente. Au lieu d'apprendre à partir de pixels ou de récompenses, ANNA utilise une machine d'états symbolique avec un analyseur NLP français et un arbre de dépendances de tâches écrit à la main.

Créé en 2022 (avant que « vibe coding » soit un terme), ANNA se connecte à un serveur Minecraft via Mineflayer et comprend des commandes en langage naturel en français. Dites *« obtiens un briquet », et ANNA analyse le verbe (obtien → obtenir), cherche la recette de l'objet, et le décompose récursivement en sous-tâches : miner du chêne → fabriquer des planches → fabriquer des bâtons → fabriquer une table de craft → fabriquer une pioche en bois → miner de la pierre → fabriquer une pioche en pierre → miner du minerai de fer → fondre des lingots de fer → fabriquer le briquet.

ANNA's NLP parser architecture for French command recognition

La couche NLP (utils/id_parser.js) sépare les commandes sur « et » pour gérer les ordres parallèles, associe les verbes français aux types de tâches, et traduit les noms d'objets français en identifiants Minecraft via un dictionnaire de 5 000 entrées. Les commandes non reconnues passent à un système de conversation basé sur GPT qui présente ANNA comme un compagnon Minecraft conscient.

L'arbre de tâches (mc-tasks-tree/) est le cœur : un algorithme récursif qui parcourt le graphe d'objets Minecraft (recettes de craft, rendements miniers, drops de monstres, recettes de four) pour produire un plan pas à pas. Pour un casque en diamant, il génère une décomposition en 40+ étapes couvrant les niveaux bois, pierre, fer et diamant.

ANNA's diamond helmet task tree : a 40+ step breakdown

Là où le bot PvP de la vidéo apprend de l'expérience, ANNA fonctionne à partir de la connaissance. Il n'a pas besoin de 1 000 duels ou 60 heures d'entraînement : il a besoin de l'arbre, de l'analyseur et du serveur/distributeur. Mais il ne peut pas non plus généraliser au-delà de ce que son arbre encode. Aucune quantité d'ingénierie de machine d'états ne lui apprendrait à faire du PvP.

L'approche d'ANNA reflète une époque différente de l'IA : avant que l'apprentissage de bout en bout ne domine, quand la promesse était que le raisonnement symbolique associé à une ingénierie soigneuse pouvait produire un comportement intelligent. Aujourd'hui, des projets comme ANNA et le bot PvP représentent deux pôles de l'IA Minecraft : l'un raisonne sur le monde, l'autre le perçoit.

Master Gumbo's Mace Bot : IA avec seulement des command blocks

The Mace PvP training arena with the bot

Dans un coin complètement différent de l'IA Minecraft, le YouTubeur Master Gumbo a construit un bot d'entraînement PvP en utilisant seulement des command blocks : pas de mods, pas de plugins, pas de code externe. Juste des commandes Minecraft vanilla, de la redstone, et un carpet mod pour des entités clones de joueur. Le résultat est un adversaire IA pour la masse qui pratique les changements de brèche, les charges de vent et les mécanismes de bouclier avec le joueur.

Le bot commence comme un zombie avec un équipement incassable et un totem dans sa seconde main (rempli à chaque tick via /item replace), le rendant effectivement immortel. Plus tard, Master Gumbo passe aux bots Carpet Mod's player replica, qui supportent des mécaniques humanoïdes (levage de bouclier, changement d'objet) que les zombies ne peuvent pas faire.

The settings center : buttons to configure bot behavior

L'innovation centrale est une machine d'états pilotée par l'aléatoire. Un porte-armure est téléporté au-dessus d'un cercle de blocs de béton coloré via la commande /spreadplayers, qui dispers les entités aléatoirement. La couleur du bloc de béton sur lequel le porte-armure atterrit détermine la prochaine action du bot :

  • Béton rouge → strafe en arrière
  • Béton bleu → s'élève vers le haut (attaque) avec la charge de vent
  • Béton vert → lever le bouclier
  • Béton blanc → pause (ajoute du délai entre les actions)

The AI decision system : an armor stand on colored concrete

La position du porte-armure est lue par des command blocks qui détectant le bloc en dessous et activent le mécanisme correspondant. Un bloc de redstone est placé ou retiré pour activer/désactiver chaque comportement. Parce que /spreadplayers tourne en répétition, le bot prend continuellement de nouvelles décisions, créant un comportement imprévisible mais structuré.

Master Gumbo appelle cela « une forme très simple et basique d'IA » : cela n'apprend pas des interactions comme les réseaux neuronaux, mais l'aleatoire + machine d'états produit un comportement PvP réaliste qui est plus difficile à prédire qu'un bot scripté. Le centre de paramètres inclut une interface livre pour activer/désactiver l'IA, ajuster la difficulté et configurer les motifs de déplacement.

Après leur entraînement avec le bot puis en duel contre le joueur qui l'avait traité de nul (dans l'intro de sa vidéo), Master Gumbo gagne. La carte est partagée via Discord, Carpet Mod requis.

The bot in a duel, practicing mace PvP techniques

Là où le bot PvP (Kadambi) apprend à partir de pixels et ANNA raisonne à travers un arbre de tâches, le bot de Master Gumbo atteint l'intelligence par des transitions d'états aléatoires : une approche pur command block qui prouve que vous n'avez pas besoin de réseaux neuronaux pour construire un adversaire PvP convaincant.

Altoclef : Baritone + arbre de tâches à grande échelle

Si ANNA est un bot symbolique qui lit pour savoir quoi faire, et que le Mace Bot randomise les décisions, Altoclef est un agent autonome complet qui planifie son chemin à travers le jeu entier. Construit par gaucho-matero comme un mod Fabric et propulsé par le pathfinding Baritone, Altoclef décompose n'importe quel objectif Minecraft en un arbre de tâches et l'exécute sans intervention humaine.

L'interface est trompeusement simple : tapez @gamer dans le chat, et Altoclef commence la tâche « finir le jeu » depuis un monde survival. Il récolte du bois, craft des outils, mine du fer et du diamant, construit un portail du Nether, collecte des bâtons Blaze et des perles de l'Ender, trouve le stronghold, et tue l'Ender Dragon. Le tout en autonomie, via le client Minecraft natif, sur n'importe quel serveur vanilla.

Sous le capot, ceci est réalisé grâce à un système d'arbre de tâches récursif où chaque objectif de haut niveau (par exemple, « craft une pioche en diamant ») est décomposé en tâches prérequises : miner du diamant → le fondre → craft des bâtons → les combiner. L'arbre parcourt le graphe complet des recettes Minecraft, gérant les chaînes de production, les drops de monstres, les tables de butin et l'accès aux conteneurs. Contrairement à l'arbre écrit à la main d'ANNA, les tâches d'Altoclef sont des classes Java programmables qui peuvent implémenter une logique arbitraire : stratégies de combat, troc avec les piglins, motifs d'exploration.

L'idée architecturale clé est la séparation du quoi (l'arbre de tâches) du comment (le pathfinding Baritone). Baritone gère les déplacements de bas niveau : pathfinding, évitement d'obstacles, cassage de blocs, gestion d'inventaire -- tandis que le système de tâches orchestre le plan de haut niveau. Cette modularité signifie qu'aucun composant n'a besoin d'être une IA : ce sont tous deux des algorithmes déterministes, mais leur combinaison produit un comportement complexe et orienté vers un but qui rivalise avec les approches par apprentissage.

Altoclef représente la limite de l'IA Minecraft symbolique pure : il peut finir le jeu de zéro sans entraînement, sans GPU, et sans données humaines, mais il ne peut pas s'adapter à des tâches que ses programmeurs n'ont pas anticipées, et il ne peut pas apprendre de l'expérience. Il sait craft une pioche en diamant parce qu'une classe Java lui dit exactement comment, pas parce qu'il l'a découvert tout seul.

Ce qui les relie

Approche Méthode principale Données Calcul Résultat
Bot PvP de la vidéo RL + imitation learning 1 000 duels 1 laptop, 60h Combo de 100 coups
OpenAI Five RL en auto-apprentissage 180 ans de jeu/jour 256 GPUs, 10mo Champion du monde Dota 2
VPT IL semi-supervisé 70K h YouTube + IDM 720 GPUs, 9 jours Outils en diamant
DreamerV3 RL monde model Trajets rêvés 1 GPU, 9 jours Diamant de zéro
ANNA NLP symbolique + arbre de tâches Recettes écrites 1 laptop, instant Tout objet craftable
Altoclef Baritone + task tree FS Java task classes Fabric mod, no GPU Beat the entire game
Mace Bot Machine d'états Command block Décisions aléatoires Vanilla MC, sans GPU Entraînelent PvP mace

Le bot de la vidéo est le plus contraint en ressources mais le plus honnête sur le processus. Il échoue d'abord, puis itère. Il oublie ce qu'il a appris, puis l'apprend à nouveau. Il se termine par un combo de 100 coups : mais aussi par une question sur ce qu'il a construit en triche.


Vidéo : AI Learns Minecraft PvP par Kadambi | AI Engineering

VPT : Article · Blog · GitHub

OpenAI Five : Article · Blog

DreamerV3 : Article · GitHub

ANNA : GitHub · (Node.js, Mineflayer, NLP français, arbre de tâches)

Altoclef : GitHub · Active fork · (Fabric, Baritone, task tree, beats game)

Mace Bot : Vidéo par Master Gumbo · (Command blocks, Carpet Mod, machine d'états)

AI学习Minecraft PvP----模仿学习、强化学习,以及30个关键变量

录制了1000场决斗,在像素之上训练神经网络,达到90%的按键准确率----但机器人却径直撞墙。随后是强化学习、课程学习和60小时训练。

介绍

AI学习Minecraft PvP缩略图

Kadambi | AI Engineering制作了一部名为AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning)的视频,这是我见过的最诚实的游戏AI训练记录之一。

前提:打造一个机器人,通过观看屏幕并输出鼠标和键盘指令来玩Minecraft PvP(剑套、全套附魔钻石甲)。不读取游戏内存,不使用宏,不装模组:像素输入,动作输出。

这部视频有趣之处不在于最终结果,而在于过程:模仿学习的失败、特征工程的转向、灾难性遗忘的循环,以及在无GPU笔记本上60多个小时的训练。

阶段1:模仿学习(失败)

模仿学习期间的机器人:面对墙壁,上下跳跃

制作者从一个合理的方案开始:录制自己1000场游戏,将每次鼠标点击和按键映射到对应的帧上,训练一个神经网络从像素预测动作。

# 模仿学习流程的伪代码
dataset = record_duels(1000)          # 数十万帧
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # 从图像预测键盘/鼠标

网络学会了以90%的准确率预测按键。前景光明。

然后在实际比赛中测试。机器人径直走向地图边缘,面对墙壁,并上下跳跃。

为什么?

懒惰陷阱。 在PvP战斗中,W键大部分时间处于按下状态。网络意识到只需按住W键就能达到高准确率。它优化了最常见的动作,牺牲了所有其他动作。

人类延迟。 数据中的动作存在约200ms的人类反应时间延迟。逐帧来看,动作与其可见后果相隔多个帧,模型几乎不可能从原始像素中学到因果关系。

演示不一致。 创作者自己的游戏方式多变:有时用键盘侧移,有时在相同情况下用鼠标瞄准。这种冲突的输入让网络感到困惑。

阶段2:融入课程的强化学学习

在RL训练期间学习水平追踪的机器人

放弃模仿学习后,创作者转向了RL。但将新生的智能体直接扔进一场完整的PvP对决毫无意义:同时发生的事情太多,随机探索什么也找不到。

解决方案:课程学习。隔离每个机制,让机器人先掌握基础,再进入实际战斗。

步骤1:水平瞄准(7小时)

最简单的奖励函数:命中给予正奖励,受伤扣除惩罚。

起初,机器人几乎不动(神经网络初始化为输出中值)。它左右抖动:这是在测试哪些动作能带来奖励。

一小时后,它学会了水平居中,但速度极其缓慢。7小时后,它能左右追踪敌人,但仍不对称(从右向左移动比从左向右更好,这种行为贯穿了整个训练过程)。

步骤2:特征工程

原始屏幕捕获超过200万像素。即使缩小到360p,也有20万个输入:对于高效学习来说太多了。

创作者分析了数千场对决,找出了真正重要的30个变量,分为三组:

视觉(敌人追踪):

  • 敌人到准星的距离
  • 敌人边界框大小
  • 敌人高度
  • 准星状态(是否瞄准目标)
  • 相对速度

不再处理整个图像,机器人严格按敌人盔甲颜色过滤像素,实现近乎即时的检测。类似颜色的背景块可能干扰此过程:但在Minecraft中,只需更换纹理即可。

OCR(HUD读取): 由于机器人无法从游戏代码中获取坐标,它会实时扫描屏幕以提取:

  • 摄像机俯仰角
  • 动量
  • Y高度

标准OCR难以处理Minecraft的透明文本,因此关键数据被强制转为黑白以便即时读取。

时间(上下文窗口):

  • 上次击中敌人的时间
  • 敌人上次击中你的时间
  • 机器人自身先前动作的滚动缓冲区

这为网络提供了时间上下文:否则,机器人不知道自己是在连击过程中还是刚刚开始战斗。

步骤3:垂直瞄准(再加7小时)

RL训练期间机器人在上下瞄准时的学习

最初添加垂直鼠标移动是"一场彻底的灾难"。初期表现完全崩溃。

在沙盒中又待了一小时后,机器人学会了如何上下看。但在此过程中,它完全忘记了如何水平追踪。

这就是灾难性遗忘:一个经典的机器学习问题,优化新数据会覆盖先前学到的表征。通过优化垂直瞄准,神经网络意外覆盖了水平方面的进展,导致只剩一个准星能保持水平但不能跟随目标的机器人。

恢复水平追踪同时保持垂直控制用了额外6小时。之后,借助OCR组提取摄像机俯仰角,机器人维持了良好的准星放置。

步骤4:键盘控制

机器人不断切换W键,学习投入移动

允许机器人使用键盘后,基于时间的特征变得至关重要。最初,W键不断开关:网络尚未学会投入,导致频繁切换。

这种行为受到惩罚,于是机器人学会了使其平滑处理。它开始打出更多冲刺命中(砰砰声对比站立挥砍的嗖嗖声)。有些连击看起来不令人满意,因为机器人利用了其对敌人的距离优势。

为了公平起见,创作者增加了敌人的攻击范围。机器人的许多习得策略失效了。但有了更多时间,它适应了。

步骤5:教机器人何时点击

最后阶段,创作者重新引入了模仿学习:但只教点击时机,而非完整的控制策略。机器人试图模仿录制对决中的点击模式。

起初它害怕尝试任何动作,担心错误点击会受到惩罚。但最终它鼓起勇气挥剑并命中敌人。当然,在此过程中它又忘记了如何瞄准:创作者不得不让它独自训练50小时才恢复到满意的状态。

作弊之争

视频最后问了一个问题:这个机器人算作弊吗?反对理由:机器人只处理人类所见(相同像素),发送与人类相同的键盘/鼠标输入(没有反击退等数据包操纵),也不读取游戏内存(没有X光或ESP)。

赞成理由:机器人处理速度比人类快,如果对手以为自己在和人类打但实际上不是,那就是欺骗。

创作者的观点:这取决于意图。如果双方都知道对手是机器人,这就是公平的比赛。机器人最终以100连击将敌人打入虚空。

结论

机器人在执行100连击

一个在无GPU的笔记本上训练的Minecraft PvP机器人,基于以下定制的训练流程构建:

  • 画面捕捉作为像素输入(200万+像素 → 30个精心设计的特征)
  • 课程学习(水平 → 垂直 → 键盘 → 点击)
  • RL用于运动控制 + 模仿学习用于点击时机
  • 基于原始像素的特征工程(3组:视觉、OCR、HUD)
  • 多个阶段共60多小时的训练

总训练时间为数十小时,但大部分是被动的。机器人摇晃着逐渐理解,忘记所学,重新学习,最终串起百连击。

视频地址:youtube.com/watch?v=j5nxDKAjg6U


本文仅涵盖视频内容。如欲了解Minecraft AI的更广阔背景:VPT、DreamerV3,以及模仿学习与RL的格局,请参见以下小节,它们将本项目放在更广阔的领域中展开讨论。

VPT:大规模行为克隆

OpenAI的VPT项目图示:逆向动力学模型从帧对预测动作

视频中的"行为克隆"方法(阶段1)与OpenAI在其VPT项目中使用的技术完全相同,但处于资源光谱的两端。VPT证明,当你拥有7万小时视频、720块GPU和用于伪标记未标注数据的逆向动力学模型时,模仿学习对Minecraft是有效的。而这位创作者的实验证明,用一台笔记本电脑和1000场对决,它会失败。但基本原因相同:模仿学习受限于其演示的质量。

OpenAI的VPT智能体在Minecraft中砍树

VPT流程通过训练一个**逆向动力学模型(IDM)**来解决数据问题,该模型观察帧t-1和帧t+1来预测帧t的动作。由于IDM是非因果的(它能看到未来帧),该任务比行为克隆更容易,所需标注数据也更少。他们向承包商支付了约2,000美元,用于2000小时标注数据,然后使用IDM为7万小时YouTube Minecraft视频进行伪标注。

预训练数据量对合成/采集率的影响(对数刻度):工作台、木工具、石工具

缩放效应非常明显:在对数坐标轴上,从1小时到10万小时预训练数据,模型制作工作台、木工具和石工具的成功率逐级提升。仅使用承包商标注的2000小时数据训练的模型止步于工作台;只有在添加了IDM伪标注的7万小时数据(图表中的虚线)后,石工具才零样本涌现,无需任何RL步骤。

由此产生的5亿参数基础模型实现了仅靠强化学习无法做到的零样本能力:砍树、合成工作台、搭柱跳----并通过强化学习微调,成为第一个合成钻石工具的人工智能。

RL训练奖励随回合数的变化:随机初始化模型 vs 预训练VPT模型

该图展示了预训练如何改变下游RL的一切。从随机初始化网络开始的RL(橙色)在近百万回合内保持接近零的平直状态:「获取钻石」任务的奖励过于稀疏,初学者不可能通过随机探索碰巧得到。而从预训练VPT模型微调的RL(绿色)已经具备了基础行为(挖矿、合成、探索),并稳定上升至约25的奖励,对应了通往钻石镐的完整路径。

OpenAI VPT项目的官方演示视频,展示智能体在游戏中的实际表现。

OpenAI Five:奖励塑造问题

OpenAI Five与人类职业选手对战Dota 2

OpenAI Five(2019年)使用纯自我对战的强化学习击败了Dota 2世界冠军:没有模仿学习。256张GPU、128,000个CPU核心、每天180年的游戏经验、10个月的训练。

但奖励函数是由Dota专家手工制作的:从20,000个可用特征中选出了28个,每个都配有手动调整的权重。净资产、击杀数、死亡数、防御塔生命值、分路安排----全部由人类选择和加权。没有这种精心设计,智能体能几乎学不到什么(实验:仅以输赢作为奖励→在半职业水平停滞)。

视频中的机器人面临同样的问题:其奖励函数编码了创作者对PvP关键因素的理解(击中敌人好,受伤不好,保持准星正确),这是不可避免的:强化学习需要一个奖励信号,而设计这一信号就融入了人类的偏见。

DreamerV3:世界模型与稀疏奖励

DreamerV3在超过150个不同任务下的基准分数,单一配置

DeepMind的DreamerV3(2023年)采取了第三种方法。它不采用行为克隆或精心设计的强化学习,而是学习一个世界模型----从过往动作预测未来状态和奖励的神经网络----并通过"梦想"可能的未来来规划。它是首个无需人类数据或课程就在Minecraft中从头收集钻石的算法,2025年发表于《自然》杂志。

DreamerV3学习世界模型以想象未来轨迹

钻石环境定义了跨越12个里程碑(原木→木板→木棍→工作台→木镐→圆石→石镐→铁矿石→熔炉→铁锭→铁镐→钻石)的稀疏奖励,每个里程碑恰好给予+1一次。外加一个小型生命值奖励(每生命值±0.01)。最高可达总分:36,000步一个episode中11.1分。

DreamerV3的世界模型使其能够想象轨迹并在内部进行评估:智能体从梦想的展开中学习,而不是从真实体验中学习,每一步都在想象中测试数千种可能的未来。这使得稀疏奖励可行,而这对标准强化学习智能体来说是不可行的。

ANNA:符号AI与Minecraft相遇

ANNA的打火石的的任务树分解

在视频中的PvP机器人之前,在VPT和DreamerV3之前,就有了ANNA:一个哲学完全不同的Minecraft智能体。不是从像素或奖励中学习,ANNA使用一个具有法语NLP解析器和手工编写的任务依赖树的符号状态机。

创建于2022年,ANNA通过Mineflayer连接到Minecraft服务器并理解法语自然语言命令。说"obtiens un briquet"(获取火石与钢),ANNA的解析器识别动词(obtien → 获取),查找物品合成配方,然后递归分解为子任务:挖掘橡树木原木→合成木板→合成木棍→合成工作台→合成木镐→挖掘石头→合成石镐→挖掘铁矿石→冶炼铁锭→合打火石与钢。

ANNA用于识别法语命令的NLP解析器架构

NLP层(utils/id_parser.js)将命令按"et"(和)拆分以处理并行指令,将法语动词映射为任务类型(craft、mine、tue、suis moi),并通过一个5000条目的字典将法语物品名称转换为Minecraft ID。无法识别的命令则交由基于GPT的对话系统处理,该系统将ANNA塑造成一个有意识的Minecraft伙伴。

任务树(mc-tasks-tree/)是核心:一个递归算法,遍历Minecraft物品图(合成配方、挖掘产出、生物掉落、熔炉配方)以生成逐步计划。对于一个钻石头盔,它会生成跨越木材、石头、铁和钻石层级的40多步分解。

ANNA的钻石头盔任务树:40+步分解

如果说视频中的PvP机器人从经验中学习,那么ANNA就是从知识中运作。它不需要1000场对决或60小时的训练:它只需要任务树、解析器和服务器。但它也无法超越其编码的任务树进行泛化。无论状态机工程多么精巧,都不可能教会它PvP。

ANNA的方法让人想起了AI的一个不同时代:在端到端学习占据主导地位之前,当符号推理加精心工程被认为可以产生智能行为的时候。今天,像ANNA和PvP机器人这样的项目代表了Minecraft AI的两个极点:一个在推理世界,另一个在感知世界。

大师Gumbo的钉头锤机器人:只用命令方块的AI

钉头锤PvP训练竞技场与机器人

在Minecraft AI完全不同的另一个领域,YouTuber Master Gumbo 仅使用命令方块构建了一个PvP训练机器人:没有模组,没有插件何外部代码,只有原版Minecraft命令、红石,以及用于玩家复制实体的Carpet Mod。最终成果是一个AI钉头锤PvP对手,可以练习绕后偷袭、风力冲击和盾牌机制。

机器人最初是一个拥有不可破坏装备和副手图腾(每tick通过/item replace补充)的僵尸,使其实际上永生不死。之后,Master Gumbo切换到Carpet Mod的玩家复制机器人,它们支持僵尸无法做到的人类化机制(举盾、切换物品)。

设置中心:用于配置机器人行为的按钮

核心创新是一个由随机性驱动的状态机。一个盔甲架通过/spreadplayers命令被传送到一个由彩色混凝土块构成的圆环上方,该命令可将实体随机散布。盔甲架落地的位置决定了机器人的下一步行动:

  • 红色混凝土 → 后撤步
  • 蓝色混凝土 → 向上冲击(攻击)
  • 绿色混凝土 → 举盾
  • 白色混凝土 → 暂停(在动作之间增加延迟)

AI决策系统:彩色混凝土上方的盔甲架

盔甲架的位置由检测其下方方块并激活相应机制的命令方块读取。通过放置或移除红石块来启用/禁用每个行为。由于/spreadplayers重复运行,机器人不断做出新的决定,产生不可预测但有结构性的行为。

Master Gumbo称其为"一种非常简单和基础的AI形式":它不像神经网络那样从交互中学习,但随机性加状态机能产生比脚本机器人更难预测的逼真PvP行为。设置中心包含一个书本式界面,可切换AI开/关、调整难度和配置移动模式。

在与机器人训练后,Master Gumbo接着与视频开头说他菜的那个玩家进行决斗,赢了。地图通过Discord分享,需安装Carpet Mod。

机器人处于决斗中,练习钉锤PvP技术

PvP机器人(Kadambi)从像素中学习,ANNA通过任务树推理,而Master Gumbo的机器人则通过随机化的状态转换实现智能:一种纯命令方块的方法,证明了你不需要神经网络就能构建一个令人信服的PvP对手。

Altoclef:自主通关Minecraft的Fabric机器人

Altoclef的BeatMinecraft任务树分解

如果说上述项目各自专注于Minecraft的一个侧面,那么Altoclef则采取了一种截然不同的雄心:完全自主通关Minecraft。2021年5月24日,Altoclef成为首个从零开始、无需人类干预就击败末影龙、通关Minecraft的机器人。

Altoclef是一个Fabric客户端mod,使用Java编写,核心路径规划基于Baritone。与视频中PvP机器人从像素学习不同,Altoclef不处理屏幕图像,也不使用GPU或神经网络。它通过与原版Minecraft Java类的深度集成来直接读取游戏状态:坐标、方块ID、物品栏内容、实体列表----所有这些都通过Fabric API和Mixin注入来获取。输入不是像素,而是结构化的游戏数据。

任务树系统是Altoclef的核心。用户通过聊天命令(如@gamer开始通关、@get diamond_sword获取钻石剑)给出高级目标,Altoclef将其递归拆解为子任务:

  • 目标:通关游戏 → 前往末地 → 激活末地传送门 → 获取末影珍珠 → 击杀烈焰人 → 前往下界要塞 → 获取烈焰棒 → …

每棵任务树都是一个有向无环图(DAG),其中的节点代表具体子任务(MineTask、CraftTask、SmeltTask、FightTask、TravelTask等),边代表依赖关系。一个Java类层次结构定义了任务的生命周期:onStart()、onTick()、onStop()、isFinished()。Baritone负责底层路径规划(移动、挖掘、交互),而Altoclef的任务调度器则决定下一步该运行哪个子任务。

截至2025–2026年,社区fork(如drmcbride12和MiranCZ的版本)已将Altoclef更新至Minecraft 26.1.2,并继续优化BeatMinecraftTask,修复了路径扫描器、投掷物追踪、合成路径等数十个问题。

技术 说明
核心技术 任务树(DAG)+ Baritone路径规划
AI范式 符号式AI:无学习、无神经网络、无GPU
数据来源 游戏API(坐标、方块、物品、实体)
架构 Fabric Mod(Java类 + Mixin注入)
定位 纯客户端,无需服务端安装
关键成就 首个自主通关Minecraft的机器人

如果说PvP机器人是通过感知和运动学习来玩,ANNA是通过符号推理来理解,那么Altoclef则是通过工程化来执行:它不学习,它完成任务。它的成功不是来自训练,而是来自递归分解、健壮的Baritone路径规划以及精心编排的Java任务类。

这些项目的共同点

方法 核心技术 数据 计算资源 结果
视频中的PvP机器人 RL + 模仿学习 1000场对决 1台笔记本、60h 百连击
OpenAI Five 自我对战RL 每天180年游戏经验 256张GPU、10个月 Dota 2世界冠军
VPT 半监督模仿学习 7万小时YouTube + IDM 720张GPU、9天 钻石工具
DreamerV3 世界模型RL 梦想轨迹 1张GPU、9天 从零获得钻石
ANNA 符号NLP + 任务树 手工编写合成配方 1台笔记本、即时 任何可合成物品
Altoclef 任务树(DAG)+ Baritone 游戏API读取 1台笔记本、即时 自主通关MC
钉锤机器人 命令方块状态机 随机化决策 原版MC、无GPU 钉锤PvP练习

视频中的机器人在资源上受限最大,但对过程的描述最为诚实。它先经历失败,然后迭代。它忘记所学,再重新学习。它以百连击收场:但也留下了关于自己所造之物是否为作弊的疑问。


视频 : AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT : 论文 · 博客 · GitHub

OpenAI Five : 论文 · 博客

DreamerV3 : 论文 · GitHub

ANNA : GitHub · (Node.js, Mineflayer, 法语NLP, 任务树)

Altoclef : GitHub · drmcbride12 fork · (Fabric, Baritone, 任务树DAG, 自主通关)

钉锤机器人 : 视频 by Master Gumbo · (命令方块, Carpet Mod, 状态机)

AIがMinecraft PvPを学習する -- 模倣学習、強化学習、そして重要だった30の変数

記録された1,000回の決闘、ピクセルから学習するニューラルネットワーク、90%のキーストローク精度----そしてボットは壁に向かって一直線。その後、RL、カリキュラム学習、60時間のトレーニングが始まった。

はじめに

AI Learns Minecraft PvP サムネイル

AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) というKadambi | AI Engineeringによる動画は、ゲームプレイAIのトレーニングについての最も正直な記録の一つだ。

前提:画面を見ながらマウスとキーボードのコマンドを出力することで、Minecraft PvP(剣キット、完全エンチャントのダイヤモンドアーマー)をプレイするボットを構築する。ゲームメモリの読み取りなし、マクロなし、MODなし:ピクセルを入力に、アクションを出力にするだけ。

この動画が興味深いのは、最終結果ではなく、その過程だ。模倣学習の失敗、特徴量エンジニアリングへの方向転換、破滅的忘却のサイクル、そしてGPUなしのノートPCでの60時間以上のトレーニング。

フェーズ1:模倣学習(失敗)

模倣学習中のボット:壁に向かって上下にジャンプ

制作者は妥当なアプローチから始めた:自分のプレイを1,000回の決闘として録画し、すべてのマウスクリックとキー入力を対応するフレームにマッピングし、ニューラルネットワークをトレーニングしてピクセルからアクションを予測させる。

# 模倣学習パイプラインの疑似コード
dataset = record_duels(1000)          # 数十万フレーム
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # 画像からキーボード/マウスを予測

ネットワークはキーストロークを90%の精度で予測できるようになった。有望だ。

そして実際の試合でテストした。ボットは真っ直ぐマップの端に向かい、壁に向かって上下にジャンプした。

なぜか?

怠惰の罠。 PvP戦闘では、Wキーがほとんどの時間押されている。ネットワークは単にWを押し続けるだけで高い精度を達成できることに気づいた。最も一般的なアクションを最適化し、他のすべてを犠牲にした。

人間のレイテンシ。 データセット内のアクションは、人間の反応時間約200ms遅延している。フレームごとに見ると、アクションとその目に見える結果が複数フレーム離れているため、モデルが生のピクセルから因果関係を学習するのはほぼ不可能だ。

一貫性のないデモンストレーション。 制作者自身のプレイは様々だった:同じ状況でキーボードでストレイフしたり、マウスでエイムしたり。この矛盾した入力がネットワークを混乱させた。

フェーズ2:カリキュラムを用いた強化学習

RLトレーニング中に水平方向の追跡を学習するボット

模倣学習を断念し、制作者はRLに切り替えた。しかし、新しいエージェントを完全なPvP決闘に放り込んでも無意味だ:ランダムな探索で何かを見つけるには、一度に起こりすぎている。

解決策:カリキュラム学習。各メカニクスを分離し、実際の戦闘に入る前にボットに基本を習得させる。

ステップ1:水平方向の照準(7時間)

最もシンプルな報酬関数:ヒットを決めると正の報酬、ダメージを受けると負のペナルティ。

最初、ボットはほとんど動かない(ニューラルネットワークは初期化され中立な値を出力する)。左右に震える:これはボットがどのアクションが報酬を得られるかテストしているのだ。

1時間後、水平方向の中心を取ることを学ぶが、痛々しいほど遅い。7時間後、左右に敵を追跡できるようになるが、非対称的だった(左から右より右から左への動きが得意で、その行動はトレーニングを通じて持続した)。

ステップ2:特徴量エンジニアリング

生の画面キャプチャは200万ピクセル以上。360pにダウンスケールしても20万の入力になる:効率的な学習には多すぎる。

制作者は数千の決闘を分析し、実際に重要な30の変数を特定し、3つのグループに分類した:

視覚(敵追跡):

  • クロスヘアからの敵の距離
  • 敵のバウンディングボックスサイズ
  • 敵の高さ
  • クロスヘアの状態(ターゲット上/外)
  • 相対速度画像全体を処理する代わりに、ボットは敵のアーマーの色でピクセルを厳密にフィルタリングし、検出をほぼ瞬時に行う。同様の色の背景ブロックはこれを狂わせることがある:しかしMinecraftでは、テクスチャを変更するだけでよい。

OCR(HUD読み取り): ボットはゲームのコードから座標を取得できないため、画面をリアルタイムでスキャンして抽出する:

  • カメラのピッチ
  • モメンタム
  • Yレベル標準のOCRはMinecraftの透明なテキストに苦戦するため、重要なデータは白黒に強制されて即座に読み取られる。

時間(コンテキストウィンドウ):

  • 敵にヒットしてからの時間
  • 敵からヒットされてからの時間
  • ボット自身の過去のアクションのローリングバッファ これによりネットワークに時間的文脈が与えられる:これがないと、ボットは自分がコンボの途中なのか、戦闘を始めたばかりなのかが分からない。

ステップ3:垂直方向の照準(さらに7時間)

RLトレーニング中に上下の照準を学習するボット

垂直方向のマウス動きを追加することは、最初は「完全な災害」だった。初期パフォーマンスは壊れていた。

さらに1時間のサンドボックスの後、ボットは上下を見る方法を理解した。しかしその過程で、水平方向の追跡を完全に忘れてしまった。

これはAIの破壊的忘却:新しいデータのために最適化すると、以前に学習した表現が上書きされる古典的な機械学習問題である。垂直照準を最適化することで、ニューラルネットワークは誤って水平方向の進捗を上書きし、制作者はクロスヘアを水平に保てるがターゲットを追跡できないボットを抱えることになった。

垂直コントロールを維持しながら水平追跡を取り戻すのに、さらに6時間かかった。その後、OCRグループがカメラピッチを抽出することで、ボットは良好なクロスヘア配置を維持できるようになった。

ステップ4:キーボードコントロール

Wキーを常にトグルし、動きへのコミットを学習するボット

ボットにキーボードを使用する許可を与えると、時間ベースの特徴量がさらに重要になった。最初は、Wキーが常にオン/オフを繰り返していた:ネットワークがコミットすることを学んでいなかったため、急速に切り替えていた。

この行動はペナルティを受けたため、ボットはそれを滑らかにすることを学んだ。より多くのスプリントヒットを決めるようになった(立ったままスイングの「ウィッシュ」音ではなく「サッド」音)。一部のコンボは、ボットが敵よりもリーチが長いことを利用していたため、満足感に欠けていた。

公平にするため、制作者は敵のリーチを引き上げた。ボットの学習した戦略の多くは機能しなくなった。しかし、さらに時間を与えられると、適応した。

ステップ5:クリックするタイミングを教える

最終フェーズでは、制作者は模倣学習を復活させた:ただし、クリックのタイミングだけを教えるためであり、完全な制御ポリシーではない。ボットは録画された決闘からクリックパターンを模倣しようとした。

最初は何も試すことを怖がり、間違ったクリックへのペナルティを恐れた。しかし最終的には勇気を振り絞ってスイングし、ヒットを決めた。もちろん、その過程で照準を忘れてしまった:制作者は満足のいく状態に戻すために、さらに50時間放置しなければならなかった。

チート論争

動画は最後に問いかける:このボットはチートか?

反対の主張:ボットは人間が見るものと同じピクセルだけを処理し、人間と同じキーボード/マウス入力を送信し(アンチノックバックのようなパケット操作なし)、ゲームメモリを読み取らない(X線やESPなし)。

賛成の主張:ボットは人間より速く処理でき、相手が人間だと思ってプレイしているのにそうでないなら、それは欺瞞である。

制作者の見解:意図次第だ。両者がボットであることを知っていれば、公平な試合だ。ボットはその後、敵を100ヒット連続で奈落の底に叩き落とす。

結果

100ヒットコンボを実行するボット

GPUなしのノートPCでトレーニングされたMinecraft PvPボット。カスタムトレーニングパイプライン上に構築:

  • 画面キャプチャ(200万+ピクセル → 30の設計された特徴量)
  • カリキュラム学習(水平 → 垂直 → キーボード → クリック)
  • モーターコントロールのRL + クリックタイミングの模倣学習
  • 生ピクセルに対する特徴量エンジニアリング(3グループ:視覚、OCR、時間)
  • 複数フェーズで60時間以上のトレーニング

合計トレーニング時間は数十時間だが、そのほとんどを受動的だ。ボットは震えながら理解を深め、学んだことを忘れ、再学習し、最終的に100ヒットコンボをつなげる。

動画はこちら:youtube.com/watch?v=j5nxDKAjg6U


この記事は動画の内容のみを扱っている。Minecraft AIのより広い文脈(VPT、DreamerV3、模倣学習とRLの状況)については、以下のセクションでこのプロジェクトをより広い分野に位置づけている。

VPT:大規模な行動クローニング

OpenAIのVPTプロジェクト図:逆力学モデルがフレームペアからアクションを予測

この動画の「行動クローニング」アプローチ(フェーズ1)は、OpenAIが**Video PreTraining(VPT)**プロジェクトで使用したのと同じ手法だが、リソースの両極端にある。VPTは、70,000時間の動画、720GPU、およびラベルなしデータを擬似ラベル付けする逆力学モデルがあれば、模倣学習がMinecraftで機能することを証明した。一方、この制作者は、1台のノートPCと1,000回の決闘ではそれが失敗することを証明した:しかし、その根本的な理由は同じである。模倣学習はデモンストレーションの質に制限される。

OpenAIのVPTエージェントがMinecraftで木を伐採

VPTパイプラインはデータ問題を、逆力学モデルを訓練することで解決する。これはフレームt-1とフレームt+1を見て、フレームtでのアクションを予測する。IDMは非因果的であり(将来のフレームを見る)、タスクは行動クローニングよりも簡単で、はるかに少ないラベルデータを必要とする。彼らは請負業者に2,000時間のラベルデータに対して約2,000ドルを支払い、IDMを使ってYouTubeのMinecraft動画70,000時間を擬似ラベル付けした。

結果として得られた0.5Bパラメータの基盤モデルは、RLだけでは不可能だったゼロショット能力を達成した:木を切り、テーブルを作り、ピラージャンプ----そしてRLでファインチューニングすることで、ダイヤモンド道具を作った最初のAIとなった。

プレトレーニングデータ量に対するクラフト/収集率(対数スケール):作業台、木の道具、石の道具

スケーリング効果は明らかだ:1時間から10万時間までの対数軸上で、モデルが作業台、木の道具、そして石の道具を作る割合は段階的に上昇する。請負業者がラベル付けした2,000時間のみで訓練されたモデルは作業台で頭打ちになるが、IDMによって擬似ラベル付けされた7万時間を追加することで(グラフの点線)、RLを一切使わずに石の道具がゼロショットで出現する。

RL訓練エピソード数に対する報酬:ランダム初期化から始めた場合とVPT事前学習モデルから始めた場合の比較

このグラフは、事前学習が下流のRLに与える影響の大きさを示している。ランダム初期化から始めたRL(オレンジ)は、100万エピソード近くにわたってほぼ0のままである:「ダイヤモンドを入手する」タスクは報酬がまばらすぎて、素のエージェントがランダム探索で遭遇することはほとんどない。一方、VPTモデルからファインチューニングされたRL(緑)は、すでに基本的な行動(採掘、クラフト、探索)を備えてスタートし、報酬約25まで着実に上昇する。これはダイヤモンドのツルハシへの完全なパスに相当する。

OpenAIのVPTプロジェクトの公式ビデオデモ。エージェントの動作を示している。

OpenAI Five:報酬設計問題

人間のプロと対戦するOpenAI FiveのDota 2プレイ

OpenAI Five(2019年)は純粋な自己対戦RLを用いてDota 2の世界チャンピオンを打ち負かした。模倣学習は一切使わず。256GPU、128,000CPUコア、1日あたり180年分のゲームプレイ、10ヶ月のトレーニング。

しかし、報酬関数はDotaの専門家によって手作りされた:利用可能な20,000の特徴量のうち28に、手調整された重みが付けられた。純資産、キル、デス、タワーの体力、レーン割り当て:すべて人間によって選択され、重み付けられた。この設計なしでは、エージェントはほとんど学習しなかった(実験:勝ち/負けのみを報酬にすると、セミプロレベルで停滞)。

この動画のボットも同じ問題に直面している:その報酬関数は、PvPで何が重要かについての制作者の理解をコード化している(ヒットを当てることは良い、ダメージを受けることは悪い、クロスヘアを維持することは良い)。これは避けられない:RLには報酬シグナルが必要であり、そのシグナルを設計することは人間のバイアスをエンコードする。

DreamerV3:世界モデルと疎な報酬

単一構成で150以上の多様なタスクにわたるDreamerV3のベンチマークスコア

DeepMindのDreamerV3(2023年)は第3のアプローチをとる。行動クローニングや設計されたRLの代わりに、世界モデルを学習する:過去のアクションから将来の状態と報酬を予測するニューラルネットワーク----そして将来の可能性について夢を見ることで計画する。これは人間のデータやカリキュラムなしでMinecraftでダイヤモンドを収集した最初のアルゴリズムであり、2025年にNatureに掲載された。

DreamerV3は世界モデルを学習して将来の軌跡を想像する

ダイヤモンド環境は、12のマイルストーン(丸太→板→棒→作業台→木のツルハシ→丸石→石のツルハシ→鉄鉱石→かまど→鉄のインゴット→鉄のツルハシ→ダイヤモンド)にわたって疎報酬を定義し、それぞれが正確に1回だけ+1を与える。さらに、小さな体力報酬(HPあたり±0.01)。達成可能な合計:36,000ステップのエピソードで11.1。

DreamerV3の世界モデルにより、軌道を想像し、内部で評価できる:アクターは実際の経験からではなく、夢のロールアウトから学習し、現実の1ステップごとに数千の将来の可能性をテストする。これにより、標準的なRLエージェントを死滅させるような疎な報酬でも実行可能になる。

40のシードで1億環境ステップをトレーニングした結果、40のうち24のシードが少なくとも1つのダイヤモンドを収集した。最初のダイヤモンドは2,900万ステップ後(1GPUで約9日)に現れた。

ANNA:シンボリックAIとMinecraftの出会い

火打石と打ち金のANNAのタスクツリー分解

この動画のPvPボットの前、VPTやDreamerV3の前にも、ANNAがあった:まったく異なる哲学で構築されたMinecraftボット。ピクセルや報酬から学習する代わりに、ANNAはフランス語NLPパーサーと手書きのタスク依存関係ツリーを持つシンボリックステートマシンを使用する。

2022年に作成され、ANNAはMineflayerを介してMinecraftサーバーに接続し、フランス語の自然言語コマンドを理解する。「obtiens un briquet」(火打石と金のインゴットを入手)と言うと、ANNAのパーサーが動詞を特定し(obtien → 入手)、アイテムレシピを調べ、それを再帰的にサブタスクに分解する:オークの原木を採掘 → 板をクラフト → 棒を作る → 作業台を作る → 木のツルハシをクラフト → 石を採掘 → 石のツルハシをクラフト → 鉄鉱石を採掘 → 鉄インゴットを製錬 → 火打石と金のインゴットをクラフトする。

フランス語コマンド認識のためのANNAのNLPパーサーアーキテクチャ

NLPレイヤー(utils/id_parser.js)は、並列命令を処理するためにコマンドを"et"(そして)で分割し、フランス語の動詞をタスクタイプ(craft、mine、tue、suis moi)にマッピングし、5,000エントリーの辞書を通じてフランス語のアイテム名をMinecraft IDに翻訳する。認識されないコマンドはGPTベースの会話システムにフォールバックし、ANNAを自己意識のあるMinecraftコンパニオンとして演出する。

タスクツリー(mc-tasks-tree/)が中核である:Minecraftアイテムグラフ(クラフトレシピ、採掘収穫、モブドロップ、かまどレシピ)を歩く再帰的アルゴリズムで、ステップバイステップの計画を生成する。ダイヤモンドヘルメットの場合、木、石、鉄、ダイヤモンド層にわたる40以上のステップの分解を生成する。

ANNAのダイヤモンドヘルメットタスクツリー:40以上のステップ分解

この動画のPvPボットが経験から学習するのに対し、ANNAは知識から機能する。ANNAには、1,000回の決闘や60時間のトレーニングは必要ない。ツリーとパーサーとサーバーだけが必要だ。しかし、ツリーにコード化されたものを超えて汎化することもできない。ステートマシンのエンジニアリングをどれだけ積んでも、PvPを教えることはできないだろう。

ANNAのアプローチは、AIの異なる時代を反映している:エンドツーエンドの学習が支配的になる前、シンボリック推論と注意深いエンジニアリングが知的動作を生み出せるという期待があった時代。今日、ANNAやこのPvPボットのようなプロジェクトは、Minecraft AIの二つの極を表している:一方は世界について推論し、もう一方は世界を知覚する。

Master Gumboのメイスボット:コマンドブロックのみのAI

ボットと共にメイスPvPトレーニングアリーナ

Minecraft AIのまったく別のコーナーでは、YouTuberのMaster Gumboがコマンドブロックのみを使用してPvPトレーニングボットを構築した。MODはもちろん、プラグインや外部コードは一切使わず、バニラMinecraftのコマンド、レッドストーン、カーペットMODのプレイヤーレプリカエンティティだけを使用している。その結果は、AIメイスPvP対戦相手で、プレイヤーとのブリーチスワッピング、ウィンドチャージ、そしてシールドメカニクスを練習する。

ボットは最初は壊れない装備とオフハンドのトーテム(毎ティック/item replaceで補充される)を持つゾンビで、事実上不死身である。その後、Master GumboはCarpet Modのプレイヤーレプリカボットに切り替える。これはゾンビではできない人間のようなメカニクス(シールドを上げる、アイテムを切り替える)をサポートする。

設定センター:ボットの動作を設定するボタン

中核の革新はランダム性によって駆動されるステートマシンである。アーマースタンドが、/spreadplayersコマンドを使って色付きコンクリートブロックの円の上にテレポートされる。このコマンドはエンティティをランダムに散乱させる。アーマースタンドがどこに着地するかで、ボットの次の行動が決まる:

  • 赤コンクリート → 後方にストレイフ
  • 青コンクリート → 上にウィンドチャージ(攻撃)
  • 緑コンクリート → シールドを上げる
  • 白コンクリート → ポーズ(行動の間に遅延を追加)

AI判定システム:色付きコンクリート上のアーマースタンド

アーマースタンドの位置は、その下のブロックを検出し、対応する機構を起動するコマンドブロックによって読み取られる。レッドストーンブロックが配置されるか削除されて、各動作を有効/無効にする。/spreadplayersが繰り返し実行されるため、ボットは継続的に新しい決定を下し、予測不可能でありながら構造化された動作を生み出す。

Master Gumboは、これを「非常にシンプルで基本的なAIの形」と呼んでいる。ニューラルネットワークのように相互作用から学習するわけではないが、ランダム性とステートマシンは、スクリプト化されたボットよりも予測が難しい現実的なPvP動作を生み出す。設定センターには、AIのオン/オフの切り替え、難易度の調整、移動パターンの設定を行うブックインターフェースが含まれている。

ボットと練習した後、動画の冒頭で彼を「下手」と言ったプレイヤーと決闘し、Master Gumboが勝利する。マップはCarpet Mod必須でDiscord経由で共有される。

決闘中のボット、メイスPvPテクニックを練習している

PvPボット(Kadambi)がピクセルから学習し、ANNAがタスクツリーを通じて推論するのに対し、Master Gumboのボットはランダム化された状態遷移を通じて知能を達成している。これはニューラルネットワークなしでも説得力のあるPvP対戦相手を構築できることを証明する、ピュアコマンドブロックアプローチである。

Altoclef:Java + BaritoneでMinecraftを自動化する

Altoclefのタスクツリー:JavaクラスがTaskSystemに登録される

Altoclefは、ANNAやVPTとはまったく異なる哲学で構築されたMinecraftボットである。KadambiのPvPボットがピクセルから学習するのでも、ANNAのようにNLPからコマンドを解釈するのでもなく、AltoclefはJavaクラスとして定義されたタスクツリーとBaritoneのpathfindingエンジンを組み合わせて、Minecraftのあらゆるタスクを自動化する。

2021年にgaucho-materoによって作成されたAltoclefは、Fabric上で動作するクライアントサイドMODであり、Javaで記述されている。2021年5月24日には完全自律でMinecraftをクリアした最初のボットとなった。エンダードラゴンを倒すまでの一連のタスク(木を切り、作業台を作り、石のツルハシを入手し、鉄を採掘し、ネザーに入り、ブレイズロッドを集め、エンダーアイをクラフトし、エンドポータルを見つけ、エンダードラゴンを倒す)を、一切の人間の介入なしに実行した。

中核となるのはTaskSystemである。すべてのタスクはadris.altoclef.tasksパッケージのJavaクラスとして実装され、それぞれが単一の責任を持つ:

  • ChopTreeTask:木を伐採する
  • MineTask:指定された鉱石を採掘する
  • CraftInTableTask:作業台でアイテムをクラフトする
  • SmeltTask:かまどで精錬する
  • EnterNetherTask:ネザーに入る
  • KillEntityTask:特定のMobを倒す

タスクは内部でBaritoneを呼び出して移動や採掘を実行する。Baritoneはブロックの破壊、階段の設置、水バケツMLG、はしごやツタの昇降まで理解する高度なpathfindingエンジンであり、Altoclefはこれに「何をすべきか」という高レベルの判断力を追加する。

// Altoclefのタスクシステムの概念:各タスクはJavaクラス
public class CraftInTableTask extends Task {
    public boolean isExecutable() { /* 材料は十分か */ }
    public void execute() { 
        baritone.moveTo(作業台の位置);
        baritone.rightClick(作業台);
        inventory.craft(レシピ);
    }
    public boolean isDone() { /* 結果がインベントリにあるか */ }
}

AltoclefがANNAと異なるのは、その実行の確実性である。ANNAはNLPパーサーを通じてコマンドを解釈し、Mineflayer(JavaScript)で実行する。AltoclefはFabric MODとしてMinecraftの内部に直接アクセスし、Javaクラスとして定義されたタスクをBaritoneで実行する。これにより、ブロックの対話、インベントリ管理、エンティティとの戦闘など、より信頼性の高い操作が可能になる。

ただし、AltoclefもANNAと同様に事前定義された知識に依存している。新しいスキルを学習することはできず、コード化されたタスクの範囲内でのみ動作する。PvPのような動的な環境では、KadambiのRLベースのボットほどの適応性はない。Altoclefの強みは広さにある--400以上のアイテムを入手でき、ゲーム全体を攻略できるが、その行動は事前にプログラムされた範囲を超えない。

Altoclefは、学習ベースのアプローチとシンボリックエンジニアリングの間の架け橋のような存在である。Baritoneという洗練されたpathfindingライブラリを土台に、Javaのタスクシステムで高レベルの計画を積み上げる。学習はしないが、その確実な実行力は、Minecraft AIの実用的な側面を示している。

これらを結び付けるもの

アプローチ コア手法 データ 計算リソース 結果
動画のPvPボット RL + 模倣学習 1,000回の決闘 ノートPC1台、60h 100ヒットコンボ
OpenAI Five 自己対戦RL 1日180年分のゲームプレイ 256GPU、10ヶ月 Dota 2世界チャンピオン
VPT 半教師ありIL 7万時間YouTube + IDM 720GPU、9日間 ダイヤモンド道具
DreamerV3 世界モデルRL 夢の軌道 1GPU、9日間 ゼロからダイヤモンド
ANNA シンボリックNLP + タスクツリー 手書きレシピ ノートPC1台、瞬時 任意のクラフト可能アイテム
Altoclef Javaタスクツリー + Baritone 事前定義タスククラス ノートPC1台、Fabric 完全自律クリア、400+アイテム
メイスボット コマンドブロックステートマシン ランダム化決定 バニラMC、GPU不要 メイスPvP練習

この動画のボットは最もリソース制約があるが、プロセスについて最も正直である。まず失敗し、そして反復する。学んだことを忘れ、再学習する。100ヒットコンボで終わる:しかし同時に、構築したものがチートなのかという疑問も残す。


動画 : AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT : 論文 · ブログ · GitHub

OpenAI Five : 論文 · ブログ

DreamerV3 : 論文 · GitHub

ANNA : GitHub · (Node.js、Mineflayer、フランス語NLP、タスクツリー)

Altoclef : GitHub · (Fabric、Baritone、Javaタスクツリー、完全自律クリア)

メイスボット : 動画 by Master Gumbo · (コマンドブロック、Carpet Mod、ステートマシン)

AI가 Minecraft PvP를 배우다 -- 모방 학습, 강화 학습, 그리고 중요했던 30개의 변수

1,000회의 결투 녹화, 픽셀 기반 신경망 훈련, 90% 키스트로크 정확도 -- 그리고 봇은 벽을 향해 돌진했다. 그 후 RL, 커리큘럼 학습, 60시간의 훈련이 시작되었다.

소개

AI Learns Minecraft PvP 썸네일

Kadambi | AI Engineering의 AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning)라는 동영상은 게임 플레이 AI 훈련에 관한 가장 솔직한 기록 중 하나다.

전제: 화면을 보면서 마우스와 키보드 명령을 출력하여 Minecraft PvP(검 키트, 완전 인챈트 다이아몬드 갑옷)를 플레이하는 봇을 만든다. 게임 메모리 읽기, 매크로, 모드 없음: 픽셀을 입력으로, 액션을 출력으로.

이 동영상이 흥미로운 이유는 최종 결과가 아니라 그 과정이다. 모방 학습의 실패, 특징 공학으로의 전환, 파괴적 망각의 사이클, GPU 없는 노트북에서 60시간 이상의 훈련.

1단계: 모방 학습 (실패)

모방 학습 중인 봇: 벽을 향해 위아래로 점프

제작자는 합리적인 접근법으로 시작했다. 자신의 플레이를 1,000회 결투로 녹화하고, 모든 마우스 클릭과 키 입력을 해당 프레임에 매핑한 후, 픽셀에서 액션을 예측하도록 신경망을 훈련시키는 것이다.

# 모방 학습 파이프라인의 의사 코드
dataset = record_duels(1000)          # 수십만 프레임
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # 이미지에서 키보드/마우스 예측

신경망은 키 입력을 90% 정확도로 예측하게 되었다. 유망해 보였다.

그런 다음 실제 경기에서 테스트했다. 봇은 맵 가장자리로 곧장 직진해 벽을 향해 위아래로 점프했다.

왜?

게으름의 함정. PvP 전투에서는 W키가 대부분의 시간 눌려 있다. 신경망은 단순히 W를 계속 누르기만 해도 높은 정확도를 달성할 수 있다는 것을 깨달았다. 가장 흔한 행동만 최적화하고 다른 모든 것을 희생한 것이다.

인간의 지연 시간. 데이터셋의 액션은 인간의 반응 시간 약 200ms만큼 지연되어 있다. 프레임별로 보면, 액션과 그 가시적 결과가 여러 프레임 떨어져 있기 때문에 모델이 원시 픽셀에서 인과 관계를 학습하는 것이 거의 불가능하다.

일관성 없는 시연. 제작자 자신의 플레이도 다양했다. 같은 상황에서 키보드로 스트레이프하거나 마우스로 조준하는 등, 상충되는 입력이 신경망을 혼란시켰다.

2단계: 커리큘럼을 이용한 강화학습

RL 훈련 중 수평 추적을 학습하는 봇

모방 학습을 포기하고 제작자는 RL로 전환했다. 하지만 새 에이전트를 완전한 PvP 결투에 던져넣는 것은 무의미하다. 무작위 탐색으로 무언가를 찾기에는 한 번에 너무 많은 일이 일어나고 있기 때문이다.

해결책: 커리큘럼 학습. 각 메커니즘을 분리하고 실제 전투에 들어가기 전에 기본기를 익히게 한다.

1단계: 수평 조준 (7시간)

가장 단순한 보상 함수: 타격을 맞히면 양의 보상, 데미지를 받으면 음의 패널티.

처음에 봇은 거의 움직이지 않는다(신경망이 중립 값을 출력하도록 초기화됨). 좌우로 떤다: 이것은 어떤 행동이 보상을 주는지 테스트하는 것이다.

1시간 후, 수평으로 중심을 잡는 법을 배우지만 너무나 느리다. 7시간 후, 좌우로 적을 추적할 수 있게 되지만 비대칭적이었다(왼쪽에서 오른쪽보다 오른쪽에서 왼쪽으로 더 잘 움직였으며, 이 행동은 훈련 내내 지속되었다).

2단계: 특징 공학

원시 화면 캡처는 200만 픽셀이 넘었다. 360p로 다운스케일해도 20만 개 입력: 효율적인 학습을 위해 너무 많다.

제작자는 수천 번의 결투를 분석하고 실제로 중요한 30개의 변수를 세 그룹으로 나누어 식별했다:

시각 (적 추적):

  • 크로스헤어로부터의 적 거리
  • 적의 경계 상자 크기
  • 적의 높이
  • 크로스헤어 상태 (목표물 위/벗어남)
  • 상대 속도

전체 이미지를 처리하는 대신, 봇은 적의 갑옷 색상으로 픽셀을 엄격히 필터링하여 거의 즉시 감지한다. 비슷한 색상의 배경 블록이 이를 방해할 수 있지만, Minecraft에서는 텍스처를 변경하면 된다.

OCR (HUD 읽기): 봇은 게임 코드에서 좌표를 가져올 수 없기 때문에 화면을 실시간으로 스캔하여 추출한다:

  • 카메라 피치
  • 운동량
  • Y 레벨

표준 OCR은 Minecraft의 투명 텍스트에 어려움을 겪기 때문에, 중요한 데이터는 흑백으로 강제 변환되어 즉시 읽힌다.

시간 (컨텍스트 윈도우):

  • 적을 맞힌 후 경과 시간
  • 적에게 맞은 후 경과 시간
  • 봇 자신의 과거 행동 롤링 버퍼

이것은 신경망에 시간적 맥락을 제공한다. 이것이 없으면 봇은 자신이 콤보 도중인지, 아니면 전투를 막 시작했는지 알 수 없다.

3단계: 수직 조준 (추가 7시간)

RL 훈련 중 상하 조준을 학습하는 봇

수직 마우스 움직임을 추가하는 것은 처음에는 "완전한 재앙"이었다. 초기 성능이 완전히 망가졌다.

샌드박스에서 1시간을 더 보낸 후, 봇은 위아래를 보는 방법을 알아냈다. 하지만 그 과정에서 수평 추적을 완전히 잊어버렸다.

이것이 바로 파괴적 망각(catastrophic forgetting) 이다. 새로운 데이터를 최적화하는 과정에서 이전에 학습한 표현이 덮어쓰여지는 고전적인 기계 학습 문제다. 수직 조준을 최적화하는 과정에서 신경망이 실수로 수평 진행을 덮어썼고, 제작자는 크로스헤어를 수평으로 유지할 수는 있지만 대상을 추적할 수 없는 봇을 갖게 되었다.

수직 제어를 유지하면서 수평 추적을 되찾는 데 추가 6시간이 걸렸다. 그 후 OCR 그룹이 카메라 피치를 추출함으로써 봇은 좋은 크로스헤어 배치를 유지할 수 있었다.

4단계: 키보드 제어

W키를 계속 토글하며 움직임에 몰입하는 법을 배우는 봇

봇이 키보드를 사용할 수 있게 하자 시간 기반 특징이 더욱 중요해졌다. 처음에는 W키가 계속 켜지고 꺼지기를 반복했다: 신경망이 몰입하는 법을 배우지 못했기 때문에 빠르게 전환한 것이다.

이 행동은 패널티를 받았고, 봇은 이를 부드럽게 하는 법을 배웠다. 더 많은 스피닛 히트를 맞추기 시작했다(서서 휘두르는 "휘익" 소리 대신 "퍽" 소리). 일부 콤보는 봇이 적보다 리치가 긴 것을 이용했기 때문에 만족스럽지 못했다.

공정을 위해 제작자는 적의 리치를 늘렸다. 배운 전략 중 많은 수가 통하지 않게 되었지만, 더 많은 시간이 주어지자 적응했다.

5단계: 클릭 타이밍 가르치기

마지막 단계에서 제작자는 모방 학습을 다시 도입했다. 단, 완전한 제어 정책이 아닌 클릭 타이밍만을 가르치기 위해서였다. 봇은 녹화된 결투의 클릭 패턴을 모방하려고 했다.

처음에는 잘못된 클릭에 대한 패널티가 두려워 아무것도 시도하지 못했다. 하지만 결국 용기를 내어 휘두르고 타격을 맞췄다. 물론 그 과정에서 조준을 다시 잊어버렸다: 제작자는 만족스러운 상태로 돌아가기 위해 50시간 더 혼자 두어야 했다.

치팅 논쟁

동영상은 마지막에 질문을 던진다: 이 봇은 치트인가?

반대 의견: 봇은 인간이 보는 것과 같은 픽셀만 처리하고, 인간과 동일한 키보드/마우스 입력을 보내며(안티 넉백 같은 패킷 조작 없음), 게임 메모리를 읽지 않는다(X-ray나 ESP 없음).

찬성 의견: 봇은 인간보다 빠르게 처리할 수 있으며, 상대방이 인간이라고 생각하고 플레이하는데 실제로는 아니라면, 그것은 기만이다.

제작자의 견해: 의도에 달려있다. 양쪽이 봇인 것을 알고 있다면 공정한 경기다. 봇은 계속해서 적을 100히트 연속으로 공허에 떨어뜨린다.

결과

100히트 콤보를 실행하는 봇

GPU 없는 노트북에서 훈련된 Minecraft PvP 봇. 커스텀 훈련 파이프라인으로 구축:

  • 화면 캡처 (200만+ 픽셀 → 30개의 설계된 특징)
  • 커리큘럼 학습 (수평 → 수직 → 키보드 → 클릭)
  • 운동 제어용 RL + 클릭 타이밍용 모방 학습
  • 원시 픽셀에 대한 특징 공학 (3개 그룹: 시각, OCR, 시간)
  • 여러 단계에 걸친 60시간 이상의 훈련

총 훈련 시간은 수십 시간이지만, 대부분은 수동적이다. 봇은 흔들리며 이해를 얻고, 배운 것을 잊고, 다시 배우고, 마침내 100히트 콤보를 연결한다.

동영상은 여기: youtube.com/watch?v=j5nxDKAjg6U


이 글은 동영상의 내용만을 다룬다. Minecraft AI의 더 넓은 맥락(VPT, DreamerV3, 모방 학습과 RL 환경)에 대해서는 아래 섹션에서 이 프로젝트를 더 넓은 분야에 배치한다.

VPT: 대규모 행동 클로닝

OpenAI의 VPT 프로젝트 다이어그램: 역동역학 모델이 프레임 쌍에서 액션을 예측

이 동영상의 "행동 클로닝" 접근법은 OpenAI가 Video PreTraining (VPT) 프로젝트에서 사용한 것과 동일한 기법이지만, 자원의 정반대편에 있다. VPT는 70,000시간의 동영상, 720대의 GPU, 라벨링되지 않은 데이터를 의사 라벨링할 역동역학 모델이 있을 때 모방 학습이 효과가 있음을 증명했다. 반면, 이 제작자는 노트북 한 대와 1,000번의 결투로는 실패함을 증명했다. 하지만 근본적인 이유는 동일하다: 모방 학습은 시연의 품질에 의해 제한된다.

OpenAI의 VPT 에이전트가 Minecraft에서 나무를 베는 모습

VPT 파이프라인은 역동역학 모델(IDM) 을 훈련하여 데이터 문제를 해결한다. IDM은 프레임 t-1과 프레임 t+1을 보고 프레임 t에서의 액션을 예측한다. IDM은 비인과적이므로(미래 프레임을 봄), 태스크가 행동 클로닝보다 쉽고 훨씬 적은 라벨 데이터가 필요하다. 그들은 계약자에게 2,000시간 분량의 라벨 데이터에 대해 약 2,000달러를 지불한 후, IDM을 사용하여 YouTube의 70,000시간 분량 Minecraft 동영상을 의사 라벨링했다.

결과적으로 0.5B 파라미터 파운데이션 모델은 RL만으로는 불가능했던 제로샷 능력(나무 자르기, 테이블 만들기, 필라 점프)을 달성했고, RL로 파인튜닝하여 다이아몬드 도구를 만든 최초의 AI가 되었다.

VPT의 사전 학습 데이터 규모에 따른 제작/수집 비율(로그 스케일): 제작대, 나무 도구, 돌 도구

규모의 효과는 명확하다: 1시간에서 100,000시간까지의 사전 학습 데이터 로그 축에서, 모델이 제작대, 나무 도구, 돌 도구를 제작하는 비율이 단계적으로 상승한다. 계약자가 라벨링한 2,000시간 데이터만으로 훈련된 모델은 제작대에서 정체된다; IDM이 의사 라벨링한 70,000시간을 추가함으로써(그래프의 점선), RL 없이도 제로샷으로 돌 도구가 등장한다.

RL 훈련 에피소드 수에 따른 보상: 무작위 초기화 네트워크 vs VPT 사전 학습 모델

이 그래프는 사전 학습이 다운스트림 RL에 얼마나 중요한 변화를 가져오는지 보여준다. 무작위 초기화 네트워크에서 출발한 RL(주황색)은 거의 백만 에피소드 동안 0 근처에 머문다: "다이아몬드 획득" 태스크는 보상이 너무 희소하여 순수 탐색으로는 도달할 수 없다. VPT 사전 학습 모델에서 파인튜닝된 RL(초록색)은 이미 기본 행동(채굴, 제작, 탐험)을 갖추고 시작하며 약 25의 보상까지 꾸준히 상승하는데, 이는 다이아몬드 곡괭이로 가는 전체 경로에 해당한다.

OpenAI VPT 프로젝트의 공식 비디오 데모, 에이전트의 플레이 장면.

OpenAI Five: 보상 설계 문제

인간 프로와 대전하는 OpenAI Five의 Dota 2 플레이

OpenAI Five는 순수 자기 대결 RL로 Dota 2 세계 챔피언을 물리쳤다. 모방 학습 없이, 256 GPU, 128,000 CPU 코어, 하루에 180년 분량의 게임 플레이, 10개월의 훈련.

하지만 보상 함수는 Dota 전문가가 손수 제작했다: 이용 가능한 20,000개 특징 중 28개에 각각 수동 조정된 가중치를 적용했다. 순자산, 킬, 데스, 타워 체력, 라인 배정 등 모두 인간이 선택하고 가중치를 부여했다. 이런 설계 없이는 에이전트가 거의 학습하지 못했다(실험: 승/패만 보상으로 주자 준프로 수준에서 정체됨).

이 동영상의 봇도 같은 문제에 직면한다: 보상 함수에 PvP에서 중요한 것(타격을 맞추는 것 좋음, 데미지 받는 것 나쁨, 크로스헤어 유지 좋음)에 대한 제작자의 이해가 코딩되어 있다. 이것은 불가피하다: RL은 보상 신호가 필요하며, 그 신호를 설계하는 것은 인간의 편향을 인코딩한다.

DreamerV3: 세계 모델과 희소 보상

단일 구성으로 150개 이상의 다양한 태스크에서 DreamerV3 벤치마크 점수

DeepMind의 DreamerV3는 세 번째 접근법을 취한다. 행동 클로닝이나 설계된 RL 대신 세계 모델을 학습한다: 과거 액션에서 미래 상태와 보상을 예측하는 신경망 -- 그리고 가능한 미래에 대해 꿈을 꾸며 계획한다. 인간 데이터나 커리큘럼 없이 Minecraft에서 다이아몬드를 수집한 최초의 알고리즘이며, 2025년 Nature에 발표되었다.

DreamerV3가 세계 모델을 학습하여 미래 궤적을 상상한다

다이아몬드 환경은 12개의 이정표(통나무 → 판자 → 막대기 → 제작대 → 나무 곡괭이 → 조약돌 → 돌 곡괭이 → 철광석 → 용광로 → 철 주괴 → 철 곡괭이 → 다이아몬드)에 대해 희소 보상을 정의하며, 각각 정확히 한 번 +1을 준다. 여기에 작은 체력 보상(HP당 ±0.01)이 추가된다. 달성 가능한 총점: 36,000단계 에피소드에서 11.1.

DreamerV3의 세계 모델은 궤적을 상상하고 내부적으로 평가할 수 있게 한다: 행동자는 실제 경험이 아닌 꿈의 롤아웃에서 학습하며, 실제 한 단계마다 수천 가지의 가능한 미래를 테스트한다. 이는 표준 RL 에이전트를 죽일 희소 보상도 실행 가능하게 만든다.

ANNA: 상징적 AI와 Minecraft의 만남

부싯돌과 부시의 ANNA 태스크 트리 분해

이 동영상의 PvP 봇 이전, VPT와 DreamerV3 이전에도 ANNA가 있었다: 완전히 다른 철학으로 구축된 Minecraft 봇. 픽셀이나 보상 대신, ANNA는 프랑스어 NLP 파서와 수작업된 태스크 의존성 트리를 가진 상징적 상태 머신을 사용한다.

2022년에 제작된 ANNA는 Mineflayer를 통해 Minecraft 서버에 연결하고 프랑스어 자연어 명령을 이해한다. "obtiens un briquet"(부싯돌과 강철 얻기)라고 말하면, ANNA의 파서는 동사를 식별하고(obtien → 획득), 아이템 레시피를 조회한 후, 재귀적으로 하위 태스크로 분해한다: 참나무 원목 채굴 → 판자 제작 → 막대기 제작 → 제작대 제작 → 나무 곡괭이 제작 → 돌 채굴 → 돌 곡괭이 제작 → 철광석 채굴 → 철광괴 제련 → 부싯돌과 강철 제작.

프랑스어 명령 인식을 위한 ANNA의 NLP 파서 아키텍처

NLP 레이어(utils/id_parser.js)는 병렬 명령을 처리하기 위해 "et"(그리고)로 명령을 분할하고, 프랑스어 동사와 작업 유형(craft, mine, tue, suis moi)을 매핑하며, 5,000개 항목 사전을 통해 프랑스어 아이템명을 Minecraft ID로 변환한다. 인식되지 않은 명령은 GPT 기반 대화 시스템으로 폴백되어 ANNA를 자의식을 가진 Minecraft 동반자로 설정한다.

태스크 트리(mc-tasks-tree/)가 핵심이다: Minecraft 아이템 그래프(제작 레시피, 채굴 산출물, 몹 드롭, 용광로 레시피)를 순회하는 재귀적 알고리즘으로 단계별 계획을 생성한다. 다이아몬드 투구의 경우, 목재, 석재, 철, 다이아몬드 계층에 걸친 40단계 이상의 분해도를 생성한다.

ANNA의 다이아몬드 헬멧 태스크 트리: 40단계 이상 분해

이 동영상의 PvP 봇이 경험에서 학습하는 반면, ANNA는 지식에서 작동한다. 1,000번의 결투나 60시간의 훈련이 필요하지 않고, 트리와 파서와 서버만 있으면 된다. 하지만 트리에 코딩된 것 이상으로 일반화할 수도 없다. 상태 머신 엔지니어링을 아무리 해도 PvP를 가르칠 수는 없을 것이다.

ANNA의 접근 방식은 AI의 다른 시대를 반영한다: 엔드투엔드 학습이 지배적이 되기 전, 상징적 추론과 세심한 엔지니어링이 지적 행동을 만들어낼 수 있다는 기대가 있었던 시대. 오늘날 ANNA와 같은 프로젝트와 이 PvP 봇은 Minecraft AI의 두 극을 나타낸다: 하나는 세계에 대해 추론하고, 다른 하나는 세계를 인식한다.

Master Gumbo의 메이스 봇: 명령 블록만으로 만든 AI

봇과 함께하는 메이스 PvP 훈련장

Minecraft AI의 완전히 다른 코너에서 YouTuber Master Gumbo는 명령 블록만으로 PvP 훈련 봇을 구축했다. 모드나 플러그인 외부 코드 없이 순수한 바닐라 Minecraft 명령어 레드스톤과 플레이어 복제 엔티티를 위한 Carpet Mod만 사용했다. 결과는 AI 메이스 PvP 상대방으로, 플레이어와 브리치 스왑, 윈드 차지, 쉴드 메커니즘을 연습한다.

봇은 부서지지 않는 장비와 오프핸드의 토템(매 틱 /item replace로 보충됨)을 가진 좀비로 시작하여 사실상 불사신이다. 이후 Master Gumbo는 Carpet Mod의 플레이어 복제 봇으로 전환한다. 이는 좀비가 할 수 없는 인간과 유사한 메커니즘(쉴드 올리기, 아이템 전환)을 지원한다.

설정 센터: 봇 행동을 구성하는 버튼

핵심 혁신은 무작위성에 의해 구동되는 상태 머신이다. /spreadplayers 명령어를 사용하여 갑옷 거치대를 색깔이 있는 콘크리트 블록 원 위로 텔레포트시킨다. 이 명령어는 엔티티를 무작위로 흩뿌린다. 갑옷 거치대가 어디에 착륙하는지에 따라 봇의 다음 행동이 결정된다:

  • 빨간색 콘크리트 → 뒤로 스트레이브
  • 파란색 콘크리트 → 위로 윈드 차지
  • 초록색 콘크리트 → 쉴드 올리기
  • 하얀색 콘크리트 → 일시 정지 (행동 사이에 지연 추가)

AI 판단 시스템: 유색 콘크리트 위의 갑옷 거치대

갑옷 거치대 위치는 그 아래 블럭을 감지하고 해당 메커니즘을 작동시키는 명령 블록이 읽는다. 레드스톤 블록이 배치되거나 제거되어 각 행동을 활성화/비활성화한다. /spreadplayers가 반복적으로 실행되므로 봇은 지속적으로 새로운 결정을 내리며, 예측 불가능하지만 구조화된 행동을 만들어낸다.

Master Gumbo는 이를 "매우 간단하고 기본적인 형태의 AI"라고 부른다. 신경망처럼 상호작용에서 학습하지는 않지만, 무작위성 + 상태 머신이 스크립트된 봇보다 예측하기 어려운 사실적인 PvP 행동을 만들어낸다. 설정 센터에는 AI 전환, 난이도 조정, 이동 패턴 설정을 위한 책 인터페이스가 포함되어 있다.

봇으로 훈련한 후, 동영상 도입부에서 자신을 "못한다"고 말한 플레이어와 결투한 Master Gumbo가 승리한다. 맵은 Discord를 통해 Carpet Mod를 필수로 공유된다.

메이스 PvP 기술을 연습하는 결투 중인 봇

PvP 봇(Kadambi)이 픽셀에서 학습하고 ANNA가 태스크 트리를 통해 추론하는 반면, Master Gumbo의 봇은 무작위화된 상태 전이를 통해 지능을 달성한다: 순수 명령 블록 접근 방식으로, 설득력 있는 PvP 상대방을 만드는 데 신경망이 필요하지 않다는 것을 증명한다.

Altoclef: Baritone + 태스크 트리의 대규모 확장

ANNA가 읽어서 수행할 작업을 아는 상징적 봇이고, 메이스 봇이 무작위로 결정을 내린다면, Altoclef는 게임 전체를 계획하여 실행하는 완전한 자율 에이전트다. gaucho-matero가 Fabric 모드로 제작했으며 Baritone 경로 탐색(pathfinding) 엔진으로 구동된다. Altoclef는 모든 Minecraft 목표를 태스크 트리(task tree)로 분해하고 인간의 입력 없이 실행한다.

인터페이스는 놀라울 정도로 단순하다. 채팅에 @gamer를 입력하면 Altoclef가 서바이벌 월드에서 게임 클리어(beat-the-game) 태스크를 시작한다. 나무를 모으고, 도구를 제작하고, 철과 다이아몬드를 채굴하고, 네더 포털을 만들고, 블레이즈 막대와 엔더 진주를 수집하고, 요새를 찾아 엔더 드래곤을 처치한다. 모두 자율적으로, 순수 Minecraft 클라이언트를 통해, 어떠한 바닐라 서버에서도 작동한다.

내부적으로는 재귀적 태스크 트리 시스템(recursive task tree system) 을 통해 이를 달성한다. 각 상위 수준 목표(예: "다이아몬드 곡괭이 제작")는 사전 조건 작업으로 분해된다: 다이아몬드 채굴 → 제련 → 막대기 제작 → 조합. 트리는 전체 Minecraft 레시피 그래프를 탐색하며, 생산 체인, 몹 드롭, 전리품 테이블, 컨테이너 접근을 처리한다. ANNA의 수작업 트리와 달리, Altoclef의 태스크는 프로그래밍 가능한 Java 클래스(programmable Java classes) 로, 전투 전략, 피글린 물물교환, 탐색 패턴 등 임의의 로직을 구현할 수 있다.

핵심 아키텍처적 통찰은 무엇을(태스크 트리)과 어떻게(Baritone 경로 탐색)의 분리다. Baritone은 저수준 이동(경로 탐색, 장애물 회피, 블록 파괴, 인벤토리 관리)을 담당하고, 태스크 시스템은 상위 수준 계획을 조율한다. 이러한 모듈성은 두 구성 요소 모두 AI일 필요가 없음을 의미한다: 둘 다 결정론적 알고리즘이지만, 이들의 조합은 학습 기반 접근법에 필적하는 복잡하고 목표 지향적인 행동을 만들어낸다.

Altoclef는 순수 상징적 Minecraft AI의 한계를 보여준다: 훈련, GPU, 인간 데이터 없이도 처음부터 게임을 클리어할 수 있지만, 프로그래머가 예상하지 못한 태스크에 적응할 수 없고 경험으로부터 학습할 수도 없다. 다이아몬드 곡괭이를 제작하는 방법을 아는 이유는 Java 클래스가 정확히 그 방법을 알려주기 때문이지, 스스로 알아냈기 때문이 아니다.

이들을 하나로 묶는 것

접근법 핵심 방법 데이터 컴퓨팅 결과
동영상의 PvP 봇 RL + 모방 학습 1,000회 결투 노트북 1대, 60h 100히트 콤보
OpenAI Five 자기 대결 RL 하루 180년 플레이 256 GPU, 10개월 Dota 2 세계 챔피언
VPT 반지도 IL 7만 시간 YouTube + IDM 720 GPU, 9일 다이아몬드 도구
DreamerV3 세계 모델 RL 꿈의 궤적 1 GPU, 9일 처음부터 다이아몬드
ANNA 상징적 NLP + 태스크 트리 수작업 레시피 노트북 1대, 즉시 모든 제작 가능 아이템
Altoclef Baritone + 태스크 트리 FS Java 태스크 클래스 Fabric 모드, GPU 없음 게임 전체 클리어
메이스 봇 명령 블록 상태 머신 무작위화된 결정 바닐라 MC, GPU 없음 메이스 PvP 훈련

이 동영상의 봇은 가장 리소스가 제약되어 있지만, 과정에 대해 가장 솔직하다. 먼저 실패하고, 반복하고, 배운 것을 잊고, 다시 배운다. 100히트 콤보로 끝나지만, 자신이 만든 것이 치트인지에 대한 질문도 함께 남긴다.


동영상 : AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT : 논문 · 블로그 · GitHub

OpenAI Five : 논문 · 블로그

DreamerV3 : 논문 · GitHub

ANNA : GitHub · (Node.js, Mineflayer, 프랑스어 NLP, 태스크 트리)

Altoclef : GitHub · 활성 포크 · (Fabric, Baritone, 태스크 트리, 게임 클리어)

메이스 봇 : 동영상 by Master Gumbo · (명령 블록, Carpet Mod, 상태 머신)

Yapay Zeka Minecraft PvP Öğreniyor -- Taklit Öğrenimi, Pekiştirmeli Öğrenme ve Önemli Olan 30 Değişken

1.000 düello kaydedildi, pikseller üzerinde eğitilen sinir ağı, %90 tuş doğruluğu : ve bot bir duvara doğru koştu. Sonra RL, müfredat öğrenimi ve 60 saatlik eğitim geldi.

Giriş

AI Learns Minecraft PvP thumbnail

Kadambi | AI Engineering tarafından AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) adlı bir video var ve bu, bir oyun oynayan yapay zeka eğitimiyle ilgili gördüğüm en dürüst anlatımlardan biri.

Fikir: Ekranı izleyerek ve fare ile klavye komutları üreterek Minecraft PvP (kılıç kiti, tam büyülü elmas zırh) oynayan bir bot inşa etmek. Oyun belleğini okumak yok, makro yok, mod yok : sadece girişte pikseller, çıkışta eylemler.

Videoyu ilginç kılan nihai sonuç değil. Yolculuk: taklit öğreniminin başarısızlığı, feature engineering dönüşü, catastrophic forgetting döngüleri ve GPU'suz bir dizüstü bilgisayarda 60+ saatlik eğitim.

Aşama 1 : Taklit Öğrenimi (başarısızlık)

Taklit öğrenimi sırasında bot: bir duvara bakıyor, yukarı aşağı zıplıyor

Yaratıcı mantıklı bir yaklaşımla başladı: kendi oynayışının 1.000 düellosunu kaydetti, her fare tıklamasını ve tuş basışını ilgili kareyle eşledi ve piksellerden eylemleri tahmin etmek için bir sinir ağı eğitti.

# Taklit öğrenimi hattı için sözde kod
dataset = record_duels(1000)          # yüz binlerce kare
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # görüntüden klavye/fare tahmini

Ağ, tuşları %90 doğrulukla tahmin etmeyi öğrendi. Umut verici.

Sonra onu gerçek bir maçta test ettiler. Bot dosdoğru haritanın kenarına gitti, bir duvara döndü ve yukarı aşağı zıplamaya başladı.

Neden?

Tembellik tuzağı. Bir PvP dövüşünde W tuşu çoğu zaman basılıdır. Ağ, sadece W'yi basılı tutarak ve başka hiçbir şey yapmayarak yüksek doğruluk elde edebileceğini fark etti. Diğer tüm eylemler pahasına en yaygın eylem için optimize etti.

İnsan gecikmesi. Veri kümesindeki eylemler, ~200 ms'lik insan tepki süresi kadar gecikmelidir. Kare kare, neden ve sonuç, bir modelin ham piksellerden öğrenmesi neredeyse imkansızdır çünkü eylem ve görünür sonucu birden fazla kare ile ayrılmıştır.

Tutarsız gösterimler. Yaratıcının kendi oynayışı değişiyordu: bazen aynı durumlarda klavyeyle strafe yapıyor, bazen fareyle nişan alıyordu. Bu çelişkili girdi ağı şaşırttı.

Aşama 2 : Müfredatla Pekiştirmeli Öğrenme

RL eğitimi sırasında yatay olarak takip etmeyi öğrenen bot

Taklit öğrenimini bırakan yaratıcı, RL'ye geçti. Ancak yeni bir ajanı tam bir PvP düellosuna sokmak işe yaramaz: rastgele keşfin bir şey bulması için aynı anda çok fazla şey oluyor.

Çözüm: müfredat öğrenimi (curriculum learning). Her mekaniği ayırın ve botun gerçek bir dövüşe girmeden önce temel bilgileri öğrenmesine izin verin.

Adım 1 : Yatay nişan (7 saat)

En basit ödül fonksiyonu: vuruş yapmak için pozitif ödül, hasar almak için negatif ceza.

Başlangıçta, bot zar zor hareket ediyor (sinir ağı nötr değerlerle başlatıldı). Bir yandan diğer yana sallanıyor: bot, hangilerinin ödül verdiğini görmek için farklı eylemleri test ediyor.

Bir saat sonra, kendini yatay olarak ortalamayı öğreniyor, ancak acı verici derecede yavaş. 7 saat sonra, düşmanı sağa ve sola takip edebiliyor, ancak asimetrik olarak (sağdan sola hareket etmede soldan sağa olduğundan daha iyi, eğitim boyunca devam eden bir davranış).

Adım 2 : Feature Engineering

Ham ekran yakalaması 2 milyon pikselin üzerindeydi. 360p'ye düşürülse bile, bu 200.000 girdi: verimli öğrenme için çok fazla.

Yaratıcı binlerce düelloyu analiz etti ve gerçekten önemli olan 30 değişkeni belirledi, üç gruba ayrılmış:

Görüş (düşman takibi) :

  • Düşmanın nişan noktasına uzaklığı
  • Düşman sınırlayıcı kutu boyutu
  • Düşman yüksekliği
  • Nişan noktası durumu (hedefte/hedef dışı)
  • Bağıl hız

Bot, tüm görüntüyü işlemek yerine, pikselleri yalnızca düşmanın zırh rengine göre filtreleyerek tespiti neredeyse anlık hale getiriyor. Benzer renkteki arka plan blokları bunu bozabilir: ancak Minecraft'ta, sadece dokuları değiştirebilirsiniz.

OCR (HUD okuma) : Bot, oyunun kodundan koordinatları çekemediği için, ekranı gerçek zamanlı olarak tarayarak şunları çıkarır:

  • Kamera eğimi (pitch)
  • Momentum
  • Y seviyesi

Standart OCR, Minecraft'ın şeffaf metniyle zorlanır, bu nedenle kritik veriler anında okuma için siyah beyaza zorlanır.

Zaman (bağlam penceresi) :

  • Düşmana vurduğunuzdan beri geçen süre
  • Size vurduğundan beri geçen süre
  • Botun kendi önceki eylemlerinin döngüsel arabelleği

Bu, ağa zamansal bağlam sağlar: onsuz, botun bir combo'nun ortasında mı yoksa yeni bir dövüşe mi başladığı hakkında hiçbir fikri yoktur.

Adım 3 : Dikey nişan (7 saat daha)

RL eğitimi sırasında yukarı ve aşağı nişan almayı öğrenen bot

Dikey fare hareketi eklemek başlangıçta "tam bir felaketti". İlk performans bozuktu.

Kum havuzunda bir saat daha geçirdikten sonra, bot yukarı ve aşağı bakmayı çözdü. Ancak bu süreçte, yatay olarak nasıl takip edeceğini tamamen unuttu.

Bu catastrophic forgetting: yeni veriler için optimize etmenin önceden öğrenilmiş temsillerin üzerine yazdığı klasik bir makine öğrenimi sorunudur. Dikey nişan için optimize ederek, sinir ağı yanlışlıkla yatay ilerlemesinin üzerine yazdı ve yaratıcıya nişanını seviyede tutabilen ancak bir hedefi takip edemeyen bir bot bıraktı.

Dikey kontrolü korurken yatay takibi yeniden kazanmak 6 ek saat sürdü. Bot daha sonra, kamera eğimini çıkaran OCR grubu sayesinde iyi bir nişan noktası yerleşimi sağladı.

Adım 4 : Klavye kontrolü

W tuşunu sürekli açıp kapatan, harekete bağlanmayı öğrenen bot

Bota klavyeyi kullanma izni vermek, zamana dayalı özellikleri daha da kritik hale getirdi. İlk başta, W tuşu sürekli açılıp kapatılıyordu: ağ henüz bağlanmayı öğrenmediği için hızlı geçiş.

Bu davranış cezalandırıldı, bu yüzden bot onu yumuşatmayı öğrendi. Daha fazla sprint vuruşu yapmaya başladı (ayakta sallamanın whoosh sesine karşı güm sesi). Bazı combolar, botun düşmana karşı menzil avantajını kullanması nedeniyle tatmin edici görünmüyordu.

İşleri adil hale getirmek için yaratıcı, düşmanın menzilini artırdı. Botun öğrendiği stratejilerin çoğu çalışmayı bıraktı. Ancak daha fazla zaman verildiğinde, uyum sağladı.

Adım 5 : Bota ne zaman tıklayacağını öğretmek

Son aşama için, yaratıcı taklit öğrenimini geri getirdi: ancak yalnızca tıklama zamanlamasını öğretmek için, tam kontrol politikasını değil. Bot, kaydedilen düellolardaki tıklama modellerini taklit etmeye çalıştı.

Başlangıçta, yanlış tıklamaların cezasından korktuğu için herhangi bir şey denemekten çok korkuyordu. Ancak sonunda sallanıp vuruş yapma cesaretini buldu. Tabii ki, bu süreçte nasıl nişan alacağını tekrar unuttu: yaratıcı, tatmin edici bir duruma dönmesi için onu 50 saat daha yalnız bırakmak zorunda kaldı.

Hile tartışması

Video şu soruyla bitiyor: bu bot hile mi yapıyor?

Aleyhteki argüman: bot yalnızca bir insanın gördüklerini işler (aynı pikseller), bir insanla aynı klavye/fare girdilerini gönderir (anti-knockback gibi paket manipülasyonu yoktur) ve oyun belleğini okumaz (X-ray veya ESP yoktur).

Lehindeki argüman: bir bot bir insandan daha hızlı işlem yapabilir ve eğer rakip bir insana karşı oynadığını düşünüyorsa ama öyle değilse, bu aldatmacadır.

Yaratıcının görüşü: amaca bağlıdır. Her iki taraf da bunun bir bot olduğunu biliyorsa, bu adil bir maçtır. Bot, düşmanı 100 vuruşluk bir seriyle boşluğa gönderir.

Sonuç

100 vuruşluk combo gerçekleştiren bot

GPU'su olmayan bir dizüstü bilgisayarda eğitilmiş, özel bir eğitim hattı üzerine inşa edilmiş bir Minecraft PvP botu:

  • Piksel girişi için ekran yakalama (2M+ piksel → 30 mühendislik ürünü özellik)
  • Müfredat öğrenimi (yatay → dikey → klavye → tıklama)
  • Motor kontrol için RL + tıklama zamanlaması için taklit öğrenimi
  • Ham pikseller üzerinde feature engineering (3 grup: görüş, OCR, zaman)
  • Birden çok aşamada 60+ saat eğitim

Toplam eğitim süresi onlarca saat civarındadır, ancak çoğu pasiftir. Bot anlayışa doğru sallanır, öğrendiklerini unutur, yeniden öğrenir ve sonunda 100 vuruşluk bir comboyu bir araya getirir.

Video youtube.com/watch?v=j5nxDKAjg6U adresinde.


Bu makale yalnızca videonun içeriğini kapsar. Minecraft YZ'si hakkında daha geniş bağlam için: VPT, DreamerV3 ve taklit öğrenimi vs RL manzarası: aşağıdaki bölümler bu projeyi daha geniş alana bağlar.

VPT : Ölçekte Davranış Klonlama

OpenAI'in VPT proje diyagramı: Ters Dinamik Modeli, kare çiftlerinden eylemleri tahmin eder

Videonun "davranış klonlama" yaklaşımı (Aşama 1), OpenAI'in Video PreTraining (VPT) projesinde kullandığı tekniğin aynısıdır, ancak kaynak spektrumunun zıt uçlarındadır. VPT, 70.000 saat video, 720 GPU ve etiketlenmemiş verileri pseudo-etiketlemek için bir ters dinamik modeliniz olduğunda taklit öğreniminin Minecraft için işe yaradığını kanıtladı. Buradaki yaratıcı, bir dizüstü bilgisayar ve 1.000 düelloyla başarısız olduğunu kanıtladı: ancak aynı temel nedenle: taklit öğrenimi, gösterimlerinin kalitesiyle sınırlıdır.

OpenAI'in VPT ajanı Minecraft'ta bir ağaç kesiyor

VPT hattı, t-1 karesine ve t+1 karesine bakarak t karesindeki eylemi tahmin eden bir Ters Dinamik Modeli (IDM) eğiterek veri sorununu çözer. IDM nedensel olmadığı için (gelecek kareleri görür), görev davranış klonlamadan daha kolaydır ve çok daha az etiketli veri gerektirir. 2.000 saatlik etiketli veri için yüklenicilere ~$2.000 ödediler, ardından 70.000 saatlik YouTube Minecraft videosunu pseudo-etiketlemek için IDM'yi kullandılar.

Ön eğitim verisi hacmine göre crafting/toplama oranı (log ölçek) : tezgahlar, tahta araçlar, taş araçlar

Ölçek etkisi nettir: 1 saatten 100.000 saate kadar ön eğitim verisinin log ölçeğinde, modelin tezgah, tahta araç ve taş araç üretme oranı kademeli olarak artar. Yalnızca yükleniciler tarafından etiketlenmiş 2.000 saat üzerinde eğitilen model, tezgahlarda takılı kalır; IDM tarafından pseudo-etiketlenmiş 70.000 saatin (grafikte kesikli çizgi) eklenmesiyle taş araçlar, tek bir RL adımı olmadan, sıfır atışla ortaya çıkar.

Ortaya çıkan 0,5B parametreli temel model, yalnızca RL ile imkansız olan sıfır atış yetenekleri elde etti: ağaç kesme, tezgah yapma, sütun atlama: ve RL ile ince ayar yapılarak elmas araçlar üreten ilk YZ oldu.

RL eğitim bölümlerine göre ödül : rastgele başlatılmış modele karşı ön eğitimli VPT modeli

Bu grafik, ön eğitimin sonraki RL için neden her şeyi değiştirdiğini gösterir. Rastgele başlatılmış bir ağdan başlayan RL (turuncu), neredeyse bir milyon bölüm boyunca 0'a yakın düz kalır: "elmas elde et" görevinin ödülü, saf bir ajanın rastgele keşifle denk gelmesi için çok seyrektir. Ön eğitimli VPT modelinden ince ayar yapılan RL (yeşil), zaten temel davranışla (madencilik, üretim, keşif) başlar ve yaklaşık 25 ödüle kadar istikrarlı bir şekilde yükselir; bu, elmas kazmaya giden tam yola karşılık gelir.

OpenAI'in VPT projesinin resmi video demoları, ajanı eylem halinde gösteriyor.

OpenAI Five : Ödül şekillendirme sorunu

OpenAI Five, insan profesyonellere karşı Dota 2 oynuyor

OpenAI Five (2019), saf kendi kendine oyun RL kullanarak Dota 2 dünya şampiyonlarını yendi: taklit öğrenimi yok. 256 GPU, 128.000 CPU çekirdeği, günde 180 yıllık oynanış, 10 aylık eğitim.

Ancak ödül fonksiyonu Dota uzmanları tarafından elle yapılmıştı: 20.000 özellikten 28'i, her biri elle ayarlanmış ağırlıklarla. Net değer, öldürmeler, ölümler, kule sağlığı, koridor atamaları: tümü insanlar tarafından seçilmiş ve ağırlıklandırılmış. Bu şekillendirme olmadan, ajan zar zor öğreniyordu (deney: yalnızca galibiyet/mağlubiyet ödülü → yarı profesyonel seviyede plato).

Videonun botu aynı sorunla karşı karşıya: ödül fonksiyonu, yaratıcının PvP'de neyin önemli olduğuna dair anlayışını kodlar (vuruş yapmak iyi, hasar almak kötü, nişanı korumak iyi). Bu kaçınılmazdır: RL'nin bir ödül sinyaline ihtiyacı vardır ve bu sinyali şekillendirmek insan yanlılığını kodlar.

DreamerV3 : Dünya modelleri ve seyrek ödüller

Tek bir yapılandırmayla 150'den fazla farklı görevde DreamerV3 benchmark puanları

DeepMind'in DreamerV3'ü (2023) üçüncü bir yaklaşım benimser. Davranış klonlama veya şekillendirilmiş RL yerine, bir dünya modeli öğrenir: geçmiş eylemlerden gelecekteki durumları ve ödülleri tahmin eden bir sinir ağı: ve olası gelecekler hakkında hayal kurarak plan yapar. İnsan verisi veya müfredat olmadan Minecraft'ta sıfırdan elmas toplayan ilk algoritmaydı, 2025'te Nature'da yayınlandı.

DreamerV3, gelecekteki yörüngeleri hayal etmek için bir dünya modeli öğrenir

Elmas ortamı, 12 kilometre taşı üzerinde seyrek bir ödül tanımlar (kütük → tahtalar → çubuk → tezgah → tahta kazma → yuvarlak taş → taş kazma → demir cevheri → fırın → demir külçe → demir kazma → elmas), her biri yalnızca bir kez +1 verir. Artı küçük bir sağlık ödülü (hp başına ±0,01). Ulaşılabilir toplam: 36.000 adımlık bir bölümde 11,1.

DreamerV3'ün dünya modeli, yörüngeleri hayal etmesine ve bunları dahili olarak değerlendirmesine olanak tanır: aktör, gerçek deneyimden ziyade hayal edilen rollout'lardan öğrenir ve her gerçek adım için binlerce olası geleceği test eder. Bu, standart bir RL ajanını öldürecek yerlerde seyrek ödülleri uygulanabilir kılar.

100 milyon ortam adımı için eğitilmiş 40 tohumda, 40'ın 24'ü en az bir elmas topladı. İlk elmas, 29 milyon adımdan sonra ortaya çıktı (bir GPU'da ~9 gün).

ANNA : Sembolik YZ Minecraft ile Buluşuyor

Bir çakmaktaşı için ANNA'nın görev ağacı ayrıştırması

Videonun PvP botundan, VPT ve DreamerV3'ten önce, ANNA vardı: tamamen farklı bir felsefeyle inşa edilmiş bir Minecraft botu. Piksellerden veya ödüllerden öğrenmek yerine, ANNA bir Fransız NLP ayrıştırıcısı ve elle yazılmış bir görev bağımlılık ağacı ile sembolik bir durum makinesi kullanır.

2022'de oluşturulan ("vibe coding" bir terim olmadan önce) ANNA, Mineflayer aracılığıyla bir Minecraft sunucusuna bağlanır ve Fransızca doğal dil komutlarını anlar. "obtiens un briquet" (bir çakmaktaşı al) deyin ve ANNA'nın ayrıştırıcısı fiili tanımlar (obtien → edin), eşya tarifine bakar ve onu yinelemeli olarak alt görevlere ayırır: meşe kütükleri çıkar → tahtalar yap → çubuklar yap → tezgah yap → tahta kazma yap → taş çıkar → taş kazma yap → demir cevheri çıkar → demir külçeler erit → çakmaktaşını yap.

Fransızca komut tanıma için ANNA'nın NLP ayrıştırıcı mimarisi

NLP katmanı (utils/id_parser.js), paralel emirleri işlemek için komutları "et" (ve) üzerinde böler, Fransızca fiilleri görev türlerine (craft, mine, tue, suis moi) eşler ve 5.000 girişlik bir sözlük aracılığıyla Fransızca eşya adlarını Minecraft ID'lerine çevirir. Tanınmayan komutlar, ANNA'yı bilinçli bir Minecraft arkadaşı olarak sunan GPT tabanlı bir sohbet sistemine düşer.

Görev ağacı (mc-tasks-tree/) çekirdektir: adım adım bir plan üretmek için Minecraft eşya grafiğinde (işçilik tarifleri, madencilik verimleri, yaratık düşüşleri, fırın tarifleri) gezinen özyinelemeli bir algoritma. Bir elmas kaskı için, ahşap, taş, demir ve elmas kademelerini kapsayan 40+ adımlık bir ayrıştırma üretir.

ANNA'nın elmas kask görev ağacı: 40+ adımlık bir ayrıştırma

Videonun PvP botu deneyimden öğrenirken, ANNA bilgiden çalışır. 1.000 düelloya veya 60 saatlik eğitime ihtiyacı yoktur: ağaca, ayrıştırıcıya ve sunucuya ihtiyacı vardır. Ancak ağacının kodladığının ötesine genelleme yapamaz. Hiçbir miktarda durum makinesi mühendisliği ona PvP yapmayı öğretmez.

ANNA'nın yaklaşımı, farklı bir YZ çağını yansıtır: uçtan uca öğrenmenin hakim olmasından önce, sembolik akıl yürütme ve dikkatli mühendisliğin zeki davranış üretebileceği vaadinin olduğu zaman. Bugün, ANNA ve PvP botu gibi projeler Minecraft YZ'sinin iki kutbunu temsil eder: biri dünya hakkında akıl yürütür, diğeri onu algılar.

Master Gumbo'nun Mace Botu : Yalnızca komut bloklarıyla YZ

Botla birlikte Mace PvP eğitim arenası

Minecraft YZ'sinin tamamen farklı bir köşesinde, YouTuber Master Gumbo, yalnızca komut bloklarını kullanarak bir PvP eğitim botu inşa etti: mod yok, eklenti yok, harici kod yok. Sadece vanilya Minecraft komutları, redstone ve oyuncu kopyası varlıkları için bir carpet modu. Sonuç, oyuncuyla breach swapping, wind charging ve kalkan mekanikleri yapan bir YZ mace PvP rakibidir.

Bot, kırılmaz teçhizatı ve ikinci elinde bir totemi olan bir zombi olarak başlar (her tick'te /item replace ile yeniden doldurulur), bu da onu etkili bir şekilde ölümsüz yapar. Daha sonra, Master Gumbo, zombilerin yapamayacağı insan benzeri mekanikleri (kalkan kaldırma, eşya değiştirme) destekleyen Carpet Mod'un oyuncu kopyası botlarına geçer.

Ayarlar merkezi: bot davranışını yapılandırmak için düğmeler

Temel yenilik, rastgelelik tarafından yönlendirilen bir durum makinesidir. Bir zırh askısı, varlıkları rastgele dağıtan /spreadplayers komutu kullanılarak renkli beton bloklardan oluşan bir dairenin üzerine ışınlanır. Zırh askısının nereye indiği, botun bir sonraki eylemini belirler:

  • Kırmızı beton → geriye doğru strafe
  • Mavi beton → yukarı doğru wind charge (saldırı)
  • Yeşil beton → kalkan kaldır
  • Beyaz beton → duraklama (eylemler arasına gecikme ekler)

YZ karar sistemi: renkli beton üzerinde bir zırh askısı

Zırh askısının konumu, altındaki bloğu algılayan ve ilgili mekanizmayı etkinleştiren komut blokları tarafından okunur. Her davranışı etkinleştirmek/devre dışı bırakmak için bir redstone bloğu yerleştirilir veya kaldırılır. /spreadplayers tekrar üzerinde çalıştığı için, bot sürekli olarak yeni kararlar alarak öngörülemez ancak yapılandırılmış davranış yaratır.

Master Gumbo buna "çok basit ve temel bir YZ biçimi" diyor: sinir ağları gibi etkileşimlerden öğrenmez, ancak rastgelelik + durum makinesi, komut dosyalı bir bottan tahmin edilmesi daha zor olan gerçekçi PvP davranışı üretir. Ayarlar merkezi, YZ'yi açıp kapatmak, zorluğu ayarlamak ve hareket modellerini yapılandırmak için bir kitap arayüzü içerir.

Botla eğitim aldıktan ve ardından (videonun girişinde) kendisine kötü diyen oyuncuyla düello yaptıktan sonra, Master Gumbo kazanır. Harita, Carpet Mod gerekliliğiyle Discord üzerinden paylaşılır.

Bir düelloda, mace PvP tekniklerini uygulayan bot

PvP botu (Kadambi) piksellerden öğrenir ve ANNA bir görev ağacı aracılığıyla akıl yürütürken, Master Gumbo'nun botu rasgeleleştirilmiş durum geçişleri aracılığıyla zeka elde eder: ikna edici bir PvP rakibi oluşturmak için sinir ağlarına ihtiyacınız olmadığını kanıtlayan saf bir komut bloğu yaklaşımı.

Altoclef : Görev Odaklı Minecraft YZ'si

Minecraft YZ'sinin bir başka köşesinde, Altoclef adlı bir bot tamamen farklı bir yaklaşım sunar. PvP yerine, oyuncuya yardım etmek için karmaşık görevleri otonom olarak tamamlamaya odaklanır. Altoclef, Fabric modu olarak çalışır ve Baritone kütüphanesini pathfinding için kullanır.

Altoclef'in kalbi, görev ağacı (task tree) sistemidir. Bir hedef verildiğinde (örneğin, "elmas kazma yap"), bot bunu adım adım alt görevlere ayırır: odun kes → tahtalar yap → çubuklar yap → tahta kazma yap → taş çıkar → taş kazma yap → demir cevheri çıkar → demir külçeler erit → elmas bul → elmas kazma yap. Her adım, Baritone'un pathfinding ve blok etkileşim yeteneklerini kullanarak yürütülür.

ANNA'dan farkı, Altoclef'in Java sınıfları (Java classes) ile doğrudan Minecraft'ın içinde çalışmasıdır. Bu, ona daha hızlı ve daha güvenilir blok etkileşimi sağlar. Baritone sayesinde, Altoclef karmaşık arazide gezinirken ANNA'dan daha yeteneklidir: mağaraları keşfedebilir, merdivenler çıkabilir ve su altında yüzebilir. Altoclef, birden fazla görevi aynı anda yürütmek için multithreading kullanır: bir iş parçacığı pathfinding ile ilgilenirken, diğeri envanter yönetimini ve işçilik tariflerini işler.

PvP botu piksellerden öğrenir, ANNA bir ayrıştırıcı aracılığıyla akıl yürütür, Mace Botu komut bloklarıyla çalışırken, Altoclef görev odaklı otomasyon ile Minecraft YZ'sine pratik bir yaklaşım getirir: sizin için eşyaları üreten, kaynakları toplayan ve yapılar inşa eden bir yardımcı.

Bunları birbirine bağlayan şey

Yaklaşım Temel yöntem Veri Hesaplama Sonuç
Videonun PvP botu RL + taklit öğrenimi 1.000 düello 1 dizüstü, 60s 100 vuruşluk combo
OpenAI Five Kendi kendine oyun RL Günde 180 yıl oynanış 256 GPU, 10 ay Dünya şampiyonu Dota 2
VPT Yarı denetimli IL 70K saat YouTube + IDM 720 GPU, 9 gün Elmas araçlar
DreamerV3 Dünya modeli RL Hayal edilen yörüngeler 1 GPU, 9 gün Sıfırdan elmas
ANNA Sembolik NLP + görev ağacı Elle yazılmış tarifler 1 dizüstü, anında Üretilebilir her eşya
Altoclef Baritone + task tree Minecraft tarifleri 1 sunucu, anında Otonom görev tamamlama
Mace Botu Komut bloğu durum makinesi Rastgele kararlar Vanilla MC, GPU yok Mace PvP eğitimi

Videonun botu kaynak açısından en kısıtlı olanıdır, ancak süreç hakkında en dürüst olanıdır. Önce başarısız olur, sonra yineler. Öğrendiklerini unutur, sonra yeniden öğrenir. 100 vuruşluk bir combo ile biter: ancak aynı zamanda inşa ettiği şeyin hile olup olmadığına dair bir soruyla.


Video : AI Learns Minecraft PvP - Kadambi | AI Engineering

VPT : Makale · Blog · GitHub

OpenAI Five : Makale · Blog

DreamerV3 : Makale · GitHub

ANNA : GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef : GitHub · (Fabric mod, Baritone, task tree)

Mace Botu : Video - Master Gumbo · (Command blocks, Carpet Mod, state machine)

L'IA impara il PvP di Minecraft -- Apprendimento per Imitazione, Reinforcement Learning e le 30 variabili che contano

1.000 duelli registrati, rete neurale addestrata sui pixel, 90% di precisione nei tasti : e il bot correva dritto contro un muro. Poi sono arrivati RL, curriculum learning e 60 ore di addestramento.

Introduzione

AI Learns Minecraft PvP thumbnail

C'è un video intitolato AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) di Kadambi | AI Engineering, ed è uno dei resoconti più onesti sull'addestramento di un'IA per giocare ai videogiochi che abbia mai visto.

La premessa: costruire un bot che giochi a PvP in Minecraft (kit spada, armatura di diamante incantata) osservando lo schermo e producendo comandi di mouse e tastiera. Niente lettura della memoria di gioco, niente macro, niente mod : solo pixel in ingresso, azioni in uscita.

Ciò che rende interessante il video non è il risultato finale. È il percorso: il fallimento dell'apprendimento per imitazione, la svolta del feature engineering, i cicli di catastrophic forgetting e le 60+ ore di addestramento su un laptop senza GPU.

Fase 1 : Apprendimento per Imitazione (il fallimento)

Il bot durante l'apprendimento per imitazione: di fronte a un muro, che salta su e giù

Il creatore ha iniziato con un approccio sensato: registrare 1.000 duelli del proprio gameplay, mappare ogni clic del mouse e pressione di tasto al fotogramma corrispondente, e addestrare una rete neurale a predire le azioni dai pixel.

# Pseudocodice per la pipeline di apprendimento per imitazione
dataset = record_duels(1000)          # centinaia di migliaia di fotogrammi
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predice tastiera/mouse dall'immagine

La rete ha imparato a predire i tasti con una precisione del 90%. Promettente.

Poi l'hanno testata in una partita reale. Il bot è andato dritto al bordo della mappa, si è messo davanti a un muro e ha iniziato a saltare su e giù.

Perché?

La trappola della pigrizia. In un combattimento PvP, il tasto W viene premuto quasi sempre. La rete ha capito di poter ottenere alta precisione semplicemente tenendo premuto W e non facendo altro. Ha ottimizzato per l'azione più comune a scapito di tutte le altre.

Latenza umana. Le azioni nel dataset sono ritardate di ~200ms dal tempo di reazione umano. Fotogramma per fotogramma, causa ed effetto sono quasi impossibili da apprendere per un modello dai pixel grezzi quando l'azione e la sua conseguenza visibile sono separate da più fotogrammi.

Dimostrazioni incoerenti. Il gameplay del creatore stesso variava: a volte strafava con la tastiera, a volte mirava con il mouse in situazioni identiche. Questo input contrastante ha confuso la rete.

Fase 2 : Reinforcement Learning con Curriculum

Il bot che impara a tracciare orizzontalmente durante l'addestramento RL

Abbandonando l'apprendimento per imitazione, il creatore è passato all'RL. Ma inserire un agente nuovo in un duello PvP completo è inutile: ci sono troppe cose che accadono contemporaneamente perché l'esplorazione casuale possa trovare qualcosa.

La soluzione: il curriculum learning. Isolare ogni meccanica e lasciare che il bot padroneggi le basi prima di entrare in un vero combattimento.

Passo 1 : Mira orizzontale (7 ore)

La funzione di ricompensa più semplice: ricompensa positiva per aver colpito, penalità negativa per aver subito danni.

Inizialmente, il bot si muove a malapena (rete neurale inizializzata con valori neutri). Oscilla da un lato all'altro: è il bot che testa azioni diverse per vedere quali danno ricompense.

Dopo un'ora, impara a centrarsi orizzontalmente, ma dolorosamente lentamente. Dopo 7 ore, riesce a seguire il nemico a sinistra e a destra, sebbene in modo asimmetrico (meglio a muoversi da destra a sinistra che da sinistra a destra, un comportamento che è persistito per tutto l'addestramento).

Passo 2 : Feature Engineering

La cattura dello schermo grezza era oltre 2 milioni di pixel. Anche ridimensionata a 360p, sono 200.000 input: un numero eccessivo per un apprendimento efficiente.

Il creatore ha analizzato migliaia di duelli e identificato 30 variabili che contano davvero, suddivise in tre gruppi:

Visione (tracciamento nemico) :

  • Distanza del nemico dal mirino
  • Dimensione del bounding box del nemico
  • Altezza del nemico
  • Stato del mirino (sul bersaglio/fuori bersaglio)
  • Velocità relativa

Invece di elaborare l'intera immagine, il bot filtra i pixel esclusivamente in base al colore dell'armatura del nemico, rendendo il rilevamento quasi istantaneo. Blocchi di sfondo di colore simile possono interferire: ma in Minecraft puoi semplicemente cambiare le texture.

OCR (lettura HUD) : Poiché il bot non può estrarre le coordinate dal codice del gioco, scansisce lo schermo in tempo reale per estrarre:

  • Inclinazione della telecamera (pitch)
  • Momentum
  • Livello Y

L'OCR standard fa fatica con il testo trasparente di Minecraft, quindi i dati critici vengono forzati in bianco e nero per una lettura istantanea.

Tempo (finestra di contesto) :

  • Tempo dall'ultimo colpo al nemico
  • Tempo dall'ultimo colpo subito
  • Buffer scorrevole delle azioni precedenti del bot

Questo fornisce alla rete un contesto temporale: senza di esso, il bot non ha idea se sia nel mezzo di una combo o stia appena iniziando un combattimento.

Passo 3 : Mira verticale (altre 7 ore)

Il bot che impara a mirare su e giù durante l'addestramento RL

Aggiungere il movimento verticale del mouse è stato "un disastro totale" all'inizio. Le prestazioni iniziali erano compromesse.

Dopo un'altra ora nella sandbox, il bot ha capito come guardare su e giù. Ma nel processo, ha completamente dimenticato come tracciare orizzontalmente.

Questo è il catastrophic forgetting: un classico problema del machine learning in cui l'ottimizzazione per nuovi dati sovrascrive le rappresentazioni apprese in precedenza. Ottimizzando per la mira verticale, la rete neurale ha accidentalmente sovrascritto il suo progresso orizzontale, lasciando al creatore un bot che riusciva a tenere il mirino in livello ma non a seguire un bersaglio.

Ci sono volute 6 ore aggiuntive per recuperare il tracciamento orizzontale mantenendo il controllo verticale. Il bot ha poi mantenuto un buon posizionamento del mirino grazie al gruppo OCR che estraeva l'inclinazione della telecamera.

Passo 4 : Controllo tastiera

Il bot che alterna costantemente il tasto W, imparando a impegnarsi nel movimento

Dare al bot il permesso di usare la tastiera ha reso le caratteristiche temporali ancora più critiche. All'inizio, il tasto W veniva attivato e disattivato continuamente: commutazione rapida perché la rete non aveva imparato a impegnarsi.

Questo comportamento è stato penalizzato, quindi il bot ha imparato a smussarlo. Ha iniziato a eseguire più sprint hit (il suono sordo vs il sibilo di un colpo da fermo). Alcune combo sembravano insoddisfacenti perché il bot sfruttava il suo vantaggio di portata rispetto al nemico.

Per rendere le cose più eque, il creatore ha aumentato la portata del nemico. Molte delle strategie apprese dal bot hanno smesso di funzionare. Ma con più tempo, si è adattato.

Passo 5 : Insegnare al bot quando cliccare

Per la fase finale, il creatore ha riportato l'apprendimento per imitazione: ma solo per insegnare i tempi del clic, non l'intera politica di controllo. Il bot cercava di imitare i pattern di clic dai duelli registrati.

Inizialmente era troppo spaventato per provare qualunque cosa, temendo la penalità per i clic sbagliati. Ma alla fine ha trovato il coraggio di colpire e fare centro. Ovviamente, ha dimenticato come mirare di nuovo nel processo: il creatore ha dovuto lasciarlo da solo per 50 ore in più per tornare a uno stato soddisfacente.

Il dibattito sul cheating

Il video si conclude chiedendo: questo bot sta barando?

L'argomentazione contro: il bot elabora solo ciò che vede un umano (stessi pixel), invia gli stessi input di tastiera e mouse di un umano (nessuna manipolazione di pacchetti come l'anti-knockback) e non legge la memoria di gioco (nessun X-ray o ESP).

L'argomentazione a favore: un bot può elaborare più velocemente di un umano, e se l'avversario pensa di giocare contro un umano ma non è così, questo è inganno.

Il parere del creatore: dipende dall'intento. Se entrambe le parti sanno che è un bot, è una partita leale. Il bot prosegue colpendo il nemico nel vuoto con una serie di 100 colpi.

Il risultato

Il bot che esegue una combo da 100 colpi

Un bot PvP di Minecraft addestrato su un laptop senza GPU, costruito su una pipeline di addestramento personalizzata con:

  • Cattura dello schermo per input pixel (2M+ pixel → 30 feature ingegnerizzate)
  • Curriculum learning (orizzontale → verticale → tastiera → clic)
  • RL per il controllo motorio + apprendimento per imitazione per i tempi di clic
  • Feature engineering sui pixel grezzi (3 gruppi: visione, OCR, tempo)
  • 60+ ore di addestramento in più fasi

Il tempo totale di addestramento è nell'ordine delle decine di ore, ma la maggior parte è passiva. Il bot traballa verso la comprensione, dimentica ciò che ha imparato, re-impara, e alla fine mette insieme una combo da 100 colpi.

Il video è su youtube.com/watch?v=j5nxDKAjg6U.


Questo articolo copre solo il contenuto del video. Per un contesto più ampio sull'IA di Minecraft: VPT, DreamerV3 e il panorama dell'apprendimento per imitazione vs RL: le sezioni sotto collegano questo progetto al campo più ampio.

VPT : Behavior Cloning su larga scala

Diagramma del progetto VPT di OpenAI: il modello di dinamica inversa predice le azioni da coppie di fotogrammi

L'approccio di "behavior cloning" del video (Fase 1) è la stessa tecnica usata da OpenAI nel progetto Video PreTraining (VPT), ma agli estremi opposti dello spettro di risorse. VPT ha dimostrato che l'apprendimento per imitazione funziona per Minecraft quando hai 70.000 ore di video, 720 GPU e un modello di dinamica inversa per pseudo-etichettare dati non etichettati. Il creatore qui ha dimostrato che fallisce con un laptop e 1.000 duelli: ma per la stessa ragione fondamentale: l'apprendimento per imitazione è limitato dalla qualità delle sue dimostrazioni.

L'agente VPT di OpenAI che abbatte un albero in Minecraft

La pipeline VPT risolve il problema dei dati addestrando un modello di dinamica inversa (IDM) che osserva il fotogramma t-1 e il fotogramma t+1 per predire l'azione al fotogramma t. Poiché l'IDM è non-causale (vede fotogrammi futuri), il compito è più facile del behavior cloning e richiede molti meno dati etichettati. Hanno pagato collaboratori circa ~$2.000 per 2.000 ore di dati etichettati, poi hanno usato l'IDM per pseudo-etichettare 70.000 ore di video Minecraft da YouTube.

Tasso di crafting/raccolta in funzione del volume di dati di pre-addestramento (scala log): tavoli da lavoro, utensili di legno, utensili di pietra

L'effetto di scala è netto: su un asse log da 1 ora a 100.000 ore di dati di pre-addestramento, il tasso al quale il modello costruisce un tavolo da lavoro, utensili di legno e poi utensili di pietra sale a gradini. Il modello addestrato solo sulle 2.000 ore etichettate dai collaboratori si ferma ai tavoli da lavoro; è aggiungendo le 70.000 ore pseudo-etichettate dall'IDM (linea tratteggiata sul grafico) che gli utensili di pietra emergono in zero-shot, senza una singola fase di RL.

Il modello foundation risultante da 0,5B parametri ha raggiunto capacità zero-shot che erano impossibili con il solo RL: tagliare alberi, creare tavoli da lavoro, pillar jumping: e messo a punto con RL, è diventato la prima IA a creare strumenti di diamante.

Ricompensa in funzione del numero di episodi di addestramento RL: partire da un modello inizializzato casualmente vs partire dal modello VPT pre-addestrato

Questo grafico mostra perché il pre-addestramento cambia tutto per l'RL successivo. L'RL partito da una rete inizializzata casualmente (arancione) rimane piatto vicino a 0 per quasi un milione di episodi: il compito "ottenere un diamante" ha una ricompensa troppo sparsa perché un agente ingenuo ci incappi per esplorazione casuale. L'RL fine-tunato dal modello VPT pre-addestrato (verde) parte già con il comportamento di base (minare, fabbricare, esplorare) e sale regolarmente fino a una ricompensa di circa 25, che corrisponde al percorso completo verso un piccone di diamante.

Demo video ufficiali del progetto VPT di OpenAI, che mostrano l'agente in azione.

OpenAI Five : Il problema del reward shaping

OpenAI Five che gioca a Dota 2 contro professionisti umani

OpenAI Five (2019) ha sconfitto i campioni del mondo di Dota 2 usando puro self-play RL: nessun apprendimento per imitazione. 256 GPU, 128.000 core CPU, 180 anni di gameplay al giorno, 10 mesi di addestramento.

Ma la funzione di ricompensa era artigianale, creata da esperti di Dota: 28 delle 20.000 feature disponibili, ciascuna con pesi regolati a mano. Patrimonio netto, uccisioni, morti, salute delle torri, assegnazioni di corsia: tutti selezionati e pesati da umani. Senza questo shaping, l'agente imparava a malapena (esperimento: ricompensa solo vittoria/sconfitta → plateau a livello semi-professionistico).

Il bot del video affronta lo stesso problema: la sua funzione di ricompensa codifica la comprensione del creatore di ciò che conta nel PvP (colpire è bene, subire danni è male, mantenere il mirino è bene). Questo è inevitabile: l'RL ha bisogno di un segnale di ricompensa, e modellare quel segnale codifica il bias umano.

DreamerV3 : Modelli del mondo e ricompense sparse

Punteggi benchmark di DreamerV3 su oltre 150 compiti diversi con una singola configurazione

DreamerV3 di DeepMind (2023) adotta un terzo approccio. Invece di behavior cloning o RL con shaping, impara un modello del mondo: una rete neurale che predice stati futuri e ricompense dalle azioni passate: e pianifica sognando futuri possibili. È stato il primo algoritmo a raccogliere diamanti in Minecraft da zero senza dati umani o curricula, pubblicato su Nature nel 2025.

DreamerV3 apprende un modello del mondo per immaginare traiettorie future

L'ambiente del diamante definisce una ricompensa sparsa su 12 traguardi (tronco → assi → bastone → tavolo da lavoro → piccone di legno → ciottolo → piccone di pietra → minerale di ferro → fornace → lingotto di ferro → piccone di ferro → diamante), ciascuno che dà +1 una sola volta. Più una piccola ricompensa per la salute (±0,01 per hp). Totale ottenibile: 11,1 in un episodio di 36.000 passi.

Il modello del mondo di DreamerV3 gli permette di immaginare traiettorie e valutarle internamente: l'attore impara da rollout sognati piuttosto che da esperienza reale, testando migliaia di futuri possibili per ogni passo reale. Questo rende le ricompense sparse fattibili dove ucciderebbero un agente RL standard.

Su 40 seed addestrati per 100M passi ambientali, 24 su 40 hanno raccolto almeno un diamante. Il primo diamante è apparso dopo 29M passi (~9 giorni su una GPU).

ANNA : IA simbolica incontra Minecraft

La decomposizione ad albero dei compiti di ANNA per un acciarino

Prima del bot PvP del video, prima di VPT e DreamerV3, c'era ANNA: un bot Minecraft costruito con una filosofia completamente diversa. Invece di imparare da pixel o ricompense, ANNA usa una macchina a stati simbolica con un parser NLP francese e un albero di dipendenze dei compiti scritto a mano.

Creato nel 2022 (prima che "vibe coding" fosse un termine), ANNA si connette a un server Minecraft tramite Mineflayer e comprende comandi in linguaggio naturale in francese. Dì "obtiens un briquet" (prendi un acciarino), e il parser di ANNA identifica il verbo (obtien → ottieni), cerca la ricetta dell'oggetto e la scompone ricorsivamente in sotto-compiti: estrai tronchi di quercia → crea assi → crea bastoni → crea un tavolo da lavoro → crea un piccone di legno → estrai pietra → crea un piccone di pietra → estrai minerale di ferro → fondi lingotti di ferro → crea l'acciarino.

Architettura del parser NLP di ANNA per il riconoscimento di comandi in francese

Il layer NLP (utils/id_parser.js) divide i comandi su "et" (e) per gestire ordini paralleli, mappa verbi francesi a tipi di compito (craft, mine, tue, suis moi) e traduce i nomi degli oggetti francesi in ID Minecraft attraverso un dizionario di 5.000 voci. I comandi non riconosciuti cadono in un sistema di conversazione basato su GPT che presenta ANNA come un compagno senziente di Minecraft.

L'albero dei compiti (mc-tasks-tree/) è il cuore: un algoritmo ricorsivo che percorre il grafo degli oggetti di Minecraft (ricette di crafting, rese minerarie, drop dei mob, ricette della fornace) per produrre un piano passo-passo. Per un elmo di diamante, genera una scomposizione in 40+ passi che attraversa i livelli legno, pietra, ferro e diamante.

Albero dei compiti per l'elmo di diamante di ANNA: una scomposizione in 40+ passi

Mentre il bot PvP del video impara dall'esperienza, ANNA funziona dalla conoscenza. Non ha bisogno di 1.000 duelli o 60 ore di addestramento: ha bisogno dell'albero, del parser e del server. Ma non può nemmeno generalizzare oltre ciò che il suo albero codifica. Nessuna quantità di ingegneria di macchine a stati gli insegnerebbe a fare PvP.

L'approccio di ANNA rispecchia un'epoca diversa dell'IA: prima che l'apprendimento end-to-end dominasse, quando la promessa era che il ragionamento simbolico combinato con un'attenta ingegneria potesse produrre comportamento intelligente. Oggi, progetti come ANNA e il bot PvP rappresentano due poli dell'IA di Minecraft: uno ragiona sul mondo, l'altro lo percepisce.

Il Mace Bot di Master Gumbo : IA con soli command block

L'arena di addestramento Mace PvP con il bot

In un angolo completamente diverso dell'IA di Minecraft, lo YouTuber Master Gumbo ha costruito un bot di addestramento PvP usando solo command block: niente mod, niente plugin, niente codice esterno. Solo comandi vanilla di Minecraft, redstone e un carpet mod per entità replica del giocatore. Il risultato è un avversario IA per mace PvP che pratica breach swapping, wind charging e meccaniche di scudo con il giocatore.

Il bot inizia come uno zombie con equipaggiamento infrangibile e un totem nella mano secondaria (riempito ogni tick tramite /item replace), rendendolo effettivamente immortale. Successivamente, Master Gumbo passa ai bot Carpet Mod's player replica, che supportano meccaniche umane (alzare lo scudo, cambiare oggetto) che gli zombie non possono fare.

Il centro impostazioni: pulsanti per configurare il comportamento del bot

L'innovazione principale è una macchina a stati guidata dalla casualità. Un armor stand viene teletrasportato sopra un cerchio di blocchi di cemento colorati usando il comando /spreadplayers, che disperde le entità casualmente. Dove atterra l'armor stand determina la prossima azione del bot:

  • Cemento rosso → strafe all'indietro
  • Cemento blu → wind charge verso l'alto (attacco)
  • Cemento verde → alza lo scudo
  • Cemento bianco → pausa (aggiunge ritardo tra le azioni)

Il sistema decisionale dell'IA: un armor stand su cemento colorato

La posizione dell'armor stand viene letta da command block che rilevano il blocco sottostante e attivano il meccanismo corrispondente. Un blocco di redstone viene posizionato o rimosso per abilitare/disabilitare ogni comportamento. Poiché /spreadplayers viene eseguito in ripetizione, il bot prende continuamente nuove decisioni, creando un comportamento imprevedibile ma strutturato.

Master Gumbo chiama questo "una forma molto semplice e basilare di IA": non impara dalle interazioni come le reti neurali, ma la casualità combinata con la macchina a stati produce un comportamento PvP realistico che è più difficile da prevedere di un bot scriptato. Il centro impostazioni include un'interfaccia a libro per attivare/disattivare l'IA, regolare la difficoltà e configurare i pattern di movimento.

Dopo essersi addestrato con il bot e aver poi duellato contro il giocatore che lo aveva definito scarso (nell'intro del video), Master Gumbo vince. La mappa è condivisa via Discord, con Carpet Mod richiesto.

Il bot in un duello, mentre pratica tecniche di mace PvP

Mentre il bot PvP (Kadambi) impara dai pixel e ANNA ragiona con un albero dei compiti, il bot di Master Gumbo raggiunge l'intelligenza attraverso transizioni di stato randomizzate: un approccio puro con command block che dimostra che non servono reti neurali per costruire un avversario PvP convincente.

Altoclef : Un mineratore IA con pianificazione basata su goal

Mentre tutti i progetti precedenti si concentrano sul combattimento o sulla sopravvivenza di base, Altoclef di Ga13c risolve un problema diverso: estrarre qualsiasi risorsa in Minecraft dato un obiettivo testuale. Non è un bot PvP e non usa pixel: è un agente IA strutturato che opera attraverso Fabric API direttamente nel client di Minecraft, controllando il giocatore attraverso il codice Java piuttosto che attraverso il riconoscimento dello schermo.

L'architettura di Altoclef è un task tree con un sistema di pianificazione inverso. Date una risorsa obiettivo (ad esempio "netherite ingot"), l'agente percorre all'indietro il grafo delle ricette e delle azioni di Minecraft: ha bisogno di un lingotto di netherite → servono frammenti di netherite grezzi e oro → serve un piccone di diamante per la netherite → servono diamanti → serve un piccone di ferro per i diamanti. Il sistema si ferma solo quando raggiunge risorse ottenibili direttamente (legno, pietra, terra) e a quel punto esegue i compiti con Baritone, un pathfinding algorithm open-source che naviga nel mondo e interagisce con i blocchi.

L'agente gestisce:

  • Inferenza automatica delle ricette: a partire da un obiettivo testuale, Altoclef costruisce l'intera catena di crafting senza alcuna codifica manuale.
  • Task progress tracking: utilizza lo stato del mondo e dell'inventario letti direttamente dalle classi Java di Minecraft per sapere se un sotto-compito è completo o fallito.
  • Pianificazione adattiva: se un componente della ricetta non è disponibile, l'albero dei compiti si espande automaticamente per estrarlo o craftarlo.
  • Esecuzione parallela: compiti indipendenti (ad esempio raccogliere legno e pietra contemporaneamente) possono essere eseguiti insieme per risparmiare tempo.

A differenza di ANNA, che opera tramite Mineflayer su un server esterno e usa NLP francese per l'interpretazione dei comandi, Altoclef gira come mod Fabric nel client di Minecraft vero e proprio. Non cattura schermate, non elabora pixel, non addestra reti neurali: legge direttamente lo stato del gioco dalle classi Java e invoca Baritone per la navigazione. È il più vicino a un "vero giocatore automatico" tra tutti i progetti qui discussi.

Tuttavia, Altoclef ha dei limiti. Non impara dall'esperienza (non usa RL), non riconosce oggetti visivamente e non è progettato per il PvP. La sua forza è la pianificazione sistematica della progressione. Per survival automation e speedrunning di progressione tecnologica è eccellente, ma non ti aiuterà in un duello.

Altoclef rappresenta il polo simbolico-procedurale dello spettro dell'IA di Minecraft: conoscenza codificata come albero dei compiti, esecuzione affidata a un pathfinding terzo, percezione tramite API di gioco anziché visione artificiale.

Cosa li unisce

Approccio Metodo principale Dati Calcolo Risultato
Bot PvP del video RL + apprendimento per imitazione 1.000 duelli 1 laptop, 60h Combo da 100 colpi
OpenAI Five Self-play RL 180 anni di gameplay/giorno 256 GPU, 10 mesi Campione mondiale Dota 2
VPT IL semi-supervisionato 70K ore YouTube + IDM 720 GPU, 9 giorni Strumenti di diamante
DreamerV3 World model RL Traiettorie sognate 1 GPU, 9 giorni Diamante da zero
ANNA NLP simbolico + albero compiti Ricette scritte a mano 1 laptop, istantaneo Qualsiasi oggetto creabile
Altoclef Task tree con Baritone + Fabric Goal testuale → catena ricette Client Minecraft, nessuna GPU Estrazione automatica di risorse
Mace Bot Macchina a stati con command block Decisioni randomizzate MC vanilla, nessuna GPU Addestramento Mace PvP

Il bot del video è il più vincolato dalle risorse ma il più onesto riguardo al processo. Prima fallisce, poi itera. Dimentica ciò che ha imparato, poi re-impara. Finisce con una combo da 100 colpi: ma anche con una domanda su se ciò che ha costruito sia barare.


Video : AI Learns Minecraft PvP di Kadambi | AI Engineering

VPT : Paper · Blog · GitHub

OpenAI Five : Paper · Blog

DreamerV3 : Paper · GitHub

ANNA : GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef : GitHub · (Fabric mod, Baritone, task tree, goal-oriented mining)

Mace Bot : Video di Master Gumbo · (Command blocks, Carpet Mod, state machine)

KI lernt Minecraft PvP -- Imitation Learning, Reinforcement Learning und die 30 Variablen, die zählten

1.000 Duelle aufgezeichnet, neuronales Netzwerk auf Pixeln trainiert, 90 % Tastaturgenauigkeit : und der Bot rannte gegen eine Wand. Dann kamen RL, Curriculum Learning und 60 Stunden Training.

Einführung

AI Learns Minecraft PvP thumbnail

Es gibt ein Video namens AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) von Kadambi | AI Engineering, und es ist einer der ehrlichsten Berichte über das Training einer spielenden KI, die ich gesehen habe.

Die Idee: einen Bot bauen, der Minecraft PvP spielt (Schwert-Kit, vollverzauberte Diamantrüstung), indem er den Bildschirm ansieht und Maus- und Tastaturbefehle ausgibt. Kein Lesen des Spielspeichers, keine Makros, keine Mods : nur Pixel hinein, Aktionen heraus.

Was das Video interessant macht, ist nicht das Endergebnis. Es ist der Weg: das Scheitern des Imitation Learning, der Feature-Engineering-Pivot, die Zyklen des katastrophalen Vergessens und die 60+ Stunden Training auf einem Laptop ohne GPU.

Phase 1: Imitation Learning (das Scheitern)

The bot during imitation learning: facing a wall, jumping up and down

Der Ersteller begann mit einem vernünftigen Ansatz: 1.000 Duelle des eigenen Gameplays aufzeichnen, jeden Mausklick und Tastendruck dem entsprechenden Bild zuordnen und ein neuronales Netzwerk trainieren, um Aktionen aus Pixeln vorherzusagen.

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

Das Netzwerk lernte, Tastenanschläge mit 90 % Genauigkeit vorherzusagen. Vielversprechend.

Dann testete man es in einem echten Match. Der Bot lief direkt zum Rand der Karte, stellte sich vor einer Wand und hüpfte auf und ab.

Warum?

Die Faulheitsfalle. In einem PvP-Kampf wird die W-Taste die meiste Zeit gedrückt. Das Netzwerk erkannte, dass es hohe Genauigkeit erreichen konnte, indem es einfach W gedrückt hält und sonst nichts tut. Es optimierte auf die häufigste Aktion auf Kosten aller anderen.

Menschliche Latenz. Aktionen im Datensatz sind um etwa 200 ms menschlicher Reaktionszeit verzögert. Zwischen den Einzelbildern ist Ursache und Wirkung für ein Modell fast unmöglich aus Rohpixeln zu lernen, wenn die Aktion und ihre sichtbare Konsequenz durch mehrere Einzelbilder getrennt sind.

Innkonsquenzen Demonstrationen. Das eigene Gameplay des Erstellers variierte: manchmal mit der Tastatur strafen, manchmal mit der Maus zielen in identischen Situationen. Diese widersprüchlichen Eingaben verwirrten das Netzwerk.

Phase 2: Reinforcement Learning mit Curriculum

The bot learning to track horizontally during RL training

Nachdem er das Imitation Learning aufgegeben hatte, wechselte der Ersteller zu RL. Aber einen frischen Agenten in ein volles PvP-Duell zu werfen, ist nutzlos: es passiert zu viel auf einmal, als dass zufällige Erkundung etwas finden könnte.

Die Lösung: Curriculum Learning. Jede Mechanik isolieren und den Bot die Grundlagen meistern lassen, bevor er in ein echtes Duell eintritt.

Schritt 1: Horizontales Zielen (7 Stunden)

Die einfachste Belohnungsfunktion: positive Belohnung für einen Treffer, negative Strafe für erlittenen Schaden.

Zunächst bewegt sich der Bot kaum (neuronales Netzwerk auf neutrale Werte initialisiert). Er zittert hin und her: der Bot testet verschiedene Aktionen, um zu sehen, welche Belohnungen geben.

Nach einer Stunde lernt er, sich horizontal zu zentrieren, aber quälend langsam. Nach 7 Stunden kann er dem Feind links-rechts folgen, wenn auch asymmetrisch (besser beim Bewegen von rechts nach links als von links nach rechts, ein Verhalten, das während des gesamten Trainings bestehen blieb).

Schritt 2: Feature Engineering

Die rohe Bildschirmaufnahme umfasste über 2 Millionen Pixel. Selbst auf 360p herunterskaliert sind das 200.000 Eingaben: viel zu viele für effizientes Lernen.

Der Ersteller analysierte tausende Duelle und identifizierte 30 Variablen, die wirklich zählen, in drei Gruppen:

Vision (Feindverfolgung) :

  • Entfernung des Feindes vom Fadenkreuz
  • Größe des Begrenzungsrahmens des Feindes
  • Höhe des Feindes
  • Fadenkreuzzustand (auf/von Ziel)
  • Relative Geschwindigkeit

Anstatt das gesamte Bild zu verarbeiten, filtert der Bot Pixel streng nach der Rüstungsfarbe des Feindes, was die Erkennung nahezu augenblicklich macht. Ähnlich gefärbte Hintergrundblöcke können dies stören: aber in Minecraft kann man einfach die Texturen ändern.

OCR (HUD-Lesien) : Da der Bot keine Koordinaten aus dem Spielcode abrufen kann, scannt er den Bildschirm in Echtzeit, um Folgendes zu extrahieren:

  • Kameraneigung (Pitch)
  • Momentum
  • Y-Höhe

Standard-OCR hat Schwierigkeiten mit Minecrafts transparentem Text, daher werden kritische Daten für sofortiges Lesen auf Schwarzweiß gezwungen.

Zeit (Kontextfenster) :

  • Zeit seit Sie den Feind getroffen haben
  • Zeit seit er Sie getroffen hat
  • Laufpuffer der eigenen vorherigen Aktionen des Bots

Dies gibt dem Netzwerk einen zeitlichen Kontext: ohne ihn hat der Bot keine Ahnung, ob er sich mitten in einer Kombination befindet oder gerade einen Kampf beginnt.

Schritt 3: Vertikales Zielen (weitere 7 Stunden)

The bot learning to aim up and down during RL training

Das Hinzufügen vertikaler Mausbewegungen war anfangs « eine totale Katastrophe ». Die anfängliche Leistung war kaputt.

Nach einer weiteren Stunde im Sandbox lernte der Bot, wie man nach oben und unten schaut. Aber dabei vergaß er völlig, wie man horizontal verfolgt.

Das ist das katastrophale Vergessen: ein klassisches Problem des maschinellen Lernens, bei dem die Optimierung für neue Daten zuvor gelernte Repräsentationen überschreibt. Durch die Optimierung auf vertikales Zielen überschrieb das neuronale Netz versehentlich seine horizontalen Fortschritte, sodass der Ersteller einen Bot hatte, der zwar sein Fadenkreuz waagerecht halten, aber kein Ziel verfolgen konnte.

Es dauerte 6 weitere Stunden, um die horizontaleensuite Vertition wiederzuerlangen unteron gleichzeitiger Beibehaltung der vertikalen Steuerung. Der Bot behielt dann eine gute Fadenkreuzpositionierung dank der OCR-Gruppe bei, die die Kameraneigung extrahierte.

Schritt 4: Tastaturssteuerung

The bot toggling the W key constantly, learning to commit to movement

Dem Bot die Erlaubnis zur Tastaturnutzung zu geben, machte dieMöglichkeit zeitbasiertenich die zeitbasierten Funktionen noch kritischer. Zunächst wurde die W-Taste ständig ein- und ausgeschaltet: schnelles Umschalten, weil das Netzwerk nicht gelernt hatte, sich zu committen.

Dieses Verhalten wurde bestraft, also lernte der Bot, es zu glätten. Er begann mehr Sprungtreffer zu landen (das dumpfe Geräusch versus das Schwirren eines stehenden Schlags). Manche Kombos sahen unbefriedigend aus, weil der Bot seine Reichweitenvorteil gegenüber dem Feind ausnutzte.

Um die Chancen auszugleichen, erhöhte der Ersteller die Reichweite des Feindes Viele der erlernten Strategien des Bots funktionierten nicht mehr. Aber mit mehr Zeit passte er sich an.

Schritt 5: Dem Bot beibringen, wann er klicken soll

Für die letzte Phase brachte der Ersteller das Imitation Learning zurück allerdings nur, um das Klick-Timing zu lehren, nicht die vollständige Steuerungspolik. Der Bot versuchte, die Klickmuster aus den aufgezeichneten Duellen nachzuahmen.

Anfangs hatte er zu viel Angst, etwas zu probieren, aus Furcht vor der Strafe für falsche Klicks. Aber schließlich überwand er die Scheu, zu schlagen und Treffer zu landen. Natürlich vergaß er dabei wieder das Zielen: Der Ersteller musste ihn für weitere 50 Stunden in Ruhe lassen, um wieder einen zufriedenstellenden Zustand zu erreichen.

Die Betrugsdebatte

Das Video endet mit der Frage: Betrügt dieser Bot?

Das Gegenargument: Der Bot verarbeitet nur das, was ein Mensch sieht (gleiche Pixel), sendet die gleichen Tastatur-/Mauseingaben wie ein Mensch (keine Paketmanipulation wie Anti-Knockback) und liest keinen Spielspeicher (kein Röntgensicht oder ESP).

Das Fürargument: Ein Bot kann schneller verarbeiten als ein Mensch, und wenn der Gegner denkt, er spielt gegen einen Menschen, aber das nicht der Fall ist, ist das Täuschung.

Die Meinung des Erstellers: Es hängt von der Absicht ab. Wissen beide Parteien, dass es ein Bot ist, ist es ein faires Match. Der Bot stößt den Gegner mit 100-Treffern-Serie ins Void.

Das Ergebnis

The bot executing a 100-hit combo

Ein Minecraft PvP Bot, trainiert auf einem Laptop ohne GPU, basierend auf einer eigenen Trainingspipeline mit:

  • Bildschirmerefassung für Pixel-Eingabe (2M+ Pixel → 30 entwickelteenzene Merkmale)
  • Curriculum Learning (horizontal → vertikal → Tastatur → Klicken)
  • RL für Motorkontrolle + Imitation Learning für Klick-Timing
  • Feature Engineering über Rohpixel (3 Gruppen: Vision, OCR, Zeit)
  • 60+ Schnitt Traingsstunden über mehrere Phasen

Die Gesamtszeinerie liegtigen Zeit liegt im zweistelligen Stundenbereich, aber das meiste ist passiv Der Bot zittert sich zum Verständnis, vergisst, was er gelernt hat, lernt es neu und schmiedet schließlich eine 100-Treffer-Kombo zusammen.

Das Video ist auf youtube.com/watch?v=j5nxDKAjg6U.


Dieser Artikel behandelt nur den Inhalt des Videos. Für einen breiteren Kontext zu Minecraft-KI: VPT, DreamerV3 und die Landschaft von Imitation Learning vs. RL: Die folgenden Abschnitte verbinden dieses Projekt mit dem weiteren Feld.

VPT: Behavior Cloning in großem Maßstab

OpenAI's VPT project diagram : the Inverse Dynamics Model predicts actions from pairs of frames

Der « Behavior Cloning »-Ansatz des Videos (Phase 1) ist die gleiche Technik, die OpenAI in seinem Video PreTraining (VPT)-Projekt verwendete, aber an entgegengesetzten Enden des Ressourcenspektrums. VPT bewies, dass Imitation Learning für Minecraft funktioniert, wenn man 70.000 Stunden Video, 720 GPUs und ein Inverse Dynamics Model hat, das nicht gelbelte Daten pseud-belabelt. Der Ersteller hier bewies, dass es mit einem Laptop und 1.000 Duellen scheitert: aber aus demselden Grund: Imitation Learning ist durch die Qualität seiner Demonstrationen begrenzt.

OpenAI's VPT agent mining a tree in Minecraft

Die VPT-Pipeline löst das Datenproblem, indem ein Inverse Dynamics Model (IDM) trainiert wird, das sich Bild t-1 und Bild t+1 ansieht, um die Aktion zu Bild t vorherzusagen. Da das IDM nicht-kausal ist (es sieht zukünftige Bilder), ist die Aufgabe einfacher als Behavior Cloning und erfordert weit weniger gelabelte Daten. Sie zahlten Auftragnehmern ~2.000 $ für 2.000 Stunden gelabelter Daten und verwendeten dann das IDM, um 70.000 Stunden YouTube-Minecraft-Videos pseudozu beladen.

Crafting-/Abbaurate in Abhängigkeit von der Pre-Training-Datenmenge (log-Skala): Werkbänke, Holzwerkzeuge, Steinwerkzeuge

Der Skalierungseffekt ist deutlich: Auf einer log-Achse von 1 Stunde bis 100.000 Stunden Pre-Training-Daten steigt die Rate, mit der das Modell eine Werkbank, Holzwerkzeuge und dann Steinwerkzeuge herstellt, stufenweise an. Das nur auf den 2.000 von Auftragnehmern gelabelten Stunden trainierte Modell erreicht maximal Werkbänke; erst durch die Hinzunahme der 70.000 vom IDM pseudo-gelabelten Stunden (gestrichelte Linie im Diagramm) entstehen Steinwerkzeuge zero-shot, ohne einen einzigen RL-Schritt.

Das resultierende 0,5B-Parameter-Basismodell erzielte Zero-Shot-Fähigkeiten, die mit RL allein unmöglich waren: Bäume fällen, Tische herstellen, Spzier-springen: und mit RL verfeinert, wurde es zur ersten KI, die Diamantwerkzeuge herstellte.

Belohnung in Abhängigkeit von der Anzahl der RL-Trainingsepisoden: Zufällig initialisiertes Modell vs. vortrainiertes VPT-Modell

Dieses Diagramm zeigt, warum Pre-Training alles für das nachgelagerte RL verändert. Das RL mit einem zufällig initialisierten Netzwerk (orange) bleibt nahe Null für fast eine Million Episoden flach: Die Aufgabe «einen Diamanten beschaffen» hat eine zu spärliche Belohnung, als dass ein naiver Agent durch zufällige Erkundung darauf stoßen könnte. Das vom vortrainierten VPT-Modell fine-getunte RL (grün) startet bereits mit Basisverhalten (abbauen, herstellen, erkunden) und steigt stetig auf eine Belohnung von etwa 25 an, was dem vollständigen Weg zu einer Diamantspitzhacke entspricht.

Offizielle Video-Demos des VPT-Projekts von OpenAI, die den Agenten in Aktion zeigen.

OpenAI Five: Das Problem der Belohnungsstrukturierung

OpenAI Five playing Dota 2 against human professionals

OpenAI Five (2019) besiegte die Dota 2-Weltmeister mit purem Selbstspiel-RL: kein Imitation Learning. 256 GPUs, 128.000 CPU-Kerne, 180 Jahre Spielspielzeit pro Tag, 10 Monate Training.

Aber die Belohnungsfunktion wurde von Dota-Experten handgefertigt: 28 von 20.000 verfügbaren Merkmalen, jedes mit hand-abgestimmten Gewichten. Vermögen, Kills, Tode, Turmgesundheit, Bahsen: alle von Menschen ausgewählt und gewertet. Ohne diese Strukturierung lernte der Agent kaum (Experiment: Belohnung nur Sieg/Niederlage → Plateau auf semiprofi Niveau).

Der Bot aus dem Video steht vor dem gleichen Problem: Seine Belohnungsfunktion kodiert das Verständnis des Erstellers davon, worauf es im PvP ankommt (Treffer gut, Schaden nehmen schlecht, Fadenkreuz und Tor halten gut). Das ist unvermeidlich: RL braucht ein Belohnungssignal, und die Formung dieses Signals kodiert menschliche Verzerrung.

DreamerV3: Weltmodelle und spärliche Belohnungen

DreamerV3 benchmark scores across over 150 diverse tasks with a single configuration

DeepMinds DreamerV3 (2023 verfolgt einen dritten Ansatz. Anstatt Behavior Cloning oder geformtem RL, lernt es ein Weltmodell: ein neuronales Netzwerk, das zukünftige Zustände und Belohnungen aus vergangenen Aktionen und plant, indem es über mögliche Zukünfte träumt. Es war der erste Algorithmus der Diamanten in Minecraft von Grund auf ohne menschliche Daten oder Curricula sammelte, veröffentlicht in Nature 2025.

DreamerV3 learns a world model to imagine future trajectories

Die Diamant-Umgebung definiert eine spärliche Belohnung über 12 Meilensteine (Stamm → Breter Stock → Werkbank → Holzspitzhacke → Bruchstein → Steinspitzhacke → Eisenerz → Ofen → Eisenbarren → Eisenspitzhacke → Diamant), die jeweils +1 genau einmal geben. Plus eine kleine Gesundheitsbelohnung (±0,01 pro HP). Gesamt erreichbar: 11,1 in 36.000 Schritten.

DreamerV3s Weltmodell erlaubt es sich, Trajektorien vorzustellen und intern zu bewerten: Der Agent lernt von geträumten Rollouts anstatt von echter Erfahrung und testet tausende mögliche Zukünfte für jeden echten Schritt. Dies machen spärliche Belohnungen machbar, wo sie einen Standard-RL-Agenten zerstören würden.

Über 40 Seeds, trainiert für 100M Umgebungsschritte, sammelten 24 von 40 mindestens einen Diamanten. Der erste Diamant erschien nach 29M Schritten (~9 Tage auf einer GPU).

ANNA: Symbolische KI trifft Minecraft

ANNA's task tree decomposition for a flint-and-steel

Vor dem PvP-Bot des Videos, vor VPT und DreamerV3, gab es ANNNA: einen Minecraft-Bot mit einer ganz anderen Philosophie. Statt aus Pixeln oder Belohnungen zu lernen, verwendet ANNA eine symbolische Zustandsmaschine mit einem französischen NLP-Parser und einem handgeschriebenen Aufgabenabhängigkeitsbaum.

Erstellt im Jahr 2022 (bevor « Vibe Coding » ein Begriff war), verbindet sich ANNA via Mineflayer mit einem Minecraft-Server und verstehteutschsprachliche Befehle auf Französisch. Sage « obtiens un briquet » (besorge einen Feuerzeug), und ANNE Parser identifiziert das Verb (obtien → besorgen), schlägt das Gegenstandsrezept nach und zerlegt es rekursiv in Unteraufgaben: Eichenstämme abbauen → Bretter herstellen → Stöcke herstellen → Werkbank herstellen → Holzspitzhacke → Stein brechen → Steinspitzhacke herstellen → Eisenerz abbauen → Eisen– Barren schmelzen → den Feuerzeug herstellen.

ANNA's NLP parser architecture for French command recognition

Die NLP-ebene (utils/id_parser.js) zerlegt Befehle an « et » (und), um parallele Aufträge zu handndeln, ordnet französische Verben Aufgabentypen (craft, mine, tue, suis-moi) zu und übersetzt französische Gegenstandsnamen in Minecraft-IDs durch ein 5.000 Einträge Wörterbuch. Unerkannte Befehle fallen durch ein GPT-basierten Konversationssystem, das ANNA als einen menschlichen Miencraft-Begleiter agieren lässt.

Der Aufgabenbaum (mc-tasks-tree/) ist der Kern: ein rekursiver Algorithmus, der durch den Minecraft-Gegenstandgraph geht (Herstellungsrezepte, Abbauteile, Mob-Drops, Ofenrezepte), um einen schrittweisen Plan zu erstellenn. Für einen Diamanthelm generiert er eine 40+ Schritte umfassende Aufgliederung über die Stufen Holz, Stein, Eisen und Diamant.

ANNA's diamond helmet task tree : a 40+ step breakdown

Wo der PvP-Bot aus den Video aus Erfahrung lernt, arbeitet ANNA aus Wissen. Er braucht nicht 1.000 Duelle oder 60 Stunden Training: er braucht den Baum, den Parser und dem Server. Aber er kann auch nicht über das hinaus verallgemeinern, was sein Baum kodiert. Keine Maschinenzustandstechnik wird ihn zu PvP lernen lassen.

ANNAs Ansatz spiegelt eine andere Ära der KI wider: bevor das End-to-End-Lernen dominierte, als das Versprechen war, dass symbolisches Denken + sorgfältige Ingenieursarbeit intelligentes Verhalten erzeugen könnte. Dennoen, Projekte wie ANNA und der PvP-Bot repräsentieren zwei Pole der Minecraft-KI: Einer denkt über die Welt nach, der andere nimmt sie wahr.

Master Gumbos Mace Bot: KI nur mit Befehlsblöcken

The Mace PvP training arena with the bot

In einer ganz anderen Ecke der Minecraft-KI bitte der YouTuber Master Gumbo einen PvP-Trainings-Bot mit nur Befehlsblöcken : keine Mods, keine Plugins, kein externer Code. Nur Vanilla-Minecraft-Befehle, Redstone und ein Teppich-Mod für Spielerreplika-Einheiten. Das Ergebnis ist ein KI-Mace-PvP-Gegner der mit dem Spieler Brechwechsel, Windbogen und Schildtechen übt.

Der Bot beginnt als Zombie mit unzerbrechlicher Ausrüstung und einem Totem in der Zweithand (alle Takte über /item replace ersetzt), was ihn faktisch unsterblich macht. Später wechselt Master Gumbo zu Teppich-Mod-Spielerreplika-Bots, die menschenähnliche Techniken (Schildheben, Gegenstandwechsel) unterstützen, die Zombies nicht können.

The settings center : buttons to configure bot behavior

Die Keminnovation ist eine durch Zufall gesteuerte Zustandsmaschine. Ein Rüstungsständer wird über einem Kreis aus farbigen Betonblöcken mit dem Befehl /spreadplayers teleportiert, der Einheiten zufällig verteilt. Die Farbe des Betonstücks, auf dem der Rüstungsständer landet, bestimmt die nächste Aktion des Bots:

  • Roter Beton → seitwärts rückwärts
  • Blauer Beton → Windladung aufwärts (Angriff)
  • Grüner Beton → Schild heben
  • Weißer Beton → Pause (Verzögerung zwischen Aktionen)

The AI decision system : an armor stand on colored concrete

Die Position des Rüstungsständers wird von Befehlsblöcken gelesen, die den Block darunter erkennen und den entsprechenden Mechanimus aktivieren. Ein Redstone-Block wird platziert oder entfernt, um jedes Verhalten ein- auszuschalten. Da /spreadplayers wiederholt läuft, trifft der Bot kontinuierlich neue Entscheidungen, was unvorhersehbares, aber strukturiertes Verhalten erzeugt.

Master Gumbo nennt das eine « sehr einfache und grundlegende Form von KI »: es lernt nicht aus Interaktionen wie neuronale Netzwerke, aber die Zufälligkeit + Zustandsmaschine erzeugt realisteschneidener Nachrichtsendes PvP– Verhalten, das schwerer vorherzusagen ist als ein skripter Bot. Das Figurationszentrum enthält eine Buch Schnittstelle, um KI ein/auszuschalten,Schwierigkeit anzupassen und Bewegungsteile zu konfigurieren.

Nach dem Training mit dem Bot und dann einem Duell gegen den Spieler, der ihn (in der Video-Intro) schlecht nannte, gewinnt Master Gumbo. Die Karte wird über Discord geteilt, Carpet Mod erforderlich.

The bot in a duel, practicing mace PvP techniques

Wo der PvP-Bot (Kadambi) aus Pixeln lernt und ANNA durch Aufgabenbäume überlegt, erreicht Master Gambos Bot Intelligenz durch zufällige Zustandsübergänge: eine reine Befehlsblock-Ansatz, der beweist, dass man keine neuronalen Netzwerke braucht, um einen überzeugenden PvP-Gegner zu bauen.

Altoclef : Baritone + Aufgabenbaum im großen Maßstab

Wenn ANNA ein symbolischer Bot ist, der liest, um zu wissen, was zu tun ist, und der Mace Bot Entscheidungen randomisiert, dann ist Altoclef ein vollständig autonomer Agent, der seinen Weg durch das gesamte Spiel plant. Gebaut von gaucho-matero als Fabric-Mod und angetrieben von Baritone Pathfinding, zerlegt Altoclef jedes Minecraft-Ziel in einen Aufgabenbaum und führt ihn ohne menschliches Zutun aus.

Die Schnittstelle ist täuschend einfach : gib @gamer im Chat ein, und Altoclef beginnt die Beat-the-Game-Aufgabe in einer Überlebenswelt. Es sammelt Holz, craftet Werkzeuge, baut Eisen und Diamant ab, errichtet ein Nether-Portal, sammelt Lohenruten und Enderperlen, findet die Festung und tötet den Enderdrachen. Völlig autonom, durch den nativen Minecraft-Client, auf jedem Vanilla-Server.

Unter der Haube wird dies durch ein rekursives Task-Tree-System erreicht, bei dem jedes hochrangige Ziel (z. B. »craft eine Diamantspitzhacke«) in Vorbedingungen zerlegt wird : Diamant abbauen → schmelzen → Stöcke craften → kombinieren. Der Baum durchläuft den vollständigen Minecraft-Rezeptgraphen und verarbeitet Produktionsketten, Mob-Drops, Loot-Tabellen und Containerzugriff. Anders als ANNAs handgeschriebener Baum sind Altoclefs Aufgaben programmierbare Java-Klassen, die beliebige Logik implementieren können : Kampfstrategien, Handeln mit Piglins, Erkundungsmuster.

Die entscheidende architektonische Erkenntnis ist die Trennung von Was (dem Aufgabenbaum) und Wie (Baritone Pathfinding). Baritone übernimmt die niedrige Bewegungssteuerung : Pfadfindung, Hindernisvermeidung, Blockabbau, Inventarverwaltung -- während das Task-System den hochrangigen Plan orchestriert. Diese Modularität bedeutet, dass keine der Komponenten KI sein muss : beide sind deterministische Algorithmen, doch ihre Kombination erzeugt komplexes, zielgerichtetes Verhalten, das mit gelernten Ansätzen konkurriert.

Altoclef repräsentiert die Grenze der reinen symbolischen Minecraft-KI : es kann das Spiel von Grund auf schlagen, mit null Training, null GPUs und null menschlichen Daten, aber es kann sich nicht an Aufgaben anpassen, die seine Programmierer nicht vorausgesehen haben, und es kann nicht aus Erfahrung lernen. Es weiß, wie man eine Diamantspitzhacke herstellt, weil eine Java-Klasse ihm genau sagt, wie, nicht weil es selbst darauf gekommen ist.

Was sie verbindet

Ansatz Kernmethode Daten Berechnung Ergebnis
Video-PvP-Bot RL + Imitation Learning 1.000 Duelle 1 Laptop, 60h 100-Treffer-Kombo
OpenAI Five Selbstspiel-RL 180 Jahre Spiel/Tag 256 GPUs, 10 Mon. Weltmeister Dota 2
VPT Semiüberwachten IL 70K h YouTube – IDM 720 GPUs, 9 Tage Diamantwerkzeuge
DreamerV3 Weltmodell RL Geträumte Bahnen 1 GPU, 9 Tage Diamanten von Null
ANTA Symbol NLP + Aufgabenbaum Manuelle Rezepte 1 Laptop, sofort Jedes herstellbare Item
Altoclef Baritone + Task-Tree-FS Java-Task-Klassen Fabric-Mod, keine GPU Schlägt das ganze Spiel
Mace Bot Befehlblock Zustandmaschine Zufalls-Entscheidungen Vanilla MC, kein GPU Netz PvP Training

Der Bot aus dem Video hat die geringsten Ressourcen, ist aber am ehrlichsten über den Prozess. Er scheitert zuerst, dann iteriert er. Er vergisst, was er gelernt hat, dann lernt er neu. Er endet mit einer 100-Treffer-Kombo: aber auch mit der Frage, ob das, was er gebaut hat, Betrug ist.


Video : AI Learns Minecraft PvP von Kadambi | AI Engineering

VPT : Papier · Blog · GitHub

OpenAI Five : Papier · Blog

DreamerV3 : Papier · GitHub

ANNA : GitHub · (Node.js, Mineflayer, französisches NLP, can Aufgabbaum)

Altoclef : GitHub · Active fork · (Fabric, Baritone, Task-Tree, schlägt Spiel)

Mace Bot : Video von Master Gumbo · (Befehlsblöcke, Carpet Mod, Zustandsmaschine)

ИИ учится PvP в Minecraft -- имитационное обучение, обучение с подкреплением и 30 важных переменных

1000 записанных дуэлей, нейросеть, обученная на пикселях, 90% точность нажатий клавиш... и бот упёрся в стену. Затем пришли RL, куррикулум-обучение и 60 часов тренировок.

Введение

Превью: ИИ учится PvP в Minecraft

Есть видео под названием AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) от Kadambi | AI Engineering, и это один из самых честных рассказов о тренировке игрового ИИ, которые я видел.

Суть: создать бота, который играет в Minecraft PvP (набор с мечом, полностью зачарованная алмазная броня), наблюдая за экраном и отправляя команды мыши и клавиатуры. Никакого чтения игровой памяти, никаких макросов, никаких модов: только пиксели на входе, действия на выходе.

Что делает видео интересным -- не конечный результат. А путь: провал имитационного обучения, поворот к инженерии признаков, циклы катастрофического забывания и 60+ часов тренировки на ноутбуке без GPU.

Фаза 1: Имитационное обучение (провал)

Бот во время имитационного обучения: стоит лицом к стене, прыгает вверх-вниз

Создатель начал с разумного подхода: записать 1000 собственных дуэлей, сопоставить каждый клик мыши и нажатие клавиши с соответствующим кадром, и обучить нейросеть предсказывать действия по пикселям.

# Псевдокод для пайплайна имитационного обучения
dataset = record_duels(1000)          # сотни тысяч кадров
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # предсказать клавиатуру/мышь по изображению

Сеть научилась предсказывать нажатия клавиш с 90% точностью. Многообещающе.

Затем её протестировали в реальном матче. Бот направился прямиком к краю карты, встал лицом к стене и начал прыгать вверх-вниз.

Почему?

Ловушка лени. В PvP-бою клавиша W нажата большую часть времени. Сеть поняла, что может достичь высокой точности, просто удерживая W и ничего больше не делая. Она оптимизировалась под самое частое действие в ущерб всем остальным.

Человеческая задержка. Действия в наборе данных задержаны на ~200 мс из-за времени реакции человека. Покадрово причина и следствие почти неразличимы для модели, обучающейся по сырым пикселям, когда действие и его видимый результат разделены несколькими кадрами.

Непоследовательные демонстрации. Стиль игры самого создателя варьировался: иногда стрейф с клавиатуры, иногда прицеливание мышью в одинаковых ситуациях. Эти противоречивые входные данные сбили сеть с толку.

Фаза 2: Обучение с подкреплением с куррикулумом

Бот учится отслеживать цель по горизонтали во время RL-тренировки

Отказавшись от имитационного обучения, создатель переключился на RL. Но бросить свежего агента в полноценный PvP-бой бесполезно: происходит слишком много всего сразу, чтобы случайное исследование могло что-то найти.

Решение: куррикулум-обучение. Изолировать каждый механик и позволить боту освоить основы, прежде чем вступать в настоящий бой.

Шаг 1: Горизонтальное прицеливание (7 часов)

Простейшая функция награды: положительная награда за попадание, отрицательный штраф за получение урона.

Изначально бот едва движется (нейросеть инициализирована для вывода нейтральных значений). Он трясётся из стороны в сторону: бот тестирует разные действия, чтобы увидеть, какие дают награду.

Через час он учится центрироваться по горизонтали, но мучительно медленно. Через 7 часов он может отслеживать врага влево и вправо, хотя асимметрично (лучше движется справа налево, чем слева направо -- поведение, сохранившееся на протяжении всей тренировки).

Шаг 2: Инженерия признаков

Сырой захват экрана составлял более 2 миллионов пикселей. Даже уменьшенный до 360p, это 200 000 входных данных -- слишком много для эффективного обучения.

Создатель проанализировал тысячи дуэлей и выявил 30 переменных, которые действительно важны, разделённых на три группы:

Зрение (отслеживание врага):

  • Расстояние врага от прицела
  • Размер ограничивающей рамки врага
  • Высота врага
  • Состояние прицела (на/вне цели)
  • Относительная скорость

Вместо обработки всего изображения бот фильтрует пиксели строго по цвету брони врага, что делает обнаружение почти мгновенным. Фоновые блоки похожего цвета могут сбивать это с толку -- но в Minecraft можно просто сменить текстуру.

OCR (чтение HUD): Поскольку бот не может получить координаты из кода игры, он сканирует экран в реальном времени, чтобы извлечь:

  • Наклон камеры
  • Импульс
  • Уровень Y

Стандартный OCR с трудом справляется с прозрачным текстом Minecraft, поэтому критические данные переводятся в чёрно-белый формат для мгновенного чтения.

Время (окно контекста):

  • Время с момента вашего удара по врагу
  • Время с момента его удара по вам
  • Скользящий буфер предыдущих действий бота

Это даёт сети временной контекст: без него бот не знает, находится ли он в середине комбо или только начинает бой.

Шаг 3: Вертикальное прицеливание (ещё 7 часов)

Бот учится целиться вверх и вниз во время RL-тренировки

Добавление вертикального движения мыши было «полной катастрофой» поначалу. Начальная производительность была нарушена.

Ещё через час в песочнице бот разобрался, как смотреть вверх и вниз. Но в процессе он полностью забыл, как отслеживать цель по горизонтали.

Это катастрофическое забывание: классическая проблема машинного обучения, когда оптимизация под новые данные перезаписывает ранее изученные представления. Оптимизируясь под вертикальное прицеливание, нейросеть случайно перезаписала свой горизонтальный прогресс, оставив создателю бота, который может держать прицел на уровне, но не может следовать за целью.

Потребовалось ещё 6 часов, чтобы восстановить горизонтальное отслеживание, сохранив вертикальный контроль. После этого бот поддерживал хорошее положение прицела благодаря группе OCR, извлекающей наклон камеры.

Шаг 4: Управление с клавиатуры

Бот постоянно переключает клавишу W, учится совершать движения

Предоставление боту разрешения использовать клавиатуру сделало временные признаки ещё более критичными. Сначала клавиша W постоянно нажималась и отпускалась: частое переключение, потому что сеть не научилась принимать решение.

Это поведение штрафовалось, поэтому бот научился сглаживать его. Он начал наносить больше спринт-ударов (звук глухого удара в отличие от свиста стоячего замаха). Некоторые комбо выглядели непрезентабельно, потому что бот использовал преимущество своей досягаемости перед врагом.

Чтобы уравнять шансы, создатель увеличил досягаемость врага. Многие выученные стратегии бота перестали работать. Но, получив больше времени, он адаптировался.

Шаг 5: Обучение бота, когда нажимать кнопку

Для финальной фазы создатель вернул имитационное обучение -- но только чтобы обучить времени клика, а не полному управлению. Бот пытался имитировать паттерны кликов из записанных дуэлей.

Поначалу он слишком боялся что-либо пробовать, опасаясь штрафа за неправильные клики. Но в конце концов он набрался смелости замахнуться и нанести удары. Конечно, в процессе он снова забыл, как целиться -- создателю пришлось оставить его в покое на ещё 50 часов, чтобы вернуться к удовлетворительному состоянию.

Спор о жульничестве

Видео заканчивается вопросом: жульничает ли этот бот?

Аргумент против: бот обрабатывает только то, что видит человек (те же пиксели), отправляет те же клавиатурные/мышиные команды, что и человек (никаких манипуляций с пакетами вроде анти-отбрасывания), и не читает игровую память (никакого X-ray или ESP).

Аргумент за: бот может обрабатывать информацию быстрее человека, и если противник думает, что играет против человека, а это не так, то это обман.

Мнение создателя: всё зависит от намерения. Если обе стороны знают, что это бот, это честный матч. Затем бот отправляет врага комбо в пустоту серией из 100 ударов.

Результат

Бот выполняет комбо из 100 ударов

Бот для Minecraft PvP, обученный на ноутбуке без GPU, построенный на пользовательском тренировочном пайплайне с:

  • Захватом экрана для пиксельного входа (2M+ пикселей → 30 спроектированных признаков)
  • Куррикулум-обучением (горизонталь → вертикаль → клавиатура → клики)
  • RL для управления + имитационное обучение для времени кликов
  • Инженерией признаков вместо сырых пикселей (3 группы: зрение, OCR, время)
  • 60+ часами тренировки в несколько этапов

Общее время тренировки составляет десятки часов, но большая часть его пассивна. Бот трясущимся путём приходит к пониманию, забывает изученное, переучивается и в итоге собирает комбо из 100 ударов.

Видео по ссылке youtube.com/watch?v=j5nxDKAjg6U.


Эта статья охватывает только содержание видео. Для более широкого контекста по ИИ в Minecraft: VPT, DreamerV3 и ландшафт имитационного обучения против RL -- разделы ниже связывают этот проект с более широкой областью.

VPT: Поведенческое клонирование в масштабе

Диаграмма проекта VPT от OpenAI: модель обратной динамики предсказывает действия по парам кадров

Подход «поведенческого клонирования» (Фаза 1) -- это та же техника, которую OpenAI использовала в своём проекте Video PreTraining (VPT), но на противоположных концах спектра ресурсов. VPT доказал, что имитационное обучение работает для Minecraft, когда у вас есть 70 000 часов видео, 720 GPU и модель обратной динамики для псевдомаркировки неразмеченных данных. Создатель здесь доказал, что оно не работает на одном ноутбуке и 1000 дуэлях -- но по той же фундаментальной причине: имитационное обучение ограничено качеством своих демонстраций.

Агент VPT от OpenAI добывает дерево в Minecraft

Пайплайн VPT решает проблему данных, обучая модель обратной динамики (IDM), которая смотрит кадр t-1 и кадр t+1, чтобы предсказать действие в кадре t. Поскольку IDM не является причинной (она видит будущие кадры), задача проще, чем поведенческое клонирование, и требует гораздо меньше размеченных данных. Они заплатили подрядчикам ~$2000 за 2000 часов размеченных данных, затем использовали IDM для псевдомаркировки 70 000 часов видео Minecraft с YouTube.

Скорость крафта/добычи в зависимости от объёма данных предобучения (логарифмическая шкала): верстаки, деревянные инструменты, каменные инструменты

Эффект масштабирования очевиден: на логарифмической оси от 1 часа до 100 000 часов данных предобучения скорость, с которой модель создаёт верстак, деревянные инструменты, а затем каменные инструменты, растёт ступенчато. Модель, обученная только на 2000 часах размеченных подрядчиками данных, останавливается на верстаках; только добавление 70 000 часов псевдоразмеченных IDM данных (пунктирная линия на графике) позволяет каменным инструментам появиться zero-shot, без единого этапа RL.

Базовая модель на 0,5B параметров достигла zero-shot способностей, невозможных при использовании только RL: рубка деревьев, создание верстаков, прыжки-столбики; а после дообучения с RL она стала первым ИИ, создавшим алмазные инструменты.

Награда в зависимости от количества эпизодов RL-тренировки: случайно инициализированная модель против предобученной модели VPT

Этот график показывает, почему предобучение меняет всё для последующего RL. RL, запущенный со случайно инициализированной сетью (оранжевый), остаётся около нуля почти миллион эпизодов: задача «добыть алмаз» даёт слишком разреженную награду, чтобы наивный агент наткнулся на неё случайным исследованием. RL, дообученный с предобученной модели VPT (зелёный), уже стартует с базовым поведением (добыча, крафт, исследование) и стабильно растёт до награды около 25, что соответствует полному пути к алмазной кирке.

Официальные видео-демонстрации проекта VPT от OpenAI, показывающие агента в действии.

OpenAI Five: Проблема формирования награды

OpenAI Five играет в Dota 2 против профессиональных игроков

OpenAI Five (2019) победил чемпионов мира по Dota 2, используя чистое самообучение с RL -- никакого имитационного обучения. 256 GPU, 128 000 CPU ядер, 180 лет игрового процесса в день, 10 месяцев тренировки.

Но функция награды была вручную разработана экспертами по Dota: 28 из 20 000 доступных признаков, каждый с вручную настроенными весами. Чистая стоимость, убийства, смерти, здоровье башен, назначения линий -- всё выбрано и взвешено людьми. Без этого формирования агент едва чему-либо учился (эксперимент: награда только за победу/поражение → плато на уровне полупрофессионала).

DreamerV3: Мировые модели и разреженные награды

Результаты DreamerV3 в более чем 150 различных задачах с единой конфигурацией

DreamerV3 от DeepMind (2023) использует третий подход. Вместо поведенческого клонирования или формированного RL, он учит мировую модель: нейросеть, которая предсказывает будущие состояния и награды на основе прошлых действий, и планирует, «мечтая» о возможных будущих. Это был первый алгоритм, собравший алмазы в Minecraft с нуля без человеческих данных или куррикулумов, опубликованный в Nature в 2025 году.

DreamerV3 учит мировую модель, чтобы представлять будущие траектории

Среда с алмазами определяет разреженную награду по 12 этапам (бревно → доски → палка → верстак → деревянная кирка → булыжник → каменная кирка → железная руда → печь → железный слиток → железная кирка → алмаз), каждый даёт +1 ровно один раз. Плюс маленькая награда за здоровье (±0,01 за ед. здоровья). Итого достижимо: 11,1 за эпизод из 36 000 шагов.

Мировая модель DreamerV3 позволяет ему представлять траектории и оценивать их внутри: агент учится на воображаемых прогонах, а не на реальном опыте, тестируя тысячи возможных будущих на каждый реальный шаг.

ANNA: Символический ИИ встречает Minecraft

Декомпозиция дерева задач ANNA для зажигалки

До PvP-бота из видео, до VPT и DreamerV3, была ANNA: бот для Minecraft, построенный на совершенно другой философии. Вместо обучения на пикселях или наградах, ANNA использует символический конечный автомат с французским NLP-парсером и вручную составленным деревом зависимостей задач.

Созданная в 2022 году (ещё до появления термина «вайб-кодинг»), ANNA подключается к серверу Minecraft через Mineflayer и понимает команды на естественном французском языке. Скажите «obtiens un briquet» (добудь зажигалку), и парсер ANNA определяет глагол (obtiens → получить), находит рецепт предмета и рекурсивно разбивает его на подзадачи: добыть дубовые брёвна → создать доски → создать палки → создать верстак → создать деревянную кирку → добыть камень → создать каменную кирку → добыть железную руду → переплавить железные слитки → создать зажигалку.

Архитектура NLP-парсера ANNA для распознавания французских команд

NLP-слой (utils/id_parser.js) разделяет команды по «et» (и) для обработки параллельных приказов, сопоставляет французские глаголы с типами задач (craft, mine, tue, suis moi) и переводит названия французских предметов в Minecraft ID через словарь на 5000 записей. Нераспознанные команды передаются в GPT-систему для диалога, которая представляет ANNA как разумного компаньона в Minecraft.

Дерево задач (mc-tasks-tree/) -- это ядро: рекурсивный алгоритм, который обходит граф предметов Minecraft (рецепты крафта, результаты добычи, моб-дропы, рецепты печи), чтобы создать пошаговый план. Для алмазного шлема он генерирует разбивку на 40+ шагов, охватывающую уровни дерева, камня, железа и алмаза.

Дерево задач ANNA для алмазного шлема: разбивка на 40+ шагов

Там, где PvP-бот из видео учится на опыте, ANNA работает на знаниях. Ей не нужны 1000 дуэлей или 60 часов тренировки -- ей нужно дерево, парсер и сервер. Но она также не может обобщать за пределами того, что закодировано в её дереве. Никакая инженерия конечных автоматов не научит её PvP.

Подход ANNA отражает другую эпоху ИИ: до того, как сквозное обучение стало доминировать, когда считалось, что символьное мышление + тщательная инженерия могут породить интеллектуальное поведение. Сегодня проекты вроде ANNA и PvP-бота представляют два полюса ИИ в Minecraft: один размышляет о мире, другой воспринимает его.

Mace Bot от Master Gumbo: ИИ только с командными блоками

Арена для тренировки PvP с булавой и ботом

В совершенно другом углу ИИ в Minecraft, ютубер Master Gumbo построил PvP-тренировочного бота, используя только командные блоки: без модов, без плагинов, без внешнего кода. Только ванильные команды Minecraft, редстоун и Carpet Mod для сущностей-реплик игроков. Результат -- ИИ-противник в PvP с булавой, который практикует breach swapping, wind charging и механику щита вместе с игроком.

Бот начинается как зомби с неломким снаряжением и тотемом в левой руке (восполняется каждый тик через /item replace), что делает его фактически бессмертным. Затем Master Gumbo переключается на ботов Carpet Mod's player replica, которые поддерживают человеческую механику (поднятие щита, переключение предметов), недоступную зомби.

Центр настроек: кнопки для настройки поведения бота

Ключевая инновация -- конечный автомат, управляемый случайностью. Стойка для брони телепортируется над кругом из цветных бетонных блоков с помощью команды /spreadplayers, которая случайным образом разбрасывает сущности. Куда приземлится стойка, определяет следующее действие бота:

  • Красный бетон → стрейф назад
  • Синий бетон → wind charge вверх (атака)
  • Зелёный бетон → поднять щит
  • Белый бетон -- пауза (добавляет задержку между действиями)

Система принятия решений ИИ: стойка для брони на цветном бетоне

Позиция стойки считывается командными блоками, которые обнаруживают блок под ней и активируют соответствующий механизм. Редстоуновый блок устанавливается или убирается для включения/отключения каждого поведения. Поскольку /spreadplayers выполняется повторно, бот непрерывно принимает новые решения, создавая непредсказуемое, но структурированное поведение.

Master Gumbo называет это «очень простой и базовой формой ИИ»: он не учится на взаимодействиях как нейросети, но случайность + конечный автомат создают реалистичное PvP-поведение, которое сложнее предсказать, чем скриптового бота.

После тренировки с ботом и последующей дуэли с игроком, назвавшим его плохим (в интро видео), Master Gumbo побеждает. Карта раздаётся через Discord, требуется Carpet Mod.

Бот в дуэли, практикует PvP-техники с булавой

Там, где PvP-бот (Kadambi) учится на пикселях, а ANNA рассуждает через дерево задач, бот Master Gumbo достигает интеллекта через рандомизированные переходы состояния: чисто командный подход, доказывающий, что нейронные сети не нужны для создания убедительного PvP-противника.

Altoclef: Baritone + дерево задач в масштабе

Если ANNA -- это символический бот, который читает, чтобы знать, что делать, а Mace Bot рандомизирует решения, то Altoclef -- это полноценный автономный агент, который планирует свой путь через всю игру. Созданный gaucho-matrero как Fabric-мод на основе Baritone для pathfinding, Altoclef раскладывает любую цель в Minecraft на дерево задач и выполняет её без участия человека.

Интерфейс обманчиво прост: напишите @gamer в чат, и Altoclef начнёт прохождение игры с нулевого выживания. Он собирает дерево, крафтит инструменты, добывает железо и алмазы, строит портал в Нижний мир, собирает огненные стержни и жемчуг Края, находит крепость и убивает Дракона Края. Полностью автономно, через стандартный Minecraft-клиент, на любом ванильном сервере.

Под капотом это реализовано через рекурсивную систему дерева задач, где каждая высокоуровневая цель (например, «скрафтить алмазную кирку») разбивается на подзадачи: добыть алмазы → переплавить их → скрафтить палки → объединить. Дерево обходит полный граф рецептов Minecraft, обрабатывая производственные цепочки, дроп с мобов, таблицы лута и доступ к контейнерам. В отличие от вручную созданного дерева ANNA, задачи Altoclef -- это программируемые Java-классы, которые могут реализовывать произвольную логику: боевые стратегии, бартер с пиглинами, паттерны исследования.

Ключевое архитектурное решение -- разделение что (дерево задач) и как (Baritone pathfinding). Baritone отвечает за низкоуровневое перемещение: pathfinding, обход препятствий, разрушение блоков, управление инвентарём -- а система задач управляет высокоуровневым планом. Эта модульность означает, что ни один компонент не нуждается в ИИ: оба являются детерминированными алгоритмами, но их комбинация порождает сложное целенаправленное поведение, конкурирующее с обученными подходами.

Altoclef представляет предел чисто символического Minecraft AI: он может пройти игру с нуля без тренировки, GPU и человеческих данных, но не может адаптироваться к задачам, не предусмотренным программистами, и не учится на опыте. Он знает, как скрафтить алмазную кирку, потому что Java-класс говорит ему как, а не потому что он сам это понял.

Что объединяет эти проекты

Подход Основной метод Данные Вычисления Результат
PvP-бот из видео RL + имитационное обучение 1000 дуэлей 1 ноутбук, 60ч Комбо на 100 ударов
OpenAI Five Самообучение RL 180 лет игры/день 256 GPU, 10 мес Чемпион мира Dota 2
VPT Полуконтролируемое IL 70K часов YouTube + IDM 720 GPU, 9 дней Алмазные инструменты
DreamerV3 Мировая модель RL Воображаемые траектории 1 GPU, 9 дней Алмаз с нуля
ANNA Символический NLP + дерево задач Вручную созданные рецепты 1 ноутбук, мгновенно Любой предмет из крафта
Altoclef Baritone + дерево задач Java классы задач Fabric мод, без GPU Прохождение всей игры
Mace Bot Конечный автомат из командных блоков Случайные решения Ванильный MC, без GPU Тренировка PvP с булавой

Бот из видео -- самый ограниченный по ресурсам, но самый честный по процессу. Он сначала терпит неудачу, затем итерируется. Он забывает выученное, затем переучивается. Он финиширует с комбо на 100 ударов -- но также с вопросом, жульничество ли то, что он построил.


Видео: AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT: Paper · Blog · GitHub

OpenAI Five: Paper · Blog

DreamerV3: Paper · GitHub

ANNA: GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef: GitHub · Активный форк · (Fabric, Baritone, task tree, проходит игру)

Mace Bot: Video by Master Gumbo · (Command blocks, Carpet Mod, state machine)

Una IA aprende PvP de Minecraft -- Imitation Learning, Reinforcement Learning y las 30 variables que importaban

1.000 duelos grabados, red neuronal entrenada en píxeles, 90% de precisión en teclas : y el bot fue directo a una pared. Luego llegaron RL, aprendizaje curricular y 60 horas de entrenamiento.

Introducción

AI Learns Minecraft PvP thumbnail

Hay un vídeo llamado AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) de Kadambi | AI Engineering, y es uno de los relatos más honestos sobre entrenar una IA para jugar videojuegos que he visto.

La premisa: construir un bot que juegue PvP de Minecraft (kit de espada, armadura de diamante completamente encantada) mirando la pantalla y enviando comandos de ratón y teclado. Sin leer la memoria del juego, sin macros, sin mods : solo píxeles de entrada, acciones de salida.

Lo que hace interesante al video no es el resultado final. Es el viaje: el fracaso del imitation learning, el giro hacia el feature engineering, los ciclos de olvido catastrófico y las 60+ horas de entrenamiento en un portátil sin GPU.

Fase 1 : Imitation Learning (el fracaso)

The bot during imitation learning: facing a wall, jumping up and down

El creador comenzó con un enfoque sensato: grabar 1.000 duelos de su propio juego, mapear cada clic de ratón y pulsación de tecla al fotograma correspondiente, y entrenar una red neuronal para predecir acciones a partir de los píxeles.

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

La red aprendió a predecir las pulsaciones con un 90% de precisión. Prometedor.

Luego lo probaron en una partida real. El bot fue directo al borde del mapa, se encaró a una pared y saltó arriba y abajo.

¿Por qué?

La trampa de la pereza. En un combate PvP, la tecla W está pulsada la mayor parte del tiempo. La red se dio cuenta de que podía alcanzar alta precisión simplemente manteniendo W pulsado y no haciendo nada más. Optimizó la acción más común a expensas de todas las demás.

La latencia humana. Las acciones en el conjunto de datos están retrasadas unos ~200ms de tiempo de reacción humano. Fotograma a fotograma, la causa y el efecto son casi imposibles de aprender para un modelo a partir de píxeles crudos cuando la acción y su consecuencia visible están separadas por múltiples fotogramas.

Demostraciones inconsistentes. El propio juego del creador variaba : a veces strafeando con el teclado, a veces apuntando con el ratón en situaciones idénticas. Estas entradas contradictorias confundían a la red.

Fase 2 : Reinforcement Learning con plan de estudios

The bot learning to track horizontally during RL training

Abandonando el imitation learning, el creador cambió a RL. Pero soltar un agente nuevo en un duelo PvP completo es inútil : hay demasiadas cosas ocurriendo a la vez para que la exploración aleatoria encuentre algo.

La solución: el **aprendizaje curricular. Aislar cada mecánica y dejar que el bot domine lo básico antes de entrar en una lucha real.

Paso 1 : Puntería horizontal (7 horas)

La función de recompensa más simple: recompensa positive por acertar un golpe, penalización negativa por recibir daño.

Inicialmente, el bot apenas se mueve (red neuronal inicializada con valores neutros). Tiembla de lado a lado : es el bot probando diferentes acciones para ver cuáles dan recompensas.

Después de una hora, aprende a centrarse horizontalmente, pero penosamente lento. Tras 7 horas, puede seguir al enemigo a izquierda y derecha, aunque de forma asimétrica (mejor moviéndose de derecha a izquierda que de izquierda a derecha, un comportamiento que persistió durante todo el entrenamiento).

Paso 2 : Feature Engineering

La captura de pantalla original tenía más de 2 millones de píxeles. Incluso reducida a 360p, son 200.000 entradas : demasiadas para un aprendizaje eficiente.

El creador analizó miles de duelos e identificó 30 variables que realmente importan, divididas en tres grupos:

Visión (seguimiento del enemigo) :

  • Distancia del enemigo desde la cruceta
  • Tamaño de la caja delimitadora del enemigo
  • Altura del enemigo
  • Estado de la cruceta (sobre/fuera del objetivo)
  • Velocidad relativa

En lugar de procesar la imagen completa, el bot filtra píxeles estrictamente por el color de la armadura del enemigo, haciendo la detección casi instantánea. Bloques de fondo de color similar pueden alterar esto : pero en Minecraft, puedes simplemente cambiar las texturas.

OCR (lectura del HUD) : Como el bot no puede extraer coordenadas del código del juego, escanea la pantalla en tiempo real para extraer:

  • Inclinación de la cámara
  • Momento
  • Nivel Y

El OCR estándar lucha con el texto transparente de Minecraft, así que los datos críticos se fuerzan a blanco y negro para una lectura instantánea.

Tiempo (ventana de contexto) :

  • Tiempo desde que golpeaste al enemigo
  • Tiempo desde que te golpearon
  • Buffer deslizante de las acciones previas del bot

Esto da a la red un contexto temporal: sin él, el bot no tiene idea de si está en medio de un combo o empezando una pelea.

Paso 3 : Puntería vertical (otras 7 horas)

The bot learning to aim up and down during RL training

Añadir movimiento vertical del ratón fue « un desastre total » al principio. El rendimiento inicial estaba roto.

Después de otra hora en el arenero, el bot descubrió cómo mirar arriba y abajo. Pero en el proceso, olvidó por completo cómo seguir horizontalmente.

Esto es el olvido catastrófico : un problema clásico de aprendizaje automático en el que optimizar para nuevos datos sobrescribe representaciones previamente aprendidas. Al optimizar para la puntería vertical, la red neuronal sobrescribió accidentalmente su progreso horizontal, dejando al creador con un bot que podía mantener su crucifal nivelada pero no podía seguir un objetivo.

Llevó 6 horas adicionales recuperar el seguimiento horizontal mientras se mantenía el control vertical. El bot entonces mantuvo una buena colocación del crucifal gracias al grupo OCR extrayendo la inclinación de la cámara.

Paso 4 : Control del teclado

The bot toggling the W key constantly, learning to commit to movement

Dar al bot permiso para usar el teclado hizo que las funciones basadas en el tiempo fueran aún más críticas. Al principio, la tecla W se activaba y desactivaba constantemente : cambios rápidos porque la red no había aprendido a comprometerse.

Este comportamiento fue penalizado, así que el bot aprendió a suavizarlo. Empezó a acertar más golpes en sprint (el sonido sordo contra el susurro de un golpe de pie). Algunos combos se veían insatisfactorios porque el bot explotaba su ventaja de alcance sobre el enemigo.

Para nivelar el campo, el creador aumentó el alcance del enemigo. Muchas estrategias aprendidas del bot dejaron de funcionar. Pero dado más tiempo, se adaptó.

Paso 5 : Enseñar al bot cuándo hacer clic

Para la fase final, el creador recuperó el imitation learning : pero solo para enseñar el tiempo de clic, no la política completa de control. El bot intentaba imitar los patrones de clic de los duelos grabados.

Inicialmente tenía demasiado miedo para intentar nada, temiendo la penalización por clics incorrectos. Pero eventualmente reunió el valor para golpear y acertar impactos. Por supuesto, olvidó cómo apuntar otra vez en el proceso : el creador tuvo que dejarlo solo durante 50 horas más para volver a un estado satisfactorio.

El debate sobre las trampas

El video termina preguntando: ¿este bot hace trampa?

El argumento en contra: el bot solo procesa lo que un humano ve (los mismos píxeles), envía las mismas entradas de teclado/ratón que un humano (sin manipulación de paquetes como anti-knockback), y no lee la memoria del juego (sin rayos X ni ESP).

El argumento a favor: un bot puede procesar más rápido que un humano, y si el oponente cree que juega contra un humano pero no lo es, eso es engaño.

La opinión del creador: depende de la intención. Si ambas partes saben que es un bot, es una partida justa. El bot procede a encadenar al enemigo al vacío con una racha de 100 golpes.

El resultado

The bot executing a 100-hit combo

Un bot PvP de Minecraft entrenado en un portátil sin GPU, construido sobre un pipeline de entrenamiento personalizado con:

  • Captura de pantalla para entrada de píxeles (2M+ píxeles → 30 características diseñadas)
  • Aprendizaje curricular (horizontal → vertical → teclado → clic)
  • RL para control motor + imitation learning para tiempo de clic
  • Feature engineering sobre píxeles en bruto (3 grupos: visión, OCR, tiempo)
  • 60+ horas de entrenamiento en múltiples fases

El tiempo total de entrenamiento es de decenas de horas, pero la mayor parte es pasivo. El bot se sacude hasta la comprensión, olvida lo que aprendió, lo reaprende, y finalmente encadena una racha de 100 golpes.

El video está en youtube.com/watch?v=j5nxDKAjg6U.


Este artículo cubre solo el contenido del video. Para un contexto más amplio sobre la IA en Minecraft : VPT, DreamerV3, y el panorama del imitation learning vs RL : las secciones a continuación conectan este proyecto con el campo más amplio.

VPT : Behavior cloning a escala

OpenAI's VPT project diagram : the Inverse Dynamics Model predicts actions from pairs of frames

El enfoque de «behavior cloning» del video (Fase 1) es la misma técnica que OpenAI usó en su proyecto Video PreTraining (VPT), pero en extremos opuestos del espectro de recursos. VPT demostró que el imitation learning funciona para Minecraft cuando tienes 70.000 horas de video, 720 GPUs y un inverse dynamics model para pseudo-etiquetar datos no etiquetados. El creador aquí demostró que falla con un portátil y 1.000 duelos : pero por la misma razón fundamental: el imitation learning está limitado por la calidad de sus demostraciones.

OpenAI's VPT agent mining a tree in Minecraft

El pipeline VPT resuelve el problema de datos entrenando un Inverse Dynamics Model (IDM) que mira el fotograma t-1 y el fotograma t+1 para predecir la acción en el fotograma t. Como el IDM es no causal (ve fotogramas futuros), la tarea es más fácil que el behavior cloning y requiere muchos menos datos etiquetados. Pagaron a contratistas ~2.000 $ por 2.000 horas de datos etiquetados, luego usaron el IDM para pseudo-etiquetar 70.000 horas de videos de Minecraft en YouTube.

Tasa de fabricación/recolección según el volumen de datos de preentrenamiento (escala log): mesas de trabajo, herramientas de madera, herramientas de piedra

El efecto de escala es claro: en un eje log de 1 hora a 100.000 horas de datos de preentrenamiento, la tasa a la que el modelo fabrica una mesa de trabajo, herramientas de madera y luego herramientas de piedra aumenta por escalones. El modelo entrenado solo con las 2.000 horas etiquetadas por contratistas se estanca en las mesas de trabajo; es al añadir las 70.000 horas pseudo-etiquetadas por el IDM (línea punteada en el gráfico) que las herramientas de piedra emergen en zero-shot, sin una sola etapa de RL.

El modelo fundamental de 0,5B parámetros resultante logró capacidades zero-shot imposibles solo con RL: cortar árboles, fabricar mesas, saltos : y refinado con RL, se convirtió en la primera IA en fabricar herramientas de diamante.

Recompensa en función del número de episodios de entrenamiento RL: partir de un modelo inicializado aleatoriamente vs partir del modelo VPT preentrenado

Este gráfico muestra por qué el preentrenamiento lo cambia todo para el RL posterior. El RL que parte de una red inicializada aleatoriamente (naranja) se mantiene plano cerca de 0 durante casi un millón de episodios: la tarea «obtener un diamante» tiene una recompensa demasiado dispersa para que un agente ingenuo la encuentre mediante exploración aleatoria. El RL ajustado a partir del modelo VPT preentrenado (verde) ya parte con el comportamiento base (minar, fabricar, explorar) y sube regularmente hasta una recompensa de aproximadamente 25, lo que corresponde al camino completo hacia un pico de diamante.

Demostraciones en video oficiales del proyecto VPT de OpenAI, mostrando al agente en acción.

OpenAI Five : El problema del moldeado de recompensas

OpenAI Five playing Dota 2 against human professionals

OpenAI Five (2019) derrotó a los campeones del mundo de Dota 2 usando RL puro de autoaprendizaje, sin imitation learning. 256 GPUs, 128.000 núcleos de CPU, 180 años de juego por día, 10 meses de entrenamiento.

Pero la función de recompensa fue hecha a mano por expertos en Dota: 28 de las 20.000 características disponibles, cada una con pesos afinados manualmente. Valor neto, muertes, salud de torres, asignaciones de carriles: todas seleccionadas y ponderadas por humanos. Sin este moldeado, el agente apenas aprendía (experimento: recompensa solo victoria/derrota → estancamiento en nivel semiprofesional).

El bot del video se enfrenta al mismo problema: su función de recompensa codifica la comprensión del creador de lo que importa en PvP (golpear es bueno, recibir daño es malo, mantener la cruceta es bueno). Esto es inevitable: RL necesita una señal de recompensa, y moldear esa señal codifica el sesgo humano.

DreamerV3 : Modelos del mundo y recompensas dispersas

DreamerV3 benchmark scores across over 150 diverse tasks with a single configuration

DreamerV3 de DeepMind (2023) toma un tercer enfoque. En lugar de behavior cloning o RL moldeado, aprende un modelo del mundo: una red neuronal que predice estados futuros y recompensas a partir de acciones pasadas, y planifica soñando con futuros posibles. Fue el primer algoritmo en recolectar diamantes en Minecraft desde cero sin datos humanos ni currículos, publicado en Nature en 2025.

DreamerV3 learns a world model to imagine future trajectories

El entorno del diamante define una recompensa dispersa sobre 12 hitos (tronco → tablones → palo → mesa de trabajo → pico de madera → piedra → pico de piedra → mineral de hierro → horno → lingote de hierro → pico de hierro → diamante), cada uno dando +1 exactamente una vez. Más una pequeña recompensa de salud (±0.01 por hp). Total alcanzable: 11.1 en un episodio de 36.000 pasos.

El modelo del mundo de DreamerV3 le permite imaginar trayectorias y evaluarlas internamente: el actor aprende de recorridas soñadas en lugar de experiencia real, probando miles de futuros posibles por cada paso real. Esto hace factibles las recompensas dispersas donde matarían a un agente RL estándar.

En 40 semillas entrenadas durante 100M pasos de entorno, 24 de 40 recolectaron al menos un diamante. El primer diamante apareció tras 29M pasos (~9 días en una GPU).

ANNA : IA simbólica se encuentra con Minecraft

ANNA's task tree decomposition for a flint-and-steel

Antes del bot PvP del video, antes de VPT y DreamerV3, estaba ANNA: un bot de Minecraft construido con una filosofía completamente diferente. En lugar de aprender de píxeles o recompensas, ANNA usa una máquina de estados simbólica con un analizador NLP en francés y un árbol de dependencias de tareas escrito a mano.

Creado en 2022 (antes de que «vibe coding» fuera un término), ANNA se conecta a un servidor de Minecraft a través de Mineflayer y entiende comandos en lenguaje natural en francés. Di «obtiens un briquet» (consigue un mechero), y el analizador de ANNA identifica el verbo (obtien → obtener), busca la receta del objeto y lo descompone recursivamente en subtareas: talar roble → fabricar tablones → fabricar palos → fabricar mesa de trabajo → fabricar pico de madera → minar piedra → fabricar pico de piedra → minar mineral de hierro → fundir lingotes de hierro → fabricar el mechero.

ANNA's NLP parser architecture for French command recognition

La capa NLP (utils/id_parser.js) divide comandos en multiplicidad. Divide los comandos por «et» (y) para manejar órdenes paralelas, asigna verbos franceses a tipos de tarea y traduce nombres de objetos franceses a IDs de Minecraft mediante un diccionario de 5.000 entradas. Los comandos no reconocidos caen a un sistema de conversación basado en GPT que presenta a ANNA como un acompañante consciente de Minecraft.

El árbol de tareas (mc-tasks-tree/) es el núcleo: un algoritmo recursivo que recorre el grafo de objetos de Minecraft (recetas de fabricación, rendimientos de minería, botines de mobs, recetas de al horno) para producir un plan paso a paso. Para un casco de diamante, genera un desglose de más de 40 pasos que abarcan los niveles de madera, piedra, hierro y diamante.

ANNA's diamond helmet task tree : a 40+ step breakdown

Donde el bot PvP del video aprende de la experiencia, ANNA funciona a partir del conocimiento. No necesita 1.000 duelos ni 60 horas de entrenamiento: necesita el árbol, el analizador y el servidor. Pero tampoco puede generalizar más allá de lo que codifica su árbol. Ninguna cantidad de ingeniería de máquina de estados le enseñaría a hacer PvP.

El enfoque de ANNA refleja una era diferente de la IA: antes de que el aprendizaje extremo a extremo dominara, cuando la promesa era que el razonamiento simbólico combinado con una cuidadosa ingeniería podía producir comportamiento inteligente. Hoy, proyectos como ANNA y el bot PvP representan dos polos de la IA en Minecraft: uno razona sobre el mundo, el otro lo percibe.

Master Gumbo's Mace Bot : IA solo con bloques de comandos

The Mace PvP training arena with the bot

En un rincón completamente diferente de la IA en Minecraft, el YouTuber Master Gumbo construyó un bot de entrenamiento PvP usando solo bloques de comandos: sin mods, sin plugins, sin código externo. Solo comandos vanilla de Minecraft, redstone y un carpet mod para e replicar entidades de jugador. El resultado es un oponente de maza PvP que practica cambios de brecha, cargas de viento y mecánicas de escudo con el jugador.

El bot comienza como un zombie con equipo irrompible y un tótem en su mano secundaria (reabastecido cada tick mediante /item replace), volviéndolo efectivamente inmortal. Luego, Master Gumbo cambia a los bots Carpet Mod's player replica, que soportan mecánicas humanoides (levantar escudo, cambiar objetos) que los zombies no pueden hacer.

The settings center : buttons to configure bot behavior

La innovación central es una máquina de estados impulsada por aleatoriedad. Un soporte de armadura es teletransportado sobre un círculo de bloques de concreto de colores mediante el comando /spreadplayers, que despersa entidades salatorias. El color del bloque de concreto donde aterriza el soporte de armadura determina la siguiente acción del: del bot:

  • Concreto rojo → strafe hacia atrás
  • Concreto azul → carga de viento arriba (ataque)
  • Concreto verde → levantar escudo
  • Concreto blanco → pausa (añade demora entre acciones)

The AI decision system : an armor stand on colored concrete

La posición del soporte de armadura es leída por bloques de comandos que detectan el bloque debajo y activan el mecanismo correspondiente. Un bloque de redstone se coloca o se retira para activar/desactivar cada comportamiento. Como /spreadplayers corre en repetición, el bot toma continuamente nuevas decisiones, creando un comportamento impredecible pero estructurado.

Master Gumbo llama a esto «una forma muy simple y básica de IA»: no aprende de las interacciones como las redes neuronales, pero la aleatoriedad combinada con la máquina de estados produce un comportamiento PvP realista que es más difícil de predecir que un bot guionizaLa interfaz central de configuración incluye una libro para activar/desactivar la IA, ajustar la dificultad y configurar patrones de movimiento.

Después de entrenar con el bot y luego duelar al jugador que lo llamó malo (en la introducción de su video), Master Gumbo gana. El mapa se comparte a través de Discord, Carpet Mod requerido.

The bot in a duel, practicing mace PvP techniques

Donde el bot PvP (Kadambi) aprende de píxeles y ANNA razona a través de un árbol de tareas, el bot de Master Gumbo logra inteligencia mediante transiciones de estado aleatorias: un enfoque puro de bloques de comandos que demuestra que no necesitas redes neuronales para construir un oponente PvP convincente.

Altoclef : Baritone + árbol de tareas a gran escala

Si ANNA es un bot simbólico que lee para saber qué hacer, y el Mace Bot aleatoriza las decisiones, Altoclef es un agente autónomo completo que planifica su camino a través del juego entero. Construido por gaucho-matero como un mod Fabric e impulsado por el pathfinding Baritone, Altoclef descompone cualquier objetivo de Minecraft en un árbol de tareas y lo ejecuta sin intervención humana.

La interfaz es engañosamente simple: escribe @gamer en el chat, y Altoclef comienza la tarea de «terminar el juego» desde un mundo survival. Recolecta madera, fabrica herramientas, mina hierro y diamante, construye un portal del Nether, recolecta varas de Blaze y perlas de Ender, encuentra la fortaleza y mata al Ender Dragon. Todo autónomamente, a través del cliente nativo de Minecraft, en cualquier servidor vanilla.

Bajo el capó, esto se logra mediante un sistema de árbol de tareas recursivo donde cada objetivo de alto nivel (por ejemplo, «fabrica un pico de diamante») se descompone en tareas prerrequisito: minar diamante → fundirlo → fabricar palos → combinarlos. El árbol recorre el grafo completo de recetas de Minecraft, manejando cadenas de producción, drops de mobs, tablas de botín y acceso a contenedores. A diferencia del árbol escrito a mano de ANNA, las tareas de Altoclef son clases Java programables que pueden implementar lógica arbitraria: estrategias de combate, trueque con piglins, patrones de exploración.

La idea arquitectónica clave es la separación del qué (el árbol de tareas) del cómo (el pathfinding de Baritone). Baritone maneja el movimiento de bajo nivel: pathfinding, evitación de obstáculos, rotura de bloques, gestión de inventario -- mientras que el sistema de tareas orquesta el plan de alto nivel. Esta modularidad significa que ningún componente necesita ser una IA: ambos son algoritmos deterministas, pero su combinación produce un comportamiento complejo y orientado a objetivos que rivaliza con los enfoques de aprendizaje.

Altoclef representa el límite de la IA simbólica pura en Minecraft: puede terminar el juego desde cero sin entrenamiento, sin GPU y sin datos humanos, pero no puede adaptarse a tareas que sus programadores no anticiparon, y no puede aprender de la experiencia. Sabe fabricar un pico de diamante porque una clase Java le dice exactamente cómo, no porque lo haya descubierto por sí mismo.

Lo que los une todos

Enfoque Método central Datos Computación Resultado
Bot PvP del video RL + imitation learning 1.000 duelos 1 portátil, 60h Combo de 100 golpes
OpenAI Five Autoaprendizaje RL 180 años de juego/día 256 GPUs, 10 mese Campeón mundial Dota 2
VPT IL semisupervisado 70K h YouTube + IDM 720 GPUs, 9 días Herramientas de diamante
DreamerV3 Modelo mundo RL Trayectorias de sueños 1 GPU, 9 días Diamante desde cero
ANNA NLP simbólico + árbol de tareas Recetas escritas a mano 1 portátil, instantly Cualquier objeto fabricable
Altoclef Baritone + task tree FS Java task classes Fabric mod, no GPU Termina el juego entero
Mace Bot Máquina de estados bloques comando Decisiones aleatorias Vanilla MC, sin GPU Entrenamiento PvP de maza

El bot del video es el más limitado en recursos pero el más honesto sobre el proceso. Primero fracasa, luego iterra. Olvida lo que aprendió, luego lo reaprende. Termina con un combo de 100 golpes. pero también con una pregunta sobre si lo que construyé es trampa.


Video : AI Learns Minecraft PvP de Kadambi | AI Engineering

VPT : Artículo · Blog · GitHub

OpenAI Five : Artículo · Blog

DreamerV3 : Artículo · GitHub

ANNA : GitHub · (Node.js, Mineflayer, NLP francés, árbol de tareas)

Altoclef : GitHub · Fork activo · (Fabric, Baritone, task tree, beats game)

Mace Bot : Video de Master Gumbo · (Command blocks, Carpet Mod, máquina de estados)

IA Aprende PvP no Minecraft -- Aprendizagem por Imitação, Reinforcement Learning e as 30 variáveis que importam

1.000 duelos gravados, rede neural treinada em pixels, 90% de precisão nas teclas : e o bot foi direto para uma parede. Depois vieram RL, curriculum learning e 60 horas de treinamento.

Introdução

AI Learns Minecraft PvP thumbnail

Há um vídeo chamado AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) por Kadambi | AI Engineering, e é um dos relatos mais honestos sobre treinar uma IA para jogar videogame que eu já vi.

A premissa: construir um bot que jogue PvP no Minecraft (kit espada, armadura de diamante encantada) assistindo à tela e emitindo comandos de mouse e teclado. Sem ler memória do jogo, sem macros, sem mods : apenas pixels na entrada, ações na saída.

O que torna o vídeo interessante não é o resultado final. É a jornada: o fracasso da aprendizagem por imitação, a mudança para feature engineering, os ciclos de catastrophic forgetting e as 60+ horas de treinamento em um laptop sem GPU.

Fase 1 : Aprendizagem por Imitação (o fracasso)

O bot durante a aprendizagem por imitação: de frente para uma parede, pulando para cima e para baixo

O criador começou com uma abordagem sensata: gravar 1.000 duelos do seu próprio gameplay, mapear cada clique do mouse e pressionamento de tecla ao quadro correspondente, e treinar uma rede neural para prever ações a partir dos pixels.

# Pseudocódigo para a pipeline de aprendizagem por imitação
dataset = record_duels(1000)          # centenas de milhares de quadros
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # prevê teclado/mouse a partir da imagem

A rede aprendeu a prever as teclas com 90% de precisão. Promissor.

Então eles testaram em uma partida real. O bot foi direto para a borda do mapa, encarou uma parede e começou a pular para cima e para baixo.

Por quê?

A armadilha da preguiça. Em uma luta PvP, a tecla W é pressionada na maior parte do tempo. A rede percebeu que poderia obter alta precisão simplesmente segurando W e não fazendo mais nada. Ela otimizou para a ação mais comum às custas de todas as outras.

Latência humana. As ações no conjunto de dados são atrasadas por ~200ms de tempo de reação humana. Quadro a quadro, causa e efeito é quase impossível para um modelo aprender a partir de pixels crus quando a ação e sua consequência visível estão separadas por múltiplos quadros.

Demonstrações inconsistentes. O próprio gameplay do criador variava: às vezes strafando com o teclado, às vezes mirando com o mouse em situações idênticas. Essa entrada conflitante confundiu a rede.

Fase 2 : Reinforcement Learning com Curriculum

O bot aprendendo a rastrear horizontalmente durante o treinamento RL

Abandonando a aprendizagem por imitação, o criador mudou para RL. Mas colocar um agente novo em um duelo PvP completo é inútil: há coisas demais acontecendo ao mesmo tempo para que a exploração aleatória encontre algo.

A solução: o curriculum learning. Isolar cada mecânica e deixar o bot dominar o básico antes de entrar em uma luta real.

Passo 1 : Mira horizontal (7 horas)

A função de recompensa mais simples: recompensa positiva por acertar um golpe, penalidade negativa por sofrer dano.

Inicialmente, o bot mal se move (rede neural inicializada com valores neutros). Ele balança de um lado para o outro: é o bot testando diferentes ações para ver quais dão recompensas.

Após uma hora, ele aprende a se centralizar horizontalmente, mas dolorosamente devagar. Após 7 horas, ele consegue seguir o inimigo para a esquerda e direita, embora de forma assimétrica (melhor ao mover-se da direita para a esquerda do que da esquerda para a direita, um comportamento que persistiu durante todo o treinamento).

Passo 2 : Feature Engineering

A captura de tela bruta tinha mais de 2 milhões de pixels. Mesmo reduzida para 360p, são 200.000 entradas: um número excessivo para aprendizado eficiente.

O criador analisou milhares de duelos e identificou 30 variáveis que realmente importam, divididas em três grupos:

Visão (rastreamento do inimigo) :

  • Distância do inimigo do centro da mira
  • Tamanho da caixa delimitadora do inimigo
  • Altura do inimigo
  • Estado da mira (no alvo/fora do alvo)
  • Velocidade relativa

Em vez de processar a imagem inteira, o bot filtra pixels estritamente pela cor da armadura do inimigo, tornando a detecção quase instantânea. Blocos de fundo com cor semelhante podem atrapalhar: mas no Minecraft, você pode simplesmente mudar as texturas.

OCR (leitura do HUD) : Como o bot não pode extrair coordenadas do código do jogo, ele escaneia a tela em tempo real para extrair:

  • Inclinação da câmera (pitch)
  • Momentum
  • Nível Y

O OCR padrão tem dificuldades com o texto transparente do Minecraft, então os dados críticos são forçados a preto e branco para leitura instantânea.

Tempo (janela de contexto) :

  • Tempo desde que você acertou o inimigo
  • Tempo desde que ele te acertou
  • Buffer de ações anteriores do próprio bot

Isso dá à rede um contexto temporal: sem ele, o bot não tem ideia se está no meio de um combo ou apenas começando uma luta.

Passo 3 : Mira vertical (mais 7 horas)

O bot aprendendo a mirar para cima e para baixo durante o treinamento RL

Adicionar movimento vertical do mouse foi "um desastre total" no início. O desempenho inicial estava quebrado.

Depois de mais uma hora na sandbox, o bot descobriu como olhar para cima e para baixo. Mas no processo, ele esqueceu completamente como rastrear horizontalmente.

Isto é o catastrophic forgetting: um problema clássico de machine learning onde otimizar para novos dados sobrescreve representações previamente aprendidas. Ao otimizar para a mira vertical, a rede neural acidentalmente sobrescreveu seu progresso horizontal, deixando o criador com um bot que conseguia manter a mira nivelada mas não conseguia seguir um alvo.

Foram necessárias 6 horas adicionais para recuperar o rastreamento horizontal mantendo o controle vertical. O bot então manteve um bom posicionamento da mira graças ao grupo OCR que extraía a inclinação da câmera.

Passo 4 : Controle do teclado

O bot alternando a tecla W constantemente, aprendendo a se comprometer com o movimento

Dar ao bot permissão para usar o teclado tornou as características temporais ainda mais críticas. No início, a tecla W era ligada e desligada constantemente: alternância rápida porque a rede não tinha aprendido a se comprometer.

Este comportamento foi penalizado, então o bot aprendeu a suavizá-lo. Ele começou a acertar mais sprint hits (o som surdo vs o whoosh de um golpe parado). Alguns combos pareciam insatisfatórios porque o bot explorava sua vantagem de alcance sobre o inimigo.

Para tornar as coisas justas, o criador aumentou o alcance do inimigo. Muitas das estratégias aprendidas pelo bot pararam de funcionar. Mas com mais tempo, ele se adaptou.

Passo 5 : Ensinando o bot quando clicar

Para a fase final, o criador trouxe de volta a aprendizagem por imitação: mas apenas para ensinar o tempo do clique, não a política de controle completa. O bot tentava imitar os padrões de clique dos duelos gravados.

Inicialmente ele estava com muito medo de tentar qualquer coisa, temendo a penalidade por cliques errados. Mas eventualmente criou coragem para golpear e acertar. Claro, ele esqueceu como mirar novamente no processo: o criador teve que deixá-lo sozinho por mais 50 horas para voltar a um estado satisfatório.

O debate sobre trapaça

O vídeo termina perguntando: este bot está trapaceando?

O argumento contra: o bot processa apenas o que um humano vê (mesmos pixels), envia as mesmas entradas de teclado e mouse que um humano (sem manipulação de pacotes como anti-knockback) e não lê a memória do jogo (sem raio-X ou ESP).

O argumento a favor: um bot pode processar mais rápido que um humano, e se o oponente pensa que está jogando contra um humano mas não está, isso é enganação.

A opinião do criador: depende da intenção. Se ambas as partes sabem que é um bot, é uma partida justa. O bot prossegue acertando o inimigo no vazio com uma sequência de 100 golpes.

O resultado

O bot executando um combo de 100 golpes

Um bot PvP de Minecraft treinado em um laptop sem GPU, construído em uma pipeline de treinamento personalizada com:

  • Captura de tela para entrada de pixels (2M+ pixels → 30 features engenheiradas)
  • Curriculum learning (horizontal → vertical → teclado → clique)
  • RL para controle motor + aprendizagem por imitação para tempo de clique
  • Feature engineering sobre pixels crus (3 grupos: visão, OCR, tempo)
  • 60+ horas de treinamento em múltiplas fases

O tempo total de treinamento é de dezenas de horas, mas a maior parte é passiva. O bot cambaleia em direção à compreensão, esquece o que aprendeu, reaprende e eventualmente encadeia um combo de 100 golpes.

O vídeo está em youtube.com/watch?v=j5nxDKAjg6U.


Este artigo cobre apenas o conteúdo do vídeo. Para um contexto mais amplo sobre IA no Minecraft: VPT, DreamerV3 e o panorama da aprendizagem por imitação vs RL: as seções abaixo conectam este projeto ao campo mais amplo.

VPT : Behavior Cloning em escala

Diagrama do projeto VPT da OpenAI: o modelo de dinâmica inversa prevê ações a partir de pares de quadros

A abordagem de "behavior cloning" do vídeo (Fase 1) é a mesma técnica que a OpenAI usou no projeto Video PreTraining (VPT), mas em extremos opostos do espectro de recursos. O VPT provou que a aprendizagem por imitação funciona para Minecraft quando você tem 70.000 horas de vídeo, 720 GPUs e um modelo de dinâmica inversa para pseudo-rotular dados não rotulados. O criador aqui provou que falha com um laptop e 1.000 duelos: mas pela mesma razão fundamental: a aprendizagem por imitação é limitada pela qualidade de suas demonstrações.

O agente VPT da OpenAI minerando uma árvore no Minecraft

A pipeline do VPT resolve o problema de dados treinando um Modelo de Dinâmica Inversa (IDM) que olha o quadro t-1 e o quadro t+1 para prever a ação no quadro t. Como o IDM é não-causal (vê quadros futuros), a tarefa é mais fácil que o behavior cloning e requer muito menos dados rotulados. Eles pagaram contratados ~$2.000 por 2.000 horas de dados rotulados, depois usaram o IDM para pseudo-rotular 70.000 horas de vídeos do Minecraft no YouTube.

O modelo foundation resultante de 0,5B parâmetros alcançou capacidades zero-shot que eram impossíveis apenas com RL: cortar árvores, criar mesas de trabalho, pillar jumping: e ajustado com RL, tornou-se a primeira IA a criar ferramentas de diamante.

Taxa de crafting/coleta em função do volume de dados de pré-treinamento (escala log): mesas de craft, ferramentas de madeira, ferramentas de pedra

O efeito de escala é nítido: em um eixo log de 1 hora a 100.000 horas de dados de pré-treinamento, a taxa na qual o modelo fabrica uma mesa de craft, ferramentas de madeira e depois ferramentas de pedra sobe em patamares. O modelo treinado apenas nas 2.000 horas rotuladas por contratados estagna nas mesas de craft; é ao adicionar as 70.000 horas pseudo-rotuladas pelo IDM (linha pontilhada no gráfico) que as ferramentas de pedra emergem em zero-shot, sem uma única etapa de RL.

Recompensa em função do número de episódios de treinamento RL: partir de um modelo inicializado aleatoriamente vs partir do modelo VPT pré-treinado

Este gráfico mostra por que o pré-treinamento muda tudo para o RL downstream. O RL partindo de uma rede inicializada aleatoriamente (laranja) permanece plano próximo de 0 por quase um milhão de episódios: a tarefa "obter um diamante" tem uma recompensa muito esparsa para que um agente ingênuo a encontre por exploração aleatória. O RL fine-tunado a partir do modelo VPT pré-treinado (verde) já parte com o comportamento básico (minerar, fabricar, explorar) e sobe regularmente até uma recompensa de aproximadamente 25, o que corresponde ao caminho completo até uma picareta de diamante.

Demonstrações em vídeo oficiais do projeto VPT da OpenAI, mostrando o agente em ação.

OpenAI Five : O problema do reward shaping

OpenAI Five jogando Dota 2 contra profissionais humanos

O OpenAI Five (2019) derrotou os campeões mundiais de Dota 2 usando puro self-play RL: sem aprendizagem por imitação. 256 GPUs, 128.000 núcleos de CPU, 180 anos de gameplay por dia, 10 meses de treinamento.

Mas a função de recompensa foi feita à mão por especialistas em Dota: 28 das 20.000 features disponíveis, cada uma com pesos ajustados manualmente. Patrimônio líquido, abates, mortes, saúde das torres, atribuições de rota: todos selecionados e ponderados por humanos. Sem essa modelagem, o agente mal aprendia (experimento: recompensa apenas vitória/derrota → platô no nível semi-profissional).

O bot do vídeo enfrenta o mesmo problema: sua função de recompensa codifica o entendimento do criador sobre o que importa no PvP (acertar golpes é bom, sofrer dano é ruim, manter a mira é bom). Isso é inevitável: RL precisa de um sinal de recompensa, e modelar esse sinal codifica viés humano.

DreamerV3 : Modelos mundiais e recompensas esparsas

Pontuações benchmark do DreamerV3 em mais de 150 tarefas diversas com uma única configuração

O DreamerV3 da DeepMind (2023) adota uma terceira abordagem. Em vez de behavior cloning ou RL com modelagem, ele aprende um modelo mundial: uma rede neural que prevê estados futuros e recompensas a partir de ações passadas: e planeja sonhando com futuros possíveis. Foi o primeiro algoritmo a coletar diamantes no Minecraft do zero sem dados humanos ou currículos, publicado na Nature em 2025.

DreamerV3 aprende um modelo mundial para imaginar trajetórias futuras

O ambiente do diamante define uma recompensa esparsa sobre 12 marcos (tronco → tábuas → graveto → mesa de trabalho → picareta de madeira → pedregulho → picareta de pedra → minério de ferro → fornalha → lingote de ferro → picareta de ferro → diamante), cada um dando +1 exatamente uma vez. Além de uma pequena recompensa de saúde (±0,01 por hp). Total alcançável: 11,1 em um episódio de 36.000 passos.

O modelo mundial do DreamerV3 permite que ele imagine trajetórias e as avalie internamente: o ator aprende a partir de rollouts sonhados em vez de experiência real, testando milhares de futuros possíveis para cada passo real. Isso torna recompensas esparsas viáveis onde matariam um agente RL padrão.

Em 40 sementes treinadas por 100M passos ambientais, 24 de 40 coletaram pelo menos um diamante. O primeiro diamante apareceu após 29M passos (~9 dias em uma GPU).

ANNA : IA simbólica encontra Minecraft

A decomposição em árvore de tarefas da ANNA para uma pederneira

Antes do bot PvP do vídeo, antes do VPT e DreamerV3, havia ANNA: um bot Minecraft construído com uma filosofia completamente diferente. Em vez de aprender a partir de pixels ou recompensas, a ANNA usa uma máquina de estados simbólica com um parser NLP francês e uma árvore de dependência de tarefas escrita à mão.

Criada em 2022 (antes de "vibe coding" ser um termo), a ANNA se conecta a um servidor Minecraft via Mineflayer e entende comandos em linguagem natural em francês. Diga "obtiens un briquet" (pegue uma pederneira), e o parser da ANNA identifica o verbo (obtien → obter), consulta a receita do item e a decompõe recursivamente em subtarefas: minere troncos de carvalho → crie tábuas → crie gravetos → crie uma mesa de trabalho → crie uma picareta de madeira → minere pedra → crie uma picareta de pedra → minere minério de ferro → funda lingotes de ferro → crie a pederneira.

Arquitetura do parser NLP da ANNA para reconhecimento de comandos em francês

A camada NLP (utils/id_parser.js) divide comandos em "et" (e) para lidar com ordens paralelas, mapeia verbos franceses para tipos de tarefa (craft, mine, tue, suis moi) e traduz nomes de itens franceses para IDs do Minecraft através de um dicionário de 5.000 entradas. Comandos não reconhecidos caem em um sistema de conversação baseado em GPT que apresenta a ANNA como um companheiro senciente do Minecraft.

A árvore de tarefas (mc-tasks-tree/) é o núcleo: um algoritmo recursivo que percorre o grafo de itens do Minecraft (receitas de crafting, rendimentos de mineração, drops de mobs, receitas de fornalha) para produzir um plano passo a passo. Para um capacete de diamante, gera uma decomposição de 40+ passos abrangendo os níveis madeira, pedra, ferro e diamante.

Árvore de tarefas do capacete de diamante da ANNA: uma decomposição de 40+ passos

Enquanto o bot PvP do vídeo aprende com a experiência, a ANNA funciona a partir do conhecimento. Ela não precisa de 1.000 duelos ou 60 horas de treinamento: precisa da árvore, do parser e do servidor. Mas também não consegue generalizar além do que sua árvore codifica. Nenhuma quantidade de engenharia de máquina de estados ensinaria PvP a ela.

A abordagem da ANNA reflete uma era diferente da IA: antes do aprendizado end-to-end dominar, quando a promessa era que o raciocínio simbólico combinado com engenharia cuidadosa poderia produzir comportamento inteligente. Hoje, projetos como ANNA e o bot PvP representam dois polos da IA no Minecraft: um raciocina sobre o mundo, o outro o percebe.

Mace Bot do Master Gumbo : IA com apenas command blocks

A arena de treinamento Mace PvP com o bot

Em um canto completamente diferente da IA no Minecraft, o YouTuber Master Gumbo construiu um bot de treinamento PvP usando apenas command blocks: sem mods, sem plugins, sem código externo. Apenas comandos vanilla do Minecraft, redstone e um carpet mod para entidades réplica do jogador. O resultado é um oponente IA de mace PvP que pratica breach swapping, wind charging e mecânicas de escudo com o jogador.

O bot começa como um zumbi com equipamento inquebrável e um totem na mão secundária (reabastecido a cada tick via /item replace), tornando-o efetivamente imortal. Depois, Master Gumbo muda para os bots Carpet Mod's player replica, que suportam mecânicas humanas (levantar escudo, trocar itens) que zumbis não conseguem fazer.

O centro de configurações: botões para configurar o comportamento do bot

A inovação principal é uma máquina de estados impulsionada por aleatoriedade. Um armor stand é teletransportado acima de um círculo de blocos de concreto coloridos usando o comando /spreadplayers, que dispersa entidades aleatoriamente. Onde o armor stand cai determina a próxima ação do bot:

  • Concreto vermelho → strafe para trás
  • Concreto azul → wind charge para cima (ataque)
  • Concreto verde → levantar escudo
  • Concreto branco → pausa (adiciona atraso entre ações)

O sistema de decisão da IA: um armor stand sobre concreto colorido

A posição do armor stand é lida por command blocks que detectam o bloco abaixo dele e ativam o mecanismo correspondente. Um bloco de redstone é colocado ou removido para ativar/desativar cada comportamento. Como /spreadplayers é executado em repetição, o bot continuamente toma novas decisões, criando um comportamento imprevisível mas estruturado.

Master Gumbo chama isso de "uma forma muito simples e básica de IA": não aprende com interações como redes neurais, mas a aleatoriedade combinada com a máquina de estados produz um comportamento PvP realista que é mais difícil de prever do que um bot scriptado. O centro de configurações inclui uma interface de livro para ligar/desligar a IA, ajustar dificuldade e configurar padrões de movimento.

Após treinar com o bot e depois duelar contra o jogador que o chamou de ruim (na introdução do vídeo), Master Gumbo vence. O mapa é compartilhado via Discord, com Carpet Mod requisitado.

O bot em um duelo, praticando técnicas de mace PvP

Enquanto o bot PvP (Kadambi) aprende a partir de pixels e a ANNA raciocina através de uma árvore de tarefas, o bot do Master Gumbo alcança inteligência através de transições de estado randomizadas: uma abordagem pura de command blocks que prova que você não precisa de redes neurais para construir um oponente PvP convincente.

Altoclef : Baritone + task tree em grande escala

Se a ANNA é um bot simbólico que lê para saber o que fazer, e o Mace Bot randomiza decisões, Altoclef é um agente totalmente autônomo que planeja seu caminho através do jogo inteiro. Construído por gaucho-matero como um mod Fabric e alimentado pelo pathfinding Baritone, Altoclef decompõe qualquer objetivo do Minecraft em uma task tree e o executa sem intervenção humana.

A interface é enganosamente simples : digite @gamer no chat, e Altoclef começa a tarefa "zerar o jogo" a partir de um mundo survival. Ele coleta madeira, crafta ferramentas, minera ferro e diamante, constrói um portal do Nether, coleta blaze rods e ender pearls, encontra a stronghold e mata o Ender Dragon. Tudo autonomamente, através do cliente nativo do Minecraft, em qualquer servidor vanilla.

Por baixo dos panos, isso é alcançado através de um sistema recursivo de task tree onde cada objetivo de alto nível (por exemplo, "craft uma picareta de diamante") é decomposto em tarefas pré-requisito : minerar diamantes → fundi-los → craftar gravetos → combinar. A árvore percorre o grafo completo de receitas do Minecraft, lidando com production chains, mob drops, loot tables e acesso a contêineres. Diferente da árvore escrita à mão da ANNA, as tarefas do Altoclef são classes Java programáveis que podem implementar lógica arbitrária : estratégias de combate, troca com piglins, padrões de exploração.

Altoclef representa o limite da IA Minecraft simbólica pura : ele pode zerar o jogo do zero sem treinamento, sem GPU e sem dados humanos, mas não consegue se adaptar a tarefas que seus programadores não anteciparam, e não pode aprender com a experiência. Ele sabe craftar uma picareta de diamante porque uma classe Java diz exatamente como, não porque ele descobriu sozinho.

O que os une

Abordagem Método principal Dados Computação Resultado
Bot PvP do vídeo RL + aprendizagem por imitação 1.000 duelos 1 laptop, 60h Combo de 100 golpes
OpenAI Five Self-play RL 180 anos de gameplay/dia 256 GPUs, 10 meses Campeão mundial Dota 2
VPT IL semissupervisionada 70K horas YouTube + IDM 720 GPUs, 9 dias Ferramentas de diamante
DreamerV3 World model RL Trajetórias sonhadas 1 GPU, 9 dias Diamante do zero
ANNA NLP simbólico + árvore tarefas Receitas escritas à mão 1 laptop, instantâneo Qualquer item fabricável
Altoclef Baritone + task tree Classes Java de tarefas Fabric mod, sem GPU Zera o jogo inteiro
Mace Bot Máquina estados c/ command block Decisões randomizadas MC vanilla, sem GPU Treinamento Mace PvP

O bot do vídeo é o mais limitado em recursos, mas o mais honesto sobre o processo. Ele falha primeiro, depois itera. Esquece o que aprendeu, depois reaprende. Termina com um combo de 100 golpes: mas também com uma pergunta sobre se o que construiu é trapaça.


Vídeo : AI Learns Minecraft PvP por Kadambi | AI Engineering

VPT : Paper · Blog · GitHub

OpenAI Five : Paper · Blog

DreamerV3 : Paper · GitHub

ANNA : GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef : GitHub · Active fork · (Fabric, Baritone, task tree, beats game)

Mace Bot : Video por Master Gumbo · (Command blocks, Carpet Mod, state machine)

AI Belajar Minecraft PvP -- Imitation Learning, Reinforcement Learning, dan 30 Variabel yang Penting

1.000 duel direkam, jaringan saraf dilatih pada piksel, akurasi penekanan tombol 90% : dan bot berjalan lurus ke tembok. Kemudian datang RL, curriculum learning, dan 60 jam pelatihan.

Pendahuluan

AI Belajar Minecraft PvP thumbnail

Ada sebuah video berjudul AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) oleh Kadambi | AI Engineering, dan ini adalah salah satu catatan paling jujur tentang pelatihan AI bermain game yang pernah saya lihat.

Premisnya: buat bot yang memainkan Minecraft PvP (sword kit, baju diamond fully enchanted) dengan melihat layar dan mengeluarkan perintah mouse dan keyboard. Tidak membaca memori game, tidak ada makro, tidak ada mod : hanya piksel masuk, aksi keluar.

Yang membuat video ini menarik bukanlah hasil akhirnya. Melainkan perjalanannya: kegagalan imitation learning, pivot feature engineering, siklus catastrophic forgetting, dan 60+ jam pelatihan di laptop tanpa GPU.

Fase 1 : Imitation Learning (kegagalan)

Bot selama imitation learning: menghadap tembok, melompat-lompat

Pembuatnya memulai dengan pendekatan yang masuk akal: merekam 1.000 duel dari permainannya sendiri, memetakan setiap klik mouse dan tekan tombol ke frame yang sesuai, dan melatih jaringan saraf untuk memprediksi aksi dari piksel.

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

Jaringan belajar memprediksi penekanan tombol dengan akurasi 90%. Menjanjikan.

Lalu mereka mengujinya dalam pertandingan sungguhan. Bot berjalan lurus ke tepi peta, menghadap tembok, dan melompat-lompat.

Mengapa?

Perangkap kemalasan. Dalam pertarungan PvP, tombol W ditekan hampir sepanjang waktu. Jaringan menyadari bahwa ia bisa mencapai akurasi tinggi dengan hanya menahan W dan tidak melakukan apa pun. Ia mengoptimalkan aksi yang paling umum dengan mengorbankan semua yang lain.

Latensi manusia. Aksi dalam dataset tertunda ~200ms karena waktu reaksi manusia. Frame demi frame, sebab dan akibat hampir mustahil dipelajari model dari piksel mentah ketika aksi dan konsekuensi visualnya terpisah beberapa frame.

Demonstrasi yang tidak konsisten. Permainan pembuatnya sendiri bervariasi : kadang strafe dengan keyboard, kadang membidik dengan mouse dalam situasi yang identik. Input yang saling bertentangan ini membingungkan jaringan.

Fase 2 : Reinforcement Learning dengan Curriculum

Bot belajar melacak secara horizontal selama pelatihan RL

Meninggalkan imitation learning, pembuatnya beralih ke RL. Tapi menjatuhkan agen baru ke dalam duel PvP penuh tidak berguna : terlalu banyak hal terjadi sekaligus untuk eksplorasi acak menemukan sesuatu.

Solusinya: curriculum learning. Isolasi setiap mekanik dan biarkan bot menguasai dasar-dasarnya sebelum memasuki pertarungan sungguhan.

Langkah 1 : Bidik Horizontal (7 jam)

Fungsi reward paling sederhana: hadiah positif untuk pukulan, penalti negatif untuk menerima damage.

Awalnya, bot hampir tidak bergerak (jaringan saraf diinisialisasi untuk mengeluarkan nilai netral). Ia berguncang dari sisi ke sisi : itu adalah bot yang menguji berbagai aksi untuk melihat mana yang memberikan reward.

Setelah satu jam, ia belajar memusatkan diri secara horizontal, tapi sangat lambat. Setelah 7 jam, ia bisa melacak musuh ke kiri dan kanan, meskipun asimetris (lebih baik bergerak dari kanan ke kiri daripada kiri ke kanan, perilaku yang bertahan sepanjang pelatihan).

Langkah 2 : Feature Engineering

Tangkapan layar mentah memiliki lebih dari 2 juta piksel. Bahkan jika diperkecil ke 360p, itu masih 200.000 input : terlalu banyak untuk pembelajaran yang efisien.

Pembuatnya menganalisis ribuan duel dan mengidentifikasi 30 variabel yang benar-benar penting, dibagi menjadi tiga kelompok:

Vision (pelacakan musuh) :

  • Jarak musuh dari crosshair
  • Ukuran bounding box musuh
  • Tinggi musuh
  • Status crosshair (tepat sasaran/tidak)
  • Kecepatan relatif

Alih-alih memproses seluruh gambar, bot menyaring piksel secara ketat berdasarkan warna armor musuh, membuat deteksi hampir instan. Blok latar belakang dengan warna serupa bisa mengganggu : tapi di Minecraft, Anda bisa mengganti tekstur.

OCR (membaca HUD) : Karena bot tidak bisa mengambil koordinat dari kode game, ia memindai layar secara real-time untuk mengekstrak:

  • Kemiringan kamera (pitch)
  • Momentum
  • Level Y

OCR standar kesulitan dengan teks transparan Minecraft, sehingga data kritis dipaksakan menjadi hitam putih untuk pembacaan instan.

Waktu (context window) :

  • Waktu sejak Anda memukul musuh
  • Waktu sejak mereka memukul Anda
  • Buffer bergulir dari aksi bot sebelumnya

Ini memberikan konteks temporal pada jaringan : tanpanya, bot tidak tahu apakah ia sedang di tengah kombo atau baru memulai pertarungan.

Langkah 3 : Bidik Vertikal (tambah 7 jam)

Bot belajar membidik ke atas dan ke bawah selama pelatihan RL

Menambahkan gerakan mouse vertikal adalah "bencana total" pada awalnya. Performa awal rusak.

Setelah satu jam lagi di sandbox, bot berhasil belajar melihat ke atas dan ke bawah. Namun dalam prosesnya, ia benar-benar lupa cara melacak secara horizontal.

Ini adalah catastrophic forgetting : masalah machine learning klasik di mana pengoptimalan untuk data baru menimpa representasi yang telah dipelajari sebelumnya. Dengan mengoptimalkan bidikan vertikal, jaringan saraf secara tidak sengaja menimpa kemajuan horizontalnya, meninggalkan pembuatnya dengan bot yang bisa memegang crosshair secara horizontal tapi tidak bisa mengikuti target.

Diperlukan 6 jam tambahan untuk mendapatkan kembali pelacakan horizontal sambil mempertahankan kontrol vertikal. Bot kemudian mempertahankan penempatan crosshair yang baik berkat kelompok OCR yang mengekstrak kemiringan kamera.

Langkah 4 : Kontrol Keyboard

Bot menekan tombol W terus-menerus, belajar berkomitmen pada gerakan

Memberi bot izin untuk menggunakan keyboard membuat fitur berbasis waktu menjadi lebih kritis. Awalnya, tombol W terus dinyalakan dan dimatikan : pergantian cepat karena jaringan belum belajar berkomitmen.

Perilaku ini diberi penalti, sehingga bot belajar menghaluskannya. Ia mulai lebih sering mendaratkan sprint hit (suara thud vs suara whoosh dari ayunan berdiri). Beberapa kombo terlihat kurang memuaskan karena bot mengeksploitasi keunggulan jangkauannya atas musuh.

Agar adil, pembuatnya menaikkan jangkauan musuh. Banyak strategi yang dipelajari bot berhenti bekerja. Namun dengan waktu tambahan, ia beradaptasi.

Langkah 5 : Mengajari bot kapan harus klik

Untuk fase terakhir, pembuatnya menggunakan kembali imitation learning : tapi hanya untuk mengajari waktu klik, bukan kebijakan kontrol penuh. Bot mencoba meniru pola klik dari duel yang direkam.

Awalnya ia terlalu takut untuk mencoba apa pun, khawatir akan penalti untuk klik yang salah. Namun akhirnya ia memberanikan diri untuk mengayun dan mendaratkan pukulan. Tentu saja, ia lupa cara membidik lagi dalam prosesnya : pembuatnya harus membiarkannya selama 50 jam lagi untuk kembali ke kondisi yang memuaskan.

Perdebatan tentang kecurangan

Video diakhiri dengan bertanya: apakah bot ini curang?

Argumen menentang: bot hanya memproses apa yang dilihat manusia (piksel yang sama), mengirimkan input keyboard/mouse yang sama seperti manusia (tidak ada manipulasi paket seperti anti-knockback), dan tidak membaca memori game (tidak ada X-ray atau ESP).

Argumen mendukung: bot bisa memproses lebih cepat daripada manusia, dan jika lawan mengira mereka bermain melawan manusia padahal tidak, itu adalah penipuan.

Pendapat pembuatnya: tergantung pada niatnya. Jika kedua pihak tahu itu bot, itu adalah pertandingan yang adil. Bot kemudian melanjutkan untuk mengkombo musuh ke dalam void dengan 100-hit streak.

Hasilnya

Bot mengeksekusi kombo 100 pukulan

Sebuah bot Minecraft PvP yang dilatih di laptop tanpa GPU, dibangun di atas pipeline pelatihan kustom dengan:

  • Screen capture untuk input piksel (2M+ piksel → 30 fitur rekayasa)
  • Curriculum learning (horizontal → vertikal → keyboard → klik)
  • RL untuk kontrol motorik + imitation learning untuk waktu klik
  • Feature engineering pada piksel mentah (3 kelompok: vision, OCR, waktu)
  • 60+ jam pelatihan di berbagai fase

Total waktu pelatihan mencapai puluhan jam, tapi sebagian besar bersifat pasif. Bot berguncang menuju pemahaman, melupakan apa yang dipelajarinya, mempelajarinya kembali, dan akhirnya merangkai kombo 100 pukulan.

Video ada di youtube.com/watch?v=j5nxDKAjg6U.


Artikel ini hanya mencakup konten video. Untuk konteks yang lebih luas tentang AI Minecraft: VPT, DreamerV3, dan lanskap imitation learning vs RL : bagian di bawah menghubungkan proyek ini dengan bidang yang lebih luas.

VPT : Behavior cloning dalam skala besar

Diagram proyek VPT OpenAI: Inverse Dynamics Model memprediksi aksi dari pasangan frame

Pendekatan "behavior cloning" video (Fase 1) adalah teknik yang sama yang digunakan OpenAI dalam proyek Video PreTraining (VPT) mereka, tetapi di ujung spektrum sumber daya yang berlawanan. VPT membuktikan bahwa imitation learning bekerja untuk Minecraft jika Anda memiliki 70.000 jam video, 720 GPU, dan inverse dynamics model untuk memberi pseudo-label pada data yang tidak berlabel. Pembuat di sini membuktikan bahwa itu gagal dengan satu laptop dan 1.000 duel : tapi untuk alasan fundamental yang sama: imitation learning dibatasi oleh kualitas demonstrasinya.

Agen VPT OpenAI menambang pohon di Minecraft

Pipeline VPT memecahkan masalah data dengan melatih Inverse Dynamics Model (IDM) yang melihat frame t-1 dan frame t+1 untuk memprediksi aksi pada frame t. Karena IDM bersifat non-kausal (ia melihat frame masa depan), tugasnya lebih mudah daripada behavioral cloning dan membutuhkan lebih sedikit data berlabel. Mereka membayar kontraktor ~$2.000 untuk 2.000 jam data berlabel, lalu menggunakan IDM untuk memberi pseudo-label pada 70.000 jam video YouTube Minecraft.

Model fondasi 0,5B parameter yang dihasilkan mencapai kemampuan zero-shot yang mustahil dengan RL saja : menebang pohon, membuat meja kerajinan, pillar jumping : dan setelah fine-tuning dengan RL, menjadi AI pertama yang membuat alat diamond.

Tingkat kerajinan/koleksi berdasarkan volume data prapelatihan (skala log): meja kerajinan, alat kayu, alat batu

Efek skalanya jelas: pada sumbu log dari 1 jam hingga 100.000 jam data prapelatihan, tingkat di mana model membuat meja kerajinan, alat kayu, lalu alat batu meningkat secara bertahap. Model yang dilatih hanya pada 2.000 jam data berlabel dari kontraktor mencapai puncak pada meja kerajinan; dengan menambahkan 70.000 jam data pseudo-berlabel dari IDM (garis putus-putus pada grafik), alat batu muncul secara zero-shot, tanpa satu pun langkah RL.

Reward berdasarkan jumlah episode pelatihan RL: memulai dari model yang diinisialisasi acak vs memulai dari model VPT yang sudah diprapelatih

Grafik ini menunjukkan mengapa prapelatihan mengubah segalanya untuk RL hilir. RL yang dimulai dari jaringan yang diinisialisasi acak (oranye) tetap datar mendekati 0 selama hampir satu juta episode: tugas "mendapatkan diamond" memiliki reward yang terlalu jarang untuk agen naif menemukannya melalui eksplorasi acak. RL yang di-fine-tune dari model VPT yang sudah diprapelatih (hijau) sudah dimulai dengan perilaku dasar (menambang, membuat, menjelajah) dan meningkat secara stabil hingga reward sekitar 25, yang sesuai dengan jalur lengkap menuju beliung diamond.

Demo video resmi proyek VPT OpenAI, menunjukkan agen sedang beraksi.

OpenAI Five : Masalah reward shaping

OpenAI Five bermain Dota 2 melawan profesional manusia

OpenAI Five (2019) mengalahkan juara dunia Dota 2 menggunakan pure self-play RL : tanpa imitation learning. 256 GPU, 128.000 core CPU, 180 tahun gameplay per hari, 10 bulan pelatihan.

Tapi fungsi reward-nya dibuat secara manual oleh ahli Dota: 28 dari 20.000 fitur yang tersedia, masing-masing dengan bobot yang disetel manual. Kekayaan, kill, mati, kesehatan menara, tugas jalur : semua dipilih dan diberi bobot oleh manusia. Tanpa shaping ini, agen hampir tidak belajar (eksperimen: reward hanya menang/kalah → plateau di level semi-pro).

Bot dalam video menghadapi masalah yang sama: fungsi reward-nya mengkodekan pemahaman pembuat tentang apa yang penting dalam PvP (mendaratkan pukulan itu baik, menerima damage itu buruk, mempertahankan crosshair itu baik). Ini tidak terhindarkan : RL membutuhkan sinyal reward, dan membentuk sinyal itu mengkodekan bias manusia.

DreamerV3 : World model dan sparse reward

Skor benchmark DreamerV3 di lebih dari 150 tugas beragam dengan konfigurasi tunggal

DreamerV3 dari DeepMind (2023) mengambil pendekatan ketiga. Alih-alih behavior cloning atau RL dengan reward shaping, ia mempelajari world model : sebuah jaringan saraf yang memprediksi keadaan masa depan dan reward dari aksi masa lalu : dan merencanakan dengan memimpikan kemungkinan masa depan. Ini adalah algoritma pertama yang mengumpulkan diamond di Minecraft dari awal tanpa data manusia atau kurikulum, diterbitkan di Nature pada tahun 2025.

DreamerV3 mempelajari world model untuk membayangkan lintasan masa depan

Lingkungan diamond mendefinisikan sparse reward melalui 12 pencapaian (log → planks → stick → crafting table → wooden pickaxe → cobblestone → stone pickaxe → iron ore → furnace → iron ingot → iron pickaxe → diamond), masing-masing memberikan +1 tepat satu kali. Ditambah reward kesehatan kecil (±0,01 per hp). Total yang bisa dicapai: 11,1 dalam episode 36.000 langkah.

World model DreamerV3 memungkinkannya membayangkan lintasan dan mengevaluasinya secara internal : aktor belajar dari rollout yang diimpikan daripada pengalaman nyata, menguji ribuan kemungkinan masa depan untuk setiap langkah nyata. Ini membuat sparse reward menjadi layak di mana mereka akan membunuh agen RL standar.

Di 40 seeds yang dilatih selama 100M langkah lingkungan, 24 dari 40 mengumpulkan setidaknya satu diamond. Diamond pertama muncul setelah 29M langkah (~9 hari di satu GPU).

ANNA : AI Simbolik Bertemu Minecraft

Dekomposisi pohon tugas ANNA untuk flint-and-steel

Sebelum bot PvP dalam video, sebelum VPT dan DreamerV3, ada ANNA : sebuah bot Minecraft yang dibangun dengan filosofi yang sama sekali berbeda. Alih-alih belajar dari piksel atau reward, ANNA menggunakan state machine simbolik dengan parser NLP bahasa Prancis dan pohon ketergantungan tugas yang dibuat secara manual.

Dibuat pada tahun 2022 (sebelum istilah "vibe coding" ada), ANNA terhubung ke server Minecraft melalui Mineflayer dan memahami perintah bahasa alami dalam bahasa Prancis. Katakan "obtiens un briquet" (ambilkan korek api), dan parser ANNA mengidentifikasi kata kerja (obtien → dapatkan), mencari resep item, dan mendekomposisinya secara rekursif menjadi sub-tugas : tambang kayu oak → buat planks → buat sticks → buat crafting table → buat wooden pickaxe → tambang batu → buat stone pickaxe → tambang bijih besi → smelt iron ingot → buat flint-and-steel.

Arsitektur parser NLP ANNA untuk pengenalan perintah bahasa Prancis

Lapisan NLP (utils/id_parser.js) memisahkan perintah pada "et" (dan) untuk menangani perintah paralel, memetakan kata kerja bahasa Prancis ke jenis tugas (craft, mine, tue, suis moi), dan menerjemahkan nama item bahasa Prancis ke ID Minecraft melalui kamus 5.000 entri. Perintah yang tidak dikenali akan jatuh ke sistem percakapan berbasis GPT yang menjadikan ANNA sebagai pendamping Minecraft yang dikaruniai kesadaran.

Task tree (mc-tasks-tree/) adalah intinya : sebuah algoritma rekursif yang berjalan melalui grafik item Minecraft (resep kerajinan, hasil tambang, drop mob, resep furnace) untuk menghasilkan rencana langkah demi langkah. Untuk helm diamond, ia menghasilkan rincian 40+ langkah yang mencakup tingkatan kayu, batu, besi, dan diamond.

Pohon tugas helm diamond ANNA: rincian 40+ langkah

Di mana bot PvP dalam video belajar dari pengalaman, ANNA bekerja dari pengetahuan. Ia tidak membutuhkan 1.000 duel atau 60 jam pelatihan : ia membutuhkan pohon, parser, dan server. Tapi ia juga tidak bisa generalisasi melampaui apa yang dikodekan pohonnya. Jumlah rekayasa state machine tidak akan pernah bisa mengajarinya PvP.

Pendekatan ANNA mencerminkan era AI yang berbeda : sebelum end-to-end learning mendominasi, ketika janjinya adalah bahwa penalaran simbolik + rekayasa hati-hati bisa menghasilkan perilaku cerdas. Saat ini, proyek seperti ANNA dan bot PvP mewakili dua kutub AI Minecraft : satu bernalar tentang dunia, yang lain mempersepsikannya.

Mace Bot Milik Master Gumbo : AI Hanya dengan Command Block

Arena pelatihan Mace PvP dengan bot

Di sudut yang sama sekali berbeda dari AI Minecraft, YouTuber Master Gumbo membangun bot pelatihan PvP menggunakan hanya command block : tanpa mod, tanpa plugin, tanpa kode eksternal. Hanya perintah vanilla Minecraft, redstone, dan carpet mod untuk entitas replika pemain. Hasilnya adalah lawan AI mace PvP yang berlatih breach swapping, wind charging, dan mekanik perisai dengan pemain.

Bot mulai sebagai zombie dengan perlengkapan tidak bisa hancur dan totem di tangan kiri (diisi ulang setiap tick via /item replace), membuatnya efektif abadi. Kemudian, Master Gumbo beralih ke bot player replica milik Carpet Mod, yang mendukung mekanik seperti manusia (mengangkat perisai, mengganti item) yang tidak bisa dilakukan zombie.

Pusat pengaturan: tombol untuk mengonfigurasi perilaku bot

Inovasi intinya adalah state machine yang digerakkan oleh keacakan. Sebuah armor stand diteleportasi ke atas lingkaran balok beton berwarna menggunakan perintah /spreadplayers, yang menyebarkan entitas secara acak. Di mana armor stand mendarat menentukan aksi bot selanjutnya :

  • Beton merah → strafe mundur
  • Beton biru → wind charge ke atas (serangan)
  • Beton hijau → angkat perisai
  • Beton putih → jeda (menambahkan penundaan antar aksi)

Sistem keputusan AI: armor stand di atas beton berwarna

Posisi armor stand dibaca oleh command block yang mendeteksi blok di bawahnya dan mengaktifkan mekanisme yang sesuai. Blok redstone ditempatkan atau dihapus untuk mengaktifkan/menonaktifkan setiap perilaku. Karena /spreadplayers berjalan berulang, bot terus membuat keputusan baru, menciptakan perilaku yang tidak dapat diprediksi namun terstruktur.

Master Gumbo menyebut ini "bentuk AI yang sangat sederhana dan dasar" : ia tidak belajar dari interaksi seperti jaringan saraf, tetapi keacakan + state machine menghasilkan perilaku PvP realistis yang lebih sulit diprediksi daripada bot yang diprogram. Pusat pengaturan mencakup antarmuka buku untuk menyalakan/mematikan AI, menyesuaikan kesulitan, dan mengonfigurasi pola gerakan.

Setelah berlatih dengan bot dan kemudian berduel dengan pemain yang menyebutnya buruk (di intro video), Master Gumbo menang. Peta dibagikan melalui Discord dengan Carpet Mod diperlukan.

Bot dalam duel, berlatih teknik mace PvP

Di mana bot PvP (Kadambi) belajar dari piksel dan ANNA bernalar melalui pohon tugas, bot Master Gumbo mencapai kecerdasan melalui transisi keadaan acak : pendekatan command block murni yang membuktikan Anda tidak perlu jaringan saraf untuk membangun lawan PvP yang meyakinkan.

Altoclef : Baritone + task tree dalam skala besar

Jika ANNA adalah bot simbolik yang membaca untuk tahu apa yang harus dilakukan, dan Mace Bot mengacak keputusan, Altoclef adalah agen otonom penuh yang merencanakan jalannya melalui seluruh game. Dibangun oleh gaucho-matero sebagai mod Fabric dan didukung oleh Baritone pathfinding, Altoclef mendekomposisi tujuan Minecraft apa pun ke dalam task tree dan mengeksekusinya tanpa input manusia.

Antarmukanya sangat sederhana : ketik @gamer di chat, dan Altoclef memulai tugas beat-the-game dari world survival. Ia mengumpulkan kayu, membuat tools, menambang besi dan diamond, membangun Nether portal, mengumpulkan blaze rods dan ender pearls, menemukan stronghold, dan membunuh Ender Dragon. Semuanya otonom, semuanya melalui Minecraft client asli, di server vanilla mana pun.

Di balik layar, ini dicapai melalui sistem recursive task tree di mana setiap tujuan tingkat tinggi (misalnya, "buat diamond pickaxe") didekomposisi menjadi tugas prasyarat : tambang diamond → smelt → buat sticks → gabungkan. Pohon ini menelusuri seluruh grafik resep Minecraft, menangani production chain, mob drops, loot tables, dan akses container. Tidak seperti pohon ANNA yang dibuat dengan tangan, tugas Altoclef adalah Java class yang dapat diprogram yang bisa mengimplementasikan logika arbitrer : strategi tempur, barter dengan piglin, pola eksplorasi.

Wawasan arsitektur utamanya adalah pemisahan antara apa (task tree) dari bagaimana (Baritone pathfinding). Baritone menangani pergerakan tingkat rendah : pathfinding, penghindaran rintangan, pemecahan blok, manajemen inventory -- sementara sistem tugas mengoordinasikan rencana tingkat tinggi. Modularitas ini berarti tidak ada komponen yang perlu menjadi AI : keduanya adalah algoritma deterministik, namun kombinasinya menghasilkan perilaku kompleks yang diarahkan oleh tujuan dan menyaingi pendekatan yang dipelajari.

Altoclef mewakili batas dari AI Minecraft simbolik murni : ia bisa menyelesaikan game dari awal tanpa pelatihan, tanpa GPU, dan tanpa data manusia, tetapi ia tidak bisa beradaptasi dengan tugas yang tidak diantisipasi oleh programmernya, dan ia tidak bisa belajar dari pengalaman. Ia tahu cara membuat diamond pickaxe karena sebuah Java class memberitahunya persis bagaimana, bukan karena ia mengetahuinya sendiri.

Apa yang menyatukan mereka

Pendekatan Metode inti Data Komputasi Hasil
Bot PvP dalam video RL + imitation learning 1.000 duel 1 laptop, 60 jam Kombo 100 pukulan
OpenAI Five Self-play RL 180 th gameplay/hari 256 GPU, 10 bln Juara dunia Dota 2
VPT IL semi-supervised 70K jam YouTube + IDM 720 GPU, 9 hari Alat diamond
DreamerV3 World model RL Lintasan impian 1 GPU, 9 hari Diamond dari awal
ANNA NLP simbolik + pohon tugas Resep buatan tangan 1 laptop, instan Item apa pun yang bisa dibuat
Altoclef Baritone + task tree FS Java task classes Fabric mod, tanpa GPU Menyelesaikan seluruh game
Mace Bot State machine command block Keputusan acak Vanilla MC, tanpa GPU Pelatihan Mace PvP

Bot dalam video adalah yang paling terbatas sumber dayanya tetapi yang paling jujur tentang prosesnya. Ia gagal dulu, lalu berulang. Ia melupakan apa yang dipelajarinya, lalu belajar kembali. Ia berakhir dengan kombo 100 pukulan : tapi juga dengan pertanyaan tentang apakah yang dibangunnya itu curang.


Video : AI Learns Minecraft PvP oleh Kadambi | AI Engineering

VPT : Paper · Blog · GitHub

OpenAI Five : Paper · Blog

DreamerV3 : Paper · GitHub

ANNA : GitHub · (Node.js, Mineflayer, NLP Prancis, pohon tugas)

Altoclef : GitHub · Active fork · (Fabric, Baritone, task tree, beat game)

Mace Bot : Video oleh Master Gumbo · (Command blocks, Carpet Mod, state machine)

AI Minecraft PvP सीखता है -- इमिटेशन लर्निंग, रीइन्फोर्समेंट लर्निंग और 30 वेरिएबल जो मायने रखते हैं

1,000 द्वंद्व रिकॉर्ड किए गए, पिक्सल पर प्रशिक्षित न्यूरल नेटवर्क, 90% कीस्ट्रोक सटीकता : और बॉट सीधे दीवार में जा घुसा। फिर आए RL, करिकुलम लर्निंग और 60 घंटे का प्रशिक्षण।

परिचय

AI Minecraft PvP सीखता है थंबनेल

Kadambi | AI Engineering की एक वीडियो है AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning), और यह गेम खेलने वाला AI प्रशिक्षित करने की सबसे ईमानदार कहानियों में से एक है जो मैंने देखी है।

मूल विचार: एक बॉट बनाना जो स्क्रीन देखकर और माउस व कीबोर्ड कमांड देकर Minecraft PvP (तलवार किट, पूरी तरह से मोहित हीरा कवच) खेलता है। गेम मेमोरी पढ़ना नहीं, मैक्रो नहीं, मॉड नहीं: बस पिक्सल्स इन, एक्शन आउट।

इस वीडियो को दिलचस्प बनाने वाली चीज़ अंतिम परिणाम नहीं है। यह यात्रा है: इमिटेशन लर्निंग की विफलता, फीचर इंजीनियरिंग का मोड़, कैटास्ट्रॉफिक फॉरगेटिंग के चक्र, और बिना GPU वाले लैपटॉप पर 60+ घंटे का प्रशिक्षण।

चरण 1: इमिटेशन लर्निंग (विफलता)

इमिटेशन लर्निंग के दौरान बॉट: दीवार की ओर मुँह करके, ऊपर-नीचे कूदता हुआ

निर्माता ने एक समझदार दृष्टिकोण से शुरुआत की: अपने 1,000 द्वंद्व रिकॉर्ड किए, हर माउस क्लिक और की प्रेस को संबंधित फ्रेम से मैप किया, और पिक्सल से क्रियाओं की भविष्यवाणी करने के लिए न्यूरल नेटवर्क प्रशिक्षित किया।

# इमिटेशन लर्निंग पाइपलाइन के लिए स्यूडोकोड
dataset = record_duels(1000)          # लाखों फ्रेम
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # इमेज से कीबोर्ड माउस का अनुमान

नेटवर्क ने 90% सटीकता से कीस्ट्रोक की भविष्यवाणी करना सीख लिया। आशाजनक।

फिर उन्होंने इसे वास्तविक मैच में परखा। बॉट सीधे मैप के किनारे पर गया, दीवार की ओर मुंह किया, और ऊपर-नीचे कूदने लगा।

क्यों?

आलस्य का जाल। PvP लड़ाई में, W की ज्यादातर समय नीचे दबी रहती है। नेटवर्क को एहसास हुआ कि वह बस W दबाकर और कुछ न करके उच्च सटीकता प्राप्त कर सकता है। इसने सबसे आम क्रिया के लिए सब कुछ अनुकूलित कर लिया, बाकी सब की कीमत पर।

मानव विलंबता। डेटासेट में क्रियाएँ मानव प्रतिक्रिया समय के ~200ms से विलंबित होती हैं। फ्रेम-दर-फ्रेम, कारण और प्रभाव मॉडल के लिए कच्चे पिक्सल से सीखना लगभग असंभव है जब क्रिया और उसका दृश्य परिणाम कई फ्रेमों से अलग होते हैं।

असंगत प्रदर्शन। निर्माता का अपना खेल भिन्न था: कभी कीबोर्ड से स्ट्राफिंग, कभी समान स्थितियों में माउस से निशाना लगाना। इस विरोधाभासी इनपुट ने नेटवर्क को भ्रमित कर दिया।

चरण 2: करिकुलम के साथ रीइन्फोर्समेंट लर्निंग

RL प्रशिक्षण के दौरान बॉट क्षैतिज रूप से ट्रैक करना सीख रहा है

इमिटेशन लर्निंग को छोड़कर, निर्माता ने RL पर स्विच किया। लेकिन एक नए एजेंट को पूर्ण PvP द्वंद्व में डालना बेकार है: यादृच्छिक खोज को कुछ खोजने के लिए एक साथ बहुत कुछ हो रहा है।

समाधान: करिकुलम लर्निंग। प्रत्येक मैकेनिक को अलग करें और बॉट को वास्तविक लड़ाई में प्रवेश करने से पहले मूल बातें सीखने दें।

चरण 1: क्षैतिज निशाना (7 घंटे)

सबसे सरल रीवार्ड फंक्शन: हिट लगाने पर सकारात्मक रीवार्ड, क्षति लेने पर नकारात्मक दंड।

शुरू में, बॉट मुश्किल से हिलता है (न्यूरल नेटवर्क तटस्थ मान आउटपुट करने के लिए आरंभित)। यह अगल-बगल हिलता है: बॉट विभिन्न क्रियाओं का परीक्षण कर रहा है कि कौन सी रीवार्ड देती हैं।

एक घंटे के बाद, यह क्षैतिज रूप से केंद्रित होना सीखता है, लेकिन बहुत धीरे। 7 घंटे के बाद, यह दुश्मन को बाएँ और दाएँ ट्रैक कर सकता है, हालांकि असममित रूप से (दाएँ-से-बाएँ बाएँ-से-दाएँ से बेहतर जाना -- एक व्यवहार जो प्रशिक्षण के दौरान बना रहा)।

चरण 2: फीचर इंजीनियरिंग

कच्चा स्क्रीन कैप्चर 2 मिलियन से अधिक पिक्सल था। 360p तक डाउनस्केल करने पर भी, वह 200,000 इनपुट है: कुशल सीखने के लिए बहुत अधिक।

निर्माता ने हजारों द्वंद्वों का विश्लेषण किया और 30 वेरिएबल्स की पहचान की जो वास्तव में मायने रखते हैं, तीन समूहों में विभाजित:

दृष्टि (दुश्मन ट्रैकिंग):

  • दुश्मन की क्रॉसहेयर से दूरी
  • दुश्मन का बाउंडिंग बॉक्स आकार
  • दुश्मन की ऊँचाई
  • क्रॉसहेयर स्थिति (लक्ष्य पर/बाहर)
  • सापेक्ष वेग

पूरी छवि को संसाधित करने के बजाय, बॉट पिक्सल्स को दुश्मन के कवच रंग द्वारा फ़िल्टर करता है, जिससे पता लगना लगभग तत्काल हो जाता है। समान रंग के पृष्ठभूमि ब्लॉक इसे बाधित कर सकते हैं -- लेकिन Minecraft में, आप बस टेक्सचर बदल सकते हैं।

OCR (HUD पढ़ना): चूंकि बॉट गेम के कोड से निर्देशांक नहीं खींच सकता, यह स्क्रीन को वास्तविक समय में स्कैन करता है:

  • कैमरा पिच
  • मोमेंटम
  • Y स्तर

मानक OCR Minecraft के पारदर्शी टेक्स्ट के साथ संघर्ष करता है, इसलिए महत्वपूर्ण डेटा को तत्काल पढ़ने के लिए काले और सफेद में बदल दिया जाता है।

समय (संदर्भ विंडो):

  • दुश्मन को मारने के बाद का समय
  • दुश्मन के मारने के बाद का समय
  • बॉट के अपने पिछले कार्यों का रोलिंग बफर

यह नेटवर्क को लौकिक संदर्भ देता है अन्यथा बॉट को नहीं पता कि वह कॉम्बो के बीच में है या अभी लड़ाई शुरू कर रहा है।

चरण 3: ऊर्ध्वाधर निशाना (अगले 7 घंटे)

RL प्रशिक्षण के दौरान बॉट ऊपर-नीचे निशाना सीख रहा है

ऊर्ध्वाधर माउस मूवमेंट जोड़ना शुरू में "पूरी आपदा" थी। शुरुआती प्रदर्शन टूटा हुआ था।

सैंडबॉक्स में एक और घंटे के बाद, बॉट ने ऊपर और नीचे देखना सीख लिया। लेकिन इस प्रक्रिया में, वह क्षैतिज रूप से ट्रैक करना पूरी तरह से भूल गया।

यह कैटास्ट्रॉफिक फ़ॉरगेटिंग है: एक क्लासिक मशीन लर्निंग समस्या जहां नए डेटा के लिए अनुकूलन पहले से सीखी गई प्रस्तुतियों को अधिलेखित कर देता है।

क्षैतिज ट्रैकिंग को वापस पाने में 6 अतिरिक्त घंटे लगे, जबकि, ऊर्ध्वाधर नियंत्रण बनाए रखा। उसके बाद बॉट ने OCR द्वारा कैमरा पिच निकालने की बदौलत अच्छा क्रॉसहेयर प्लेसमेंट बनाए रखा।

चरण 4: कीबोर्ड नियंत्रण

बॉट लगातार W की टॉगल कर रहा है, मूवमेंट के लिए प्रतिबद्ध होना सीख रहा है

बॉट को कीबोर्ड का उपयोग करने की अनुमति देने से समय-आधारित विशेषताएं और भी महत्वपूर्ण हो गईं। पहले, W की लगातार ऑन और ऑफ़ हो रही थी: त्वरित स्विचिंग क्योंकि नेटवर्क ने प्रतिबद्ध होना नहीं सीखा था।

इस व्यवहार को दंडित किया गया, इसलिए बॉट ने इसे स्मूद करना सीख लिया। इसने अधिक स्प्रिंट हिट लगाने शुरू किए (खड़े होकर झूले की फुसफुसाहट के बजाय थॉड़ की आवाज़)। कुछ कॉम्बो असंतोषजनक लगे क्योंकि बॉट ने दुश्मन पर अपनी पहुँच के लाभ का शोषण किया।

चीजों को निष्पक्ष बनाने के लिए, निर्माता ने दुश्मन की पहुँच बढ़ा दी। बॉट की कई सीखी हुई रणनीतियाँ काम करना बंद कर गईं। लेकिन अधिक समय देने पर, उसने अनुकूलित किया।

चरण 5: बॉट को सिखाना कब क्लिक करना है

अंतिम चरण के लिए, निर्माता ने इमिटेशन लर्निंग वापस लाया -- लेकिन केवल क्लिक टाइमिंग सिखाने के लिए, पूर्ण नियंत्रण नीति नहीं। बॉट ने रिकॉर्ड किए गए द्वंद्वों से क्लिक पैटर्न की नकल करने की कोशिश की।

शुरू में वह कुछ भी करने से डरता था, गलत क्लिक के लिए दंड के डर से। लेकिन अंततः उसने हिट लगाने का साहस किया। बेशक, इस प्रक्रिया में वह फिर से निशान लगाना भूल गया निर्माता को इसे 50 और घंटे अकेला छोड़ना पड़ा ताकि यह संतोषजनक स्थिति में वापस आ सके।

धोखाधड़ी बहस

वीडियो प्रश्न पूछकर समाप्त होता है: क्या यह बॉट धोखा दे रहा है?

खिलाफ तर्क: बॉट केवल वही प्रक्रिया करता है जो मानव देखता है (वही पिक्सल), वही कीबोर्ड माउस इनपुट भेजता है (कोई पैकेट हेरफेर जैसे एंटी-नॉकबैक नहीं), और गेम मेमोरी नहीं पढ़ता (कोई X-Ray या ESP नहीं)।

समर्थन में तर्क: बॉट मानव से तेज़ प्रक्रिया कर सकता है, और अगर प्रतिद्वंदी सोचता है कि वे एक मानव के खिलाफ खेल रहे हैं लेकिन ऐसा नहीं है, तो यह धोखा है।

निर्माता का दृष्टिकोण: यह इरादे पर निर्भर करता है। अगर दोनों पक्ष जानते हैं कि यह बॉट है, तो यह एक निष्पक्ष मैच है। बॉट आगे बढ़ता है और 100 हिट की स्ट्रीक के साथ दुश्मन को खालीपन में भेज देता है।

परिणाम

बॉट 100-हिट कॉम्बो निष्पादित करता है

एक Minecraft PvP बॉट जो बिना GPU वाले लैपटॉप पर प्रशिक्षित हुआ, एक कस्टम प्रशिक्षण पाइपलाइन पर बनाया गया:

  • स्क्रीन कैप्चर पिक्सल इनपुट के लिए (20 लाख+ पिक्सल → 30 इंजीनियर्ड फीचर्स)
  • करिकुलम लर्निंग (क्षैतिज → ऊर्ध्वाधर, → कीबोर्ड → क्लिकिंग)
  • RL मोटर नियंत्रण के लिए + इमिटेशन लर्निंग क्लिक टाइमिंग के लिए
  • फीचर इंजीनियरिंग कच्चे पिक्सल के बजाय (3 समूह: दृष्टि, OCR, समय)
  • 60+ घंटे का प्रशिक्षण अनेक चरणों में

कुल प्रशिक्षण समय दसियों घंटे है, लेकिन इसका अधिकांश भाग निष्क्रिय है। बॉट समझ पाने के लिए हिलता हुआ अपना रास्ता बनाता है, जो सीखा भूल जाता है, फिर सीखता है, और अंततः 100-हिट कॉम्बो बनाता है।

वीडियो यहाँ है youtube.com/watch?v=j5nxDKAjg6U.


यह लेख केवल वीडियो की सामग्री को कवर करता है। Minecraft AI के व्यापक संदर्भ के लिए: VPT, DreamerV3, और इमिटेशन लर्निंग बनाम RL परिदृश्य -- नीचे के अनुभाग इस परियोजना को व्यापक क्षेत्र से जोड़ते हैं।

VPT: बड़े पैमाने पर व्यवहार क्लोनिंग

OpenAI की VPT परियोजना आरेख: इनवर्स डायनामिक्स मॉडल फ्रेम जोड़ों से क्रियाओं की भविष्यवाणी करता है

वीडियो का "व्यवहार क्लोनिंग" दृष्टिकोण (चरण 1) वही तकनीक है जो OpenAI ने अपने Video PreTraining (VPT) प्रोजेक्ट में इस्तेमाल की थी, लेकिन संसाधन स्पेक्ट्रम के विपरीत छोरों पर। VPT ने साबित किया कि इमिटेशन लर्निंग Minecraft के लिए काम करती है जब आपके पास 70,000 घंटे वीडियो, 720 GPU और अनलेबल डेटा को स्यूडो-लेबल करने के लिए इनवर्स डायनेमिक्स मॉडल हो। निर्माता ने यहाँ साबित किया कि यह एक लैपटॉप और 1,000 द्वंद्वों के साथ विफल होती है -- लेकिन उसी मूल कारण से: इमिटेशन लर्निंग अपने प्रदर्शनों की गुणवत्ता से बंधी है।

OpenAI का VPT एजेंट Minecraft में पेड़ काटता हुआ

VPT पाइपलाइन एक इनवर्स डायनेमिक्स मॉडल (IDM) को प्रशिक्षित करके डेटा समस्या को हल करता है जो फ्रेम t-1 और फ्रेम t+1 को देखकर फ्रेम t पर क्रिया की भविष्यवाणी करता है। चूंकि IDM कारणात्मक नहीं है (यह भविष्य के फ्रेम देखता है), कार्य व्यवहार क्लोनिंग की तुलना में आसान है और बहुत कम लेबल वाले डेटा की आवश्यकता होती है। उन्होंने लेबल डेटा के 2,000 घंटों के लिए ठेकेदारों को लगभग $2,000 का भुगतान किया, फिर YouTube Minecraft वीडियो के 70,000 घंटों को स्यूडो-लेबल करने के लिए IDM का उपयोग किया।

प्री-ट्रेनिंग डेटा मात्रा के अनुसार क्राफ्टिंग/संग्रह दर (लॉग स्केल): क्राफ्टिंग टेबल, लकड़ी के उपकरण, पत्थर के उपकरण

स्केलिंग प्रभाव स्पष्ट है: 1 घंटे से 100,000 घंटे के प्री-ट्रेनिंग डेटा के लॉग अक्ष पर, मॉडल द्वारा क्राफ्टिंग टेबल, लकड़ी के उपकरण और फिर पत्थर के उपकरण बनाने की दर चरणों में बढ़ती है। केवल ठेकेदारों द्वारा लेबल किए गए 2,000 घंटों पर प्रशिक्षित मॉडल क्राफ्टिंग टेबल पर अटक जाता है; IDM द्वारा स्यूडो-लेबल किए गए 70,000 घंटे (ग्राफ़ पर बिंदीदार रेखा) जोड़ने पर ही पत्थर के उपकरण बिना एक भी RL चरण के जीरो-शॉट में उभरते हैं।

परिणामी 0.5B पैरामीटर वाला आधार मॉडल RL अकेले से असंभव जीरो-शॉट क्षमताएँ प्राप्त करता है: पेड़ काटना, टेबल बनाना, कॉलम जंप करना -- और RL से फाइन-ट्यून करने पर, यह हीरे के उपकरण बनाने वाला पहला AI बन गया।

RL प्रशिक्षण एपिसोड की संख्या के अनुसार रीवार्ड: यादृच्छिक रूप से आरंभित मॉडल बनाम पूर्व-प्रशिक्षित VPT मॉडल

यह ग्राफ़ दिखाता है कि प्री-ट्रेनिंग डाउनस्ट्रीम RL के लिए सब कुछ क्यों बदल देती है। यादृच्छिक रूप से आरंभित नेटवर्क से शुरू होने वाला RL (नारंगी) लगभग दस लाख एपिसोड तक 0 के करीब सपाट रहता है: "हीरा प्राप्त करें" कार्य का रीवार्ड इतना विरल है कि एक नौसिखिया एजेंट यादृच्छिक अन्वेषण द्वारा उस पर ठोकर नहीं खा सकता। पूर्व-प्रशिक्षित VPT मॉडल से फाइन-ट्यून किया गया RL (हरा) पहले से ही बुनियादी व्यवहार (खनन, क्राफ्टिंग, अन्वेषण) के साथ शुरू होता है और लगातार लगभग 25 के रीवार्ड तक बढ़ता है, जो हीरे की पिकैक्स तक के पूर्ण पथ के अनुरूप है।

OpenAI के VPT प्रोजेक्ट की आधिकारिक वीडियो डेमो, एजेंट को क्रिया में दिखाती हुई।

OpenAI Five: रीवार्ड शेपिंग समस्या

OpenAI Five मानव पेशेवरों के खिलाफ Dota 2 खेलता है

OpenAI Five (2019) ने शुद्ध सेल्फ-प्ले RL का उपयोग करके Dota 2 विश्व चैंपियन को हराया: कोई इमिटेशन लर्निंग नहीं। 256 GPUs, 128,000 CPU कोर, प्रति दिन 180 साल का गेमप्ले, 10 महीने का प्रशिक्षण।

लेकिन रीवार्ड फ़ंक्शन Dota विशेषज्ञों द्वारा हस्तनिर्मित था: 20,000 उपलब्ध सुविधाओं में से 28, प्रत्येक हस्त समायोजित वेट के साथ। नेट वर्थ, किल, मौतें, टॉवर स्वास्थ्य, लेन असाइनमेंट: सभी मनुष्यों द्वारा चयनित और भारित। इस आकार के बिना, एजेंट मुश्किल से सीखता है (प्रयोग: केवल जीत/हार का इनाम → अर्ध-पेशेवर स्तर पर स्थिर)।

DreamerV3: विश्व मॉडल और विरल रीवार्ड

एकल कॉन्फ़िगरेशन के साथ 150+ विविध कार्यों में DreamerV3 बेंचमार्क स्कोर

DeepMind का DreamerV3 (2023) तीसरा दृष्टिकोण लेता है। व्यवहार क्लोनिंग या आकार दिए गए RL के बजाय, यह एक विश्व मॉडल सीखता है: एक न्यूरल नेटवर्क जो पिछली क्रियाओं से भविष्य की स्थितियों और इनामों की भविष्यवाणी करता है, और संभावित भविष्यों के बारे में सपने देखकर योजना बनाता है। यह मानव डेटा या पाठ्यक्रम के बिना खरोंच से Minecraft में हीरे एकत्र करने वाला पहला एल्गोरिदम था, 2025 में Nature में प्रकाशित।

DreamerV3 भविष्य के प्रक्षेपवक्र की कल्पना करने के लिए एक विश्व मॉडल सीखता है

हीरा वातावरण 12 मील के पत्थर (लॉग → प्लैंक्स → स्टिक → क्राफ्टिंग टेबल → लकड़ी की पिकैक्स → कोबलस्टोन → स्टोन पिकैक्स → आयरन अयस्क → फर्नेस → आयरन इंगॉट → आयरन पिकैक्स → डायमंड) पर एक विरल इनाम को परिभाषित करता है, प्रत्येक एक बार देता है। साथ ही थोड़ा स्वास्थ्य इनाम। ±0.01 प्रति hp)। कुल प्राप्त करने योग्य: 36,000-चरण एपिसोड में 11.1।

DreamerV3 का विश्व मॉडल इसे प्रक्षेपवक्र की कल्पना करने और आंतरिक रूप से मूल्यांकन करने देता है: अभिनेता वास्तविक अनुभव के बजाय स्वप्निल रोलआउट से सीखता है।

ANNA: सांकेतिक AI Minecraft से मिलता है

ANNA का फ्लिंट-एंड-स्टील के लिए कार्य वृक्ष अपघटन

वीडियो के PvP बॉट, VPT और DreamerV3 से पहले ANNA था: पूरी तरह से अलग दर्शन के साथ बना Minecraft बॉट। पिक्सल या रीवार्ड से सीखने के बजाय, ANNA एक फ्रेंच NLP पार्सर और एक हस्तलिखित कार्य निर्भरता वृक्ष के साथ प्रतीकात्मक अवस्था मशीन का उपयोग करता है।

2022 में बनाया गया (इससे पहले "vibe coding" एक शब्द था), ANNA Mineflayer के माध्यम से Minecraft सर्वर से जुड़ता है और फ्रेंच में प्राकृतिक भाषा निर्देशों को समझता है। कहें "obtiens un briquet" (एक चकमक प्राप्त करें), और ANNA का पार्सर क्रिया की पहचान करता है (obtiens → प्राप्त करें), आइटम रेसिपी देखता है, और इसे उप-कार्यों में पुनरावर्ती रूप से विघटित करता है।

फ्रेंच कमांड पहचान के लिए ANNA के NLP पार्सर की वास्तुकला

NLP परत (utils/id_parser.js) "et" (और) पर कमांड को विभाजित करती है, फ्रेंच क्रियाओं को कार्य प्रकार में मैप करती है, और फ्रेंच आइटम नामों का एक 5,000-एंट्री शब्दकोश के माध्यम से Minecraft ID में अनुवाद करती है।

कार्य वृक्ष (mc-tasks-tree/) कोर है: एक पुनरावर्ती एल्गोरिदम जो Minecraft आइटम ग्राफ पर चलता है।

जहाँ वीडियो का PvP बॉट अनुभव से सीखता है, वहाँ ANNA ज्ञान से काम करता है। इसे 1,000 द्वंद्वों या 60 घंटे के प्रशिक्षण की आवश्यकता नहीं है: इसे वृक्ष, पार्सर और सर्वर की आवश्यकता है।

Master Gumbo का Mace Bot: केवल कमांड ब्लॉक के साथ AI

बॉट के साथ Mace PvP प्रशिक्षण मैदान

Minecraft AI के एक पूरी तरह से अलग कोने में, YouTuber Master Gumbo ने केवल कमांड ब्लॉक का उपयोग करके PvP प्रशिक्षण बॉट बनाया: कोई मॉड नहीं, कोई प्लगइन नहीं, कोई बाह्य कोड नहीं। परिणाम एक AI mace PvP प्रतिद्वंदी है जो खिलाड़ी के साथ ब्रीच स्वैपिंग, विंड चार्जिंग और शील्ड मैकेनिक्स का अभ्यास करता है।

मुख्य नवाचार एक यादृच्छिकता-संचालित अवस्था मशीन है। कलर्ड कंक्रीट ब्लॉक के एक वृत्त के ऊपर एक आर्मर स्टैंड को टेलिपोर्ट किया जाता है। आर्मर स्टैंड जहाँ उतरता है वह बॉट की अगली कार्रवाई निर्धारित करता है:

  • लाल कंक्रीट → पीछे की ओर स्ट्रैफ़ करें
  • नीला कंक्रीट → ऊपर की ओर विंड चार्ज (हमला)
  • हरा कंक्रीट → शील्ड उठाएं
  • सफ़ेद कंक्रीट → रुकें

Master Gumbo इसे "AI का एक बहुत ही सरल और बुनियादी रूप" कहते हैं।

Altoclef: कार्य वृक्ष Minecraft को हराता है

Altoclef बॉट स्वायत्त रूप से Minecraft खेल रहा है, Ender Dragon का सामना कर रहा है

Altoclef एक और बॉट है जो कार्य वृक्ष (task tree) का उपयोग करता है -- लेकिन ANNA के विपरीत, यह सर्वर-साइड नहीं है। Altoclef एक Fabric मॉड है जो क्लाइंट-साइड चलता है और पावरफुल pathfinding के लिए Baritone को एम्बेड करता है।

24 मई, 2021 को, gaucho-matrero के Altoclef ने इतिहास रचा: यह Minecraft को पूरी तरह से स्वायत्त रूप से हराने वाला पहला बॉट बना। पहले पेड़ को काटने से लेकर Ender Dragon को मारने तक -- बिना किसी मानव इनपुट के।

Altoclef एक उच्च-स्तरीय लक्ष्य लेता है जैसे @gamer (गेम हराएं) या @get diamond_sword, और इसे उप-कार्यों में विघटित करता है: खनन, क्राफ्टिंग, खोज, भीड़ से लड़ाई, piglins के साथ व्यापार, सब कुछ। प्रत्येक उप-कार्य आगे टूटता है जब तक कि वे परमाणु क्रियाएँ न हों जिन्हें Baritone नेविगेट कर सके और बॉट निष्पादित कर सके।

Baritone वह गुप्त सॉस है। यह Minecraft के लिए Google Maps जैसा है: यह बताता है कि कैसे बिंदु A से B तक पहुँचना है, बाधाओं से बचना, तैरना, चढ़ना, पुल बनाना, Nether को पार करना -- सब कुछ रीयल-टाइम में। Altoclef में Baritone पहले से बंडल आता है; आपको अलग से इंस्टॉल करने की आवश्यकता नहीं है।

#️⃣Java classes और #️⃣task tree Altoclef की रीढ़ हैं। हर कार्य एक Java class है जो use को Override करती है। BeatMinecraftTask दर्जनों उप-कार्यों को ऑर्केस्ट्रेट करता है: MineTask, CraftTask, SmeltTask, GatherTask, FightTask। प्रत्येक के पास अपनी खुद की condition, प्राथमिकता और विफलता प्रबंधन है।

ANNA की तरह, Altoclef सीखता नहीं है -- इसे प्रोग्राम किया गया है। इसे GPU या प्रशिक्षण डेटा की आवश्यकता नहीं है। लेकिन ANNA के विपरीत, यह वास्तविक Minecraft क्लाइंट में चलता है और पूरा गेम खेलता है: संसाधन संग्रह, नेथर पोर्टल, स्ट्रॉन्गहोल्ड फाइंडिंग, Ender Dragon -- बिना रुके।

जहाँ वीडियो का PvP बॉट एक कुशल योद्धा है, Altoclef एक स्वायत्त खिलाड़ी है। वे Minecraft AI के अलग-अलग पहलू -- लड़ाई बनाम उत्तरजीविता को संबोधित करते हैं।

इन्हें क्या एक साथ बांधता है

दृष्टिकोण मूल विधि डेटा कंप्यूट परिणाम
Video's PvP bot RL + इमिटेशन लर्निंग 1,000 द्वंद्व 1 लैपटॉप, 60 घंटे 100-हिट कॉम्बो
OpenAI Five सेल्फ-प्ले RL 180 वर्ष/दिन 256 GPU, 10 महीने विश्व चैंपियन Dota 2
VPT अर्ध निगरानी IL 70K घंटे YT + IDM 720 GPU, 9 दिन हीरे के उपकरण
DreamerV3 विश्व मॉडल RL स्वप्निल प्रक्षेपवक्र 1 GPU, 9 दिन खरोंच से हीरा
ANNA प्रतीकात्मक NLP + कार्य वृक्ष हस्त निर्मित रेसिपी 1 लैपटॉप, तत्काल कोई भी क्राफ्टेबल वस्तु
Altoclef Fabric + Baritone + कार्य वृक्ष Java classes में प्रोग्राम्ड 1 लैपटॉप, कोई GPU नहीं पूर्ण स्वायत्त गेम क्लियर
Mace Bot कमांड ब्लॉक अवस्था मशीन यादृच्छिक निर्णय वेनिला MC, कोई GPU नहीं Mace PvP प्रशिक्षण

वीडियो का बॉट संसाधनों में सबसे सीमित लेकिन प्रक्रिया के बारे में सबसे ईमानदार है। यह पहले विफल होता है फिर पुनरावृति करता है। यह सीखा हुआ भूल जाता है फिर दोबारा सीखता है। यह 100-हिट कॉम्बो के साथ समाप्त होता है -- लेकिन एक प्रश्न के साथ भी: क्या इसने जो बनाया वह धोखा है?


वीडियो: AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT: Paper · Blog · GitHub

OpenAI Five: Paper · Blog

DreamerV3: Paper · GitHub

ANNA: GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef: GitHub · Wiki · (Fabric, Baritone, task tree, Java)

Mace Bot: Video by Master Gumbo · (Command blocks, Carpet Mod, state machine)

الذكاء الاصطناعي يتعلم PvP في ماينكرافت -- التعلم بالمحاكاة، التعلم المعزز، و30 متغيرًا كانت مهمة

1000 مبارزة مسجلة، شبكة عصبية مدربة على البكسلات، دقة ضغطات مفاتيح 90%... والبوت اصطدم بالجدار. ثم جاء التعزيز، والتعلم المنهجي، و60 ساعة من التدريب.

مقدمة

صورة مصغرة: الذكاء الاصطناعي يتعلم PvP في ماينكرافت

هناك فيديو بعنوان AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) من Kadambi | AI Engineering، وهي واحدة من أكثر الروايات صدقًا عن تدريب ذكاء اصطناعي يلعب لعبة فيديو رأيتها على الإطلاق.

الفكرة: بناء بوت يلعب PvP في ماينكرافت (طقم سيف، درع ألماس كامل مسحور) من خلال مشاهدة الشاشة وإخراج أوامر الفأرة ولوحة المفاتيح. لا قراءة لذاكرة اللعبة، لا ماكرو، لا تعديلات: بكسلات داخلة، أفعال خارجة.

ما يجعل الفيديو مثيرًا للاهتمام ليس النتيجة النهائية. بل الرحلة: فشل التعلم بالمحاكاة، التحول إلى هندسة الميزات، دورات النسيان الكارثي، وأكثر من 60 ساعة من التدريب على كمبيوتر محمول بدون GPU.

المرحلة 1: التعلم بالمحاكاة (الفشل)

البوت أثناء التعلم بالمحاكاة: يواجه الحائط، يقفز لأعلى وأسفل

بدأ المبدع بنهج معقول: تسجيل 1000 مبارزة من لعبه الخاص، ربط كل نقرة فأرة وضغطة مفتاح بالإطار المقابل، وتدريب شبكة عصبية للتنبؤ بالأفعال من البكسلات.

# كود وهمي لخط أنابيب التعلم بالمحاكاة
dataset = record_duels(1000)          # مئات الآلاف من الإطارات
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # توقع لوحة المفاتيح/الفأرة من الصورة

تعلمت الشبكة التنبؤ بضغطات المفاتيح بدقة 90٪. واعد.

ثم اختبروها في مباراة فعلية. توجه البوت مباشرة إلى حافة الخريطة، واجه الحائط، وبدأ يقفز لأعلى وأسفل.

لماذا؟

مصيدة الكسل. في معركة PvP، مفتاح W يكون مضغوطًا معظم الوقت. أدركت الشبكة أنه يمكنها تحقيق دقة عالية بمجرد الضغط على W وعدم فعل أي شيء آخر. حسّنت لأكثر الإجراءات شيوعًا على حساب جميع الإجراءات الأخرى.

التأخير البشري. الأفعال في مجموعة البيانات متأخرة بحوالي 200 مللي ثانية من وقت رد الفعل البشري. من الصعب على النموذج تعلم علاقة السبب والنتيجة من البكسلات الخام عندما يكون الفعل ونتيجته المرئية مفصولين بعدة إطارات.

العروض التوضيحية غير المتسقة. تباين أسلوب لعب المبدع: أحيانًا انحراف بلوحة المفاتيح، وأحيانًا تصويب بالفأرة في مواقف متطابقة. هذا المدخلات المتضاربة أربكت الشبكة.

المرحلة 2: التعلم المعزز بالمنهج الدراسي

البوت يتعلم تعقب الهدف أفقيًا أثناء تدريب RL

بعد التخلي عن التعلم بالمحاكاة، انتقل المبدع إلى التعلم المعزز. لكن وضع عميل جديد في معركة PvP كاملة غير مفيد: يحدث الكثير في آن واحد للاستكشاف العشوائي ليجد شيئًا.

الحل: التعلم المنهجي. عزل كل آلية والسماح للبوت بإتقان الأساسيات قبل دخول معركة حقيقية.

الخطوة 1: التصويب الأفقي (7 ساعات)

أبسط دالة مكافأة: مكافأة إيجابية للإصابة، عقوبة سلبية لتلقي الضرر.

في البداية، البوت بالكاد يتحرك (الشبكة العصبية المهيأة لإخراج قيم محايدة). يهتز من جانب لآخر: يختبر البوت إجراءات مختلفة لمعرفة أيها يعطي مكافآت.

بعد ساعة، يتعلم التوسيط أفقيًا، ولكن ببطء شديد. بعد 7 ساعات، يمكنه تتبع العدو يسارًا ويمينًا، رغم أنه غير متماثل (أفضل في التحرك من اليمين إلى اليسار من اليسار إلى اليمين، سلوك استمر طوال التدريب).

الخطوة 2: هندسة الميزات

كانت لقطة الشاشة الخام أكثر من 2 مليون بكسل. حتى عند تصغيرها إلى 360p، هذا 200,000 مدخل: عدد كبير جدًا للتعلم الفعال.

حلل المبدع آلاف المبارزات وحدد 30 متغيرًا مهمًا فعلًا، مقسمة إلى ثلاث مجموعات:

الرؤية (تعقب العدو):

  • مسافة العدو من نقطة التصويب
  • حجم الصندوق المحيط بالعدو
  • ارتفاع العدو
  • حالة نقطة التصويب (على/خارج الهدف)
  • السرعة النسبية

بدلاً من معالجة الصورة بالكامل، يقوم البوت بتصفية البكسلات بلون درع العدو بدقة، مما يجعل الاكتشاف فوريًا تقريبًا. المكعبات الخلفية ذات الألوان المماثلة يمكن أن تعطل هذا: لكن في ماينكرافت، يمكنك فقط تغيير القوام.

OCR (قراءة واجهة المستخدم): نظرًا لأن البوت لا يمكنه سحب الإحداثيات من رمز اللعبة، فهو يمسح الشاشة في الوقت الفعلي لاستخراج:

  • ميل الكاميرا
  • الزخم
  • مستوى Y

يعاني OCR القياسي مع النص الشفاف في ماينكرافت، لذلك يتم تحويل البيانات الحرجة إلى أبيض وأسود للقراءة الفورية.

الوقت (نافذة السياق):

  • الوقت منذ إصابتك للعدو
  • الوقت منذ إصابته لك
  • مخزن مؤقت لأفعال البوت السابقة

يمنح هذا الشبكة سياقًا زمنيًا: بدونه، لا يعرف البوت ما إذا كان في منتصف كومبو أم بدأ القتال.

الخطوة 3: التصويب العمودي (7 ساعات إضافية)

البوت يتعلم التصويب لأعلى وأسفل أثناء تدريب RL

إضافة حركة الفأرة العمودية كانت «كارثة تامة» في البداية. كان الأداء الأولي محطمًا.

بعد ساعة إضافية في صندوق الرمل، اكتشف البوت كيفية النظر لأعلى وأسفل. لكن في هذه العملية، نسي تمامًا كيفية التتبع الأفقي.

هذا هو النسيان الكارثي: مشكلة تعلم آلة كلاسيكية حيث يؤدي تحسين البيانات الجديدة إلى استبدال التمثيلات التي تم تعلمها سابقًا. من خلال تحسين التصويب العمودي، استبدلت الشبكة العصبية تقدمها الأفقي بطريق الخطأ، تاركة المبدع مع بوت يمكنه الحفاظ على مستوى نقطة التصويب لكنه لا يستطيع متابعة الهدف.

استغرق الأمر 6 ساعات إضافية لاستعادة التتبع الأفقي مع الحفاظ على التحكم العمودي. ثم حافظ البوت على وضع جيد لنقطة التصويب بفضل مجموعة OCR لاستخراج ميل الكاميرا.

الخطوة 4: التحكم بلوحة المفاتيح

البوت يبدل مفتاح W باستمرار، يتعلم الالتزام بالحركة

منح البوت الإذن لاستخدام لوحة المفاتيح جعل الميزات الزمنية أكثر أهمية. في البداية، كان مفتاح W يُبدَّل تشغيلًا وإيقافًا باستمرار.

تمت معاقبة هذا السلوك، لذلك تعلم البوت تنعيمه. بدأ في تسجيل المزيد من ضربات الركض (صوت التصادم مقابل أزيز الضربة الواقفية). بدت بعض الكومبوات غير مرضية لأن البوت استغل ميزة المدى ضد العدو.

من أجل الإنصاف، رفع المبدع مدى وصول العدو. العديد من استراتيجيات البوت تعلمت توقفت عن العمل. لكن بعد وقت إضافي، تكيف.

الخطوة 5: تعليم البوت متى ينقر

للمرحلة النهائية، أعاد المبدع التعلم بالمحاكاة: ولكن فقط لتعليم توقيت النقر، وليس سياسة التحكم الكاملة. حاول البوت تقليد أنماط النقر من المبارزات المسجلة.

في البداية كان خائفًا جدًا من تجربة أي شيء، خشية العقوبة على النقرات الخاطئة. لكن في النهاية استجمع الشجاعة للتأرجح وإصابة. بالطبع، نسي كيفية التصويب مرة أخرى في هذه العملية: اضطر المبدع لتركه لمدة 50 ساعة إضافية للعودة إلى حالة مرضية.

الجدل حول الغش

ينتهي الفيديو بسؤال: هل هذا البوت يغش؟

الحجة ضد: البوت يعالج فقط ما يراه الإنسان (نفس البكسلات)، يرسل نفس مدخلات لوحة المفاتيح/الفأرة مثل الإنسان (لا تلاعب بالحزم مثل مكافحة الصدمات)، ولا يقرأ ذاكرة اللعبة (لا أشعة سينية أو ESP).

الحجة لصالح: يمكن للبوت المعالجة أسرع من الإنسان، وإذا اعتقد الخصم أنه يلعب ضد إنسان لكنه ليس كذلك، فهذا خداع.

رأي المبدع: يعتمد على النية. إذا كان الطرفان يعلمان أنه بوت، فهي مباراة عادلة. ثم يواصل البوت كومبوا العدو في الفراغ بسلسلة من 100 ضربة.

النتيجة

البوت ينفذ كومبوا من 100 ضربة

بوت PvP لماينكرافت مدرب على كمبيوتر محمول بدون GPU، مبني على خط أنابيب تدريب مخصص مع:

  • لقطة شاشة للمدخلات البكسيلية (أكثر من مليوني بكسل → 30 ميزة مهندسة)
  • التعلم المنهجي (أفقي → رأسي → لوحة مفاتيح → نقر)
  • التعزيز للتحكم الحركي + التعلم بالمحاكاة لتوقيت النقر
  • هندسة الميزات بدلاً من البكسلات الخام (3 مجموعات: رؤية, OCR, وقت)
  • أكثر من 60 ساعة تدريب عبر مراحل متعددة

إجمالي وقت التدريب عشرات الساعات، لكن معظمها سلبي. يهتز البوت طريقه نحو الفهم، ينسى ما تعلمه، يعيد تعلمه، وفي النهاية يجمع كومبوا من 100 ضربة.

الفيديو على youtube.com/watch?v=j5nxDKAjg6U.


هذه المقالة تغطي فقط محتوى الفيديو. للسياق الأوسع حول ذكاء ماينكرافت: VPT، DreamerV3، والمشهد العام للتعلم بالمحاكاة مقابل RL -- الأقسام أدناه تربط هذا المشروع بالمجال الأوسع.

VPT: الاستنساخ السلوكي على نطاق واسع

مخطط مشروع VPT من أوبن إي آي: نموذج الديناميكيات العكسية يتنبأ بالأفعال من أزواج الإطارات

نهج «الاستنساخ السلوكي» (المرحلة 1) هو نفس التقنية التي استخدمتها أوبن إي آي في مشروع Video PreTraining (VPT)، ولكن على طرفي نقيض من طيف الموارد. أثبت VPT أن التعلم بالمحاكاة يعمل لماينكرافت عندما تملك 70,000 ساعة من الفيديو، و720 GPU، ونموذج ديناميكيات عكسية لتسمية البيانات غير الموسومة. أثبت المبدع هنا أنه يقشعر على كمبيوتر محمول واحد مع 1000 مباراة: ولكن لنفس السبب الأساسي: التعلم بالمحاكاة محدود بجودة عروضه التوضيحية.

عميل VPT من أوبن إي آي يقطف شجرة في ماينكرافت

حلل خط أنابيب VPT مشكلة البيانات من خلال تدريب نموذج الديناميات العكسية (IDM) الذي ينظر إلى إطار t-1 وإطار t+1 للتنبؤ بالإجراء في إطار t. لأن IDM غير سببي (يرى إطارات مستقبلية)، المهمة أسهل من الاستنساخ السلوكي وتتطلب بيانات موسومة أقل بكثير. دفعوا للمتعاقدين ~2000 دولار مقابل 2000 ساعة من البيانات الموسومة، ثم استخدموا IDM لتسمية 70,000 ساعة من فيديوهات يوتيوب ماينكرافت.

معدل الصنع/الجمع مقابل حجم بيانات ما قبل التدريب (مقياس لوغاريتمي): طاولات الصنع، أدوات خشبية، أدوات حجرية

تأثير الحجم واضح: على محور لوغاريتمي من ساعة إلى 100,000 ساعة من بيانات ما قبل التدريب، يرتفع المعدل الذي يصنع به النموذج طاولة صنع وأدوات خشبية ثم أدوات حجرية بشكل متدرج. النموذج المدرب فقط على 2,000 ساعة الموسومة من قبل المتعاقدين يتوقف عند طاولات الصنع؛ بإضافة 70,000 ساعة الموسومة زائفًا بواسطة IDM (الخط المنقط على الرسم البياني) تظهر الأدوات الحجرية بشكل zero-shot، بدون خطوة RL واحدة.

النموذج الأساسي الناتج بـ 0.5 مليار معلمة حقق قدرات zero-shot مستحيلة مع RL وحده: قطع الأشجار، صنع الطاولات، القفز العمودي: وبالضبط الدقيق مع RL، أصبح أول ذكاء اصطناعي يصنع أدوات ألماس.

المكافأة مقابل عدد حلقات تدريب RL: البدء من شبكة مهيأة عشوائيًا مقابل البدء من نموذج VPT المدرب مسبقًا

يوضح هذا الرسم البياني لماذا يغير ما قبل التدريب كل شيء لـ RL اللاحق. يظل RL المنطلق من شبكة مهيأة عشوائيًا (برتقالي) قريبًا من الصفر لحوالي مليون حلقة: مهمة «الحصول على ألماسة» لها مكافأة متناثرة جدًا لدرجة أن وكيلًا ساذجًا لا يمكنه العثور عليها بالاستكشاف العشوائي. RL المضبوط بدقة من نموذج VPT المدرب مسبقًا (أخضر) يبدأ بالفعل بالسلوك الأساسي (التعدين، الصنع، الاستكشاف) ويرتفع بانتظام حتى مكافأة حوالي 25، وهو ما يتوافق مع المسار الكامل لفأس ألماس.

عروض فيديو رسمية من مشروع VPT من أوبن إي آي، تُظهر الوكيل أثناء العمل.

أوبن إي آي فايف: مشكلة تشكيل المكافأة

أوبن إي آي فايف يلعب دوتا 2 ضد محترفين بشريين

هزم أوبن إي آي فايف (2019) أبطال العالم في دوتا 2 باستخدام RL خالص من اللعب الذاتي: لا تعلم بالمحاكاة. 256 GPU، 128,000 نواة معالج، 180 عامًا من اللعب يوميًا، 10 أشهر من التدريب.

لكن دالة المكافأة صُنعت يدويًا بواسطة خبراء دوتا: 28 من 20,000 ميزة متاحة، لكل منها أوزان مضبوطة يدويًا. صافي الثروة، أعداء مقتولون، وفيات، صحة الأبراج، توزيع الممرات: كلها مختارة وموزونة من قبل البشر. بدون هذا التشكيل، بالكاد يتعلم الوكيل (تجربة: مكافأة الفوز/الخسارة فقط → Plateau عند مستوى شبه محترف).

DreamerV3: النماذج العالمية والمكافآت المتفرقة

نقاط DreamerV3 عبر أكثر من 150 مهمة متنوعة بتكوين واحد

يأخذ DreamerV3 من ديب مايند (2023) نهجًا ثالثًا. بدلاً من الاستنساخ السلوكي أو RL المشكل، يتعلم نموذجًا عالميًا: شبكة عصبية تتنبأ بالحالات المستقبلية والمكافآت من الأفعال الماضية، وتخطط بالحلم حول مستقبلات محتملة. كانت أول خوارزمية تجمع الألماس في ماينكرافت من الصفر بدون بيانات بشرية أو مناهج دراسية، نُشرت في Nature في 2025.

DreamerV3 يتعلم نموذجًا عالميًا لتخيل مسارات مستقبلية

تحدد بيئة الألماس مكافأة متفرقة على 12 مرحلة (خشب → ألواح → عصا → طاولة صنع → فأس خشبية → رصيف → فأس حجرية → خام حديد → فرن → سبيكة حديد → فأس حديدية → ألماس)، كل منها يعطي +1 مرة واحدة فقط. بالإضافة إلى مكافأة صغيرة للصحة (±0.01 لكل HP). المجموع القابل للتحقيق: 11.1 في حلقة من 36,000 خطوة.

ANNA: الذكاء الرمزي يقابل ماينكرافت

تفكيك شجرة المهام لـ ANNA للحصول على قداحة

قبل بوت PvP من الفيديو، قبل VPT وDreamerV3، كانت ANNA: بوت ماينكرافت مبني بفلسفة مختلفة تمامًا. بدلاً من التعلم من البكسلات أو المكافآت، تستخدم ANNA آلة حالة رمزية مع محلل NLP فرنسي وشجرة مهام مبنية يدويًا.

تم إنشاؤها في 2022 (قبل أن يصبح "vibe coding" مصطلحًا)، تتصل ANNA بخادم ماينكرافت عبر Mineflayer وتفهم أوامر اللغة الطبيعية بالفرنسية. قل «obtiens un briquet» (احصل على قداحة)، ويحدد محلل ANNA الفعل (obtiens → احصل)، ويبحث وصفة العنصر، ويحللها تحليلاً متكررًا إلى مهام فرعية: احصد أخشاب بلوط → صنع ألواح → صنف عصي → صنع طاولة صنع → صنع فأس خشبية → احصد حجر → صنع فأس حجرية → احصد خام حديد → صمهر سبائك حديدية → صنع القداحة.

رسة محلل ANNA للتعرف على الأوامر الفرنسية

طبقة NLP (utils/id_parser.js) تقسم الأوامر على «et» (و) للتعامل مع الأوامر المتوازية، وتُعين الأفعال الفرنسية لأنواع المهام (craft, mine, tue, suis moi)، وتترجم أسماء العناصر الفرنسية إلى معرفات ماينكرافت عبر قاموس مكون من 5000 مدخل. الأوامر غير المعروفة تُمرر لنظام محادثة قائم على GPT يقوم بدور رفيق ماينكرافت الواعي لـ ANNA.

شجرة المهام (mc-tasks-tree/) هي الجوهر: خوارزمية متكررة تجوب رسمًا بيانيًا لعناصر ماينكرافت (وصفات الصياغة، مناجم التعدين، تساقط المخلوقات، وصفات الفرن) لتنتج خطة خطوة خطوة. لخوذة ألماسية، تولد تفصيلًا بأكثر من 40 خطوة تمتد عبر مستويات الخشب والحجر والحديد والألماس.

شجرة المهام لخوذة ألماس ANNA: تفصيل بأكثر من 40 خطوة

حيث يتعلم بوت PvP من الفيديو من التجربة، تعمل ANNA من المعرفة. لا تحتاج 1000 مباراة أو 60 ساعة تدريب: تحتاج الشجرة والمحلل والخادم. لكنها لا تستطيع التعميم خارج ما تشفره شجرتها. لا مقدار من هندسة الآلة الحالة سيعلمها الـ PvP.

مقاربة ANNA تعكس حقبة مختلفة من الذكاء الاصطناعي: قبل أن يهيمن التعلم الشامل، عندما كان الوعد أن المنطق الرمزي والهندسة الدقيقة يمكن أن ينتج سلوكًا ذكيًا. اليوم، مشاريع مثل ANNA وبوت PvP تمثل قطبين لذكاء ماينكرافت: الأول يفكر في العالم، والثاني يدركه.

بوت المطرقة من Master Gumbo: ذكاء اصطناعي بلوكات الأوامر فقط

ساحة تدريب مطرقة PvP مع البوت

في ركن مختلف تمامًا من ذكاء ماينكرافت الاصطناعي، بنى اليوتيوبر Master Gumbo بوت تدريب PvP باستخدام بلوكات أوامر فقط: لا تعديلات، لا إضافات، لا كود خارجي. فقط أوامر ماينكرافت العادية، ريدستون، وCarpet Mod لكيانات طبق الأصل للاعبين. النتيجة هي خصم PvP بمطرقة يتدرب مع اللاعب على تبديل الاختراق وشحن الرياح وآليات الدرع.

يبدأ البوت كزومبي بمعدات غير قابلة للكسر وتميمة في يده غير المسيطرة (تُعاد كل تكت من خلال /item replace)، مما يجعله خالدًا فعليًا. لاحقًا، يتحول Master Gumbo إلى بوتات Carpet Mod's player replica، التي تدعم آليات شبيهة بالبشر (رفع الدرع، تبديل العناصر) لا يستطيع الزومبي فعلها.

مركز الإعدادات: أزرار لتكوين سلوك البوت

الابتكار الجوهري هو آلة حالة مدفوعة بالعشوائية. يتم نقل حامل درع فوق دائرة من بلوكات الكونكريت الملونة باستخدام أمر /spreadplayers، الذي يشتت الكائنات عشوائيًا. حيث يهبط حامل الدرع يحدد الإجراء التالي للبوت:

  • كونكريت أحمر → انحراف للخلف
  • كونكريت أزرق → شحن الرياح لأعلى (هجوم)
  • كونكريت أخضر → رفع الدرع
  • كونكريت أبيض → توقف مؤقت (يضيف تأخيرًا بين الإجراءات)

نظام اتخاذ القرار للذكاء الاصطناعي: حامل درع على الكونكريت الملون

يتم قراءة موضع حامل الدرع بواسطة بلوكات أوامر تكتشف البلوكة تحته وتفعيل الآلية المقابلة. يتم وضع أو إزالة بلوكة ريدستون لتمكين/تعطيل كل سلوك. لأن /spreadplayers يعمل مكررًا، يستمر البوت في اتخاذ قرارات جديدة، مخلقًا سلوكًا غير قابل للتنبؤ لكن منظمًا.

يسمي Master Gumbo هذا «شكلًا بسيطًا جدًا وأساسيًا من الذكاء الاصطناعي»: لا يتعلم من التفاعلات مثل الشبكات العصبية، لكن العشوائية + آلة الحالة تنتج سلوك PvP واقعيًا يصعب التنبؤ به أكثر من بوت مبرمج نصيًا.

مركز الإعدادات يتضمن واجهة كتاب لتبديل الذكاء الاصطناعي تشغيل/إيقاف، تعديل الصعوبة، تكوين أنماط الحركة.

بعد التدريب مع البوت ثم مبارزة اللاعب الذي وصفه بالسيد (في مقدمة الفيديو)، ينتصر Master Gumbo. تُشارك الخريطة عبر Discord مع شرط وجود Carpet Mod.

البوت في مبارزة، يمارس تقنيات PvP بالمطرقة

حيث يتعلم بوت PvP (Kadambi) من البكسلات وتفكر ANNA عبر شجرة مهام، يحقق بوت Master Gumbo الذكاء من خلال مفاتيح حالة عشوائية: نهج بلوكات أوامر خالص يثبت أنك لست بحاجة لشبكات عصبية لبناء خصم PvP مقنع.

Altoclef: شجرة المهام على العميل

في ركن آخر من ذكاء ماينكرافت الاصطناعي--بعيدًا عن التعلم من البكسلات وآلات الحالة العشوائية--بنى المبرمج gaucho-matrero بوتًا اسمه Altoclef يكمل اللعبة بأكملها ذاتيًا. Altoclef هو مود Fabric مكتوب بلغة Java، يستخدم Baritone للملاحة (pathfinding)، و task tree (شجرة مهام) برمجية لاتخاذ القرارات.

في 24 مايو 2021، أصبح Altoclef أول بوت يكمل ماينكرافت بشكل كامل بدون أي تدخل بشري--ليس فقط الحصول على الألماس، بل الوصول إلى نهاية اللعبة بالكامل وهزم الإندر دراغون.

جوهر Altoclef هو شجرة المهام: هيكل متكرر حيث كل مورد يصبح عقدة في شجرة، وكل عقدة تعيد استخدام موارد من عقد أخرى. مهمة «احصل على فأس حجري» تستدعي مهمات «احصل على ألواح خشبية»، «احصل على عصي»، و«احصل على حجر»--وهذه بدورها تستدعي مهمات التعدين والتصنيع. هذا يشبه شجرة مهام ANNA، لكن Altoclef يعرفها كـ Java classes قابلة لإعادة الاستخدام بدلاً من ملفات تكوين خارجية.

لكن التحدي الحقيقي ليس الحصول على الموارد--بل البقاء على قيد الحياة أثناء ذلك. هنا يأتي نظام task chains (سلاسل المهام) ذو الأولويات. يدير Altoclef سلاسل متعددة تعمل بالتوازي:

  • User Task Chain (أولوية عليا): المهمة التي طلبها المستخدم
  • Mob Defense Chain (أولوية متفوقة): تتفعل تلقائيًا عند اقتراب عدو
  • Food Chain (أولوية وسطى): تتفعل عندما ينخفض الجوع

عندما يقترب زومبي وAltoclef يحصل على حجر، تزداد أولوية سلسلة الدفاع، ويوجه البوت انتباهه للعدو، وبعد القضاء عليه يعود لمهمته الأصلية. هذا يسمح للبوت بالبقاء لساعات دون إشراف.

نظام Butler يتيح التحكم عبر أوامر الكتابة (/msg) داخل اللعبة مع قائمة بيضاء/سوداء قابلة للتكوين. قل @get diamond، ويبدأ Altoclef شجرة مهام الألماس.

حيث يتعلم بوت PvP (Kadambi) من البكسلات وتخطط ANNA عبر NLP فرنسي ويحقق Mace Bot الذكاء بالعشوائية، ينفذ Altoclef هندسة برمجية منهجية: شجرة مهام قابلة لإعادة الاستخدام، طبقات بقاء تعمل بالخلفية، و pathfinding من Baritone. إنه أقرب إلى عامل آلي مبرمج جيدًا--يتقن ما صمم لفعله بالضبط. لا يتعلم، لا ينسى، لا يخمن: فقط ينفذ.

ما يربط هم هؤلاء

المنهج الطريقة الأساسية البيانات الحوسبة النتيجة
بوت PvP للفيديو RL + تعلم بالمحاكاة 1000 مبارزة كمبيوتر محمول واحد، 60 ساعة كومبوا 100 ضربة
أوبن إي آي فايف RL باللعب الذاتي 180 سنة/يوم 256 GPU، 10 أشهر بطل عالم دوتا 2
VPT تعلم تحت الإشراف شبه 70 ألف ساعة يوتيوب + IDM 720 GPU، 9 أيام أدوات ألماس
DreamerV3 نموذج عالمي RL مسارات متخيلة 1 GPU، 9 أيام ألماس من الصفر
ANNA NLP رمزي + شجرة مهام وصفات يدوية كمبيوتر محمول واحد، فوري أي عنصر قابل للصياغة
Altoclef شجرة مهام + Baritone وصفات وعلومات اللعبة كمبيوتر محمول واحد، فوري إكمال اللعبة بالكامل
بوت المطرقة آلة حالة بلوكات أوامر قرارتك عشوائية ماينكرافت عادي، لا GPU تدريب PvP مطرقة

بوت الفيديو هو الأكثر تقييدًا في الموارد لكن الأكثر صدقًا حول العملية. يفشل أولاً، ثم يكرر. ينسى تعلم، ثم يعيد التعلم. ينتهي بسلسلة 100 ضربة: ولكن أيضًا بسؤال حول ما إذا كان ما بناه غشًا.


فيديو: AI Learns Minecraft PvP by Kadambi | AI Engineering

VPT: Paper · Blog · GitHub

OpenAI Five: Paper · Blog

DreamerV3: Paper · GitHub

ANNA: GitHub · (Node.js, Mineflayer, French NLP, task tree)

Altoclef: GitHub · (Java, Fabric, Baritone, task tree)

Mace Bot: Video by Master Gumbo · (Command blocks, Carpet Mod, state machine)

AI Học Minecraft PvP -- Imitation Learning, Reinforcement Learning và 30 biến quan trọng

1.000 trận đấu được ghi lại, mạng nơ-ron được huấn luyện trên pixel, độ chính xác gõ phím 90% : và bot chạy thẳng vào tường. Rồi đến RL, curriculum learning và 60 giờ huấn luyện.

Giới thiệu

AI Học Minecraft PvP thumbnail

Có một video có tên AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) bởi Kadambi | AI Engineering, và đây là một trong những bản tường thuật trung thực nhất về việc huấn luyện AI chơi game mà tôi từng thấy.

Tiền đề: xây dựng một bot chơi Minecraft PvP (bộ kiếm, giáp kim cương full enchant) bằng cách xem màn hình và xuất lệnh chuột và bàn phím. Không đọc bộ nhớ game, không macro, không mod : chỉ pixel vào, hành động ra.

Điều khiến video thú vị không phải là kết quả cuối cùng. Mà là hành trình: sự thất bại của imitation learning, cú pivot feature engineering, các chu kỳ catastrophic forgetting, và hơn 60 giờ huấn luyện trên laptop không có GPU.

Giai đoạn 1 : Imitation Learning (thất bại)

Bot trong quá trình imitation learning: đối diện tường, nhảy lên xuống

Người tạo bắt đầu với một cách tiếp cận hợp lý: ghi lại 1.000 trận đấu của chính họ, ánh xạ mọi cú click chuột và lần nhấn phím với khung hình tương ứng, và huấn luyện mạng nơ-ron dự đoán hành động từ pixel.

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

Mạng nơ-ron học cách dự đoán thao tác gõ phím với độ chính xác 90%. Đầy hứa hẹn.

Sau đó họ thử nghiệm nó trong một trận đấu thực tế. Bot chạy thẳng đến rìa bản đồ, đối diện tường, và nhảy lên xuống.

Tại sao?

Bẫy lười biếng. Trong một trận PvP, phím W được nhấn hầu hết thời gian. Mạng nơ-ron nhận ra rằng nó có thể đạt độ chính xác cao bằng cách chỉ cần giữ W và không làm gì khác. Nó tối ưu cho hành động phổ biến nhất và đánh đổi tất cả những hành động khác.

Độ trễ của con người. Các hành động trong tập dữ liệu bị trễ ~200ms do thời gian phản ứng của con người. Từng khung hình một, nguyên nhân và kết quả gần như không thể học được từ pixel thô khi hành động và hậu quả có thể nhìn thấy bị tách biệt nhiều khung hình.

Sự trình diễn không nhất quán. Lối chơi của người tạo cũng thay đổi : đôi khi strafe bằng bàn phím, đôi khi ngắm bằng chuột trong các tình huống giống hệt nhau. Đầu vào mâu thuẫn này làm mạng nơ-ron bối rối.

Giai đoạn 2 : Reinforcement Learning với Curriculum

Bot học cách theo dõi ngang trong quá trình huấn luyện RL

Từ bỏ imitation learning, người tạo chuyển sang RL. Nhưng thả một tác nhân mới vào một trận PvP đầy đủ là vô ích : có quá nhiều thứ xảy ra cùng lúc để khám phá ngẫu nhiên tìm ra bất cứ điều gì.

Giải pháp: curriculum learning. Cô lập từng cơ chế và để bot thành thạo những điều cơ bản trước khi bước vào trận đấu thực sự.

Bước 1 : Ngắm ngang (7 giờ)

Hàm phần thưởng đơn giản nhất: phần thưởng tích cực khi đánh trúng, hình phạt tiêu cực khi nhận sát thương.

Ban đầu, bot hầu như không di chuyển (mạng nơ-ron được khởi tạo để xuất giá trị trung tính). Nó rung lắc từ bên này sang bên kia : đó là bot đang thử các hành động khác nhau để xem hành động nào mang lại phần thưởng.

Sau một giờ, nó học cách căn giữa theo chiều ngang, nhưng chậm một cách đau đớn. Sau 7 giờ, nó có thể theo dõi kẻ địch trái và phải, mặc dù không đối xứng (di chuyển từ phải sang trái tốt hơn từ trái sang phải, một hành vi tồn tại suốt quá trình huấn luyện).

Bước 2 : Feature Engineering

Ảnh chụp màn hình thô có hơn 2 triệu pixel. Ngay cả khi thu nhỏ xuống 360p, đó vẫn là 200.000 đầu vào : quá nhiều cho việc học hiệu quả.

Người tạo đã phân tích hàng nghìn trận đấu và xác định 30 biến thực sự quan trọng, chia thành ba nhóm:

Vision (theo dõi kẻ địch) :

  • Khoảng cách của kẻ địch từ crosshair
  • Kích thước bounding box của kẻ địch
  • Chiều cao kẻ địch
  • Trạng thái crosshair (trúng/trượt mục tiêu)
  • Vận tốc tương đối

Thay vì xử lý toàn bộ hình ảnh, bot lọc pixel một cách chính xác theo màu giáp của kẻ địch, giúp phát hiện gần như tức thì. Các khối nền có màu tương tự có thể làm hỏng việc này : nhưng trong Minecraft, bạn chỉ cần thay đổi kết cấu.

OCR (đọc HUD) : Vì bot không thể lấy tọa độ từ mã game, nó quét màn hình theo thời gian thực để trích xuất:

  • Độ nghiêng camera (pitch)
  • Động lượng (momentum)
  • Cao độ Y

OCR tiêu chuẩn gặp khó khăn với văn bản trong suốt của Minecraft, vì vậy dữ liệu quan trọng bị ép thành đen trắng để đọc tức thì.

Thời gian (context window) :

  • Thời gian từ khi bạn đánh trúng kẻ địch
  • Thời gian từ khi chúng đánh bạn
  • Bộ đệm luân chuyển các hành động trước đó của bot

Điều này cung cấp bối cảnh thời gian cho mạng nơ-ron : nếu không có nó, bot không biết liệu nó đang ở giữa một combo hay mới bắt đầu trận đấu.

Bước 3 : Ngắm dọc (thêm 7 giờ)

Bot học cách ngắm lên và xuống trong quá trình huấn luyện RL

Việc thêm chuyển động chuột dọc là "một thảm họa hoàn toàn" lúc đầu. Hiệu suất ban đầu bị hỏng.

Sau một giờ nữa trong sandbox, bot đã tìm ra cách nhìn lên và xuống. Nhưng trong quá trình đó, nó hoàn toàn quên cách theo dõi theo chiều ngang.

Đây là catastrophic forgetting : một vấn đề machine learning kinh điển nơi việc tối ưu hóa cho dữ liệu mới ghi đè lên các biểu diễn đã học trước đó. Bằng cách tối ưu hóa cho việc ngắm dọc, mạng nơ-ron vô tình ghi đè lên tiến trình ngang, để lại cho người tạo một bot có thể giữ crosshair ở mức ngang nhưng không thể theo dõi mục tiêu.

Phải mất thêm 6 giờ để lấy lại khả năng theo dõi ngang trong khi vẫn giữ được điều khiển dọc. Bot sau đó duy trì vị trí crosshair tốt nhờ nhóm OCR trích xuất độ nghiêng camera.

Bước 4 : Điều khiển bàn phím

Bot bật tắt phím W liên tục, học cách cam kết với chuyển động

Việc cho phép bot sử dụng bàn phím làm cho các tính năng dựa trên thời gian trở nên quan trọng hơn nữa. Lúc đầu, phím W liên tục được bật và tắt : chuyển đổi nhanh vì mạng nơ-ron chưa học cách cam kết.

Hành vi này bị phạt, vì vậy bot học cách làm mượt nó. Nó bắt đầu tung ra nhiều cú đánh chạy hơn (âm thanh thud so với whoosh của cú vung đứng yên). Một số combo trông không thỏa mãn vì bot khai thác lợi thế tầm với so với kẻ địch.

Để công bằng, người tạo đã tăng tầm với của kẻ địch. Nhiều chiến lược bot đã học không còn hiệu quả nữa. Nhưng khi có thêm thời gian, nó đã thích nghi.

Bước 5 : Dạy bot khi nào nên click

Ở giai đoạn cuối, người tạo đã đưa imitation learning trở lại : nhưng chỉ để dạy thời điểm click, không phải chính sách điều khiển toàn bộ. Bot cố gắng bắt chước các mẫu click từ các trận đấu đã ghi lại.

Ban đầu nó quá sợ hãi để thử bất cứ điều gì, lo sợ bị phạt vì click sai. Nhưng cuối cùng nó đã lấy can đảm để vung kiếm và đánh trúng. Tất nhiên, nó lại quên cách ngắm trong quá trình đó : người tạo phải để nó một mình thêm 50 giờ nữa để trở lại trạng thái hài lòng.

Cuộc tranh luận về gian lận

Video kết thúc bằng câu hỏi: bot này có gian lận không?

Lập luận phản đối: bot chỉ xử lý những gì con người thấy (cùng pixel), gửi cùng đầu vào bàn phím/chuột như con người (không thao túng gói tin như anti-knockback), và không đọc bộ nhớ game (không X-ray hay ESP).

Lập luận ủng hộ: bot có thể xử lý nhanh hơn con người, và nếu đối thủ nghĩ rằng họ đang chơi với người nhưng thực ra không phải, đó là sự lừa dối.

Quan điểm của người tạo: nó phụ thuộc vào ý định. Nếu cả hai bên đều biết đó là bot, đó là một trận đấu công bằng. Bot sau đó tiếp tục combo kẻ địch xuống vực thẳm với chuỗi 100 đòn.

Kết quả

Bot thực hiện combo 100 đòn

Một bot Minecraft PvP được huấn luyện trên laptop không có GPU, được xây dựng trên pipeline huấn luyện tùy chỉnh với:

  • Chụp màn hình cho đầu vào pixel (2M+ pixel → 30 đặc trưng được thiết kế)
  • Curriculum learning (ngang → dọc → bàn phím → click)
  • RL cho điều khiển vận động + imitation learning cho thời điểm click
  • Feature engineering thay vì pixel thô (3 nhóm: vision, OCR, thời gian)
  • Hơn 60 giờ huấn luyện qua nhiều giai đoạn

Tổng thời gian huấn luyện là hàng chục giờ, nhưng hầu hết là thụ động. Bot rung lắc để hiểu, quên những gì đã học, học lại, và cuối cùng kết nối một combo 100 đòn.

Video tại youtube.com/watch?v=j5nxDKAjg6U.


Bài viết này chỉ bao gồm nội dung của video. Để có bối cảnh rộng hơn về AI Minecraft: VPT, DreamerV3, và bức tranh imitation learning vs RL : các phần bên dưới kết nối dự án này với lĩnh vực rộng hơn.

VPT : Behavior cloning ở quy mô lớn

Sơ đồ dự án VPT của OpenAI: Inverse Dynamics Model dự đoán hành động từ các cặp khung hình

Cách tiếp cận "behavior cloning" của video (Giai đoạn 1) là kỹ thuật tương tự OpenAI đã sử dụng trong dự án Video PreTraining (VPT), nhưng ở hai đầu đối diện của phổ tài nguyên. VPT đã chứng minh rằng imitation learning hiệu quả với Minecraft khi bạn có 70.000 giờ video, 720 GPU, và một inverse dynamics model để gán nhãn giả cho dữ liệu chưa được gắn nhãn. Người tạo ở đây đã chứng minh nó thất bại với một laptop và 1.000 trận đấu : nhưng vì cùng một lý do cơ bản: imitation learning bị giới hạn bởi chất lượng của các màn trình diễn.

Tác nhân VPT của OpenAI đang đốn cây trong Minecraft

Pipeline VPT giải quyết vấn đề dữ liệu bằng cách huấn luyện một Inverse Dynamics Model (IDM) nhìn vào khung t-1 và khung t+1 để dự đoán hành động tại khung t. Vì IDM là non-causal (nó thấy các khung hình tương lai), nhiệm vụ này dễ dàng hơn behavioral cloning và cần ít dữ liệu được gắn nhãn hơn nhiều. Họ đã trả cho các nhà thầu ~$2.000 cho 2.000 giờ dữ liệu có nhãn, sau đó sử dụng IDM để gán nhãn giả cho 70.000 giờ video YouTube Minecraft.

Tỷ lệ chế tạo/thu thập theo khối lượng dữ liệu tiền huấn luyện (thang log): bàn chế tạo, công cụ gỗ, công cụ đá

Hiệu ứng tỷ lệ rất rõ ràng: trên trục log từ 1 giờ đến 100.000 giờ dữ liệu tiền huấn luyện, tỷ lệ mô hình chế tạo bàn chế tạo, công cụ gỗ, rồi công cụ đá tăng dần theo từng bậc. Mô hình chỉ được huấn luyện trên 2.000 giờ dữ liệu có nhãn từ các nhà thầu đạt tối đa ở bàn chế tạo; chính nhờ thêm 70.000 giờ được gán nhãn giả bởi IDM (đường chấm trên biểu đồ) mà công cụ đá xuất hiện zero-shot, không cần một bước RL nào.

Mô hình nền tảng 0,5B tham số kết quả đạt được khả năng zero-shot mà không thể có với RL đơn thuần : chặt cây, chế tạo bàn, pillar jumping : và được fine-tuning với RL, trở thành AI đầu tiên chế tạo công cụ kim cương.

Phần thưởng theo số tập huấn luyện RL: khởi tạo ngẫu nhiên vs khởi tạo từ mô hình VPT tiền huấn luyện

Biểu đồ này cho thấy tại sao tiền huấn luyện thay đổi mọi thứ cho RL hạ nguồn. RL khởi tạo từ mạng ngẫu nhiên (cam) vẫn bằng phẳng gần 0 qua gần một triệu tập: nhiệm vụ "lấy kim cương" có phần thưởng quá thưa thớt để một tác nhân ngây thơ tình cờ tìm thấy nó qua khám phá ngẫu nhiên. RL fine-tune từ mô hình VPT tiền huấn luyện (xanh lá) đã bắt đầu với hành vi cơ bản (đào, chế tạo, khám phá) và tăng đều đặn lên phần thưởng khoảng 25, tương ứng với con đường hoàn chỉnh đến một cái cuốc kim cương.

Các bản demo video chính thức của dự án VPT của OpenAI, cho thấy tác nhân trong hành động.

OpenAI Five : Vấn đề reward shaping

OpenAI Five chơi Dota 2 đấu với các chuyên gia con người

OpenAI Five (2019) đánh bại nhà vô địch thế giới Dota 2 bằng pure self-play RL : không imitation learning. 256 GPU, 128.000 lõi CPU, 180 năm gameplay mỗi ngày, 10 tháng huấn luyện.

Nhưng hàm phần thưởng được tạo thủ công bởi các chuyên gia Dota: 28 trên 20.000 tính năng có sẵn, mỗi tính năng có trọng số được điều chỉnh thủ công. Tài sản, số mạng hạ gục, số lần chết, máu trụ, phân công đường : tất cả được chọn và gán trọng số bởi con người. Nếu không có shaping này, tác nhân hầu như không học được gì (thí nghiệm: phần thưởng chỉ thắng/thua → chững lại ở trình độ bán chuyên).

Bot trong video đối mặt với cùng vấn đề: hàm phần thưởng của nó mã hóa sự hiểu biết của người tạo về điều gì quan trọng trong PvP (đánh trúng tốt, nhận sát thương xấu, giữ crosshair tốt). Điều này là không thể tránh khỏi : RL cần một tín hiệu phần thưởng, và việc định hình tín hiệu đó mã hóa thiên kiến con người.

DreamerV3 : World model và phần thưởng thưa thớt

Điểm benchmark DreamerV3 trên hơn 150 nhiệm vụ đa dạng với một cấu hình duy nhất

DreamerV3 của DeepMind (2023) thực hiện cách tiếp cận thứ ba. Thay vì behavior cloning hay RL có shaping, nó học một world model : một mạng nơ-ron dự đoán trạng thái tương lai và phần thưởng từ các hành động trong quá khứ : và lập kế hoạch bằng cách mơ về các tương lai có thể. Nó là thuật toán đầu tiên thu thập kim cương trong Minecraft từ đầu mà không cần dữ liệu con người hay chương trình giảng dạy, được xuất bản trên Nature vào năm 2025.

DreamerV3 học world model để tưởng tượng các quỹ đạo tương lai

Môi trường kim cương định nghĩa phần thưởng thưa thớt qua 12 cột mốc (log → planks → stick → crafting table → wooden pickaxe → cobblestone → stone pickaxe → iron ore → furnace → iron ingot → iron pickaxe → diamond), mỗi cái cho +1 đúng một lần. Cộng với phần thưởng sức khỏe nhỏ (±0,01 mỗi hp). Tổng có thể đạt được: 11,1 trong một tập 36.000 bước.

World model của DreamerV3 cho phép nó tưởng tượng các quỹ đạo và đánh giá chúng nội bộ : tác nhân học từ các rollout mơ ước thay vì trải nghiệm thực tế, thử nghiệm hàng nghìn tương lai có thể cho mỗi bước thực tế. Điều này làm cho phần thưởng thưa thớt trở nên khả thi ở nơi chúng sẽ giết chết một tác nhân RL tiêu chuẩn.

Qua 40 seed được huấn luyện trong 100M bước môi trường, 24 trên 40 thu thập được ít nhất một viên kim cương. Viên kim cương đầu tiên xuất hiện sau 29M bước (~9 ngày trên một GPU).

ANNA : AI biểu tượng gặp Minecraft

Sự phân rã cây nhiệm vụ của ANNA cho flint-and-steel

Trước bot PvP trong video, trước VPT và DreamerV3, đã có ANNA : một bot Minecraft được xây dựng với một triết lý hoàn toàn khác. Thay vì học từ pixel hay phần thưởng, ANNA sử dụng state machine biểu tượng với bộ phân tích NLP tiếng Pháp và cây phụ thuộc nhiệm vụ được viết tay.

Được tạo ra vào năm 2022 (trước khi "vibe coding" trở thành thuật ngữ), ANNA kết nối đến máy chủ Minecraft qua Mineflayer và hiểu các lệnh ngôn ngữ tự nhiên bằng tiếng Pháp. Nói "obtiens un briquet" (lấy cái bật lửa), bộ phân tích của ANNA xác định động từ (obtien → lấy), tra cứu công thức vật phẩm, và phân rã đệ quy thành các nhiệm vụ con : đốn gỗ sồi → chế tạo planks → chế tạo sticks → chế tạo crafting table → chế tạo wooden pickaxe → đá mỏ → chế tạo stone pickaxe → khai thác quặng sắt → nấu chảy iron ingots → chế tạo flint-and-steel.

Kiến trúc bộ phân tích NLP của ANNA cho nhận dạng lệnh tiếng Pháp

Lớp NLP (utils/id_parser.js) tách lệnh bằng "et" (và) để xử lý lệnh song song, ánh xạ động từ tiếng Pháp sang loại nhiệm vụ (craft, mine, tue, suis moi), và dịch tên vật phẩm tiếng Pháp sang ID Minecraft qua từ điển 5.000 mục. Các lệnh không được nhận dạng sẽ rơi xuống hệ thống hội thoại dựa trên GPT biến ANNA thành một người bạn đồng hành Minecraft có tri giác.

Task tree (mc-tasks-tree/) là cốt lõi : một thuật toán đệ quy đi qua đồ thị vật phẩm Minecraft (công thức chế tạo, sản phẩm khai thác, vật phẩm rơi từ mob, công thức lò nung) để tạo ra một kế hoạch từng bước. Cho một mũ giáp kim cương, nó tạo ra một bảng phân tích 40+ bước trải dài qua các cấp gỗ, đá, sắt và kim cương.

Cây nhiệm vụ mũ giáp kim cương của ANNA: bảng phân tích 40+ bước

Trong khi bot PvP trong video học từ kinh nghiệm, ANNA làm việc từ kiến thức. Nó không cần 1.000 trận đấu hay 60 giờ huấn luyện : nó cần cây, bộ phân tích và máy chủ. Nhưng nó cũng không thể khái quát hóa vượt quá những gì cây của nó mã hóa. Không có lượng kỹ thuật state machine nào có thể dạy nó chơi PvP.

Cách tiếp cận của ANNA phản ánh một kỷ nguyên AI khác : trước khi end-to-end learning thống trị, khi lời hứa là lý luận biểu tượng + kỹ thuật cẩn thận có thể tạo ra hành vi thông minh. Ngày nay, các dự án như ANNA và bot PvP đại diện cho hai cực của AI Minecraft : một lý luận về thế giới, một cảm nhận nó.

Mace Bot của Master Gumbo : AI chỉ với command block

Đấu trường huấn luyện Mace PvP với bot

Trong một góc hoàn toàn khác của AI Minecraft, YouTuber Master Gumbo đã xây dựng một bot huấn luyện PvP chỉ sử dụng command block : không mod, không plugin, không mã ngoài. Chỉ lệnh Minecraft vanilla, redstone, và carpet mod cho các thực thể bản sao người chơi. Kết quả là một đối thủ AI mace PvP luyện tập breach swapping, wind charging, và cơ chế khiên với người chơi.

Bot bắt đầu như một zombie với trang bị không thể phá hủy và một totem ở tay phụ (được làm đầy mỗi tick qua /item replace), khiến nó gần như bất tử. Sau đó, Master Gumbo chuyển sang bot player replica của Carpet Mod, hỗ trợ các cơ chế giống con người (giơ khiên, chuyển đổi vật phẩm) mà zombie không thể làm được.

Trung tâm cài đặt: các nút để cấu hình hành vi bot

Cải tiến cốt lõi là một state machine được điều khiển bởi tính ngẫu nhiên. Một armor stand được dịch chuyển lên trên một vòng tròn các khối bê tông màu bằng lệnh /spreadplayers, lệnh này phân tán các thực thể một cách ngẫu nhiên. Nơi armor stand hạ cánh quyết định hành động tiếp theo của bot :

  • Bê tông đỏ → strafe lùi
  • Bê tông xanh dương → wind charge lên (tấn công)
  • Bê tông xanh lá → giơ khiên
  • Bê tông trắng → tạm dừng (thêm độ trễ giữa các hành động)

Hệ thống quyết định AI: armor stand trên bê tông màu

Vị trí của armor stand được đọc bởi các command block phát hiện khối bên dưới nó và kích hoạt cơ chế tương ứng. Một khối redstone được đặt hoặc loại bỏ để bật/tắt mỗi hành vi. Bởi vì /spreadplayers chạy lặp lại, bot liên tục đưa ra các quyết định mới, tạo ra hành vi không thể đoán trước nhưng có cấu trúc.

Master Gumbo gọi đây là "một dạng AI rất đơn giản và cơ bản" : nó không học từ tương tác như mạng nơ-ron, nhưng tính ngẫu nhiên + state machine tạo ra hành vi PvP thực tế khó đoán hơn một bot đã được lập trình sẵn. Trung tâm cài đặt bao gồm giao diện sách để bật/tắt AI, điều chỉnh độ khó và cấu hình mẫu di chuyển.

Sau khi huấn luyện với bot và sau đó đấu tay đôi với người chơi đã gọi anh ta là tệ (trong phần giới thiệu video), Master Gumbo đã thắng. Bản đồ được chia sẻ qua Discord với yêu cầu Carpet Mod.

Bot trong một trận đấu tay đôi, luyện tập kỹ thuật mace PvP

Trong khi bot PvP (Kadambi) học từ pixel và ANNA lý luận qua cây nhiệm vụ, bot của Master Gumbo đạt được trí thông minh thông qua các chuyển đổi trạng thái ngẫu nhiên : một cách tiếp cận command block thuần túy chứng minh bạn không cần mạng nơ-ron để xây dựng một đối thủ PvP thuyết phục.

Altoclef : Baritone + task tree ở quy mô lớn

Nếu ANNA là bot biểu tượng đọc để biết phải làm gì, và Mace Bot ngẫu nhiên hóa quyết định, thì Altoclef là một tác nhân tự động hoàn chỉnh lập kế hoạch xuyên suốt toàn bộ trò chơi. Được xây dựng bởi gaucho-matero dưới dạng mod Fabric và chạy trên Baritone pathfinding, Altoclef phân rã bất kỳ mục tiêu Minecraft nào thành một cây nhiệm vụ và thực thi nó mà không cần đầu vào của con người.

Giao diện đơn giản đến bất ngờ : gõ @gamer trong chat, và Altoclef bắt đầu nhiệm vụ beat-the-game từ một thế giới survival. Nó thu thập gỗ, chế tạo công cụ, khai thác sắt và kim cương, xây cổng Nether, thu thập blaze rods và ender pearls, tìm stronghold, và giết Ender Dragon. Hoàn toàn tự động, qua Minecraft client gốc, trên bất kỳ máy chủ vanilla nào.

Bên dưới, điều này được thực hiện qua một hệ thống task tree đệ quy, nơi mỗi mục tiêu cấp cao (vd: "chế tạo diamond pickaxe") được phân rã thành các nhiệm vụ tiên quyết : khai thác kim cương → nấu chảy → chế tạo sticks → kết hợp. Cây đi qua toàn bộ đồ thị công thức Minecraft, xử lý chuỗi sản xuất, mob drops, loot table, và container access. Không giống cây viết tay của ANNA, các task của Altoclef là Java classes có thể lập trình mà có thể thực thi bất kỳ logic tùy ý : chiến lược chiến đấu, đổi đồ với piglin, mô hình thám hiểm.

Điểm mấu chốt trong kiến trúc là sự tách biệt giữa what (task tree) và how (Baritone pathfinding). Baritone xử lý chuyển động cấp thấp : pathfinding, tránh chướng ngại vật, đập block, quản lý inventory -- trong khi hệ thống task điều phối kế hoạch cấp cao. Sự mô-đun này đồng nghĩa không thành phần nào cần AI : cả hai đều là thuật toán xác định, nhưng sự kết hợp của chúng tạo ra hành vi phức tạp, hướng đến mục tiêu, sánh ngang với các phương pháp học.

Altoclef đại diện cho giới hạn của AI Minecraft thuần biểu tượng : nó có thể beat game từ đầu với 0 giờ huấn luyện, 0 GPU, và 0 dữ liệu con người, nhưng nó không thể thích nghi với các tác vụ mà người lập trình không lường trước, và nó không thể học từ kinh nghiệm. Nó biết cách chế tạo một diamond pickaxe vì một Java class chỉ cho nó chính xác cách làm, không phải vì nó tự tìm ra.

Điều gì kết nối chúng lại với nhau

Cách tiếp cận Phương pháp cốt lõi Dữ liệu Tính toán Kết quả
Bot PvP trong video RL + imitation learning 1.000 trận đấu 1 laptop, 60 giờ Combo 100 đòn
OpenAI Five Self-play RL 180 năm chơi/ngày 256 GPU, 10 tháng Vô địch thế giới Dota 2
VPT IL bán giám sát 70K giờ YouTube + IDM 720 GPU, 9 ngày Công cụ kim cương
DreamerV3 World model RL Quỹ đạo mơ ước 1 GPU, 9 ngày Kim cương từ đầu
ANNA NLP biểu tượng + cây nhiệm vụ Công thức viết tay 1 laptop, tức thì Bất kỳ vật phẩm chế tạo được
Altoclef Baritone + task tree đệ quy Java classes Mod Fabric, không GPU Beat toàn bộ game
Mace Bot State machine command block Quyết định ngẫu nhiên Vanilla MC, không GPU Huấn luyện Mace PvP

Bot trong video là bot bị giới hạn tài nguyên nhất nhưng trung thực nhất về quá trình. Nó thất bại trước, sau đó lặp lại. Nó quên những gì đã học, sau đó học lại. Nó kết thúc với một combo 100 đòn : nhưng cũng với một câu hỏi về việệu liệu thứ nó xây dựng có phải là gian lận hay không.


Video : AI Learns Minecraft PvP bởi Kadambi | AI Engineering

VPT : Paper · Blog · GitHub

OpenAI Five : Paper · Blog

DreamerV3 : Paper · GitHub

ANNA : GitHub · (Node.js, Mineflayer, NLP tiếng Pháp, cây nhiệm vụ)

Altoclef : GitHub · Fork hoạt động · (Fabric, Baritone, task tree, beat game)

Mace Bot : Video bởi Master Gumbo · (Command blocks, Carpet Mod, state machine)

AI เรียนรู้ Minecraft PvP -- Imitation Learning, Reinforcement Learning และ 30 ตัวแปรที่สำคัญ

บันทึก 1,000 ดวล, ฝึกโครงข่ายประสาทเทียมบนพิกเซล, ความแม่นยำในการกดแป้นพิมพ์ 90% : และบอทเดินตรงไปชนกำแพง จากนั้นมา RL, curriculum learning และ 60 ชั่วโมงของการฝึก

บทนำ

AI เรียนรู้ Minecraft PvP thumbnail

มีวิดีโอชื่อ AI Learns Minecraft PvP (Reinforcement Learning + Behavior Cloning) โดย Kadambi | AI Engineering และนี่เป็นหนึ่งในบันทึกที่ซื่อสัตย์ที่สุดเกี่ยวกับการฝึก AI ให้เล่นเกมที่ผมเคยเห็น

แนวคิด: สร้างบอทที่เล่น Minecraft PvP (ชุดดาบ, ชุดเกราะเพชร enchanted เต็ม) โดยการดูหน้าจอและส่งคำสั่งเมาส์และคีย์บอร์ด ไม่ต้องอ่านหน่วยความจำเกม ไม่มีมาโคร ไม่มีม็อด : แค่พิกเซลเข้าไป การกระทำออกมา

สิ่งที่ทำให้วิดีโอนี้น่าสนใจไม่ใช่ผลลัพธ์สุดท้าย แต่มันคือการเดินทาง: ความล้มเหลวของ imitation learning, การเปลี่ยนเส้นทางของ feature engineering, วัฏจักร catastrophic forgetting, และการฝึกกว่า 60 ชั่วโมงบนแล็ปท็อปที่ไม่มี GPU

เฟส 1 : Imitation Learning (ความล้มเหลว)

บอทระหว่าง imitation learning: หันหน้าไปทางกำแพง กระโดดขึ้นลง

ผู้สร้างเริ่มต้นด้วยแนวทางที่สมเหตุสมผล: บันทึก 1,000 ดวลจากการเล่นของตัวเอง, จับคู่ทุกคลิกเมาส์และกดปุ่มกับเฟรมที่สอดคล้อง, และฝึกโครงข่ายประสาทเทียมให้ทำนายการกระทำจากพิกเซล

# Pseudocode for the imitation learning pipeline
dataset = record_duels(1000)          # hundreds of thousands of frames
for frame, action in dataset:
    pixels = capture_screen(frame)
    network.train(pixels → action)    # predict keyboard/mouse from image

โครงข่ายประสาทเรียนรู้ที่จะทำนายการกดแป้นพิมพ์ด้วยความแม่นยำ 90% ดูมีแนวโน้มดี

จากนั้นพวกเขาทดสอบในการแข่งขันจริง บอทเดินตรงไปยังขอบแผนที่ หันหน้าไปทางกำแพง และกระโดดขึ้นลง

ทำไม?

กับดักความขี้เกียจ. ในการต่อสู้ PvP ปุ่ม W จะถูกกดเกือบตลอดเวลา โครงข่ายประสาทรู้ว่ามันสามารถบรรลุความแม่นยำสูงได้โดยการกด W ค้างไว้และไม่ทำอย่างอื่น มันปรับให้เหมาะสมกับการกระทำที่พบบ่อยที่สุดโดยแลกกับสิ่งอื่นทั้งหมด

ความหน่วงของมนุษย์. การกระทำในชุดข้อมูลล่าช้า ~200ms จากเวลาตอบสนองของมนุษย์ แต่ละเฟรม สาเหตุและผลลัพธ์แทบจะเป็นไปไม่ได้ที่โมเดลจะเรียนรู้จากพิกเซลดิบเมื่อการกระทำและผลลัพธ์ที่มองเห็นได้ถูกแยกออกจากกันหลายเฟรม

การสาธิตที่ไม่สอดคล้องกัน. การเล่นของผู้สร้างเองก็แปรปรวน : บางครั้ง strafe ด้วยคีย์บอร์ด บางครั้งเล็งด้วยเมาส์ในสถานการณ์ที่เหมือนกัน อินพุตที่ขัดแย้งกันนี้ทำให้โครงข่ายประสาทสับสน

เฟส 2 : Reinforcement Learning กับ Curriculum

บอทเรียนรู้การติดตามแนวนอนระหว่างการฝึก RL

ละทิ้ง imitation learning ผู้สร้างเปลี่ยนไปใช้ RL แต่การโยนเอเจนต์ใหม่เข้าไปในการดวล PvP เต็มรูปแบบนั้นไร้ประโยชน์ : มีอะไรเกิดขึ้นพร้อมกันมากเกินไปสำหรับการสำรวจแบบสุ่มเพื่อค้นหาสิ่งใด

วิธีแก้ปัญหา: curriculum learning แยกแต่ละกลไกและให้บอทเชี่ยวชาญพื้นฐานก่อนเข้าสู่การต่อสู้จริง

ขั้นที่ 1 : การเล็งแนวนอน (7 ชั่วโมง)

ฟังก์ชัน reward ที่ง่ายที่สุด: รางวัลบวกสำหรับการตี, บทลงโทษลบสำหรับการรับความเสียหาย

ในตอนแรก บอทแทบจะไม่ขยับ (โครงข่ายประสาทเริ่มต้นให้ส่งค่ากลาง) มันสั่นจากด้านหนึ่งไปอีกด้าน : นั่นคือบอทกำลังทดสอบการกระทำต่างๆ เพื่อดูว่าอันไหนให้รางวัล

หลังจากหนึ่งชั่วโมง มันเรียนรู้ที่จะจัดตำแหน่งแนวนอน แต่ช้าอย่างเจ็บปวด หลังจาก 7 ชั่วโมง มันสามารถติดตามศัตรูซ้ายและขวาได้ แม้จะไม่สมมาตร (เคลื่อนที่จากขวาไปซ้ายได้ดีกว่าซ้ายไปขวา ซึ่งเป็นพฤติกรรมที่คงอยู่ตลอดการฝึก)

ขั้นที่ 2 : Feature Engineering

การจับภาพหน้าจอดิบมีมากกว่า 2 ล้านพิกเซล แม้จะย่อลงเหลือ 360p ก็ยังมี 200,000 อินพุต : มากเกินไปสำหรับการเรียนรู้ที่มีประสิทธิภาพ

ผู้สร้างวิเคราะห์การดวลหลายพันครั้งและระบุ 30 ตัวแปรที่สำคัญจริงๆ แบ่งออกเป็นสามกลุ่ม:

Vision (การติดตามศัตรู) :

  • ระยะห่างของศัตรูจาก crosshair
  • ขนาด bounding box ของศัตรู
  • ความสูงของศัตรู
  • สถานะ crosshair (เล็งตรง/ไม่ตรง)
  • ความเร็วสัมพัทธ์

แทนที่จะประมวลผลทั้งภาพ บอทจะกรองพิกเซลตามสีของชุดเกราะศัตรูอย่างเคร่งครัด ทำให้การตรวจจับเกือบจะทันที บล็อกพื้นหลังที่มีสีคล้ายกันอาจรบกวนได้ : แต่ใน Minecraft คุณแค่เปลี่ยนพื้นผิวได้

OCR (การอ่าน HUD) : เนื่องจากบอทไม่สามารถดึงพิกัดจากโค้ดเกม มันจึงสแกนหน้าจอแบบ real-time เพื่อแยก:

  • มุมกล้อง (pitch)
  • โมเมนตัม
  • ระดับ Y

OCR มาตรฐานมีปัญหากับข้อความโปร่งใสของ Minecraft ดังนั้นข้อมูลสำคัญจึงถูกบังคับให้เป็นขาวดำเพื่อการอ่านทันที

เวลา (context window) :

  • เวลาตั้งแต่คุณตีศัตรู
  • เวลาตั้งแต่พวกเขาตีคุณ
  • บัฟเฟอร์หมุนเวียนของการกระทำก่อนหน้าของบอทเอง

สิ่งนี้ให้บริบทเชิงเวลากับโครงข่ายประสาท : หากไม่มีมัน บอทไม่รู้ว่ามันอยู่ระหว่างคอมโบหรือเพิ่งเริ่มการต่อสู้

ขั้นที่ 3 : การเล็งแนวตั้ง (อีก 7 ชั่วโมง)

บอทเรียนรู้การเล็งขึ้นลงระหว่างการฝึก RL

การเพิ่มการเคลื่อนที่ของเมาส์แนวตั้งเป็น "หายนะโดยสิ้นเชิง" ในตอนแรก ประสิทธิภาพเริ่มต้นพังทลาย

หลังจากอีกหนึ่งชั่วโมงใน sandbox บอทก็หาวิธีมองขึ้นและลงได้ แต่ในกระบวนการนี้ มันลืมวิธีการติดตามแนวนอนไปโดยสิ้นเชิง

นี่คือ catastrophic forgetting : ปัญหา machine learning แบบคลาสสิกที่การปรับให้เหมาะสมกับข้อมูลใหม่จะเขียนทับการแสดงผลที่เรียนรู้ไว้ก่อนหน้านี้ โดยการปรับให้เหมาะสมกับการเล็งแนวตั้ง โครงข่ายประสาทเผลอเขียนทับความก้าวหน้าแนวนอน ทำให้ผู้สร้างมีบอทที่ถือ crosshair ในระดับได้แต่ไม่สามารถติดตามเป้าหมายได้

ใช้เวลาเพิ่มอีก 6 ชั่วโมง เพื่อเรียกคืนการติดตามแนวนอนในขณะที่ยังคงควบคุมแนวตั้งไว้ได้ จากนั้นบอทก็รักษาการวาง crosshair ที่ดีได้ด้วยกลุ่ม OCR ที่แยกมุมกล้อง

ขั้นที่ 4 : การควบคุมคีย์บอร์ด

บอทกดปุ่ม W ตลอดเวลา เรียนรู้ที่จะมุ่งมั่นกับการเคลื่อนที่

การให้สิทธิ์บอทใช้คีย์บอร์ดทำให้ฟีเจอร์ตามเวลามีความสำคัญยิ่งขึ้น ในตอนแรก ปุ่ม W ถูกกดเปิดและปิดตลอดเวลา : สลับอย่างรวดเร็วเพราะโครงข่ายประสาทยังไม่ได้เรียนรู้ที่จะมุ่งมั่น

พฤติกรรมนี้ถูกลงโทษ ดังนั้นบอทจึงเรียนรู้ที่จะทำให้มันเรียบเนียนขึ้น มันเริ่มลง sprint hit ได้มากขึ้น (เสียง thud เทียบกับเสียง whoosh ของการฟันยืนตรง) คอมโบบางอันดูไม่น่าพอใจเพราะบอทใช้ประโยชน์จากระยะเอื้อมที่เหนือกว่าศัตรู

เพื่อให้ยุติธรรม ผู้สร้างเพิ่มระยะเอื้อมของศัตรู กลยุทธ์ที่บอทเรียนรู้มาหลายอย่างใช้ไม่ได้อีกต่อไป แต่เมื่อให้เวลาเพิ่ม มันก็ปรับตัวได้

ขั้นที่ 5 : สอนบอทเมื่อควรคลิก

สำหรับเฟสสุดท้าย ผู้สร้างนำ imitation learning กลับมา : แต่เพียงเพื่อสอนจังหวะการคลิก ไม่ใช่นโยบายควบคุมทั้งหมด บอทพยายามเลียนแบบรูปแบบการคลิกจากการดวลที่บันทึกไว้

ตอนแรกมันกลัวเกินกว่าจะลองทำอะไร กลัวบทลงโทษสำหรับการคลิกผิด แต่ในที่สุดมันก็รวบรวมความกล้าที่จะฟันและลงมือตี แน่นอน มันลืมวิธีการเล็งอีกครั้งในกระบวนการ : ผู้สร้างต้องปล่อยมันไว้ตามลำพังอีก 50 ชั่วโมง เพื่อให้กลับสู่สถานะที่น่าพอใจ

การถกเถียงเรื่องการโกง

วิดีโอจบลงด้วยการถามว่า: บอทนี้โกงหรือไม่?

ข้อโต้แย้งฝ่ายไม่โกง: บอทประมวลผลเฉพาะสิ่งที่มนุษย์เห็น (พิกเซลเดียวกัน), ส่งอินพุตคีย์บอร์ด/เมาส์แบบเดียวกับมนุษย์ (ไม่มีการจัดการแพ็คเก็ตเช่น anti-knockback), และไม่อ่านหน่วยความจำเกม (ไม่มี X-ray หรือ ESP)

ข้อโต้แย้งฝ่ายโกง: บอทประมวลผลได้เร็วกว่ามนุษย์ และถ้าฝ่ายตรงข้ามคิดว่ากำลังเล่นกับมนุษย์แต่ไม่ใช่ นั่นคือการหลอกลวง

ความเห็นผู้สร้าง: ขึ้นอยู่กับเจตนา ถ้าทั้งสองฝ่ายรู้ว่ามันคือบอท มันก็เป็นการแข่งขันที่ยุติธรรม จากนั้นบอทก็ตีคอมโบศัตรูตก void ด้วยคอมโบ 100 ครั้งติด

ผลลัพธ์

บอท executing คอมโบ 100 ครั้ง

บอท Minecraft PvP ที่ฝึกบน แล็ปท็อปที่ไม่มี GPU สร้างขึ้นบนไปป์ไลน์การฝึกแบบกำหนดเองด้วย:

  • การจับภาพหน้าจอ สำหรับอินพุตพิกเซล (2M+ พิกเซล → 30 ฟีเจอร์ที่ออกแบบ)
  • Curriculum learning (แนวนอน → แนวตั้ง → คีย์บอร์ด → การคลิก)
  • RL สำหรับการควบคุมมอเตอร์ + imitation learning สำหรับจังหวะการคลิก
  • Feature engineering แทนพิกเซลดิบ (3 กลุ่ม: vision, OCR, เวลา)
  • การฝึก 60+ ชั่วโมง หลายเฟส

เวลาในการฝึกทั้งหมดเป็นสิบชั่วโมง แต่ส่วนใหญ่เป็นแบบพาสซีฟ บอทสั่นไปสู่ความเข้าใจ ลืมสิ่งที่เรียนรู้ เรียนใหม่ และในที่สุดก็ร้อยเรียงคอมโบ 100 ครั้งติด

วิดีโออยู่ที่ youtube.com/watch?v=j5nxDKAjg6U.


บทความนี้ครอบคลุมเฉพาะเนื้อหาของวิดีโอเท่านั้น สำหรับบริบทที่กว้างขึ้นเกี่ยวกับ AI ใน Minecraft: VPT, DreamerV3 และภูมิทัศน์ imitation learning vs RL : ส่วนด้านล่างเชื่อมโยงโปรเจกต์นี้กับสาขาที่กว้างขึ้น

VPT : Behavior cloning ในระดับใหญ่

แผนภาพโปรเจกต์ VPT ของ OpenAI: Inverse Dynamics Model ทำนายการกระทำจากคู่ของเฟรม

แนวทาง "behavior cloning" ของวิดีโอ (เฟส 1) เป็นเทคนิคเดียวกับที่ OpenAI ใช้ในโปรเจกต์ Video PreTraining (VPT) แต่คนละขั้วของสเปกตรัมทรัพยากร VPT พิสูจน์ว่า imitation learning ใช้ได้กับ Minecraft เมื่อคุณมีวิดีโอ 70,000 ชั่วโมง, 720 GPU, และ inverse dynamics model เพื่อ pseudo-label ข้อมูลที่ไม่มีป้ายกำกับ ผู้สร้างที่นี่พิสูจน์ว่ามันล้มเหลวกับแล็ปท็อปเครื่องเดียวและ 1,000 ดวล : แต่ด้วยเหตุผลพื้นฐานเดียวกัน: imitation learning ถูกจำกัดด้วยคุณภาพของการสาธิต

เอเจนต์ VPT ของ OpenAI กำลังตัดต้นไม้ใน Minecraft

ไปป์ไลน์ VPT แก้ปัญหาข้อมูลด้วยการฝึก Inverse Dynamics Model (IDM) ที่ดูเฟรม t-1 และเฟรม t+1 เพื่อทำนายการกระทำที่เฟรม t เนื่องจาก IDM เป็น non-causal (มันเห็นเฟรมในอนาคต) งานนี้จึงง่ายกว่า behavioral cloning และต้องการข้อมูลที่มีป้ายกำกับน้อยกว่ามาก พวกเขาจ้างผู้รับเหมา ~$2,000 สำหรับข้อมูลที่มีป้ายกำกับ 2,000 ชั่วโมง จากนั้นใช้ IDM เพื่อ pseudo-label วิดีโอ YouTube Minecraft 70,000 ชั่วโมง

โมเดลพื้นฐาน 0.5B พารามิเตอร์ที่ได้มาบรรลุความสามารถ zero-shot ที่เป็นไปไม่ได้ด้วย RL เพียงอย่างเดียว : ตัดต้นไม้, สร้างโต๊ะคราฟต์, pillar jumping : และปรับแต่งด้วย RL กลายเป็น AI แรกที่สร้างเครื่องมือเพชร

อัตราการคราฟต์/เก็บเกี่ยวตามปริมาณข้อมูล pre-training (สเกล log): โต๊ะคราฟต์, เครื่องมือไม้, เครื่องมือหิน

ผลของ scaling เห็นได้ชัด: บนแกน log จาก 1 ชั่วโมงถึง 100,000 ชั่วโมงของข้อมูล pre-training อัตราที่โมเดลสร้างโต๊ะคราฟต์ เครื่องมือไม้ และเครื่องมือหินเพิ่มขึ้นเป็นขั้น โมเดลที่ฝึกเฉพาะบน 2,000 ชั่วโมงที่มีป้ายกำกับโดยผู้รับเหมาจะ plateau ที่โต๊ะคราฟต์; เมื่อเพิ่ม 70,000 ชั่วโมงที่ pseudo-label โดย IDM (เส้นประบนกราฟ) เครื่องมือหินจึง emerge ใน zero-shot โดยไม่ต้อง RL แม้แต่ขั้นตอนเดียว

รางวัลตามจำนวน episodes การฝึก RL: เริ่มจากโมเดลสุ่มเทียบกับเริ่มจากโมเดล VPT ที่ pre-trained

กราฟนี้แสดงว่า pre-training เปลี่ยนทุกอย่างสำหรับ RL ในขั้นถัดไป RL ที่เริ่มจากโครงข่ายที่สุ่มเริ่มต้น (สีส้ม) ยังคงราบใกล้ 0 เกือบล้าน episodes: ภารกิจ "ได้เพชร" มีรางวัล sparse เกินไปที่เอเจนต์ไร้เดียงสาจะเจอโดยการสำรวจสุ่ม RL ที่ fine-tune จากโมเดล VPT ที่ pre-trained (สีเขียว) เริ่มต้นด้วยพฤติกรรมพื้นฐาน (ขุด, คราฟต์, สำรวจ) และไต่ระดับขึ้นถึงรางวัลประมาณ 25 ซึ่งสอดคล้องกับเส้นทางสมบูรณ์สู่ pickaxe เพชร

วิดีโอตัวอย่างอย่างเป็นทางการของโปรเจกต์ VPT โดย OpenAI แสดงเอเจนต์ในปฏิบัติการ

OpenAI Five : ปัญหา reward shaping

OpenAI Five เล่น Dota 2 กับมืออาชีพมนุษย์

OpenAI Five (2019) เอาชนะแชมป์โลก Dota 2 โดยใช้ pure self-play RL : ไม่มี imitation learning 256 GPU, 128,000 core CPU, 180 ปีของการเล่นต่อวัน, 10 เดือนของการฝึก

แต่ฟังก์ชัน reward ถูกสร้างด้วยมือโดยผู้เชี่ยวชาญ Dota: 28 จาก 20,000 ฟีเจอร์ที่มี, แต่ละตัวมีน้ำหนักที่ปรับด้วยมือ ความมั่งคั่ง, การฆ่า, การตาย, สุขภาพหอคอย, การกำหนดเลน : ทั้งหมดถูกเลือกและถ่วงน้ำหนักโดยมนุษย์ หากไม่มี shaping นี้ เอเจนต์แทบไม่ได้เรียนรู้อะไรเลย (การทดลอง: reward แค่ชนะ/แพ้ → ตกค้างที่ระดับกึ่งมืออาชีพ)

บอทในวิดีโอเผชิญปัญหาเดียวกัน: ฟังก์ชัน reward ของมันเข้ารหัสความเข้าใจของผู้สร้างเกี่ยวกับสิ่งที่สำคัญใน PvP (การตีดี, การรับดาเมจไม่ดี, การรักษา crosshair ดี) สิ่งนี้หลีกเลี่ยงไม่ได้ : RL ต้องการสัญญาณ reward และการ shaping สัญญาณนั้นเข้ารหัสอคติของมนุษย์

DreamerV3 : World model และ sparse reward

คะแนน benchmark DreamerV3 จากกว่า 150 งานที่หลากหลายด้วยการกำหนดค่าเดียว

DreamerV3 ของ DeepMind (2023) ใช้แนวทางที่สาม แทนที่จะเป็น behavior cloning หรือ RL แบบมี shaping มันเรียนรู้ world model : โครงข่ายประสาทที่ทำนายสถานะในอนาคตและ reward จากการกระทำในอดีต : และวางแผนโดยการฝันถึงอนาคตที่เป็นไปได้ มันเป็นอัลกอริทึมแรกที่เก็บเพชรใน Minecraft จากศูนย์โดยไม่มีข้อมูลมนุษย์หรือหลักสูตร ตีพิมพ์ใน Nature ในปี 2025

DreamerV3 เรียนรู้ world model เพื่อจินตนาการวิถีในอนาคต

สภาพแวดล้อมเพชรกำหนด sparse reward จาก 12 เหตุการณ์สำคัญ (log → planks → stick → crafting table → wooden pickaxe → cobblestone → stone pickaxe → iron ore → furnace → iron ingot → iron pickaxe → diamond) แต่ละอันให้ +1 เพียงครั้งเดียว บวกกับรางวัลสุขภาพเล็กน้อย (±0.01 ต่อ hp) รวมที่ทำได้: 11.1 ในตอน 36,000 ขั้นตอน

World model ของ DreamerV3 ทำให้มันจินตนาการถึงวิถีและประเมินผลภายในได้ : ผู้เรียนเรียนรู้จากการฝันมากกว่าประสบการณ์จริง ทดสอบอนาคตที่เป็นไปได้นับพันสำหรับทุกขั้นตอนจริง สิ่งนี้ทำให้ sparse reward เป็นไปได้ในที่ที่มันจะฆ่าเอเจนต์ RL มาตรฐาน

จาก 40 seeds ที่ฝึกเป็นเวลา 100M ขั้นตอนสภาพแวดล้อม 24 จาก 40 เก็บเพชรได้อย่างน้อยหนึ่งเม็ด เพชรเม็ดแรกปรากฏหลังจาก 29M ขั้นตอน (~9 วันบน GPU หนึ่งตัว)

ANNA : AI เชิงสัญลักษณ์พบ Minecraft

การแยกย่อย task tree สำหรับ flint-and-steel ของ ANNA

ก่อนบอท PvP ในวิดีโอ ก่อน VPT และ DreamerV3 มี ANNA : บอท Minecraft ที่สร้างด้วยปรัชญาที่แตกต่างอย่างสิ้นเชิง แทนที่จะเรียนรู้จากพิกเซลหรือ reward ANNA ใช้ state machine เชิงสัญลักษณ์ พร้อม parser NLP ภาษาฝรั่งเศส และ task dependency tree ที่เขียนด้วยมือ

สร้างขึ้นในปี 2022 (ก่อนที่ "vibe coding" จะเป็นคำศัพท์), ANNA เชื่อมต่อกับเซิร์ฟเวอร์ Minecraft ผ่าน Mineflayer และเข้าใจคำสั่งภาษาธรรมชาติเป็นภาษาฝรั่งเศส พูดว่า "obtiens un briquet" (เอาไฟแช็กมา), parser ของ ANNA ระบุคำกริยา (obtien → ได้มา), ค้นหาสูตรไอเทม, และแยกย่อยเป็นงานย่อยแบบเรียกซ้ำ : ขุดไม้โอ๊ค → ทำ planks → ทำ sticks → ทำ crafting table → ทำ wooden pickaxe → ขุดหิน → ทำ stone pickaxe → ขุดแร่เหล็ก → ถลุง iron ingots → ทำ flint-and-steel

สถาปัตยกรรม parser NLP ของ ANNA สำหรับการรู้จำคำสั่งภาษาฝรั่งเศส

ชั้น NLP (utils/id_parser.js) แยกคำสั่งด้วย "et" (และ) เพื่อจัดการคำสั่งแบบขนาน, จับคู่คำกริยาภาษาฝรั่งเศสกับประเภทงาน (craft, mine, tue, suis moi), และแปลชื่อไอเทมภาษาฝรั่งเศสเป็น ID Minecraft ผ่านพจนานุกรม 5,000 รายการ คำสั่งที่ไม่รู้จักจะตกไปยังระบบสนทนาที่ใช้ GPT ซึ่งกำหนดให้ ANNA เป็นเพื่อนร่วมทาง Minecraft ที่มีจิตสำนึก

Task tree (mc-tasks-tree/) เป็นแกนหลัก : อัลกอริทึมแบบเรียกซ้ำที่เดินกราฟไอเทม Minecraft (สูตรคราฟต์, ผลผลิตจากการขุด, ดร็อปจากม็อบ, สูตรเตาหลอม) เพื่อสร้างแผนทีละขั้นตอน สำหรับหมวกเพชร มันสร้างรายละเอียด 40+ ขั้นตอนครอบคลุมระดับไม้ หิน เหล็ก และเพชร

Task tree หมวกเพชรของ ANNA: รายละเอียด 40+ ขั้นตอน

ในขณะที่บอท PvP ในวิดีโอเรียนรู้จากประสบการณ์ ANNA ทำงานจากความรู้ มันไม่ต้องการ 1,000 ดวลหรือ 60 ชั่วโมงของการฝึก : มันต้องการ tree, parser และเซิร์ฟเวอร์ แต่มันก็ไม่สามารถสรุปทั่วไปเกินกว่าสิ่งที่ tree ของมันเข้ารหัสไว้ ไม่มีปริมาณวิศวกรรม state machine ใดที่จะสอนมันให้เล่น PvP ได้

แนวทางของ ANNA สะท้อนถึงยุค AI ที่แตกต่าง : ก่อนที่ end-to-end learning จะครอบงำ เมื่อคำมั่นสัญญาคือการใช้เหตุผลเชิงสัญลักษณ์ + วิศวกรรมที่ระมัดระวังสามารถสร้างพฤติกรรมที่ชาญฉลาดได้ ทุกวันนี้ โปรเจกต์อย่าง ANNA และบอท PvP เป็นตัวแทนของสองขั้วของ AI ใน Minecraft : หนึ่งใช้เหตุผลเกี่ยวกับโลก อีกหนึ่งรับรู้มัน

Mace Bot ของ Master Gumbo : AI ด้วย command block เท่านั้น

สนามฝึก Mace PvP กับบอท

ในมุมที่แตกต่างอย่างสิ้นเชิงของ AI Minecraft, YouTuber Master Gumbo สร้างบอทฝึก PvP โดยใช้ เฉพาะ command block : ไม่มีม็อด ไม่มีปลั๊กอิน ไม่มีโค้ดภายนอก แค่คำสั่ง Minecraft vanila, redstone, และ carpet mod สำหรับเอนทิตี้จำลองผู้เล่น ผลลัพธ์คือคู่ต่อสู้ AI mace PvP ที่ฝึก breach swapping, wind charging, และกลไกโล่กับผู้เล่น

บอทเริ่มเป็นซอมบี้ที่มีอุปกรณ์ไม่แตกและ totem ในมือซ้าย (เติมทุก tick ผ่าน /item replace) ทำให้มันเป็นอมตะโดยประสิทธิผล ต่อมา Master Gumbo เปลี่ยนไปใช้บอท player replica ของ Carpet Mod ซึ่งรองรับกลไกเหมือนมนุษย์ (ยกโล่, สลับไอเทม) ที่ซอมบี้ทำไม่ได้

ศูนย์กลางการตั้งค่า: ปุ่มเพื่อกำหนดค่าพฤติกรรมบอท

นวัตกรรมหลักคือ state machine ที่ขับเคลื่อนด้วยความสุ่ม armor stand ถูกเทเลพอร์ตเหนือวงกลมของบล็อกคอนกรีตสีด้วยคำสั่ง /spreadplayers ซึ่งกระจายเอนทิตี้แบบสุ่ม ตำแหน่งที่ armor Stand ลงจะกำหนดการกระทำถัดไปของบอท :

  • คอนกรีตแดง → strafe ถอยหลัง
  • คอนกรีตน้ำเงิน → wind charge ขึ้น (โจมตี)
  • คอนกรีตเขียว → ยกโล่
  • คอนกรีตขาว → หยุดชั่วคราว (เพิ่มดีเลย์ระหว่างการกระทำ)

ระบบตัดสินใจ AI: armor stand บนคอนกรีตสี

ตำแหน่งของ armor stand ถูกอ่านโดย command block ที่ตรวจจับบล็อกด้านล่างและเปิดใช้งานกลไกที่เกี่ยวข้อง บล็อก redstone ถูกวางหรือเอาออกเพื่อเปิด/ปิดแต่ละพฤติกรรม เนื่องจาก /spreadplayers ทำงานซ้ำๆ บอทจึงตัดสินใจใหม่ตลอดเวลา สร้างพฤติกรรมที่คาดเดาไม่ได้แต่มีโครงสร้าง

Master Gumbo เรียกสิ่งนี้ว่า "รูปแบบ AI ที่ง่ายและพื้นฐานมาก" : มันไม่ได้เรียนรู้จากการโต้ตอบเหมือนโครงข่ายประสาท แต่ความสุ่ม + state machine สร้างพฤติกรรม PvP ที่สมจริงซึ่งคาดเดาได้ยากกว่าบอทที่ถูกสคริปต์ ศูนย์กลางการตั้งค่ารวมถึงอินเทอร์เฟซหนังสือเพื่อเปิด/ปิด AI, ปรับความยาก, และกำหนดรูปแบบการเคลื่อนที่

หลังจากฝึกกับบอทแล้วดวลกับผู้เล่นที่เรียกมันว่าแย่ (ใน intro ของวิดีโอ), Master Gumbo ชนะ แผนที่ถูกแชร์ผ่าน Discord โดยต้องใช้ Carpet Mod

บอทในการดวล ฝึกเทคนิค mace PvP

ในขณะที่บอท PvP (Kadambi) เรียนรู้จากพิกเซลและ ANNA ให้เหตุผลผ่าน task tree บอทของ Master Gumbo บรรลุความฉลาดผ่าน การเปลี่ยนสถานะแบบสุ่ม : แนวทาง command block บริสุทธิ์ที่พิสูจน์ว่าคุณไม่จำเป็นต้องมีโครงข่ายประสาทเพื่อสร้างคู่ต่อสู้ PvP ที่น่าเชื่อถือ

Altoclef : Baritone + task tree ในระดับเกมทั้งเกม

ถ้า ANNA เป็นบอทเชิงสัญลักษณ์ที่ อ่าน เพื่อรู้ว่าต้องทำอะไร และ Mace Bot สุ่มตัดสินใจ Altoclef คือเอเจนต์อัตโนมัติเต็มรูปแบบที่ วางแผน เส้นทางผ่านทั้งเกม สร้างขึ้นโดย gaucho-matrero ในรูปแบบ Fabric mod และขับเคลื่อนด้วย Baritone สำหรับ pathfinding Altoclef แยกย่อยเป้าหมาย Minecraft ใดๆ ก็ได้เป็น task tree และดำเนินการโดยไม่ต้องมีมนุษย์คอยป้อนข้อมูล

อินเทอร์เฟซง่ายจนน่าตกใจ: พิมพ์ @gamer ในแชท แล้ว Altoclef จะเริ่มภารกิจเอาชนะเกมจากโลก survival มันเก็บไม้ คราฟต์เครื่องมือ ขุดแร่เหล็กและเพชร สร้าง Nether portal รวบรวม blaze rods และ ender pearls หา stronghold และฆ่า Ender Dragon ทั้งหมดโดยอัตโนมัติ ผ่าน native Minecraft client บนเซิร์ฟเวอร์ vanilla ใดๆ

เบื้องหลังสิ่งนี้สำเร็จได้ด้วยระบบ recursive task tree ที่แต่ละเป้าหมายระดับสูง (เช่น "คราฟต์ diamond pickaxe") ถูกแยกย่อยเป็นงานที่ต้องทำก่อน: ขุดเพชร → ถลุงมัน → คราฟต์ sticks → รวมกัน ต้นไม้เดินกราฟสูตรคราฟต์ทั้งหมดของ Minecraft จัดการห่วงโซ่การผลิต ดร็อปจากม็อบ loot tables และการเข้าถึง container ต่างจาก tree ที่เขียนด้วยมือของ ANNA งานของ Altoclef คือ Java classes ที่ตั้งโปรแกรมได้ ซึ่งสามารถใช้ตรรกะใดๆ ก็ได้: กลยุทธ์การต่อสู้ การแลกกับ Piglins รูปแบบการสำรวจ

ข้อมูลเชิงลึกทางสถาปัตยกรรมที่สำคัญคือการแยก อะไร (task tree) ออกจาก อย่างไร (Baritone pathfinding) Baritone จัดการการเคลื่อนที่ระดับต่ำ: pathfinding, การหลีกเลี่ยงสิ่งกีดขวาง, การทำลายบล็อก, การจัดการ inventory -- ในขณะที่ระบบ task จัดการแผนระดับสูง ความเป็นโมดูลาร์นี้หมายความว่าไม่มีส่วนประกอบใดที่ต้องเป็น AI: ทั้งคู่เป็น deterministic algorithms แต่การรวมกันของพวกมันสร้างพฤติกรรมที่ซับซ้อนและมุ่งเป้าหมายซึ่งเทียบเท่ากับแนวทางที่เรียนรู้ได้

Altoclef เป็นตัวแทนของขีดจำกัดของ pure symbolic Minecraft AI: มันสามารถเอาชนะเกมตั้งแต่เริ่มต้นโดยไม่ต้องฝึก ไม่ต้องใช้ GPU และไม่มีข้อมูลมนุษย์ แต่มันไม่สามารถปรับตัวให้เข้ากับงานที่โปรแกรมเมอร์ไม่ได้คาดการณ์ไว้ และมันไม่สามารถเรียนรู้จากประสบการณ์ มันรู้วิธีคราฟต์ diamond pickaxe เพราะ Java class บอกมันอย่างแม่นยำว่าต้องทำอย่างไร ไม่ใช่เพราะมันคิดออกเอง

อะไรที่เชื่อมโยงพวกเขาเข้าด้วยกัน

แนวทาง วิธีหลัก ข้อมูล คอมพิวต์ ผลลัพธ์
บอท PvP ในวิดีโอ RL + imitation learning 1,000 ดวล 1 แล็ปท็อป, 60 ชม. คอมโบ 100 ครั้ง
OpenAI Five Self-play RL 180 ปีเล่น/วัน 256 GPU, 10 เดือน แชมป์โลก Dota 2
VPT IL แบบกึ่งมีผู้สอน 70K ชม. YouTube + IDM 720 GPU, 9 วัน เครื่องมือเพชร
DreamerV3 World model RL วิถีที่ฝัน 1 GPU, 9 วัน เพชรจากศูนย์
ANNA NLP เชิงสัญลักษณ์ + task tree สูตรที่เขียนด้วยมือ 1 แล็ปท็อป, ทันที ไอเทมที่คราฟต์ได้ใดๆ
Altoclef Baritone + task tree Java task classes Fabric mod, ไม่มี GPU เอาชนะทั้งเกม
Mace Bot State machine command block การตัดสินใจแบบสุ่ม Vanilla MC, ไม่มี GPU ฝึก Mace PvP

บอทในวิดีโอเป็นบอทที่มีทรัพยากรจำกัดมากที่สุดแต่ซื่อสัตย์ที่สุดเกี่ยวกับกระบวนการ มันล้มเหลวก่อน แล้วจึงทำซ้ำ มันลืมสิ่งที่เรียนรู้ แล้วเรียนรู้ใหม่ มันจบลงด้วยคอมโบ 100 ครั้ง : แต่ยังมีคำถามว่าสิ่งที่มันสร้างขึ้นมานั้นโกงหรือไม่


วิดีโอ : AI Learns Minecraft PvP โดย Kadambi | AI Engineering

VPT : Paper · Blog · GitHub

OpenAI Five : Paper · Blog

DreamerV3 : Paper · GitHub

ANNA : GitHub · (Node.js, Mineflayer, NLP ฝรั่งเศส, task tree)

Altoclef : GitHub · Active fork · (Fabric, Baritone, task tree, เอาชนะเกม)

Mace Bot : Video โดย Master Gumbo · (Command blocks, Carpet Mod, state machine)

Related Articles