Page 7 of 7

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 10 Jun 2013 20:50
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

This AI is not activating

Posted: 28 Dec 2014 05:11
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?

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 28 Dec 2014 10:49
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.

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 28 Dec 2014 11:00
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?

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 29 Dec 2014 09:31
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.

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 04 Jun 2016 15:36
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.

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 04 Jun 2016 17:13
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".

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 04 Jun 2016 17:28
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.

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 04 Jun 2016 18:38
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).

Re: NoCAB - Bleeding Edge edition Version 2.2a4

Posted: 18 Jun 2016 19:09
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.