Page 2 of 7

Re: CivilAI

Posted: 10 Apr 2018 01:11
by PikkaBird
CivilAI version 7 is now on Banananananas.

This is a major update, and adds trucks and trains to the AI's repertoire, as well as tidying up a lot of its earlier behaviour. It should now be considered a "normal" competitive AI rather than a specialist oddity, although hopefully it's kept its general "civility" and pleasant construction style.

Changes in v7:

- Added better company and owner names.

Trucks added:
- CivilAI will now build trucks for mail, goods and food.
- Truck stops are added to busy bus stops for mail pickup and goods delivery.
- Supply depots are built near goods- and food-producing industries to supply cargos to towns.

Trains added:
- CivilAI will build short train lines to support goods- and food-producing industries, power plants, and water towers.
- Known issue: since (by design) the AI only builds non-electrified railways, it can't build default trains after the 20th century.

Air network tweaks:
- Increased the default minimum air route distance from 80 to 128 tiles.
- Made sure redirected aircraft are redirected from the correct airport.
- Improved land levelling for airport construction.

Road network tweaks:
- simplified the ugly "loop" built at outer bus stops - these never worked properly and were just clutter.
- Tweaks to when and how many vehicles are bought.
- Improve road network integrity by scanning for lost vehicles.
- Simplify crossing replacement code (which never really worked).
- More conservative network construction:
- Road network construction search now limited to towns the AI can build in.
- The AI will only expand the road network once it has built up the network it has, to avoid spending all its money on roads early on.

- CivilAI no longer funds roadworks, because that's not very civil.
- Various other tweaks and fixes.

Re: CivilAI

Posted: 10 Apr 2018 13:06
by Brumi
Whoa, this is a very welcome addition, I need to try it :)

Re: CivilAI

Posted: 10 Apr 2018 13:33
by Brumi
Seems very good so far!

First I accidentally started a game with FIRS (with OpenGFX+ Trains and Road Vehicles). The AI didn't scream at all, was working without problems. But when I realized it, I started a vanilla game.

Some highlights:
  • It reuses already existing train stations and rails! Cool!
  • I also really like the names it gives to its trains :)
  • No crashes whatsoever so far.
But: for some reason, all its trains have Kirby Paul Tank engines, even in 1987. Maybe the AI got its train valuator upside down?

Re: CivilAI

Posted: 10 Apr 2018 14:05
by PikkaBird
Brumi wrote:But: for some reason, all its trains have Kirby Paul Tank engines, even in 1987. Maybe the AI got its train valuator upside down?
Hehe...

The AI likes little engines for its short railways. :) Obviously with the default trains, it doesn't have too many options.

Re: CivilAI

Posted: 11 Apr 2018 03:10
by PikkaBird
Well, a few people have downloaded the update and I've had no bug reports, so here's v8.

Changes:

- Added Water to the cargos to be trucked to towns.
- Cargo truck selection now prefers native vehicles over refits, like train wagons.
- Minor bug fixes.

Re: CivilAI

Posted: 13 Apr 2018 00:05
by xarick
Hi. I found a crash with v8. Cannot iterate null.

Re: CivilAI

Posted: 13 Apr 2018 02:35
by PikkaBird
Thanks!

version 9:
- Fixed collision causing company director name not to be set.
- Fixed reported crash.

Re: CivilAI

Posted: 13 Apr 2018 22:14
by xarick
Hi again. The index 'Count' does not exist.

Re: CivilAI

Posted: 14 Apr 2018 01:51
by PikkaBird
Damn.

Try this one please. :)

Re: CivilAI

Posted: 15 Apr 2018 08:51
by PikkaBird
Er, yuck. It's one of those classic corner cases where industries shut down between being listed and being tested, leading to it trying to test an industry that's not on the map any more. I'll try and get a fix up tonight. :)

Edit: okay, version 10 is up, stress-tested and (seems to be) crash free!

Re: CivilAI

Posted: 21 Apr 2018 16:15
by PikkaBird
Version 11:

- Fixed a bug introduced in v10, which was preventing the AI from building goods trucks (oops).
- CivilAI now attempts to recover poor town ratings by planting trees.

- Lists of unconnectable towns and industries are now stored in save games, to prevent wasting time retrying connections when the game is saved and loaded. Thanks to Brumi/SimpleAI for the list/array conversion code.

Trains:
- Added more variety to AI locomotive selection.
- Improved wagon building.

Re: CivilAI

Posted: 29 Apr 2018 18:40
by PikkaBird
Version 12:

- Figured out the correct filename for the changelog. :)

- The connected town list is now cached, and only recalculated on loading the game or building new connections. This should greatly improve the AI's response time, particularly later in the game.
- Added more company, director and train names.
- Readded statue building.

- Sometimes, bus and mail services would not come close enough to depots for automatic servicing, resulting in low reliability. To combat this:
- Road vehicles with poor reliability are periodically sent for servicing manually.
- Additional road depots are built in large cities.

