Interface Formats

Soon after the committee was formed, we realized that we need a forum to discuss our general approach and the way interfaces should be developed and specified. About 200 posts are posted to the forum as of now; however, related discussions sometimes also took over the forum of the working group on world interfacing. Some details on the two main topics that were discussed are given in the following.

Architectural Infrastructure

One aspect that arose now and then was what type of units we are providing interfaces for - agents vs. functions. A function library would be a standard API with hard-wired function calls. The advantage is that this is a very efficient and can be used independent of the game architecture. An agent-based approach, on the other hand, would send and receive general messages, decoding and encoding them internally. That approach is very flexible but requires an agent-based system architecture with infrastructure like service registry, message passing etc.

There were very different points of view on which approach to adopt, and we discussed the issue at our 2003 GDC roundtable. The preferences became very obvious: All participants voted for a function library, no-one for the agent-based solution, and about 15% were interested in an additional agent wrapper for the function-based approach. Thus, our work will focus mainly on function libraries.

Specification

Our interface standards must be specified somehow, and the discussions on which specification methods/languages to use quickly emerged. Nearly everyone agreed that multiple levels should be supported, e.g., abstract ontology and XML levels, as well as C/C++ interfaces. C/C++ reference implementations would also be most useful. For the exact formalisms, however, we have given the working groups a bit of freedom to experiment with what they find most useful. We will further pursure this topic once the group's interface suggestions become more concrete.

We also discussed the issue at our 2003 GDC roundtable, and especially whether C or C++ should be targetted. Interestingly, hardly anyone was interested in pure C, while more than 50% of the participants voted for a pure C++ interface. A C approach with a C++ wrapper was supported by 25%. We will consequently focus more on C++ than on C.