CivilAI

Discuss the new AI features ("NoAI") introduced into OpenTTD 0.7, allowing you to implement custom AIs, and the new Game Scripts available in OpenTTD 1.2 and higher.

Moderator: OpenTTD Developers

xarick
Transport Coordinator
Transport Coordinator
Posts: 335
Joined: 26 Feb 2015 00:52

Re: CivilAI

Post by xarick »

Hi. I found a crash with v8. Cannot iterate null.
Attachments
Unnamed, 1982-01-08.png
(266.4 KiB) Not downloaded yet
Unnamed, 1982-01-05.png
(267.81 KiB) Not downloaded yet
Unnamed, 1981-11-11.sav
(22.69 MiB) Downloaded 220 times
Formerly known as Samu
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post by PikkaBird »

Thanks!

version 9:
- Fixed collision causing company director name not to be set.
- Fixed reported crash.
xarick
Transport Coordinator
Transport Coordinator
Posts: 335
Joined: 26 Feb 2015 00:52

Re: CivilAI

Post by xarick »

Hi again. The index 'Count' does not exist.
Attachments
Unnamed, 1977-05-13.png
(52.8 KiB) Not downloaded yet
Formerly known as Samu
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post by PikkaBird »

Damn.

Try this one please. :)
Last edited by PikkaBird on 15 Apr 2018 08:52, edited 1 time in total.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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!
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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.
arikover
Route Supervisor
Route Supervisor
Posts: 466
Joined: 15 Jun 2007 09:27
Skype: madchimiste
Location: Berlin, Deutschland

Re: CivilAI

Post 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?
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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?
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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.
arikover
Route Supervisor
Route Supervisor
Posts: 466
Joined: 15 Jun 2007 09:27
Skype: madchimiste
Location: Berlin, Deutschland

Re: CivilAI

Post 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.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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.
peter1138
OpenTTD Developer
OpenTTD Developer
Posts: 1728
Joined: 30 Mar 2005 09:43

Re: CivilAI

Post 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.
He's like, some kind of OpenTTD developer.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post 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. :)
peter1138
OpenTTD Developer
OpenTTD Developer
Posts: 1728
Joined: 30 Mar 2005 09:43

Re: CivilAI

Post by peter1138 »

Thanks :-)

I've got infrastructure costs enabled. Seems to be very common that a CivilAI is going bankrupt after a year as they build unaffordable airports, sometimes only one.
He's like, some kind of OpenTTD developer.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post by PikkaBird »

peter1138 wrote:I've got infrastructure costs enabled. Seems to be very common that a CivilAI is going bankrupt after a year as they build unaffordable airports, sometimes only one.
Turning on "Disable aircraft for computer" will (or should - I'm not sure I've ever tested it!) prevent CivilAI building airports. Infrastructure maintenance costs are GRF-adjustable, so I don't want to assume that just because the setting is on that airports are untenable.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post by PikkaBird »

Just a quick bug-fixy update, before embarking on any more major features.

Version 15:

- Rewrote the level crossing removal code (again) to remove the lost vehicle repathing - it was another of those 'clever' ideas that never really worked and took a lot of processing time.
- fixed hang condition when rail depot building failed.
- Made the AI even more bridge-happy.
- Various other bug fixes and tweaks.
peter1138
OpenTTD Developer
OpenTTD Developer
Posts: 1728
Joined: 30 Mar 2005 09:43

Re: CivilAI

Post by peter1138 »

Hmm, are infrastructure costs GS queryable?
He's like, some kind of OpenTTD developer.
User avatar
PikkaBird
Graphics Moderator
Graphics Moderator
Posts: 5601
Joined: 13 Sep 2004 13:21
Location: The Moon

Re: CivilAI

Post by PikkaBird »

peter1138 wrote:Hmm, are infrastructure costs GS queryable?
Yes, they are.

On the other hand, since there is already an exhaustive set of solutions to the problem (you can turn infrastructure costs off, or you can use NewGRFs which reduce the costs, or you can disable aircraft for AI), is there any reason why AIs should go out of their way to quietly conceal game-breakingly silly airport maintenance costs? At least, unlike inflation, infrastructure maintenance costs aren't on by default. ;)
Post Reply

Return to “OpenTTD AIs and Game Scripts”

Who is online

Users browsing this forum: No registered users and 5 guests