Trains:
- Improved wagon selection.
- Made rail building a little more robust, with retrying if the path is blocked and better detection of station orientation.
- Added an additional station/route type.

Re: CivilAI

Posted: 29 Apr 2018 21:53
by arikover
Hello!

Nice work on the IA, it is really interesting to play with.
I have 2 questions:
CivilIA tends to build airports early in the game, which can be pretty suicidal when infrastructure costs are on. Deactivating planes for IA players is a solution to this problem, but could it be possible to make CivilIA take this setting into account? (if infrastructure costs are on, do not build airports, or build airports only when it is not suicidal to do so)
Does CivilIA cares about the weight factor setting?

Re: CivilAI

Posted: 29 Apr 2018 22:50
by PikkaBird
The AI doesn't take either of those into consideration, currently.

In the case of infrastructure maintenance, it's hard to imagine what the response should be. If the maintenance costs make using small airports (which is all this AI builds) prohibitively expensive, then building no airports seems to be the only option. If the costs are tolerable, then business-as-usual should be fine. In either case, infrastructure maintenance costs is a terrible feature and should be avoided. ;)

The cargo weight factor is not currently considered, bur it probably could be; I can see how a very high weight factor, combined with a NewGRF that provides both low-power locomotives and high-capacity wagons, might be a problem. It wouldn't be difficult to vary the minimum power requirement and/or limit the train capacity. Do you have some examples (either screenshots or savegames) of trains which have struggled?

Re: CivilAI

Posted: 01 May 2018 01:56
by PikkaBird
Version 13:

CivilAI will now check for other company HQs, and avoid setting up in the same town.

Trains:
- Improved locomotive selection for trains, taking freight_trains setting and hill steepness* into account (thanks arikover).
- Trains will have brakevans before a certain year (configurable, default 1965), if a NewGRF provides them.
- Version 12 occasionally built a sharp 90 degree turn when building passing places or retrying a blocked route. To address this:
- AI removes passing places with 90 degree turns (if 90 degree turns are forbidden).
- If no passing place is built, one train will be built instead of two.
- When retrying a blocked route, the AI will backtrack three tiles and build a straight rail before continuing, to avoid constructing 90 degree turns.

Maybe I'll take a break before adding any more big features, like trunk railways between cities or ships. It's just too easy to spend all day tinkering with this stuff. :)

*To clarify, I don't mean the "slope steepness for trains" setting; I'd forgotten that exists. I mean the actual profile of the route; hillier lines get more powerful locomotives.

Re: CivilAI

Posted: 01 May 2018 07:49
by andythenorth
Trying it now ;)

EDIT: I like this, not even snark, keep this feature :twisted:

Re: CivilAI

Posted: 02 May 2018 21:34
by arikover
PikkaBird wrote:Version 13:
Thank you for having taken into account the weight issue, and having corrected it. Before, with a weight factor of 5, CivilAI always chose UKRS2 0-4-2 Tanks to haul 120 tonnes of coal, whatever the profile of the route. Now, for a short route with 3 height levels difference upwards, it chooses a EE 10000 Diesel instead. It's a bit exaggerated, but it works perfectly.
Sorry for not having been able to provide screenshots in time, and thank you for this fix, and for this AI which is really interesting to play with.

Re: CivilAI

Posted: 06 May 2018 03:23
by PikkaBird
Uhoh, Version 14. The big NEW FEATURE is this version is ships, which are currently limited to passenger ferries. Cargo ships to maritime industries coming soon (tm). It's a big update, so let me know what you think or if there are any bugs or strange behaviour.

Also, this AI now uses a custom fork of the road.pathfinder library, so make sure you get that too (it should download the library automatically if you use the in-game downloader, I think).

Version 14:
- Fixed a bug in introduced in v13, which was preventing the AI connecting small towns to expand its train network (oops).

- Added ships:
- CivilAI will now build docks at town bus stops, and passenger ferries between and within towns in its network.

Road Network:
- Finally revised the oldest and hackiest part of the AI: replaced the cross "spikes" at bus stops with path-based loops.
- Forked the standard road pathfinder to add pathing cost for drive-through road stops.
- Bus stop placement in towns is now more randomised, and the AI will avoid placing stops near existing stops (of any company).
- Added a stricter attempt limit for road pathfinding, and visualised pathfinder progress in the debug log.
- Made the AI more bridge-happy.
- Various other bug fixes and tweaks to pathfinding and record keeping.

- Set default brake van date to 1975, to better align with air-braked stock date of UKRS3.
- Better station spread and local authority checking when attempting to place airports.

Re: CivilAI

Posted: 11 May 2018 06:05
by peter1138
Won't load on a fresh install, Pathfinder.CRoad depends on Graph.AyStar version 6 but it is not listed as a dependency.

Re: CivilAI

Posted: 11 May 2018 06:13
by PikkaBird
peter1138 wrote:Won't load on a fresh install, Pathfinder.CRoad depends on Graph.AyStar version 6 but it is not listed as a dependency.
Oops. Fixed. :)