STUDY.fegyvergenerator_harcszimulacio - kaktusztea/szilankrpg GitHub Wiki
Fegyvergenerátor — Kör-alapú harci szimuláció (első hangolási kör)
Kapcsolódik: Fegyvergenerátor · Fegyvergenerátor — Tőrkard példa
Script:
code/balance/fegyvergenerator_harcszimulator.py· Futtatás:python3 code/balance/fegyvergenerator_harcszimulator.py
Javítási kör (2026-09-24, a script-doksi konzisztencia-ellenőrzése után)
Az első verzió és a harcszimulacio.spec.md szisztematikus összevetése 4 valós eltérést talált, mindet javítottuk:
- Merevvértviselet 3.fok VÉ+3 bónusz hiányzott (§10.1, §3.10) — merev páncél (pikkely/lemez) + ≥70% lefedettség esetén a fortély 3.fokja +3 VÉ-t ad, ez korábban nem volt implementálva. A
Profilbővítvepancel_sisak/pancel_vegtagvedettsegmezőkkel a lefedettség-számításhoz. - Merev-páncél detektálás hardcode-olt, hibára hajlamos kifejezés volt (
and/orkeverve zárójel nélkül) — most akonstansok.json → páncél_struktúrák[].merevexplicit mezőjéből jön. - Roham/Öngyilkos roham "ha betalál, a büntetés megszűnik" kivétel hiányzott (§7 taktika-tábla) — most a találat pillanatában (nem csak a kör végén) lejár a taktika, hogy a rohamozó saját VÉ-je már a védő azonnali visszatámadásakor se legyen büntetve.
- Páncél-inkonzisztencia a forgatókönyvekben — a
pancel_oszalyparaméter (ami a sebzésjelleg×páncél mátrixot választja) korábban NEM állította át a karakter ténylegesProfil.pancel_struktura/SFÉ/MGT mezőit, ezért minden "páncél variáns" teszt valójában a karakter alap (lánc/sodrony) MGT/SFÉ-jével futott, csak a támadó SP-bónusza változott. Újpancel_profil_mezok()helper biztosítja az összhangot.
A 4. javítás jelentősen megnövelte a "merev páncél" szituáció harchosszát (5,25 → 11,54 kör), ami várt és helyes: két, valóban lemez/pikkely páncélt viselő fél között a magas MGT/SFÉ miatt a harckeret és az áthatoló sebzés is lecsökken.
Architektúra-váltás: adatvezérelt Taktikák / Harci helyzetek / Manőverek
A Taktikák és Harci helyzetek eredetileg KÉZZEL írt Python dict-ekben éltek (TAKTIKAK, HARCI_HELYZETEK), ami csak egy szűk részletét fedte le a valós adatnak — hiányzott pl. Csúszós talaj, Elvesztett egyensúly, Közrefogás, Orvtámadás, Kezdeményező, Kiváró, Plusz támadás, Tettetés, és a megkötések[]/kombó_mód validáció sosem futott.
Új modul: code/balance/fegyvergenerator_data_adapter.py — közvetlenül a webapp forrásait tölti be (data/tables/taktikak.json, harci_helyzetek.json, manoverek.json, statuszok.json, generálva a data/sources/*.yaml-ból), és egy generikus hatás-kiértékelőt ad (hatasok_kiertekelese()) a hatas_operatorok.yaml + engine_spec.md §22.2 szemantikája szerint:
előny / hátrány → kocka reroll szint (netÉH taghoz, [-2,+2] clamp)
arányos / duplázás → szorzó (0.5 = felez, 2 = duplázódik)
letilt → boolean (képesség/próba elvesztése)
max_limit → felső korlát
szöveges → nem kumulálható, informatív (kihagyva/logolva)
A fegyvergenerator_harcszimulator.py Harcos osztálya mostantól ezt az adaptert hívja (taktika_mod(), taktika_hatas(), helyzet_hatas(), statusz_hatas()) — nincs több duplikált/hiányos adat. A taktika/helyzet mezők értéke most a JSON valós id-je (pl. "roham", "támadó", "belharci_helyzet", "ellenfél_beszorított"), nem a korábbi kézzel ASCII-sított kulcsok ("tamado", "belharc").
Az önteszt és a forgatókönyvek eredménye nagyrészt változatlan maradt az átírás után (l. lentebb) — ez megerősíti, hogy a korábbi kézzel írt dict-ek a lefedett esetekben helyesen tükrözték az adatot, csak nem voltak teljesek/karbantarthatók.
Cél
A fegyvergenerator_balansz.py statikus metrikái (egy csapás sebzése páncélonként, tempó-arány) nem mutatják meg, hogy egy fegyver valódi, kör-alapú harcban hogyan teljesít — a harckeret, a támadásszám, a VÉ-erózió és a túlerő-dinamika csak kör-motorban látszik. Ez a szkript a harcszimulacio.spec.md §3-§6 formuláit implementálja a fegyvergenerátor fegyvereire.
Metodológia
- Karakter-profil: minden teszt azonos "referencia" profillal megy mindkét oldalon (TSz 10, Erő/Edzettség/Ügyesség/Gyorsaság 3, HM_TÉ 15/HM_VÉ 13, harcmodor szint 8, Fájdalomtűrés 7, Mesterfegyver 2.fok, Merevvértviselet 3.fok) — csak a fegyver változik. Ez izolálja a fegyver hatását a karakter-építéstől.
- "Gyengébb ellenfél" (pribék): TSz 5, alacsonyabb tulajdonságok, harcmodor szint 5, Fájdalomtűrés/Mesterfegyver nélkül — a
harcszimulacio.spec.mdREF-D mintája. - 1:1 összevetés: minden fegyvert egy FIX referencia-fegyver ("Kard, hosszú") ellen mérünk, nem N² páros-mátrixot (66 fegyvernél az utóbbi ~2145 pár lenne, feleslegesen sok).
- Célválasztás politika: "legveszélyesebb gyenge" — élő, harcképes ellenfelek közül a legkisebb hátralévő ÉP-vel/VÉ-vel rendelkezőt célozza (nem vaktában, nem a legerősebbet).
- k20T forrás (
harcszimulacio.spec.md§13.1, nyitott kérdés): közös kocka — a sikertelen támadás VÉ-csökkentésének extra tagja a már eldobott támadó-dobás k20-ából jön, nem külön dobásból. (Döntés: 2026-09-24. Hatása: ha a VÉ-különbség kicsi a felek közt, ez a tag gyakran nullázódik — lásd a script docstringjét. Ha a fegyverek sorrendje gyanúsan érzékeny erre, újra kell futtatniK20T_FUGGETLEN = True-val.) - Sebzésjelleg×páncél mátrix: a fegyvergenerátor SAJÁT mátrixa (
sebzesjelleg_pancel_matrix.yaml, 5 sebzésjelleg × 5 páncélosztály), NEM a régi szabálykönyv flat Z/S/V bónusza — a generátor fegyvereit a saját WORK-paramétereik feltételezte mátrixszal kell mérni. - Manőverek: kihagyva a base-line forgatókönyvekből (a spec §13.8 explicit óva int ettől hangolási tesztekben — a varianciájuk nagyobb, mint a mérendő különbség). A motorban elő van készítve az opt-in bekötés, de jelenleg nincs konkrét manőver-forgatókönyv futtatva.
- Self-test: a szkript minden futásnál előbb 5 motor-validáló állítást futtat (tükör-harc ~50%, 1:3 azonos erő → magányos veszít, hős dominál gyengébb ellen, monoton csökkenő túlerő-görbe, jobb SP-jű fegyver győz azonos gyengébb ellen) — ha ezek buknak, a forgatókönyvek nem futnak le.
Eredmények
1:1, minden fegyver a referencia ("Kard, hosszú") ellen — lánc páncél
800 futás/fegyver. A táblázat a legjobb és legrosszabb végleteket mutatja (a teljes 66 soros lista a script kimenetében).
| Fegyver | Győzelem | Megjegyzés |
|---|---|---|
| Pika, keskeny/széles hegyű | 100% | 2 kezes, hosszú lándzsa — extrém dominancia |
| Lándzsa, keskeny/átlagos/széles | 98–99% | ua. családba tartozó |
| Kard, Slan csatakard / kétkezes | 98% | nagy pengéjű, kétkezes |
| Alabárd | 98% | 3 aktoros, "nem ultimate" volt a szándék (lásd v2.md) |
| Kard, lovag | 57% | a Mesterfegyver 2.fok + Merevvértviselet a spec REF-A-ját tükrözi |
| Kard, hosszú (tükör) | 52% | önmagával ~50%, ahogy elvárt |
| Kard, rapír / hiequar | 31–33% | könnyebb kardvívó fegyverek |
| Tőr, Kés, Dzsambia | 0–5% | rövid, egykezes, kis SP |
| Kő, Puszta kéz, Vasököl | 0% | leggyengébb csoport, várt |
Kontextus (frissítve, l. Taktikai döntési AI szekció): a Pika/Lándzsa/kétkezes-kard csoport 95–100%-os dominanciája nyílt terepen szándékolt — a Szilánk rendszer taktikai/szituációs, szemtől szemben egy pikás simán győz. A hosszú fegyverek ellensúlya nem a fegyverhossz tábla hangolásában van, hanem a rendszer más pillérein (Belharcba kerülés manőver, Mögékerülés, Közrefogás) — ezek hatását a "Taktikai döntési AI" szekció méri: egy rövid, belharcos fegyver a Belharcba kerülés manőverrel 0%-ról 65-77%-ra tudja fordítani az esélyt Pika ellen.
Túlerő: Hős ("Kard, hosszú") N gyengébb (pribék) ellen — bőr páncél
400 futás/létszám.
| Felállás | Hős győz | Átlag hossz |
|---|---|---|
| 1:1 | 100% | 2,0 kör |
| 1:2 | 100% | 3,9 kör |
| 1:3 | 100% | 5,9 kör |
| 1:4 | 68% | 7,3 kör |
| 1:5 | 3% | 5,1 kör |
| 1:8 | 0% | 2,7 kör |
A törés 3→5 pribék között éles, de ez nem hiba — a szabálykönyv szándékolt viselkedése (harcszimulacio.spec.md §12): a túlerő hatása pontosan az, hogy egyszerre több VÉ-koptatás és sebzés éri a magányos felet, körönként, kumulatívan. 4 fő pribék körül van a hős "töréspontja" ezzel a konkrét karakter-build/fegyver kombinációval.
N:N azonos erő, azonos fegyver ("Kard, hosszú", lánc páncél)
400 futás/létszám. Minden létszámnál ~50/50 körül kell legyen (szimmetrikus csapatok) — ez teljesül (49–55%), tehát a csapat-logika (célválasztás, kezdeményezési sorrend) nem visz be torzítást a létszám növelésével.
| Felállás | A oldal győz | Átlag hossz |
|---|---|---|
| 1v1 | 54,5% | 6,2 kör |
| 2v2 | 51,2% | 7,8 kör |
| 3v3 | 52,8% | 8,7 kör |
| 4v4 | 49,5% | 9,4 kör |
Szituáció-variánsok ("Kard, hosszú" tükör-harc, A-oldal variál)
600 futás/variáns. A pancel_oszaly most már a karakter TÉNYLEGES páncél-struktúráját (SFÉ+MGT) is beállítja, nem csak a sebzésjelleg-mátrixot (l. Javítási kör, 4. pont) — ezért a "merev páncél" sor harchossza (11,5 kör) most reálisan tükrözi, mit jelent, ha mindkét fél valóban lemez/pikkely páncélt visel.
| Variáns | A győz | Átlag hossz | Megjegyzés |
|---|---|---|---|
| Csupasz páncél | 50% | 2,8 kör | nincs SFÉ/MGT, gyors, nyers harc |
| Bőr páncél | 47% | 5,4 kör | |
| Lánc páncél | 52% | 6,1 kör | |
| Merev páncél (pikkely) | 50% | 11,5 kör | magas MGT/SFÉ → lassú harckeret, nagy kopás, hosszú harc |
| A-nak Hátulról támadás | 77% | 4,6 kör | Előny+1 TÉ, pajzs-VÉ kiiktatva — erős, de nem túlzó bónusz |
| A-nak Beszorított ellenfél | 79% | 4,7 kör | Előny+1 TÉ — hasonló erejű, mint a Hátulról támadás |
| A Roham taktikával | 49% | 4,6 kör | 1 csere után lejár (§13.5, javítva); most adatvezérelt (taktikak.json) — trade-off, nem dominál |
| A Támadó(2) taktikával | 39% | 4,7 kör | a VÉ−4 büntetés ebben a modellben nagyobb súlyú, mint a TÉ+2 haszna |
| A Teljes Védekezés taktikával | 0% (18,2 kör) | passzív taktika — sosem sebez, csak húzza az időt; 1:1 duel-re nem alkalmas, ahogy elvárt |
Motor-implementációs megjegyzések
- A Roham/Öngyilkos roham taktikák "1. oda-vissza csapás után lejár, és ha betalál a VÉ-büntetés megszűnik" szabályát (§7, §13.5) a motor explicit kezeli: a
roham_elhasznaltflag találatnál ÉS tévesztésnél is beáll; TALÁLATNÁL a taktika azonnal (nem csak a kör végén) visszaállNone-ra, hogy a rohamozó saját VÉ-je a védő azonnali visszatámadásakor se legyen büntetve. Ezt a session során hibaként találtuk és két lépésben javítottuk — előbb csak a kör végi lejárat hiányzott, utána a találat-azonnali lejárat is (a script-doksi konzisztencia-ellenőrzésekor). - A Merevvértviselet 3.fok VÉ+3 bónusz (§10.1) most a
konstansok.json → páncél_struktúrák[].merevexplicit mezőjéből + aProfil.pancel_sisak/pancel_vegtagvedettseglefedettség-számításból jön (korábban teljesen hiányzott a motorból). - A
pancel_oszalyparaméter (ami minden forgatókönyv-függvényben a sebzésjelleg×páncél mátrixot választja) most apancel_profil_mezok()helperen keresztül a karakter Profil SFÉ/MGT/struktúra mezőit IS beállítja — korábban ez a kettő szétcsúszott (a mátrix-oldal váltott, a karakter MGT/SFÉ-je végig a lánc/sodrony alapértéken maradt). - A pengeviszony (§5.2) számításához a fegyvergenerátor
fegyverhosszkategória-indexét (0-12) egy becsült "Pengehossz" skálára (0/0.5/1/1.5/2/3/4/5) képezzük le — ennek nincs kanonikus 1:1 megfeleltetése, csak az elő/hátrány IRÁNYÁT adja helyesen, ne kezeld pontos fizikai mértékként. - Pajzs, hárítófegyver, kétkezes harc jelenleg nincs modellezve (a Profil nem tartalmaz ilyen mezőket) — minden teszt egyfegyveres fogással megy.
Taktikai döntési AI — a hosszú fegyverek szituációs ellensúlya
Script:
code/balance/fegyvergenerator_taktikai_ai.py· Futtatás:python3 code/balance/fegyvergenerator_taktikai_ai.py
A fenti 1:1 mátrix nyílt terepen, szituáció/manőver nélkül méri a fegyvereket — ott a hosszú fegyverek (Pika/Lándzsa/Alabárd) dominanciája szándékolt: a Szilánk rendszer taktikai/szituációs, szemtől szemben egy pikás simán győz. A kérdés az, mennyire tudja ezt megfordítani egy rövidebb fegyveres, aki él a rendszer taktikai eszközeivel (Harci taktikák, Harci helyzetek, Manőverek).
Ehhez a fegyvergenerator_harcszimulator.py alap motorját egy körönkénti döntési réteggel bővítettük:
- minden élő harcos minden kör elején felméri a helyzetet (saját/ellenfél fegyverhossz-különbség, VÉ/ÉP állapot, létszámarány)
- súlyozott véletlennel választ: taktikaváltás VAGY manőver-próba (Belharcba kerülés, Mögékerülés) — a súlyok relatívak, nem fix %, könnyen hangolható táblában (
dontesi_szabalyok()) - a manőver-ellenpróba:
manőver_alap(támadó) + MP_támadó(≤4) + k10 >= manőver_alap(ellenfél) + nehézség + MP_ellenfél(≤2) (+ helyzetfüggő_mód)(md/066_04_manover_vegbevitele.md+md/066_02_manover_pontok.md"Ellenfelhasználás" szerint — l. lejjebb a "Javítás" bekezdést) - a célpont is dönt: súlyozott véletlennel befektethet max 2 "counter" MP-t a Nehézség növelésére (
ellenfel_mp_counter_dontes()) — a döntés a manőver rá nézve vett veszélyességétől függ (pl. a hosszú fegyveresnek katasztrofális, ha belharcba kerül, ezért nagyobb eséllyel véd ellene) - siker esetén a Belharci helyzet mindkét félre átvezetődik (megosztott, fizikai szituáció) — ez volt az egyik implementációs hiba, amit a fejlesztés közben találtunk és javítottunk (kezdetben csak a próbálkozó félre állt be, a célpont "kint maradt" a helyzetből, ezért a hosszú fegyver override sosem aktiválódott)
A harcszimulacio.spec.md §8 táblájából hiányzó Belharci helyzet fegyver-override mechanikát is pótoltuk a motorban: Belharci helyzetben a hosszú fegyver (pengehossz > 0) TÉ/VÉ override 0-ra esik, a rövid/belharcos fegyver (pengehossz ≤ 0) a Belharcos fortély 1.fok bónuszát kapja (TÉ/VÉ:+2, egyszerűsítés — a döntési AI-hoz kötött karakter feltételezetten birtokolja).
Eredmény: Belharcba kerülés ellensúly-hatása (Pika, keskeny hegyű ellen, lánc páncél)
600 futás/fegyver, összevetve az alap (helyzet-mentes) motorral. A Pika (célpont) aktívan véd counter-MP-vel.
| Fegyver | Alap győz | AI-val győz | Javulás |
|---|---|---|---|
| Tőr, kígyó / Béltépő / Kés / Tőr | 0% | 42–44% | +42–44 pp |
| Levéltőr / Méregfog / Dzsambia / Vasököl | 0% | 40–41% | +40–41 pp |
| Kriszkés / Markolatgomb | 0% | 38–39% | +38–39 pp |
| Kő / Puszta kéz (belharcban is) / Tőr, ököl / Puszta kéz | 0% | 34–37% | +34–37 pp |
| Tőr, Slan / Tőr, páncélszúró / Ramiera / Pugoss | 0% | 7–9% | +7–9 pp |
A minta megerősíti a felvetést: a rövid, "közelharci" kategóriájú fegyverek (Tőr, Kés, Dzsambia, stb.), amik jogosultak a Belharcba kerülés manőverre (a manőver saját követelménye: "Belharcos fegyver és Közelharc harcmodor"), 0%-ról ~35-44%-ra tudják fordítani az esélyt egy Pika ellen, még úgy is, hogy a Pika (mint a manőver célpontja) aktívan próbál védekezni counter-MP-vel. A Pugoss/Tőr·páncélszúró/Tőr·Slan/Ramiera csoport gyengébb javulása (7-9 pp) abból ered, hogy ezek pengehossz:0,5 kategóriájúak (a Tőr/Kés pengehossz:0) — hosszabb "rövid" fegyverrel valamivel nehezebb a szoros testi közelséget elérni.
A tükör-teszt (két Pikás egymás ellen, senki se jogosult a Belharcba kerülésre) ~50%-on maradt AI-val is — ez igazolja, hogy a döntési réteg nem visz be torzítást olyan esetben, ahol a manőver eleve nem elérhető.
Javítás (2026-09-24): a manőver-ellenpróba kezdeti formulája hiányos volt (manőver_alap(támadó) + MP + k10 >= nehézség) — a md/066_04_manover_vegbevitele.md szerint a Célszámhoz az ellenfél Manőver Alapja is hozzáadódik: manőver_alap(támadó) + MP + k10 >= manőver_alap(ellenfél) + nehézség. A javítás után a Belharcba kerülés valamivel nehezebb (a Pikás jó HM_TÉ/HM_VÉ-je miatt), a rövid fegyverek javulása 65-77 pp-ről ~45-54 pp-re csökkent — ez reálisabb, mert korábban az ellenfél harcképzettségét egyáltalán nem vette figyelembe a próba.
Helyzetfüggő módosítók (data/sources/manoverek.yaml): a Célszámot a manőver saját, konkrét szituációs sorai is módosítják. Csak a szimulátorban számszerűsíthető kategóriák vannak bekötve — a tisztán narratív, KM-döntéses sorok (pl. "Ellenfél háttal áll", "Ellenfél pajzsa") kimaradnak, mert a Profil/Harcos modell nem tartalmaz pajzsot vagy hátrafordultság-állapotot:
- Belharcba kerülés → "Belharc körülmények": Erő-különbség áll a "Testméret/páncél/Erő előny/hátrány" (
-3/+3) helyébe — ha a próbálkozó erősebb, könnyebb a Célszám, ha gyengébb, nehezebb. - Mögékerülés → "Túlerő": a helyszínen lévő létszám-arány (
1:2 → 0,1:3 → -2,1:4+ → -4) — minél nagyobb a létszámkülönbség (bármelyik irányban), annál könnyebb elvegyülni/hátba kerülni.
A jelenlegi teszt-profilok (_profil_referencia) azonos Erővel (3) indulnak mindkét oldalon, ezért a Belharc-módosító a fenti táblákban 0-t ad — a hatás konkrét Erő-eltérésű forgatókönyvben mérhető (l. Nyitott teendők).
Ellenfelhasználás — a célpont "counter" MP-je (md/066_02_manover_pontok.md): a manőver célpontja is befektethet max 2 MP-t a Nehézség növelésére, a dobás előtt. Ezt a döntést is súlyozott véletlen hozza (ellenfel_mp_counter_dontes()): minél veszélyesebb a célpontra a manőver sikere, annál nagyobb eséllyel véd ellene maximális MP-vel — pl. a Belharcba kerülés a hosszú fegyveresnek (mint a Pika) katasztrofális (a TÉ/VÉ override miatt), ezért 80% eséllyel próbál védekezni. Ennek beépítése után a Belharcba kerülés ellensúly-hatása a korábbi ~45-54 pp-ről ~35-44 pp-re csökkent (l. a friss táblázat fent) — ez egy realisztikusabb, "két résen táncoló" egyensúlyt ad, mint egy passzív célpont feltételezése.
Nyitott pontok a döntési AI-ban
- A
Mögékerülésmanőver jelenleg csak túlerő-szituációban próbálkozik, konkrét forgatókönyv még nem méri a hatását (aNyitott teendők3. pontja). - A
manőver_pontbecslés egyszerűsített (nincs explicit harcmodor-összeg a Profilban, aTÉ // 3egy közelítés) — pontosabb Profil-mező hozzáadásával finomítható. Amanőver_alapformula (mindkét oldalra) már a szabálykönyv szerint pontos. - A döntési szabályok súlyai (
dontesi_szabalyok()) kézzel becsültek, nem hangolt értékek — ha a taktikai réteg mélyebb vizsgálatot kap, ezeket érdemes szisztematikusan tesztelni (pl. mennyire érzékeny az eredmény a súlyok arányára). - A "Belharc körülmények (KM)" és "Túlerő" módosítókon kívüli sorok (Ellenfél háttal áll, Ellenfél pajzsa) nincsenek bekötve — pajzs/hátrafordultság-állapot hiányzik a Profilból (l. Nyitott teendők).
Nyitott teendők (második hangolási kör)
- Lándzsás/kétkezes fegyverek dominanciájának hangolása MÁR NEM feladat nyílt-terepi 1:1-ben — ez a rendszer szándékolt viselkedése (l. Taktikai döntési AI szekció). Ha marad hangolási igény, azt a taktikai ellensúlyok (Belharcba kerülés, Mögékerülés) hatékonyságán keresztül kell mérni, nem a nyílt-terepi TÉ/VÉ bázisértéken.
- k20T érzékenységi vizsgálat — futtatni a teljes 1:1 mátrixot
K20T_FUGGETLEN = True-val is, és összevetni, változik-e a fegyverek relatív sorrendje. - Mögékerülés hatásának konkrét mérése — jelenleg csak a döntési szabályok közt él, dedikált forgatókönyv (mint a Belharcba kerülésnél) még nincs rá.
- Pajzs/kétkezes harc bevonása a Profil/Harcos modellbe, ha a védekező fegyverek (Alkarvédő, Tonfa, stb.) balanszát is vizsgálni akarjuk.
- ✅ Több manőver opt-in bekötése — 2026-09-25: a döntési AI (
fegyvergenerator_taktikai_ai.py) most a Belharcba kerülésen/Mögékerülésen felül a Belharcból kibontakozást, Felállás földről, Földrevitel, Gáncsolás, Átdobás, Pajzzsal felöklelés, Lábkirántás szálfegyverrel és Rávetődés hátulról manővereket is ismeri (mind aHarcos.helyzetmezőre leképezhető hatással). A maradék ~28 manőver (Fegyvertörés, Csonkolás, Feszítés/Leszorítás, stb.) állapot-mutáló hatásokat igényelne (fegyver/végtag elvesztése, azonnali halál), amit aHarcosmodell jelenleg nem támogat — továbbra is kimaradnak, dokumentáltan. - Döntési szabályok súlyainak hangolása — a
dontesi_szabalyok()táblában lévő relatív súlyok kézzel becsültek, érzékenységi vizsgálat még nincs rájuk. 2026-09-25: a bővített manőver-/taktika-katalógus miatt a Tőr-vs-Pika self-test küszöbét+30pp→+15pp-re csökkentettük (mindkét oldal kapja a bővített AI-t, a Pikás is él a Lábkirántással) — ez jelzi, hogy a súlyok finomhangolása még nyitott, csak a durva arányok validáltak. - ✅ Több Harci helyzet bevonása a döntési AI-ba — 2026-09-25: a
belharci_helyzet,hátulról,földön_fekvehelyzetek most a döntési AI manőver-eredményeként is beállíthatók (nem csak kézzel/teszt-forgatókönyvben). A többi, tisztán környezeti/passzív helyzet (Csúszós talaj, Vakharc, Tűz ruhán, stb.) még nincs bekötve — ezekhez helyszín-koncepció kellene (l. lejjebb, "Eltérő helyszínek" fejezet). - ✅ Több Taktika bevonása — 2026-09-25: mind a 13 közelharci taktika (1 támadás, Érintő, Fárasztás, Kezdeményező, Kiváró, Öngyilkos roham, Plusz támadás, Roham, Támadás erőből, Támadó, Védő, Teljes Védekezés, Visszafogott, Tettetés) bekötve a
dontesi_szabalyok()-ba, állapotfüggő heurisztikákkal (ÉP-arány, pengeviszony, roham-elérhetőség). megkötések[]/kombó_módvalidáció — a taktikák kombinálhatósági szabályai (pl. Fárasztás tiltott Pengehátrányból) most betölthetők az adapterből, de a döntési AI még nem ellenőrzi őket választás előtt (jelenleg csak egy taktika lehet aktív egyszerre, ez részben fedezi a problémát).- Ellenpróba további módosítói (Belharc fortély fok, testméret/páncél különbség, Megakasztás/Végrehajtás fázisok) — jelenleg egyszerűsített, csak a Manőver Alap (mindkét oldal) + MP + k10 vs Nehézség él.
Terv (v2) — Kiterjedt, sokváltozós balansz-felmérés és helyszín-alapú harci helyzetek
Állapot: távoli terv, még nem kezdődött el. Rögzítve 2026-09-25, hogy a jövőbeni munka ne vesszen el — a lenti pontok közül semelyik nincs megvalósítva.
Cél
A jelenlegi (2026-09-25-i) fegyverbalansz-elemzés (fegyvergenerator_balansz_elemzes.py, l. STUDY.fegyvergenerator_osszahasonlitas) egyetlen mátrixot futtatott (66 fegyver × 5 páncélosztály × AI be/ki × tükör-harc + 1:3 túlerő). A cél egy minél szélesebb, minél változatosabb szimuláció-sorozat, ami messzebbre megy ennél:
- Minél több és változatosabb harcszimuláció, minél több fegyverrel, minél több körülmény-kombinációban — nem csak a jelenlegi 2 dimenzió (páncél × AI), hanem bővítve létszámaránnyal (1:1, 1:2, 1:3, 1:5, N:N), harci helyzet-kombinációkkal, és a lenti helyszín-dimenzióval.
- Konklúzió: a bővített adatból megválaszolni:
- Milyen a fegyverek balansza (átfogóbb, több körülményre kiterjedő kép, mint a jelenlegi)?
- Van olyan fegyver, ami minden körülmény között (túl) erős?
- Van olyan, ami mindig gyenge, függetlenül a körülménytől?
- Hogyan érdemes hangolni őket (konkrét TÉ/VÉ/SP javaslatok, nem csak "gyanús" jelzés)?
Eltérő helyszínek — harci helyzeteket kiváltó környezet
A jelenlegi döntési AI (fegyvergenerator_taktikai_ai.py) csak azokat a Harci helyzeteket tudja előidézni, amik egy harcos aktív döntéséből (taktika/manőver) következnek (Belharci helyzet, Hátulról, Földön fekve). A harci_helyzetek.json-ban van viszont sok környezeti/passzív helyzet, amit eddig szándékosan kihagytunk (2026-09-25, korábbi döntés ebben a session-ben): Csúszós talaj, Elvesztett egyensúly, Takarásban harcolás, Vakharc (félhomály/sötét), Tűz ruhán, stb.
Terv: egy helyszín-katalógus, ami minden helyszínhez megadja:
- kötelező kezdő helyzet (pl. "kisváros, szűk utcákkal" → mindenki
belharci_helyzet-ben kezd, vagy nagy eséllyel oda kerül) - elérhető/gyakori helyzetek egy pool-ból, valószínűségi súllyal (pl. "erdő, magas fűvel" →
takarásban_harcolás,csúszós_talajeséllyel felmerülhet körönként) - tiltott helyzetek (pl. "dungeon, szűk folyosó" →
lovas_harcfizikailag kizárt)
Példa helyszín-ötletek (nem véglegesített lista): "erdő, magas fűvel (lopakodás)", "kisváros, szűk utcákkal", "dungeon, szűk folyosó", "nagyváros tetői", "nyílt mező", "éjszakai csatatér (sötétség)".
Miért van elhalasztva
- A helyszín-koncepció egy új absztrakciós réteg a
Harcos/kuzdelem_ai()motor fölött (nem csak egy paraméter) — hatással van a célválasztásra, a döntési súlyokra, és valószínűleg a kör-motor kör-eleji fázisára is (mikor "dobja" a helyszín az új helyzetet). - A kiterjedt mátrix-futtatás (több helyszín × több létszámarány × 66 fegyver) számítási ideje minden hozzáadott dimenzióval szorzódik — a jelenlegi 1 mátrix ~2 perc, egy 5-6 helyszínt is bevonó verzió könnyen 15-20+ percre nőhet, ezt a futtatási stratégiát (gyors smoke-teszt + teljes futás elkülönítve) már a jelenlegi script is alkalmazza (
--gyors/--n=kapcsolók), de bővítve kell tartani. - Nincs még eldöntve, hogy a helyszín-hatás determinisztikus (mindig ugyanaz a helyzet-készlet egy adott helyszínen) vagy véletlenszerű pool-ból húzott legyen — ez érdemi metodológiai döntés, amit a munka megkezdése előtt tisztázni kell (hasonlóan a §12.1 klón-csapdához: ha determinisztikus, a mátrix minden sora ugyanazt a torzítást hordozza, ami elfedheti a valós varianciát).