Tuesday, October 14, 2008

Motivation

This is a bit of a rehash from previous posts, but I wanted to lay this out clearly and by itself. 

What was the motivation for the project, and what's interesting about it? 

In short, the motivation for the project as a whole was to investigate software technologies, and development strategies toward the production of a card-based strategy game (CSG).  CSGs differ from traditional strategy games; the majority of the rules in a CSG are delineated on the cards. The consequence is that not all of the rules are in effect at the start of the game, nor may all of the rules with which the game started remain in effect throughout the remainder of the game.

What makes this an interesting software problem is variability. In a nutshell, variability is the defining attribute of a software system, which implements a CSG. The behavior of the cards in a CSG usually differ greatly, even if there is a common interface to which they adhere. This accounts for variability at design-time. There is, further, the need to support run-time variability. The rules defined on the cards may override or alter the base rule-system or those defined on other cards.

To support variability in the software Design Patterns were employed in the project development. In particular the behavioral Strategy Design Pattern was used in the Munchkin Simulator. In conjunction with the Strategy, the Decorator pattern was exploited in Fluxx. Palace employs the Visitor pattern. JAAC makes use of the Proxy and Command patterns. 

No comments: