header image
CrystalBallSoft Apps
CrystalBall Lite
CrystalBall
ThumbPrinter
To-Do Stickies
Other Apps
Miniaturizer
RealBasic Code
RPG Resources
City Generator
Who's Online
We have 13 guests online
Feeds
Home arrow Mr Frenzy arrow The "Generic Generator"
The "Generic Generator" PDF Print E-mail
Written by Joseph Sharp   
May 22, 2008 at 04:22 PM

An important aspect of CrystalBall and CrystalBall Lite is the ability to roll on tables of data to generate other random information or look up information on a table.  Those of you familiar with CrystalBall v3.1 will know of the Treasure and Name Generators.  Those generators are based on some very specific code that only allows you to generate those particular types of information.  For CB4.0 and CBLite we wanted something that was more generic in its design, so that the end-user could generate any type of information that they wanted.

The need for a Generic Generator became apparent after we released the ability to ROLL on TABLES with a dice roll.  Suddenly there was great excitement to try to reproduce the Treasure tables from D&D.  But as people began to use the dice roller to try to construct the tables they began to run into issues.

 

So Mr. Cryptic and I decided to brainstorm on the idea of a Generator that could be used to direct the rolling of tables and present the information in an easy to read format.   Because, as those of you who have tried complex rolls with the Dice Roll know, Dice roll output is very messy when rolls become complex and large.  From our pow-wow session two new ideas for CB Dice Rolls was born:

  • A Generic Generator for directing dice rolls
  • Dice Roll Templates for formatting roll results exactly how you wanted them.

I will talk about the Dice Templates another time and concentrate on the "Generic Generator" for this post.

After much analysis we decided all the functionality needed to generate even the most complex tables (Treasure and Magic Items for D&D) could be rolled into CB Tables with a little bit of extra functionality added to the Table Editor and Dice Roller.  A Generator document is a collection of tables that define the following things: 

  • Menus inside the Generator window that fire off certain table rolls or even whole collections of tables to roll on.
  • Options for rolling on those tables.
  • The actual information that will be generated by the tables setup with a weight column and data column.
  • Output formatted with Templates that is then displayed in the results area of the Generator window.

All of the above data is designed to be entered into Tables using the CBLite Table Editor.  Even now as I think about it, the Generator Table is very abstract, and its hard to wrap my mind around.  My most important concern is to make this new Generator intuitively useable by anyone trying to make a simple Generator.  And with experience and help from others the ability to generate complex information.  This process begins with the CB Table Editor which we decided needed quite a bit of new functionality (as requested by users and to accommodate new and future features coming in CBLite and CB4).


As we began analyzing what needed to be improved in the table editor to make it as friendly as possible we also realized some of the new features could be potentially very destructive to your data if you were to make an accidental mistake.  This in turn made us realize we could no longer ignore UNDO.   We didnt want to work on the upgrade of the Table Editor without a new Undo Manager in place.  So now we had another task on our list.  We couldn't add Undo capabilities to just the Table Editor.  Undo had to be implemented across the board for all fields and editors.


So as you can see our next major release has grown in scope as we have analyzed what we needed to accomplish to make the Generator easy to use.  I guess this is what they call Feature Creep in the software industry.  And its easy to see from the above process how a seemingly simple feature can suddenly turn into a major project as it has for version 3.0 of CBLite.


User Comments

Comment by GUEST on 2008-05-23 20:27:37
that's funny... cblite *can* play background music, or at least sound effects.... ;D however, i do agree. this might be not so much feature creep as scope creep. the sudden paradign shift of realizing that one's previous conception of the scope of a task is not adequate to the task.

Comment by GUEST on 2008-05-22 20:50:39
Feature Creep is not when you realize that you have to add functionality to accomplish some other feature, but when random features get thrown in. Like, if we asked for 3d models for a map. Or playing background music. Or stupid things like that. They *could* fit, but they are completely unnecessary and make things harder and add work. Having a working table system that supports complex tables is not feature creep. Realizing that to accomplish this, you need Undo, is not feature creep. It's just the work that constitutes a full version release.

Comment by GUEST on 2008-05-27 11:26:54
This type of thing has been built before, including a public format for building tables. See http://divnull.com/omnihedron/author.html
Please login or register to add comments

Last Updated ( Jun 06, 2008 at 05:49 PM )