Collaborative diffusion: programming antiobjects
AgentSheets Inc & University of Colorado, Boulder, Colorado, 80301
In OOPSLA ’06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications (2006), pp. 574-585
@conference{repenning2006collaborative,
title={Collaborative diffusion: programming antiobjects},
author={Repenning, A.},
booktitle={Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications},
pages={574–585},
isbn={159593491X},
year={2006},
organization={ACM}
}
Object-oriented programming has worked quite well – so far. What are the objects, how do they relate to each other? Once we clarified these questions we typically feel confident to design and implement even the most complex systems. However, objects can deceive us. They can lure us into a false sense of understanding. The metaphor of objects can go too far by making us try to create objects that are too much inspired by the real world. This is a serious problem, as a resulting system may be significantly more complex than it would have to be, or worse, will not work at all. We postulate the notion of an antiobject as a kind of object that appears to essentially do the opposite of what we generally think the object should be doing. As a Gedankenexperiment antiobjects allow us to literally think outside the proverbial box or, in this case outside the object. This article discusses two examples, a Pacman game and a soccer simulation where antiobjects are employed as part of a game AI called Collaborative Diffusion. In Collaborative-Diffusion based soccer the player and grass tile agents are antiobjects. Counter to the intuition of most programmers the grass tile agents, on top of which all the players are moving, are doing the vast majority of the computation, while the soccer player agents are doing almost no computation. This article illustrates that this role reversal is not only a different way to look at objects but, for instance, in the case with Collaborative Diffusion, is simple to implement, incremental in nature and more robust than traditional approaches.
December 2, 2010 by hgpu