[REBOL] [OT] Announcement, new application in the making... stone & blood
From: maximo:meteorstudios at: 9-Feb-2004 19:19
I just thought that I'd let you all know that I am working on a very flexible Dungeons
& Dragons campaign manager, it is called stone & blood (not very subtle, I know, but
its better than tunnels and trolls ;-) .
Yess its ALL being done in rebol.
The name is not final, I just don't know how to call it! any ideas !?
I was starting a new campaign, then looked at some tools on the web (including the excellent
and java-based PCGEN) and they all have the same problem. They stick to the rules too
much and when you are an experienced DM and you start having your own house rules, then,
they all break up.
SO I built the engine to be completely open, and you should be able to change many things
on a character without any programming skills.
Here are the current modules:
RAISE dialect (in-development 50% done):
A dialect which creates characters. It allows you to break ALL the standard D&D rules.
It will eventually allow you to add your own stats. The dialect is meant to be used
by non programmers, so relies on practically NO syntax. The data is included in the
resulting creature as it handles each aspect. specifying aspects in any order is legal,
but might change the end character, because some statistics in D&D don't stack up the
same if you have them at a low level or at a higher level (like the number of skills
based on int).
RAISE is uber simple to use, because most aspects can be transcribed directly as character
"Torgar Battlestar" ; first unnamed string is character name
"Hunter of evil" ; second is the title
17 13 16 9 15 8
Most aspects can be specified multiple times, and if they can be stacked, they will!
[fighter 2] or [fighter fighter] are EXACTLY the same.
Some datatypes are handled right in the base block without preceding aspect words, these
will be documented, and generally set the most basic stats like description and abilities.
Raise keeps a history of every thing you throw at it and eventually, you'll be able to
edit some things in the history and "resurect" (rebuild) your character.
Another cool thing about raise is that some aspects actually are macros for the basic
aspects. for example, class levels (fighter, cleric, etc) will call raise with whatever
aspects change at that level. The same thing for monstrous templates (like vampire above).
So if you want to create your own templates (like monsters ;-) just add an aspect block
to the raise engine, give it a name, and you can then include it in a raise spec, from
now on. :-)
Some were wondering where SLIM can be usefull... this is such a case. Since there will
be some hooks for external data (races, classes and whatever), then just supplying slims
with the appropriate functions in them, will allow the external data to link right in
Raise will have an aliasing mechanism, which lets you extend any aspects (even those
comming from external sources). Add aspects in another language, or supply alternative
names so that they are more intuitive to you. Note that you can have any number or aliases
for each aspect. Also note that any aspect macros will also be able to use the aliases,
so if you create external modules in spanish, then just giving access to the top-level
aspects in english, will allow your spanish system, to work in english too.
Raise, returns a CREATURE! object. This object contains all the calculated statistics
of your character/creature. It is then easy to use it in another tool, like an encounter
manager or whatever.
TABLES (90% done):
I have already finished a table engine, which lets you create tables (either by row &
columns of data) or by algorythm.
It has an automatic viewer (even for algorythimic based tables!). You can look at your
table in console(print), as an html table or in a view face. Amongst other things, It
supports tabs specs (for column width), to allow you to properly layout the table.
You can also lookup data by row or column AND you can add refinements for your own tables
(many of the ones in the rules already will have). the refinements allow you to lookup
the tables using more approriate identifers. like:
table/lookup/mod 17 ; this looks up a table and goes to column
; 'mod and retreives row 17 of it.
CHAOS (90% done):
This module is used to roll virtual dice. The chaos dialect reads a string of text and
rolls any combination of dice for you. For any rpg gamers, the notation is pretty standard.
chaos "4d6+3" ; roll four six-sided dice and add 3
chaos "3/4d6" ; roll four six-sided dice, keep the 3 best rolls
; (no other engine I know of does this ;-)
chaos "d20+5+2+1" ; roll a twenty sided die and add several modifiers
chaos "2d4*2+1" ; add-up two four-sided die, multiply by 2 then add 1
in a later release, you will be able to merge a table reference to a chaos spec, in order
for you to look up die specs and roll them:
chaos "table(PHB:weapons/damage sword)" ; lookup weapon damage for a sword and roll it
Eventually, chaos will be usable right in RAISE, so that it generates random creatures
based on templates.
Here are upcomming modules (any gamers want to help? especially in xml area):
-STONE: The gui which includes the other modules. It might be built using prototype
-BLOOD: Interface to RAISE dialect, which lets you buildup a creature, picking stuff
in lists as the character advances in levels.
-Encounter manager (initiative, assign opponents, auto rolls of attacks, damage, all
keyboard enabled for speed.)
-Campaign editor (put all your campaign notes, and location descriptions. Create vector/tile
maps, multi-level maps browsing from world, to room tile! create encounters in advance
and assign them to locations on the maps. print maps to browser... includes user-set
scaling to create in-game room printouts used by Player's figurines)
-XML export of data so that anyone can create his own forms, printouts.
-XML layout dialect, which would allow output in pdf or html of S&B XML datat.
This being said, I've temporarily suspended forge development (which HAS started, and
is so complex, it needs a lot of analysis). in a few weeks, I'll have enough large-scale
development done on S&B (Stone and Blood) to approach STEEL|forge with a real-world scenario
to support. So forge, will more rapidly evolve, into an application which solves real-world
Stone & Blood will thus become the official STEEL|forge test application and forge won't
be just a toy, even in its first release. :-)
You can either be part of the problem or part of the solution, but in the end, being
part of the problem is much more fun.