Ghid operator pentru Pokemon Player
Ce face
pokemon-player permite rularea unui joc Pokemon prin emulator headless, folosind pachetul public pokemon-agent. Serverul local citește starea jocului din RAM — poziție, HP, battle state, dialog — și folosește screenshot-uri pentru orientare vizuală.
Nu este un sistem de „apasă butoane până nimerește”. Loop-ul sigur este: observă starea, ia screenshot, se orientează vizual, decide, execută doar câteva acțiuni, verifică din nou, apoi salvează periodic. RAM-ul oferă numere; imaginea spune dacă două tile-uri mai încolo există o ușă, un gard, un NPC sau o mică nenorocire geometrică.
Ghidul acesta face parte din All guides.
Când îmi folosește
Folosește capabilitatea când vrei ca agentul să pornească, să continue sau să joace Pokemon prin emulator, inclusiv jocuri de tip Pokemon Red, Blue, Yellow, FireRed sau similare.
Trigger-ele canonice sunt:
- „play pokemon”
- „start pokemon”
- „pokemon game”
- întrebări despre Pokemon Red, Blue, Yellow, FireRed etc.
- referințe la un ROM
.gb,.gbcsau.gba - cereri de tip „vreau să văd un AI jucând Pokemon”
Ai nevoie de propriul ROM. Agentul nu descarcă, nu furnizează și nu caută ROM-uri. Dacă ROM-ul nu este disponibil în sesiune, trebuie cerut utilizatorului. Fără ROM, nu există gameplay; doar conversație despre gameplay. Trist, dar legal.
Cum îl invoc / declanșez
Invocarea exactă depinde de runtime, dar procedura tehnică este aceeași.
Prerequisite-uri:
- repo-ul
NousResearch/pokemon-agentclonat local; - Python 3.10+;
- virtual environment activ;
- instalare editable cu extra-ul
pyboy; - ROM furnizat de utilizator.
uv este varianta preferată pentru venv și instalare rapidă. Dacă nu există, se folosește python3 -m venv și pip.
Pornirea serverului:
pokemon-agent serve --rom <ROM> --port 9876
Pentru reluare dintr-un save:
pokemon-agent serve --rom <ROM> --port 9876 --load-state <save_name>
După pornire, serverul se verifică prin:
GET /health
Dashboard-ul live este opțional. Skill-ul descrie un SSH reverse tunnel prin localhost.run; dacă tunelul pornește, URL-ul generat se oferă cu /dashboard/ adăugat. URL-ul nu este stabil și se schimbă la restart. Dacă tunelul nu pornește, jocul poate rula local fără dashboard public.
Exemplu practic
Spui: „start pokemon cu ROM-ul meu”.
Agentul trebuie să folosească ROM-ul furnizat, să pornească serverul pe portul 9876, să verifice GET /health, apoi să ofere dashboard-ul doar dacă tunelul a fost creat real.
Loop-ul corect:
GET /stateGET /screenshot, salvat temporar- analiză vizuală a screenshot-ului
- decizie: dialog, battle, heal, story objective, training sau explore
POST /actioncu o listă scurtă, de obicei 2–4 acțiuni- screenshot nou pentru verificare
- salvare periodică
Acțiuni disponibile includ:
press_apress_bpress_startwalk_upwalk_downwalk_leftwalk_righthold_b_Nwait_60a_until_dialog_end
Output / unde aterizează
Output-ul principal este sesiunea de joc rulată de serverul pokemon-agent. Dacă dashboard-ul este disponibil, rezultatul vizibil pentru utilizator este pagina /dashboard/.
Progresul se notează cu prefixe PKM::
| Prefix | Scop |
|---|---|
PKM:OBJECTIVE | obiectiv curent |
PKM:MAP | cunoștințe de navigație |
PKM:STRATEGY | strategie de luptă sau echipă |
PKM:PROGRESS | milestone-uri |
PKM:STUCK | situații unde agentul s-a blocat |
PKM:TEAM | note despre echipă |
Save/load:
POST /savecu nume descriptiv, de exemplubefore_gymsautown_entrancePOST /loadcu numele save-uluiGET /savespentru lista save-urilor--load-state <save_name>la pornire pentru încărcare directă
La oprire: salvează jocul, actualizează progresul PKM:PROGRESS, spune utilizatorului numele save-ului și oprește serverul plus tunelul, dacă există.
Limite / gotchas
Nu furnizează ROM-uri. Nu inventează existența unui ROM. Nu pretinde că dashboard-ul public există dacă tunelul nu a pornit.
Vision este obligatoriu. RAM-ul spune poziție și HP; nu spune ce e lângă tine. Screenshot la fiecare 2–4 pași, altfel agentul va ajunge să negocieze cu un gard.
După uși sau scări, adaugă 2–3 acțiuni wait_60. Tranzițiile pot lăsa poziția veche în RAM.
La ieșirea din clădiri apari în fața ușii. Dacă mergi nord, intri înapoi. Întâi sidestep stânga sau dreapta două tile-uri.
Dialogul din Gen 1 curge lent. Pattern robust: hold_b_120, apoi press_a, repetat și verificat vizual. a_until_dialog_end poate rata unele stări de text.
Ledges sunt one-way: se sar doar în jos, nu se urcă. În battle, RUN este jos-dreapta; din cursorul default FIGHT mergi down, right, apoi press_a. FIGHT este sus-stânga; press_a, apoi încă un press_a folosește prima mișcare.