One thing that has always struck me about computer based role-playing games is simply the lack of character development. In most computer RPGs that I have tried, character development takes place along basic lines as required by the game's plot. True role-playing for me has always been about character development, where plot is a secondary feature giving one the chance to actually "role-play" the character they have developed.

I wanted to create a game system that reflects this idea. And that is when I conceived of Cygnus.

In order for a character-based system to work, the character must remain the constant while the underlying story should be disposable. Not only should the story be disposable, but it should change frequently (along with the associated scenery) to keep the game fresh and interesting enough to merit long-term character development. This would - of course - pose a considerable challenge to a content provider.

Being a programmer, the solution that I found most interesting is to enable the game system to generate its own content. Computers are very good at performing repetitive tasks, so having the computer generate content in bulk seemed a logical idea. Of course, content creation is a creative task, and creative tasks are best performed by human beings. I do not dispute this, but even creativity may be formularized to some degree. In fact, in some ways the computer can be more creative since it is not bound by assumptions.

I do not intend Cygnus to be a cutting edge rendering system. I intend Cygnus to be a reasonably good rendering system that sits on top of a powerful content generation system.

The basic idea behind the content generation system is to define content by algorithm rather than by structure. For instance, to build a house, I would not pre-design several different houses and allow the computer to choose one of the layouts. Instead, I would write a procedure that would randomly place the rooms, halls, windows, and doors that fulfill the requirements of a house. In turn, the house would assign a procedure to each of the rooms according to function and then those procedures would go to work populating the individual rooms. The result would be a unique house every time.

This idea is well suited for object oriented programming. Using the example above, the house building algorithm is encapsulated in a class. The class may then be subclassed to create variations in the style of house building. An orc's house is likely to appear distinct from an elf’s house and so on.

This system can be applied to any element in the game - from the layouts and locations of the mountains, villages, and tombs down to the characters and stories that inhabit them.

Treating each class as a container for the next level of detail, the system works rather like a fractal. Top and bottom levels of detail are assigned arbitrarily. An entire world can be built and populated automatically and in great detail. And, as a bonus, since the world was built using a pseudo-random number generator, the entire world can be stored using a single four byte integer.