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.

T1Szerkesztés

Egy jó tech-level-1 gazdasághoz kell:

  1. Egységek:
    1. Munkások:
      1. tizenöt szénbányász (750 F)
      2. hat-nyolc novabányász (300-400 F)
      3. kettő-nyolc orebányász (100-400 F)
      4. tizenöt élelemtermelő (750 F)
      5. Az összesen kb. 46 munkás
    2. tíz gyalogos katona (figyelembe véve az esetleges veszteségeket is)
    3. Nem robotmunkára épülő civilizációk esetében 1 orvos (35 F)
    4. Vizes pályákon 5 munkacsónak,
    5. Összesen kb. 60, vizes pályákon 65 egység.
  2. Épületek:
    1. parancsnoki központ (1)
    2. barakk (1 vagy kettő, 160-320 C)
    3. 1, lehetőleg közös áramfejlesztő a barakknak és az állatneveldének (opcionális, 200 C)
    4. 1 élelemfeldolgozó központ (100 C)
    5. 1 novafeldolgozó központ (opcionális, 100 C)
    6. 1 állatnevelde (opcionális, 100 C)
    7. 1-2 szénfeldolgozó központ (100C)
    8. 1 orefeldolgozó központ (100 C)
    9. 1 kikötő (160 C)
    10. 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.
  3. Technológiák:
    1. Alaptréning (basic training)

T2Szerkesztés

  1. Épületek:
    1. Ami nem épült fel az előző korszakban;
    2. Templom (2 db., 360 C + 60 N)
    3. Űrkikötő (180 C)
    4. Gépjárműgyár (1-2 db.,)
    5. További barakk(ok) (opcionális)
    6. Hadi kutatóközpont (opcionális)
    7. Áramfejlesztők szükség szerint
    8. További házak
  2. Egységek:
    1. Pár hadihajó
    2. További gyalogosok
    3. Lovasok (opcionális)
    4. Erő-lovagok (Jedi, Sith) 3-4 db.
    5. Kereskedő űrhajók
    6. Pár (4) hadihajó.
    7. Hat-tíz további szénbányász.
  3. Technológiák
    1. Motivátorfejlesztés (upgraded motivator)
    2. Feldolgozó központok fejlesztései
    3. Gyalogos fejlesztése
    4. Űrkikötő fejlesztése
    5. Saját technológiák (pl. a Kereskedelmi Szövetség űrkikötőfejlesztései)

T3Szerkesztés

  1. Épületek:
    1. Ami nem épült fel az előbbi korszakokban;
    2. Raktárak szükség szerint;
    3. 1 addicionális parancsnoki központ
    4. 1 légibázis, légi civilizációknak inkább 2-3
    5. 1 ostromgépgyár
    6. 1-2 plusz erőd
    7. pajzsgenerátor
    8. Kutatóközpont
    9. További házak
  2. Egységek:
    1. 2 fejvadász ellenséges Erőlovagok ellen
    2. 2 légelhárító mobil vagy hat légelhárító gyalogos
    3. pár vízi romboló ellenséges vízi támadások ellen
    4. Sajátegységek 6-10 db.

T4Szerkesztés

  1. Egységek
    1. Jedik/Sithek
    2. Fejvadászok
    3. Saját egységek
  2. Technológiák:
    1. Jedi konvertáló technológia
  3. Épületek:
    1. 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ésSzerkeszté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ásSzerkeszté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ületekSzerkeszté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)
)


T2Szerkesztés

T3Szerkesztés

T4Szerkesztés

Egy kicsit finomabb szkriptSzerkesztés

BevezetésSzerkesztés

; Minimal AI v.1.0.

(defrule
(true)
=>
(set-author-version "Minimal_AI v.0.")
(set-author-name "Gubbubu")
(disable-self)
)

T1Szerkesztés

T1 épületekSzerkeszté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ásokSzerkesztés

MegjegyzésekSzerkesztés

  1. A szögletes zárójel a matematikai felsőegészrész-függvény jele.
  2. 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.
  3. 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.
  4. 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.