I'd like to clear something up about the "900 object limit for AIs" in UP 1.1. The most important thing to know is that this limit is not new. 1.0c also has this 900 object limit. Let me explain what this is about in proper detail to avoid any further misunderstandings.
Each AI player has a block of memory in their data structure that is reserved for tracking the number of sighted objects from each of the other players. This memory is enough for tracking 900 standard objects (0-899) + 100 additional slots (900-999) for tracking objects based on their "group" or "class" id. For example, the group/class id for archery units is 0, and the AI system stores this counter data in slot 900 (0 + 900). Infantry units, which are class 6, are stored in slot 906. Hand cannoneers are class 44 and stored in slot 944. I'm sure many of those who modify object data with the great A.G.E. tool have seen these group/class numbers.
Whenever the AI sees a hand cannoneer, for example, it increments both the hand-cannoneer object type counter (stored at id 5) AND the associated object class counter (stored at id 944). It does this in reverse, as well. With this information, an AI can check if it has seen any hand cannoneer class units from the enemy (normal ones or jannisaries in The Conquerors) and train appropriate counter units.
Here is where the problem is: if an object is sighted that has an id >= 900 (for example, a new unit that is id 906), it will corrupt the infantry class counter data that is also stored in slot 906. An even worse scenario is that it finds an object with an id >= 1000. In this case, it would either end up overwriting the following player's sighted object counter data or be writing into uninitialized memory.
The only thing that 1.1 has changed in this respect is that it will no longer allow for the data corruption to occur by blocking objects with an id >= 900 from being counted by AIs. This prevents the corruption of the group/class counter data and avoids the other forms of memory corruption mentioned earlier.
The solution for mods to ensure proper gameplay is to place all objects that AIs may interact with under id 900. This includes: units, buildings, walls and gates, projectiles, gatherable resource objects (animals, trees, gold and stone mines, forage, etc.), dead objects (especially all of the various dead villager objects, which are very important for AI awareness), and rubble (1x1, 2x2, etc.).
Random scenery objects can freely be >= 900 without any harm, including flowers, rock formations, random ruins, decorations, etc. Hero objects and other limited-use scenario objects (and their dead counterparts) that aren't as important to count specifically by AIs can probably also be placed >= 900, unless the AI is expected to be able to count them, train them, build them, or counter-attack them specifically. Mod developers will need to consider how important a given object is when positioning them in their dat files, especially if they target 1.0c, where this corruption can cause unexpected results for players enjoying your game.
It would certainly be great to overcome this issue in a future update, but for now, data consistency, gameplay integrity, and stability have to come first. I hope you understand and I'm sorry for any trouble this may cause.
Each AI player has a block of memory in their data structure that is reserved for tracking the number of sighted objects from each of the other players. This memory is enough for tracking 900 standard objects (0-899) + 100 additional slots (900-999) for tracking objects based on their "group" or "class" id. For example, the group/class id for archery units is 0, and the AI system stores this counter data in slot 900 (0 + 900). Infantry units, which are class 6, are stored in slot 906. Hand cannoneers are class 44 and stored in slot 944. I'm sure many of those who modify object data with the great A.G.E. tool have seen these group/class numbers.
Whenever the AI sees a hand cannoneer, for example, it increments both the hand-cannoneer object type counter (stored at id 5) AND the associated object class counter (stored at id 944). It does this in reverse, as well. With this information, an AI can check if it has seen any hand cannoneer class units from the enemy (normal ones or jannisaries in The Conquerors) and train appropriate counter units.
Here is where the problem is: if an object is sighted that has an id >
The only thing that 1.1 has changed in this respect is that it will no longer allow for the data corruption to occur by blocking objects with an id >
The solution for mods to ensure proper gameplay is to place all objects that AIs may interact with under id 900. This includes: units, buildings, walls and gates, projectiles, gatherable resource objects (animals, trees, gold and stone mines, forage, etc.), dead objects (especially all of the various dead villager objects, which are very important for AI awareness), and rubble (1x1, 2x2, etc.).
Random scenery objects can freely be >
It would certainly be great to overcome this issue in a future update, but for now, data consistency, gameplay integrity, and stability have to come first. I hope you understand and I'm sorry for any trouble this may cause.
[This message has been edited by scripter64 (edited 01-26-2013 @ 02:02 AM).]