CircleMUD 3.0 UPDATE Jeremy Elson ======================================== The most recent version of Circle 3.0 is patchlevel 11. Note that this is still BETA software. However, my long-standing policy of not supporting beta copies of 3.0 has mostly dissolved, simply because 3.0 is so much better than 2.20, and because most times when people write me problems with 2.20 my response is just "upgrade to 3.0" anyway. 3.0 is a very ripe beta, and I expect it to be finished quite soon, so you can start a MUD with the latest beta if you want to -- but with the understanding that you should incorporate patches as they are released. What's Coming Soon ------------------ Believe it or not, CircleMUD 3.0 is getting very near to completion. Since it is already long overdue, major changes that had been planned recently for 3.0, such as changing to an ASCII-file save system, have been pushed back and will not be worked on until the gamma release of 3.0 (i.e., for some later version such as 3.10). A preliminary copy of the CircleMUD 3.0 building.doc has been made available in the doc directory. While it may change slightly before the full release of 3.0, it will for the most part be the same and can be used as a guide for writing worlds for 3.0. Building.doc contains all info required (file formats, flag values, spell numbers, and the like). Features -------- Circle 3.0 uses an optional ASCII flag system on all bitvectors. In other words, at any point in the area files where the code expected a numeric bitvector, it will now accept either a numeric bitvector or a series of ASCII flags. The order of the flags are lowercase a (1 << 0) to lowercase z (1 << 25), followed by uppercase A (1 << 26) to uppercase F (1 << 31). For example, the bitvector 13 (1+4+8) can now be written as the string acd. (If you don't understand this system, just forget it for now -- it'll be fully documented in the full 3.0 release.) Circle 3.0 is taking a long time, but it should be worth it. There are many, MANY improvements in 3.0 over 2.20. Big changes: o Online creation system o Player houses o Aliases o New, much easier to use interpreter (no more COMMANDOs) o New, much easier to use integrated spell/skill system (much easier to add new spells, skills and classes) o Expanded & rewritten documentation And, lots and lots of small bug fixes and enhancements which people have been sending in and asking for: (this list is meant to be representative, not comprehensive): o Optional MERC-style "rent" (i.e. quitting saves your objects for free) o Paged background story, practice list, etc. o '@' ends messages only if at the beginning of a line o "$" not doubled in communication o "0." means "PC named ", useful for people named Guard, etc. o ASCII flags instead of huge powers of 2 o Rewritten communications code. (Number of system calls and other function calls reduced; "sleep" code which puts the MUD completely to sleep when there are no connections.) o 'hide' now actually does something useful (just like invisibility, takes you off the who list, etc., unless the viewer has 'sense life') o Totally new shop code (courtesy of the CircleMUD M.V.P., Jeff Fink.) o "self" refers to your own character when used with any command. o Faster boards which only save when someone finishes writing a message o Track is now a skill which gives you the wrong direction if you fail :) o New world-file parser which is more sensitive to detecting format errors and allows comments o class.c file which contains all the code you need to change to add new classes, instead of searching all over Creation for references to it o Cleaned up "snoop" and "switch": allows both you and snoopee to switch to your hearts' content without danger, and allows IMPs to switch into linkless players o Battle messages for each weapon type o Mobs with settable attack types instead of all of them just using "hit" o Features to prevent bug/typo/idea-bombing and coin-bombing o Class-specific equipment flags o Auto-exits ...and lots, lots more. Plus, despite all the added functionality, it looks like 3.0 will actually have _fewer_ lines of code then 2.20 did! This is mostly due to the never- ending project of code cleanup and optimization that I've been working on ever since Circle 2.00. Compatibility with Circle 2.20 ------------------------------ The player and rent file format for Circle 3.0 will be different than Circle 2.20's format; however, utilities will be included to convert both the player and rent files from the 2.20 format to the 3.0 format. 3.0 will be able to read all of 2.20's world files, with one exception: 'C' type mobs ("C"omplex) are no longer supported. There will be extensions to the various formats (i.e., the files will be able to do things that 2.20 wasn't able to do), but the format is backward-compatible. In other words, the 3.0 file syntax is a superset of 2.20's. Flags for 3.0 world files have been finalized; get the file circle-3.00-structs.h to see what they are if you want to start building 3.0 worlds. (Most flag values are the same.) The mail system has been converted to use ID numbers instead of names to store addressees, and I don't plan to write a converter because I don't think it's worth the effort. Therefore, all undelivered mail in your old 2.20 mud will be have to be received or discarded before you upgrade to 3.0 unless you want to write a converter yourself. (If you do, send it to me.) Most code written for 2.x will be compatible for use in 3.0. The interpreter and spell system have changed radically, but those changes only affect the way new spells, skills, and commands, and socials are added -- the actual code which _implements_ the spells, skills, etc.., will be compatible. You'll be able to paste most 2.20 code right into 3.0 with no changes. There are some small exceptions; for example, for spec-procs, instead of saying 'if (cmd == 1)' you'd now say 'if (CMD_IS("north"))'. Also, some new macros have been added; i.e. instead of "obj->obj_flags.value[3]" you'd say "GET_OBJ_VAL(obj, 3)". The 3.0 coding is going really nicely; I'm quite happy with the way it's shaping up and I think you'll all be very pleased as well. In other words, it's worth the wait :). What You Can Do --------------- If you're interested in taking part in Circle 3.0 development, you're encouraged to join the mailing list (see below for details). The mailing list is where I announce the latest Circle developments, and it's where I ask for ideas as to which direction the 3.0 coding should take. Also, if you feel up to it, you can try out the latest release in the 3.x directory. However, keep the following things in mind: o Please send me as many bug reports as possible! If you have sent a bug report in the past which hasn't been fixed in the current patchlevel, please send it again. However, do NOT send me "bug reports" which are your fault: i.e. if you change the code and then it starts crashing, recompile using clean code and see if it still crashes. If not, the bug is the fault of your new code; don't tell me about it. I had to add "2a" because in the week after patchlevel 5 was released, I got a large number of bogus bug reports, (stuff like "the ATM crashes the game!") which were due to people's own buggy code but blamed on me. In other words, do not send a bug report *UNLESS* you can prove that the bug exists in the stock code, not just in your modified code. o If the MUD does not compile 100% cleanly on your system the first time, please send me a detailed report of everything you had to do in order to get it to compile, as well as the name of your system and version of your operating system. o There is a skeleton of the OLC system in this patchlevel but it is certainly not complete. Do not send me any comments such as, "Why can't I modify XXXX??" or "why doesn't it save my changes???". OLC is not complete. o Unsolicited code submissions are always welcome but not guaranteed to be included in the general distribution. o The documentation is very incomplete; if you need documentation, don't try to use the MUD before I've written the docs. o A utility to convert from 2.20 to 3.0 playerfiles was submitted by a CircleMUD user and is in the src/util directory. o Certain things just haven't been written yet; i.e. saving aliases. Good luck, and enjoy.