4387c1427b79b9fce2688a62d4f96f6a.ppt
- Количество слайдов: 26
Age of Empires 2
Age of Empires 2 • Το θυμάστε; • Αν η απάντησή σας είναι « 1» , τότε τα παρακάτω θα σας αρέσουν! • Για λίγη ώρα ας μείνουμε στο κομμάτι της τεχνητής νοημοσύνης
Computer players • Ωραίο το Multiplayer! (www. igzones. com) • Οι computer players οδηγούνται από τεχνητή νοημοσύνη • Για την ακρίβεια παίζουν βασισμένοι σε κανόνες (αν …. τότε …. )!
Age of Empires 2 – What’s more? • Οι κατασκευαστές φρόντισαν να αφήσουν τη δυνατότητα να φτιάχνουμε δικά μας Artificial Intelligence scripts • Ελέγχουν τη στρατηγική και ως ένα όριο τις επιλογές του computer player • Και το καλύτερο: Μπορούμε να τα βάζουμε να παίζουν μεταξύ τους! => Τουρνουά
Φτιάχνουμε AI scripts • Δημιουργούμε ένα κενό αρχείο. ai • Και ένα αρχείο. per με το ίδιο όνομα που περιέχει τον κώδικα • Τα τοποθετούμε στο φάκελο AI του παιχνιδιού
Και τα επιλέγουμε…
Γενική λειτουργία • Η στρατηγική ενός computer player είναι ένα σύνολο από κανόνες • Κάθε κανόνας αποτελείται από ένα ή περισσότερα FACTS και ένα ή περισσότερα ACTIONS • Όταν ικανοποιούνται όλα τα Facts, τότε ο κανόνας ενεργοποιείται και εκτελούνται όλα τα Actions.
Παράδειγμα κανόνα (defrule (food-amount > 75) (unit-type-count villager < 20) => (train villager) )
Facts • Συνθήκες που μπορεί να ικανοποιούνται ή όχι • Μεταξύ των Facts: – Options του παιχνιδιού (πχ map-size, civ-selected) – Συνθήκες του παιχνιδιού (πχ player-resigned, game-time) – Συνθήκες που αφορούν τον παίκτη (πχ foodamount, population, town-under-attack) – Συνθήκες που αφορούν άλλους παίκτες (πχ players-current-age, players-unit-count)
Facts • Παραδείγματα: – cheats-enabled – civ-selected mongol – research-completed ri-town-watch – can-train champion – military-population >= 30 – idle-farm-count < 3
Actions • Εντολές δράσης του computer player • Μεταξύ των Actions: - Άμεσες εντολές τύπου «φτιάξε» , «χτίσε» κλπ (πχ train, research, build, chat) - Στρατηγικός σχεδιασμός (πχ enable-timer, set-goal, set-strategic-number) - Χειρισμός του ίδιου του script (πχ generaterandom-number, disable-self)
Actions • Παραδείγματα: – train man-at-arms – chat-to-allies “I am a computer and I talk haha” – build stable – resign – research imperial-age – enable-timer 1 300
Επίδειξη απλού AI script (defrule (civilian-population < 4) => (train villager) ) (defrule (civilian-population >= 4) => (research ri-loom) ) (defrule (true) => (build house) (disable-self) ) (defrule (resource-found food) => (build mill) )
Περιορισμοί • Οι παράμετροι πρέπει να είναι σταθεροί αριθμοί, δεν υπάρχουν μεταβλητές – military-population >= 30 – military-population >= civilian-population – x=food-amount – wood-amount
Περιορισμοί • Μη πλήρης έλεγχος του computer player – Τοποθέτηση κτιρίου – Επιλογή πηγής φαγητού – Αλγόριθμος εξερεύνησης (scouting) – κ. α.
Εσωτερικός κώδικας • Πολύπλοκες διαδικασίες ελέγχονται από κώδικα που δεν μπορούμε να αλλάξουμε • Πώς θα μπορούσαμε να ορίσουμε τη διαδρομή που θα ακολουθήσει ο scout; • Θα μπορούσαμε όμως να δώσουμε κατευθυντήριες γραμμές • Η επικοινωνία με τον εσωτερικό κώδικα γίνεται μέσω των Strategic numbers
Strategic numbers • set-strategic-number. . . – sn-minimum-attack-group-size – sn-mill-max-distance – sn-wood-dropsite-distance – sn-number-forward-builders • πχ: set-strategic-number sn-minimum-attack-group-size 20
Villager tasking • Τα υλικά που επιλέγουμε να μαζεύουμε ελέγχονται από strategic numbers – sn-food-gatherer-percentage – sn-wood-gatherer-percentage – sn-gold-gatherer-percentage – sn-stone-gatherer-percentage (defrule (current-age == dark-age) (wood-amount > 400) (food-amount < 100) => (set-strategic-number sn-food-gatherer-percentage 90) (set-strategic-number sn-wood-gatherer-percentage 10) )
Goals • Δεν υπάρχουν μεταβλητές => καμιά επικοινωνία μεταξύ κανόνων • Η κατάσταση διορθώνεται κάπως με κάποιες «μεταβλητές κατάστασης» • Action: set-goal
Goals - παράδειγμα (defrule (game-time > 2400) (current-age != imperial-age) => (set-goal 1 1) ) (defrule (civilian-population < 100) (not (goal 1 1)) => (train villager) )
Constants (defconst AGE-ADVANCEMENT 1) (defconst YES 1) (defconst NO 2) (defrule (game-time > 2400) (current-age != imperial-age) => (set-goal AGE-ADVANCEMENT YES) ) (defrule (civilian-population < 100) (not (goal AGE-ADVANCEMENT YES)) => (train villager) )
Μεταβλητή συμπεριφορά (1) • Για διαφορετικούς τύπους παιχνιδιού θέλουμε να έχουμε διαφορετικούς κανόνες – game-type-specific κανόνες (πχ deathmatch) – map-specific κανόνες – civilization-specific κανόνες • Εντολή load-if-defined <συνθήκη> • Γρηγορότερη επεξεργασία κατά τη διάρκεια του παιχνιδιού • Έλεγχος λιγότερων συνθηκών στο εσωτερικό των κανόνων
Μεταβλητή συμπεριφορά (2) • • • Random αριθμοί Τυχαία επιλογή συμπεριφοράς Action: generate-random-number
Cheating • 1ος τρόπος cheating: – Action: cc-add-resource food 300 • Οσοδήποτε-οποτεδήποτε • difficulty = Hardest => CHEATER!!
Cheating • 2ος τρόπος cheating: – Fact: cc-players-unit-count – Fact: cc-players-building-count • Πληροφορίες για τους αντιπάλους, μη προσβάσιμες φυσιολογικά • Όχι cheating: – Fact: players-unit-count – Fact: players-building-count
Που να βρείτε • CPSB. doc στο φάκελο DOCS του CD – Το επίσημο manual του AI scripting • www. aiscripters. com – Πολλά AI scripts, άρθρα και τουρνουά μεταξύ computer players ακόμα και τώρα • www. aok. heavengames. com – Άρθρα, forum, υλικό για το AOE 2 γενικά • www. igzones. com – Το σημερινό “zone” για online games


