Moderator: OpenTTD Developers
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.
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
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.
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.
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 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".
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).
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.
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.
Users browsing this forum: No registered users and 3 guests