1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.
-
Upload
avice-baldwin -
Category
Documents
-
view
219 -
download
3
Transcript of 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.
![Page 1: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/1.jpg)
1
The FreeCiv AI
Zack IvesSteve Wolfman
CSE 590AGApril 20, 1999
![Page 2: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/2.jpg)
2
Cheesy Heuristics!
Mostly a series of rules with weights and randomness
Different options are evaluated for desirability Roulette-wheel-style ai_fuzzy function decides whether
AI will follow heuristics
Mostly a peer-model agent structure with a bit of hierarchy, mostly re-evaluating at each turn Different AI’s to control cities, tech advances, units, etc. (Though military AI is somewhat hierarchical; both
coordinator to assign roles and a unit-level AI) Each AI gets “votes” weighting decisions
![Page 3: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/3.jpg)
3
The AI Files
aihand - main AI routines aicity - city-level AI aitech - tech goal AI aitools - utility routines (choose wonders, govt) aiunit - unit-level AI; settlers - settler AI (in server) advdomestic - intra-city advisor (worker placement,
valuation of improvements) advisland, advscience, advtrade, advattitude -
blank advmilitary - offense & defense for units server/citytools - city/worker reasoning functions
![Page 4: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/4.jpg)
4
General AI Components
In aihand, several important functions: ai_manage_units - control units, assess defense
& offense & needs ai_manage_cities - control city building, spending ai_manage_taxes - set tax/science/luxury rate ai_manage_government - set government style ai_manage_tech - tech advances
No coordinating AI, but inter-module communication
![Page 5: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/5.jpg)
5
Interesting Ideas
Bodyguard if city already defended, defensive unit will try to find a
low-defense “charge” and AI will coordinate movement
Urgency and value Cities and domestic and military advisors collaboratively
determine how valuable improvements, reinforcements, or new technologies will be, and how urgently they’re needed
Tech is valued according to needs noticed throughout movement, building, …
Sacrifice If city is ready to be conquered, try to sell what you can
![Page 6: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/6.jpg)
6
What the AI Emphasizes
Wonders and caravans Diplomats
If opponent’s diplomat or spy is nearby, builds diplomat for defense
Builds up money to buy improvements If troops not serving purpose, AI brings
them home Transports try to land near destination Republic and “We love the consul day”
![Page 7: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/7.jpg)
7
Cheats
Apparently not as many as we’d think! AI has knowledge of full map and enemy unit
locations AI has no penalty for changing what’s being built At higher difficulty levels, AI not constrained by
maximum rates on tax, science, etc. Civil disorder - last-second fix for unhappy city
(though does suffer effects if unable to make city happy)
AI changes government for free (no Anarchy)
![Page 8: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/8.jpg)
8
The Unit AI - Structure
In aiunit and advmilitary Main function ai_manage_units
ai_manage_settler ai_manage_caravan ai_manage_ferryboat ai_manage_explorer ai_manage_military: based on role, auto-settle, build
city, defend home, attack, fortify, run, escort, explore
Can ask for units (ai_wants_role_unit) and get closest possible match (due to tech limitations)
![Page 9: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/9.jpg)
9
The Unit AI - What It Does
Settlers - auto_settler_findwork Check terrain for value as city Rate usefulness of mining, roads, irrigation,
detox, etc.
Exploration Top priority = huts Then randomly explore
Caravan Find city building wonder not near completion,
send caravan
![Page 10: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/10.jpg)
10
Unit AI - Military
Calculate belligerence (offensive rating), vulnerability (defensive rating) of units
Military finds victim based on attack power vs. vulnerability Bodyguard - extra defensive unit finds vulnerable unit,
becomes its bodyguard; AI synchronizes movement Assigns roles to units (auto-settle, build city, defend home,
attack, fortify, run, escore, explore) find_something_to_kill - main controlling function for
coordinating attacks generate_warmap - assessment of distances, possibilities, &
costs of moving & attacking Choose most appealing targets, send forces to eradicate
![Page 11: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/11.jpg)
11
Military Advisor
Assess danger due to opposing forces Assess city defenses
If city in danger, may specify desire for coastal fortress, SAM, SDI
Based on this, may want prerequisite new technologies
Assess offensive capability and desires May wish to build new units, acquire new
technologies
Decide what to kill
![Page 12: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/12.jpg)
12
The City AI - structure
In aicity and advdomestic Main function in aicity is ai_manage_cities
ai_manage_city - arrange workers ai_manage_buildings - globally important bldgs (palace
& wonders) ai_city_choose_build - locally evaluate buildings (calls
domestic advisor)
Main function in advdomestic is ai_eval_buildings individually rates each type of building according to
food/prod/gold/bulb considers luxury result in terms of new available workers
![Page 13: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/13.jpg)
13
Money Management in the City AI
Money spent based on collaborative needs (“votes”)
Considers cities in order of greatest need Tries to buy something for every city Becomes frugal with remaining money if ever it
cannot afford something “important” (highly desired)
Some heuristics restrict buying Don’t spend too much at once (except for high want) Don’t build Wonder in threatened city
![Page 14: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/14.jpg)
14
Taxes, Luxury, and Sciency (oh my!)
Handled in ai_manage_taxes (in aihand) Luxuries considered first
Only if government is Republic Try to maximize population gain from “we love the
consul” Sacrifice if leaves insufficient tax rate to acquire needed
funds or if unable to reach optimal celebration point
Taxes next Gathers enough money to cover expenses plus
population dependent “spare change” requirements
Science gets leftovers
![Page 15: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/15.jpg)
15
Government changes
Simple module (partly because AI cheats!) Different possible goal governments
define track Change as soon as next government on
track becomes available No backtracking to earlier government Current AI hardwired to Republic track
![Page 16: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/16.jpg)
16
Useful code
AI code is hard to reuse AI uses many server structures unavailable to
client (e.g., warmap) Shared structures (such as tech_want) are
hard to disentangle from code
Smallest functions most useful City calculations in advdomestic such as
pollution caused/ameliorated by an improvement
Danger assessments?
![Page 17: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/17.jpg)
17
Bonus: FreeCiv AI Fun!
“hhjj” is a structure used to calculate celebration levels in cities at various luxury levels… what does hhjj stand for?
![Page 18: 1 The FreeCiv AI Zack Ives Steve Wolfman CSE 590AG April 20, 1999.](https://reader035.fdocuments.in/reader035/viewer/2022072015/56649ec15503460f94bcd55d/html5/thumbnails/18.jpg)
18
Technology
tech_want structure maintains desire levels for various techs
Each component can up tech requirements Military wants better units/transports Missing wonder/governments cause want for enabling techs Global AI adds hardwired want for Republic track techs Cities want enabling techs for buildings Global AI fudges philosophy want upward (if not developed
yet)
Prerequisites of desired tech weighted Weights reduced according to time to reach tech