I have tried to read through all the posts so I hope this suggestion isn't repeating someone elses ideas. I think it would be beneficial to specify a function prototype that the Game Engine will call for each players AI routine and what objects will be passed.
Example:
Function Bot1_AI%(Status.World, Player1.Bot)
In this example, the status of the Game World, and Bot1's object reference are passed into the AI routine. The AI routine is allowed to look at the Status.World object but not modify if. It then makes any changes to the Player1.Bot object and passes it back to the Game Server for processing and rendering.
The Fields of the World and Bot objects should contain all necessary info for the routine to calculate what it needs to do to complete it's goal.
IMHO
Example:
Function Bot1_AI%(Status.World, Player1.Bot)
In this example, the status of the Game World, and Bot1's object reference are passed into the AI routine. The AI routine is allowed to look at the Status.World object but not modify if. It then makes any changes to the Player1.Bot object and passes it back to the Game Server for processing and rendering.
The Fields of the World and Bot objects should contain all necessary info for the routine to calculate what it needs to do to complete it's goal.
IMHO