NoCAB - Bleeding Edge edition Version 2.2a4

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

R-TEAM
Engineer
Engineer
Posts: 59
Joined: 19 Jan 2005 10:34
Location: Germany

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by R-TEAM »

Hi,

after fighting with various errors like "Your script made an error: the index "ai_et_engine_available" does not exist" and add the compatibility lines from the compat1.1.nut
file to the compat1.2.nut file (the AI uses 1.2 API - but have serious problems with it .....) the AI runs very well and nice ...
But after every load of an savegame the AI crashes first time ... then its run nice again ..

Use actual HardGame version .. many NewGFXs ... Pictures+Save file added.

Regards
R-TEAM
Attachments
NoCAB-BE1.png
(461.8 KiB) Downloaded 4 times
NoCAB-BE2.png
(453.22 KiB) Downloaded 4 times
No-Way Trans&Co AG, 16. Jul 1943.sav
(1.17 MiB) Downloaded 95 times

kevinhigh
Engineer
Engineer
Posts: 1
Joined: 28 Dec 2014 05:07

This AI is not activating

Post by kevinhigh »

Oh no.... I think this is a bug, and

It says " AI_ET_ENGINE_AVAILABLE" Does not Exist.

How can I fix this?
Attachments
Gordon & Co.의 게임 (2004.02.01).png
(32 KiB) Downloaded 3 times

krinn
Transport Coordinator
Transport Coordinator
Posts: 336
Joined: 29 Dec 2010 19:36

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by krinn »

I'm unsure your "How can i fix this" is really a question...

Anyway, if you were indeed really wishing the solve, here's howto fix "this" (only this bug)

Code: Select all

sed 's/AI_ET_/ET_/' -i ConnectionManager.nut
And if you don't use linux, wait for someone to gave the same command using a tool like sed for your system.

User avatar
Zuu
OpenTTD Developer
OpenTTD Developer
Posts: 4554
Joined: 09 Jun 2003 18:21
Location: /home/sweden

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by Zuu »

Assuming NoCAB does set it's API version apporately the compat.nut layer should provide the old enum constants. Did you correctly install OpenTTD with all its files, and also did not place any files from a newer/older version in your OpenTTD directory in user documents?
My OpenTTD contributions (AIs, Game Scripts, patches, OpenTTD Auto Updater, and some sprites)
Junctioneer (a traffic intersection simulator)

krinn
Transport Coordinator
Transport Coordinator
Posts: 336
Joined: 29 Dec 2010 19:36

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by krinn »

The error pic show nocab loading 1.2 API, hence the error ; but i wasn't sure if just changing API to 1.1 wouldn't let nocab fail later trying to call an 1.2 API function.

Wormnest
Engineer
Engineer
Posts: 98
Joined: 14 Jul 2013 12:33
Location: Netherlands

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by Wormnest »

Since NoCAB can be such a well performing AI if it doesn't crash I had a go at fixing the main problems.

1. Crashing when saving. Since it stores a lot of info NoCAB often ran out of time, especially on larger maps, when saving.
Since I think staying alive is more important I changed it's save logic to stop saving it's connections as soon as it detects it's getting close to running out of time.
Of course it will not know some of the connections after loading a save game but at least it will not crash and keep running the current game.

2. It was not taking the map borders into consideration when checking available spots near towns. In certain cases when a town was near the map border it could take very long (about a year) to decide on available tiles.

3. On large maps with a high amount of towns and industries it could cause OpenTTD to run out of memory causing it to crash. The cause of this was that NoCAB tried to store data for all towns and industries. I changed this to limit the towns to the top 1000 towns with the highest population and a random choice of a maximum of 2000 industries.

4. Loading a savegame could cause a crash because certain data needed to determine the route travel time wasn't saved. We fixed this by recomputing certain data after loading a savegame.

Details about all changes can be found in my forked repository.
https://bitbucket.org/jacobb/nocab/overview

To install just download the repository and copy the whole folder to your ai folder.

The original coder of NoCAB is welcome to use as much of my code as he wants.

Alberth
OpenTTD Developer
OpenTTD Developer
Posts: 4757
Joined: 09 Sep 2007 05:03
Location: home

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by Alberth »

Great that you stepped in to fix things.

One trick you might consider is to prepare the save data beforehand, ie after a significant change. That way, you'll have the save data ready and just have to point to it and say "save that".
Being a retired OpenTTD developer does not mean I know what I am doing.

Wormnest
Engineer
Engineer
Posts: 98
Joined: 14 Jul 2013 12:33
Location: Netherlands

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by Wormnest »

Alberth wrote:One trick you might consider is to prepare the save data beforehand, ie after a significant change. That way, you'll have the save data ready and just have to point to it and say "save that".
Yes that is certainly one of the things I had in mind too but I thought it better to get something that is working (as far as I know) published then to wait until everything that can be improved is done. Even better would be if it's possible to get rid of or reduce all that path data that gets saved but currently it's needed for computing the time a vehicle takes to go from one end of a route to the other.

Alberth
OpenTTD Developer
OpenTTD Developer
Posts: 4757
Joined: 09 Sep 2007 05:03
Location: home

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by Alberth »

It sounds like data you can recompute after loading, or even anywhen you need it.

A possible alternative could be to keep such path data but for one route (or a few). When you want to review some vehicles, first recompute that data, run the analysis, and let go of the data when you no longer need it (vehicles are performing satisfactory).
Being a retired OpenTTD developer does not mean I know what I am doing.

Wormnest
Engineer
Engineer
Posts: 98
Joined: 14 Jul 2013 12:33
Location: Netherlands

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Post by Wormnest »

Made some more improvements and fixes though no changes in the save/load code yet.
Most changes are related to better train handling.
Besides that there are improvements in
  • Closing connections where vehicles are now sold
  • replacing old vehicles with new ones now also works for trains, including refitting.
  • replacing vehicles even works if we are at the maximum allowed amount because we sell first
  • Tweaked road and rail pathfinding costs. It should use less tunnels and bridges and up to a max length of 15. It should also favor reusing roads a little more.
  • Lots of other changes to improve crash safety.
Most things I wanted to fix are done now. I'm thinking of uploading it to bananas to have a working version of NoCAB again.
I'm open to suggestions how I should name it. Currently I use WormCAB but I could use NoCAB Fixed or something like that too since the main purpose was fixing it not making further improvements or changes.

Post Reply

Return to “OpenTTD AIs and Game Scripts”

Who is online

Users browsing this forum: No registered users and 2 guests