Jump to content

External AI


Recommended Posts


I was wondering how hard it would be to allow the use of an external AI program to control TacOps. It seems that just about all of what one would need is already present in the game:

1) A way for the external program to find out the status of its own units -- unit status and logistics reports exist

2) A way to find out what can be seen -- the spotting report exists

3) A way to find out what the map looks like (with the terrain encoding) -- it seems that the Type 2? maps are like this. I suppose that the information should be available from the existing maps as well.

4) A way to specify orders and SOPs for the units on the map. This must be present for the PBEM and network interfaces. It might be just a matter of documenting the format of the orders, SOP, artillery strike calls, etc.

5) Formalized description of the victory conditions and order of battle for each side.

It would appear that this would have the potential to allow third party development of AI players as well as give you the ability to offer a more flexible simultation to your military customers. I don't know how many people would be motivated to try to write their own AI systems for the game, but I could imagine having something like a computer-player tournament.

Link to comment
Share on other sites

A programmed opponent loadable as a shared library (*.dll) or with an RPC (remote procedure call) interface would be *the* killer feature for me.

It occurs to me that any such interface to external code can automatically serve to implement new user interfaces as well, besides new POs. The information to be passed is the same in both cases. That way you could let people implement their own interfaces or modification to the interface. The first thing that comes to mind is a playback function with VCR controls like Combat Mission has.

Obviously, the system allows people to let two of their POs slug it out against each other. Or a human-guided PO, which asks back to a human at certain decision points but otherwise does its thing itself.

As for contributing, based on OpenSource projects and how they go, I would expect that while it requires one determined person to do an initial implementation, such an initial implementation will usually be done in a way that doesn't code the solution straight. But instead the first thing is to add one level of abstraction. The actual play logic would be done in a convenient way, often by interfacing to a "scripting language", which is a lightweight easy-to-learn language and which gets a set of application-specific utilities. While the one starting person would do it all for himself in the first run, successful projects see a symbiose pretty soon: one machine-level programmer with much knowledge about code interfaces, performance and tools, and then a person with more domain-specific knowledge and less programmer abilities. The second person could not bring his knowledge into the application on the raw level, but he can with the convenient tools.

As for being worth it, I guess it is a lot of work to define and implement such an interface, and the most probable outcome is that noone ever uses it, given that there seem to be no overlap between OpenSource programmers and wargamers besides me smile.gif While I have the interest and the ability (I estimate) to do it, I have to hope that I would resist compromising my job (which will also raise my ability to code a PO in the long term).

[ 12-11-2001: Message edited by: redwolf hates artillery ]</p>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...