Star Wars Galactic Battlegrounds szkriptek/Minimális építési lista
Kiindulásként megfelelő szkriptírási program lehet, ha készítünk egy szkriptet annak figyelembevételével, hogy mit szokott készíteni egy átlagos CP egy átlagos véletlentérképes játékban; mégpedig úgy készítve a szkriptet, hogy lehetőleg mindig a lehető legkevésbé körültekintő feltételrendszert használjuk. Azaz amint lehet egy épületet és egységet építeni, ami még nincs, akkor azt megépítjük, ellenőrző feltételként egyedül a can-build tényváltozót használva fel.
Mintának a játék moderate módját tekintjük.
A későbbiekben ezt a rugalmatlan szkriptet fejlesztjük úgy, hogy elemezzük és finomítjuk a játék lefolyása által előhívott feltételrendszereket.
T1[szerkesztés]
Egy jó tech-level-1 gazdasághoz kell:
- Egységek:
- Munkások:
- tizenöt szénbányász (750 F)
- hat-nyolc novabányász (300-400 F)
- kettő-nyolc orebányász (100-400 F)
- tizenöt élelemtermelő (750 F)
- Az összesen kb. 46 munkás
- tíz gyalogos katona (figyelembe véve az esetleges veszteségeket is)
- Nem robotmunkára épülő civilizációk esetében 1 orvos (35 F)
- Vizes pályákon 5 munkacsónak,
- Összesen kb. 60, vizes pályákon 65 egység.
- Munkások:
- Épületek:
- parancsnoki központ (1)
- barakk (1 vagy kettő, 160-320 C)
- 1, lehetőleg közös áramfejlesztő a barakknak és az állatneveldének (opcionális, 200 C)
- 1 élelemfeldolgozó központ (100 C)
- 1 novafeldolgozó központ (opcionális, 100 C)
- 1 állatnevelde (opcionális, 100 C)
- 1-2 szénfeldolgozó központ (100C)
- 1 orefeldolgozó központ (100 C)
- 1 kikötő (160 C)
- 60 egység számára: 10 férőhelyes a parancsnoki központ, marad ötven további egység, utóbbiak [50/4] [mj 1] = 13-14 házat igényelnek.
- Technológiák:
- Alaptréning (basic training)
T2[szerkesztés]
- Épületek:
- Ami nem épült fel az előző korszakban;
- Templom (2 db., 360 C + 60 N)
- Űrkikötő (180 C)
- Gépjárműgyár (1-2 db.,)
- További barakk(ok) (opcionális)
- Hadi kutatóközpont (opcionális)
- Áramfejlesztők szükség szerint
- További házak
- Egységek:
- Pár hadihajó
- További gyalogosok
- Lovasok (opcionális)
- Erő-lovagok (Jedi, Sith) 3-4 db.
- Kereskedő űrhajók
- Pár (4) hadihajó.
- Hat-tíz további szénbányász.
- Technológiák
- Motivátorfejlesztés (upgraded motivator)
- Feldolgozó központok fejlesztései
- Gyalogos fejlesztése
- Űrkikötő fejlesztése
- Saját technológiák (pl. a Kereskedelmi Szövetség űrkikötőfejlesztései)
T3[szerkesztés]
- Épületek:
- Ami nem épült fel az előbbi korszakokban;
- Raktárak szükség szerint;
- 1 addicionális parancsnoki központ
- 1 légibázis, légi civilizációknak inkább 2-3
- 1 ostromgépgyár
- 1-2 plusz erőd
- pajzsgenerátor
- Kutatóközpont
- További házak
- Egységek:
- 2 fejvadász ellenséges Erőlovagok ellen
- 2 légelhárító mobil vagy hat légelhárító gyalogos
- pár vízi romboló ellenséges vízi támadások ellen
- Sajátegységek 6-10 db.
T4[szerkesztés]
- Egységek
- Jedik/Sithek
- Fejvadászok
- Saját egységek
- Technológiák:
- Jedi konvertáló technológia
- Épületek:
- További házak, erődök és központok
A legminimálisabb „minden épületből 1” szkript (magyar változat)[szerkesztés]
Ez a CP minden épületből és egységből gyárt 1 mintát, az egyetlen (vagy kettőtlen) fajta feltétel, amit figyelembe vesz, hogy 1) van-e elég erőforrás a gyártásukhoz; 2). megvan-e már az összes előfeltételül szolgáló aktor (pl. katona barakkban gyártható - meg van-e építve a barakk?).
Ha a feltételek valamelyike nem teljesül, akkor a létrehozni kívánt aktor általában nem épül meg. Kivéve, ha az illető parancs nyílt végrehajtású, azaz nincs a disable-self akcióval zárva. Ilyenkor ugyanis rendszeresen újra megpróbálkozik a CP az aktor létrehozásával.
Egyenesen adódna a következtetés, hogy egyszerűen állítsuk össze a szkriptet nyílt parancsokból. Csakhogy ez egyáltalán nem lenne jó, mert így a végtelenségig csak egyféle aktort gyártana a CP, mégpedig az első nyílt parancs által létrehozandót: azt másodpercenként újra és újra megpróbálná gyártani. Ez vélhetően hamar elfogyasztaná a többi aktorra szánt erőforrást.
A triviális következtetés, hogy a Genie szkriptnyelvében már egy minden aktorból egy mintapéldányt létrehozó szkript megalkotása is épületes feladat. Aktoronként legalább 2 variáció létezik minden parancsra (nyílt és zárt). Ha összeszámoljuk az összes épületet és egységet (az egyszerűség kedvéért egy egyszerűsített lista: 1. Városközpont, 2. ház, 3. áramfejlesztő, 4. szénraktár, 5. élelemraktár, 6. akol, 7. novaraktár, 8. kikötő, 9. barakk, 10. gépjárműgyár, 11. repülőgyár, 12. templom, 13. ostromgépgyár, 14. hadi kutatóközpont, 15. kutatóközpont, 16. erőd, 17. őrtorony, 18. légelhárító torony, 19. emlékmű, 20. pajzsgenerátor, 21. munkás, 22. orvos, 23.-27. ötféle hajótípus, 28.-31, négyféle mech, 32.-35. négyféle barakkban képezhető katona, 36.-38. háromféle repülő, 39.-41. háromféle ostromgép, 42.-43. kétféle erődbeli nem-saját-egység (fejvadász-ostromágyú), 44. egyféle erődbeli sajátegység, 45. a kereskedő-űrhajó figyelembevételével ez 245 variációt jelent a szkriptre nézve (nem számolva a birodalmi robotszondát, ami csak apróság, és a sztenderd AI sosem használja). Ami „valamivel” több, mint 1013 (egy kicsit pontosabban, több mint harmincöt billió). Ennyiféle "minimális" szkriptet lehet összehozni csak a parancsok zártságának-nyíltságának figyelembe vételével, variálásával. [mj 2]
Ezért a feladat egy kis előzetes elemzést igényel (persze ez valójában utólagos, már e bevezető megírása előtt belekezdtem a szkriptírásba, és valójában tanulságokat vonok le - de ez tkp. mindegy most).
Az 1. szabály a szerző és verzió megemlítése. A szkript érdemi része a 2. szabálytól kezdődik.
Az biztos, hogy mindenképp kell egy munkás a további építkezéshez. Erről szól az 1 munkás c. szakasz. A munkás kétféle forrásból eredhet: vagy már adva van a térképen, vagy van egy irányítóközpont és elegendő élelem a legyártásához. Ha egyik eset sem áll fent, akkor a CP feladhatja a játszmát (kivéve, ha űrkikötőben tud élelmet venni, vagy állatneveldében élelmet termelni).
Bevezetés[szerkesztés]
- ; Minimális AI
- ; 1. szabály: Szerző/Változat
- (defrule
- (true)
- =>
- (set-author-version "Minimal_AI v.0.")
- (set-author-name "Gubbubu")
- (disable-self)
- )
1 munkás[szerkesztés]
- ; 2. szabály: 1 munkás legyen legalább.
- (defrule
- (unit-type-count UNIT-WORKER == 0)
- (can-train UNIT-WORKER)
- =>
- (train UNIT-WORKER)
- )
- ; 3. szabály: Feladja, ha nem tud egy munkást sem produkálni A eset.
- (defrule
- (game-time <= 30)
- (unit-type-count UNIT-WORKER == 0)
- (building-type-count BLDG-MAIN == 0 )
- =>
- (resign)
- )
- ; 4. szabály: Feladja, ha nem tud egy munkást sem produkálni B eset.
- (defrule
- (game-time <= 30)
- (unit-type-count UNIT-WORKER == 0)
- (building-type-count BLDG-MAIN >= 0 )
- (food-amount <= 49 )
- (building-type-count BLDG-SPACEPORT == 0)
- (building-type-count BLDG-DROPANIM == 0)
- =>
- (resign)
- )
T1 épületek[szerkesztés]
; T1 ÉPÜLETEK
; 5. szabály: Irányítóközpont, ha lehet.
- (defrule
- (building-type-count BLDG-MAIN == 0)
- (can-build BLDG-MAIN)
- =>
- (build BLDG-MAIN)
- (disable-self)
- )
T2[szerkesztés]
T3[szerkesztés]
T4[szerkesztés]
Egy kicsit finomabb szkript[szerkesztés]
Bevezetés[szerkesztés]
; Minimal AI v.1.0.
- (defrule
- (true)
- =>
- (set-author-version "Minimal_AI v.0.")
- (set-author-name "Gubbubu")
- (disable-self)
- )
T1[szerkesztés]
T1 épületek[szerkesztés]
; Minimal AI T1 buildings
; Rule 1: Command Center (if can build)
- (defrule
- (building-type-count BLDG-MAIN == 0)
- (can-build BLDG-MAIN)
- =>
- (set-strategic-number sn-percent-civilian-builders 100)
- (build BLDG-MAIN)
- ) [mj 3]
; Rule 2: Command Center (if can't build)
- (defrule
- (building-type-count BLDG-MAIN == 0)
- (not (can-build BLDG-MAIN) )
- =>
- (chat-to-player my-player-number "I could not build my Command Center!")
- (chat-to-player my-player-number "No place, or no builders, or not enough resources.")
- (disable-self)
- )
; Rule3: Triing to build the first carbon dropsite.
- (defrule
- (game-time <= 120 )
- (resource-found CARBON)
- (can-build BLDG-DROPCARBON)
- =>
- (build BLDG-DROPCARBON)
- (disable-self)
- ) [mj 4]
; Rule4: If couldn't build carbon-dropsite.
- (defrule
- (game-time <= 120 )
- (or (not (resource-found CARBON) ) (not (can-build BLDG-DROPCARBON) ) )
- =>
- (chat-to-player my-player-number "I could not build my Carbon Proc. Centre!")
- (set-strategic-number sn-percent-civilian-explorers 80)
- (disable-self)
- )
; Rule5: Triing to build the first food dropsite.
- (defrule
- (game-time <= 120 )
- (resource-found FOOD)
- (or (building-type-count BLDG-MAIN >= 1) (building-type-count BLDG-DROPCARBON >= ) )
- (can-build BLDG-DROPCHOW)
- =>
- (build BLDG-DROPCHOW)
- (disable-self)
- )
; Rule6: Triing to build the first animal nursery, if necessary.
- (defrule
- (or (building-type-count BLDG-MAIN >= 1) (building-type-count BLDG-DROPCARBON >= ) )
- (game-time <= 120 )
- (or (unit-type-count 833 >= 2) (unit-type-count 594 >= 5) )
- (can-build BLDG-DROPANIM)
- =>
- (build BLDG-DROPCARBON)
- (disable-self)
- )
- ?
- (defrule
- (building-type-count BLDG-MAIN >= 1)
- (game-time <= 60)
- (not (or (unit-type-count 833 >= 2) (unit-type-count 594 >= 5) ) )
- =>
- (set-strategic-number sn-percent-animal-garrison 0)
- (disable-self)
- )
Hivatkozások[szerkesztés]
Megjegyzések[szerkesztés]
- ↑ A szögletes zárójel a matematikai felsőegészrész-függvény jele.
- ↑ Mellesleg ez nagyon alacsonyrendű becslés, hisz számos más teljesen triviális paraméter is állapottérdimenzió-növelő hatással van. Például teljességgel meghatározó egy CP életére nézve az egyes épületek felépítésének sorrendje is - mondjuk, egy szénben szegény térképen először építve barakkot, elfogyasztva ezzel a szénraktárra szánt szenet, és csak nagyon messzi, esetleg veszélyes területen tudván szenet bányászni, ez magában hordozhatja a teljes vereséget is.
- ↑ A disable-self parancs itt remélhetőleg fölösleges, mivel a parancs végrehajtásával felépül az irányítóközpont, a building-type-count(BLDG-MAIN) tényváltozó értéke hamisra változik, így az első parancsfeltétel érvénye megszűnik. Sajnos, az egységszintű AI túlbuzgóságát ismerve, az éppen lehetséges, hogy egyszerre több helyen kezdenek a munkások központépítésbe - a dolog tesztelést igényelne. Azért nem akarom elvágni a problémát egyszerűen egy disable-self záró akcióval, mivel így a CP-nek lehetősége van többször is nekifutni az építéshez, ha először nem sikerült. Hátha csak a szénerőforrások hiányoztak, pl.
- ↑ A többi épülettől eltérően a szénraktár-építést ne kössük ahhoz a feltételhez, hogy legyen parancsnoki központ. Ha nincs, és csak a szénhiány ebben az akadály, akkor szénraktár nélkül a parancsnoki központhoz szükséges szenet sem tudnánk összegyűjteni, hiszen nincs hol feldolgozni azt.