Forum | Index
This is my wishlist in order of priority/practicality.
- More specific server calls for City Report information - GetCityReport can be slow if you want to repeatedly access one or two specific parts. Possibly add functions to calculate City Report details to AIClasses.
- CLocation.Territory Should be easy to add, I think you can test "no-one's territory" by testing
fOwned.
- AIClasses: methods or functions for all feasible server commands (eg GetMoveAdvice). If a server function is available it should have a wrapper in AIClasses - this is important to protect developers against small version changes.
- AIClasses: more validity checks on server calls. If checks are cheap it is faster to have them in AIClasses than in the server. Also a user can avoid them (by calling the server directly) for critical code which is known not to require checking.
- AIClasses: A virtual method in TCustomAI for map changes (would be called by eg CUn.move). To allow derived classes to update custom maps. The area which changed (including coming into the observation area of a unit when it was outside any unit's observation area) should be an argument to the method.
- Proper TModel/TModelInfo for all models. Seems like militia have a strange Model/Modelinfo entry in RO.Models or RO.EnemyModels.
- Let each player set the max trade messages they want to receive. Players should be able to control how much time is spent on diplomacy.
- ZOC information. Information about which tiles are in which player's ZOC - in map[] or in a new ZOCmap[].
- It should be possible to easily find out if a city or unit was captured (bribed) or destroyed in another player's turn. I suggest a list in RO like City[] and Un[], (CCity) CapturedCity[], DestroyedCity[], (CUn) CapturedUn[], DestroyedUn[]. ShowMoves interface has not achieved this eg on the first turn.
- Opponent info. Human players can identify their opponents (from the names of the AIs) - AIs should be able to identify their opponents too. There should be a message at the start and end of human player turns so that AIs can start (and stop) idle processing threads.
- Enemy moves. The interface is quite good. You still need to save the locations of all cities every turn (cShowCapture should be sent before the city is captured). The map is not updated reliably (for cShowCapture).
- Support for automatic game analysis. Program interface for superviser view to step through each turn. Should not open graphics - fast analysis should complete in seconds. Competition hosts could use this to check for cheating and to evaluate bonus rules. It would also be useful for AI development.
- Support for implementing lookahead - the ability to execute server instructions on a hypothetical RW. To allow lookahead for multiple turns it should be possible to execute commands for any hypothetical player. There should be a function to copy the RO to a hypothetical RW. (Or G to hypothetical G if that is required).
- (AIClasses) A function to calculate the victor and damage given two hypothetical units (with hypothetical unit models). (eg So that you can make decisions about what models to design and which units to send on an attack).
- (AIClasses) A function to calculate the number of turns a hypothetical engineer or settler would take to do a hypothetical job on a hypothetical tile. (eg So that you can determine if it is worthwile to make an engineer to do a particular tile improvement job vs waiting until an existing engineer finishes all of it's jobs.)
- Support for deduced/speculative information. eg so that if you know an unknown region is land (not sea) you can use sGetMoveAdvice to find a path through it.
- Complete player-player communication. This should allow arbitrary data. It should allow atomic updating of the RO (a player updates their RO when they receive data or when they make deductions). The RO should handle uncertain information eg players should be able to send speculative or untrue messages. As more facts are obtained a player should be able to update the certainty about facts in the RO.
Comments or suggestions? Post in the forum.
Top