Refactoring



I personally think that the "right" approach would require sitting down and thinking about as many game variations and (G)UI variations as possible... And as lame as it might sound, create ven diagrams... Where do which features overlap where? Which features are subset of other features? The proper approach would have several high level coding interfaces/libraries, and even more specializations (and probably specializations of specializations). Each additional layer should provide ease for the coder. I generally also feel strongly about preserving partitions between dissimilar functionalities. The better preserved they are, the more a user can pick and choose exactly what they want.

Here are some points that I consider to be important in differentiating a "game." I am sure that I left a lot out, but I hope to bring up good points.

Timing
* Are you playing against a clock? Does the environment change while you wait? Can the rate of change be adjusted? (this can be more than one parameter, not just overall game speed) What timer variations can exist? How do they get updated? (chess has many variants. Go has "Byo Yomi") What happens when a timer runs out? (An interesting chess variant - one of your pieces is removed as penalty, and the timer resets) Is the game turn based? Does it have to be? or are there ways to make it more simulaneous? (for example the civilazation 3 play the world expansion)

Players
* How many players are there? Has the functionality of each distinct player/AI been seperated from each other? (scorched earth is rather interesting in this way. Roundhouse chess might offer surprises with both players and timng. Local verses net should be invisible to the coding of the players) What possibilities for human control can exist? (why can't your friend play the level boss?) What limitations do each kind of player impose? (A relativistic dog fight can only be from the perspective of someone in the cockpit when there is only one human involved. Some controls are just too complex for people) What support for scripting can be done? (Imagine warcraft, where you can write your own battle strategies) How well parameterized are the AI's? Can non-gnu-games AI's/players be used?

Rules
* Can different rulesets be used for the same setup? What flexibility for rule variations exist? Can rules be hot swapped? Can AI's handle it? (Consider Nightmare Chess)

Board Rendering + Connecting Players
* I think these are already in discussion. I would hope that the two topics (board rendering, and connecting players) would be independent of each other. Can non-gnu-games coded versions be used?



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]