Author Topic: Dead Souls news  (Read 69508 times)

Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #45 on: June 26, 2008, 09:44:00 am »
Just a quick overview of releases, for those
of you incapable of reading my mind:

The way it works is, I get to a point in Alpha
development where things are working well, there
are no obvious bugs, and moving forward would
involve adding big new things that are likely to
introduce bugs.

At that arbitrary point I clean things up, test and
test and test, and when I'm satisfied things are
reasonably awesome, I release that code as Stable.
For example, 2.7a28 to 2.8.

Typically, because I'm not as awesome as I think,
a bug or two will have sneaked past me, causing
me to update the Stable by a subminor release.
For example, 2.8 to 2.8.1. This may happen a
few times, for example 2.8.1 to 2.8.2.

After a little while, when I'm confident there's
no latent disasters lurking, I then mentally
categorize that Stable release as being "set in
stone", and only make modifications when my conscience
dictates it *must* be done...for example if a security
exploit is discovered. Other than that, I stop
messing with the Stable...that's why it's "stable".

Once that ossification occurs, I set about creating
a Public Domain version from the Stable release. I
remove the docs, code that isn't PD, etc, and then
make that version available, for example 2.8.2 to IIr8.

And that's it! That's how it works. Now I'm working on
the next alpha (2.9), making additions that are awesome
but that may need frequent updates to fix disharmonies...
and because some people don't like frequent updates,
that sort of thing is isolated to alpha.

All that is a roundabout way of saying Dead Souls 2.8.x
is now set in stone, and if you were waiting around
for some sign that it's not being updated anymore,
this is that sign.

Also I'm announcing that Dead Souls IIr8 is now available,
so that if you've been waiting for a current release
that is free from licensing, your wait is over.

Downloads are here:

Enjoy, and as always, please let me know what I screwed up :)


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #46 on: July 07, 2008, 04:26:50 pm »
Dead Souls 2.9 alpha 3 is out. It's mostly small typo/bug fixes.

One nice new thing is GUARD_D and LIB_GUARD. This code lets
you set any npc as a guard of any exit or object without having
to edit the code for the room, object, or even the npc.

For details, see

For the download,

Let me know what I screwed up :)


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #47 on: July 15, 2008, 02:18:36 am »
2.9a6 is now out and uses FluffOs 2.12.


2.9a6 has some customizations for FluffOS tuned for
DS and the Cygwin/MinGW platforms. The lib also has
some new features designed to improve stability
and performance.

As usual, see for details,
and download at


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #48 on: July 24, 2008, 11:44:42 pm »
Dead Souls 2.9 has accumulated so many important security
and availability fixes that I've decided it's necessary to
apply them to the stable version.

I'm releasing 2.8.4 today, which includes everything that
up til now has been in 2.9. This may be somewhat confusing
for some folks, but I believe the fixes are worth a little

Among the fixes are workarounds for crashers, overrides of
potentionally crippling exploits, and a couple of fixes for
elevation-of privilege exploits that could get a mud pwnt
by a local creator.

Some of the crasher fixes depend on using the latest FluffOS
driver, so I recommend folks switch to it, if possible.

2.8.4 has some "general nice stuff" in it too. There are
several sefuns that are now efuns for performance, and
the default parsing system has been overhauled for greater
speed and accuracy of ambiguity elimination.

However, it's the security/uptime stuff that's really
critical, and I strongly urge that folks back up their
muds and liveupgrade to 2.8.4 at their earliest convenience.

As usual, see for details,
and download at


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #49 on: September 24, 2008, 12:14:15 am »
Ok, back on track with 2.9. Today I released
2.9a9, which has a few neat things. It's nothing
revolutionary, just another normal step forward.

The release notes ( )
will give you a good idea of the new you
can see it's mostly under-the-hood things. The
new coordinate system, for example, is kind of
neat in that you can use it to noclip through
walls to another room, if it is adjacent...and
you can use the gps ( /domains/default/obj/gps.c ) to
find out what rooms are nearby, and you can use
the "whereis" command to get an idea of where
someone is relative to you...but that's pretty much
it. The idea is eventually to use that system for
ranged combat...right now it's  just the alpha
foundation for that system.

The zombie scroll is kind of fun, though. Just remember
to speak in a language the zombie understood in life!

As always, the download is at

If you're on 2.8.4 you don't have to liveupgrade. This is
a typical alpha release, no security stuff involved.


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #50 on: October 08, 2008, 08:05:47 am »
You may have noticed that and *yatmim are down. It looks like
the network they are on reset their firewalling policies, and I'm in the process
of getting that straightened out with the network people. Sorry for the inconvenience!


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #51 on: October 19, 2008, 01:04:52 am »
Dead Souls 2.9a10 is out. Nothing revolutionary since a9. Mostly under-the-hood
stuff to improve functionality and uptime, as well as greater resource
control for folks on commercial hosts or weak machines.

For more details:

Please let me know what I broke :)


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #52 on: November 26, 2008, 11:57:51 am »
Dead Souls 2.9a12 is out.

It contains significant improvements to the speed of grid lookups
(thanks to Silenus showing me the light of bitshifting for it).

New since a10 is an orc area under the town and a finally-
completed Town Well Quest.

Some fun new additions are LIB_FLOW to do flooding (play with it
carefully, and examine the well quest to see how it works), and
a portal generator for teleportation. Note that only one blue and
one orange portal can exist in the mud at any given time. Cake
is provided for those who excel with the portal generator.

For more details:


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #53 on: January 04, 2009, 10:06:45 am »
Dead Souls 2.9a13 is out. Nothing earth-shattering,
but it includes some stuff people requested recently,
and implements persistent rooms, which is something I've
been meaning to do for a while.

Some of the highlights:

* reprompt: This enables a feature that redraws your
prompt whenever you receive a message. I actually did
not understand this request very well at first, because
I use a mud client that separates input and output.
However, for "single-pane" clients (for example if you're
using the default telnet on your OS), this feature is now
available if that behavior is your preference. Note that
if you have a typical mud client with separate input and
output areas, enabling this will probably make things
look pretty ugly.

* charmode: This is highly experimental and remains
somewhat buggy, and is *not* supported on Windows muds.
Having said that, it's kind of neat and I'll be continuing
to work on it. What this does is switch your input mode
from a line-by-line mode to a keypress-by-keypress mode.
Obviously this is not meant to work well with most
mud clients. This is really for people with single-pane
clients. It allows for "reprompt mode" to not only redraw
the prompt when you receive a message, but also redraw
whatever your incompletely-typed command was, if there
was one. It also allows for up/down-arrow history recall,
and for tabbed command completion.

Note that because it can still sometimes crap out (especially
after a warmboot), charmode is automatically disabled for
you every time you log on. This means if you get stuck
in a charmode bug, you can just relog and be in line mode.
So if you like it, you'll need to type: "charmode on"
every time you log in. Sry. Safety first. And remember, if
you have a typical mud client, this is totally useless to you.

* room persistence: I implemented a very basic kind of room
persistence. See /domains/town/room/secret.c for an example.
You add SetPersist(1); in create() and RestoreObject(); after
it, in the manner shown in that example. The room will then
automatically save its inventory into its domain's save/
subdirectory, so that you can drop your favorite weapon
there, reboot, and when you come back it'll be there waiting
for you (assuming nobody stoled it).

Note that this is not "world persistence". That would
involve all sorts of very careful planning about things like
economies and gold sinks and NPC generation and so forth that
I'm just not inclined to do. However, if *you* want to do
that sort of thinking, it's not hard to set up a persistent
area/mud now.

* object persistence: I figured I'd try to take the persistence
thing a step further and see about adding it to objects too.
It works but be strongly warned that this is not intended to
be used widely. Any non-room container set to have persistent
inventory should be unique. I actually prefer people not use
them unless they really really have a need, because they
behave oddly and the behavior can be misinterpreted as bugs...
suffice it to say that such objects react poorly to QCS commands.

See /domains/town/obj/charity.c for an example. Please make
sure you understand what it's doing before you report any bugs on it.

* keepalive: I added an efun coded by Raudhrskal that sends
a null byte to your client. This is now integrated into the "keepalive"
command which can set a heartbeat-based interval for how
often this invisible signal is sent to your client. This can help
keep your idle connection up if you have an ISP or modem that
has an inactivity timeout.

* miscellaneous fixes and requests: See the release notes
for other details:

That's it for was a fun release. I got to write
my very first efuns! Of course, this means that you can't
really take advantage of stuff like charmode and invisible keepalives
unless you use the new driver included in the bundle (FluffOS 2.14-ds14).
So for those two things, a liveupgrade won't suffice. You'll
need to download the bundle and install the new driver. Persistence
and reprompt mode are both in the lib, though. No need to do
a driver upgrade for them.

There's not much new in this release regarding grid stuff.
Maybe next release :)

As usual, let me know what I broke:


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #54 on: February 04, 2009, 04:35:53 pm »
2.9a14 is now out.

It's largely bugfixes and tweaks, though it includes some
stuff I really really wanted for myself, namely tabbed
command and file completion (when in charmode).

There's some stuff that folks might find handy, for
example findfun now allows substring searches, and the
new commands efuns, sefuns, and lfuns finally provide a
firm-and-helpful answer to the eternal petition:

"I need to know what all the lib functions are!"

Oh also there's an incomplete sort of prototype
character-mode editor. By character mode I mean that
you move the cursor around with the arrow keys and
enter text that way, rather than the cumbersome old
line-editor way with the ed command. It's not done,
and it's included just so people can see how it
will eventually work. For now, writing to file with
it is disabled because it can distort data. If you enable
file writes with it and this causes you sadness, know
that the sadness is for you to bear alone.

The name of the character mode editor command is: ced
If you try to use it while not in charmode, your
session will probably break in some ghastly way. Therefore
first you enter the command:

charmode on



By now you've probably twigged to the fact that "charmode",
aka character mode, is something I've been working on
and something you'll need for some of the fun new
stuff in a14. Please note that a lot of charmode functionality
is crucially dependent on new modifications to the driver.
If you use anything other than FluffOS 2.15-ds** then some
of the new stuff just won't work. Therefore, if you are
planning to use liveupgrade to try out 2.9a14, please
consider downloading the full version as well so that you
can compile the new driver for it.

More info on the release is here:
Download is here:

And please let me know what I missed.


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #55 on: March 13, 2009, 09:01:36 am »
WHEW! a16 was a lot more work than I expected.

For the most part it is fixes, fixes, fixes. Some of
the new stuff in a14 was more broken than I realized,
and some of it was a little more hardcoded than I
wanted. Specifically charmode stuff is now more
genericified, for reasons that will be clearer later.

a16 doesn't have much in the way of new "in-game toys",
it's mostly under the hood stuff. Most of it is stuff
that "normals" won't notice, but a few address issues
that folks have reported:

* tell_room() works better with virtuals
* warmbooting in a virtual brings you back to it
* reading a book while other books around generates less ambiguity
* the flood object no longer lags the heck out of the mud
* paired armor now is more intuitive (eg left and right boots are optional)
* multi slot armor is more intuitive (eg shields work right)
* multi armor slots work more defaultly (eg wear ring)
* charmode now does 90% of what I want (more on this later)

Et cetera. Good stuff, but if you weren't waiting around
for it, nothing to scream about.

An important thing to note is that doing a liveupgrade
to a16 from 2.8.4 or from a14 will involve two steps. If
you're on a14 you'll first have to upgrade to a15, then
liveupgrade again to a16. If you're on 2.8.4, you'll first
need to liveupgrade to 2.8.5, and then again to a16.

The reason is that a16 has a *huge* number of new files,
and the default liveupgrade system breaks under that load.
The "interim" lib version includes a fix to avoid that,
so you can do the upgrade.

Why so many new files?

Glad you asked!

The thing that took me the most time to work on with a16
is a new system that allows you to run multiple instances
of the exact same LPC code. In other words, you can have
a "creator" instance of the mud, and "player" instance of
the mud. The advantage is that if a creator screws up
and breaks something, he doesn't affect your live game...
but you don't have to have the hassle of separate live
code and dev code.

The other advantage is that by completely separating creators
from players, the opportunity for cheating is greatly limited.

As you can imagine, implementing this involved changing a
great many files. Liveupgrade doesn't do "diffs", it just
overwrites files no matter how small the change was..and so
the new system in a16 causes you to download many many files.

I've tested it a lot and so far things look good, but
yknow me. Let me know what I broke :)

details here:
download here:


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #56 on: April 30, 2009, 11:18:11 pm »
Happy May Day y'all.

Dead Souls 2.9a17 is now out. For the most part it's a refinement of the instance system, allowing
instances to communicate, and providing the "instconfig" command to manage them.

I've received lots of questions about what this instance business is about, and I figure the best
answer is the help file for it:

What are instances?

Instances are separate muds that run from the same Dead Souls
installation directory, but that communicate with each other.

The reason to have separate muds is to be able to test code
on a test mud, without affecting what is happening on the
other mud.

The reason to have them communicate is that the MU in MUD
stands for "Multi User" and it's nice to have more users
communicating rather than fewer.

What instances let you do, for example, is have a "build/dev"
mud running on, say, port 8888, and a "player mud" running
on port 6666. Creators can chat with people on the player
mud while developing on the dev mud. But if they screw something
up big-time, the folks on the player mud are somewhat isolated from
catastrophe. Creators also can't mess with players on the other
mud, nor give them cheat items and such...because they're
"physically" isolated. Only communication goes back and forth.

Do I need to use instances?

Very very very few people will have use for this. Instances
are largely something that is useful to me, Cratylus, in my
project. If you don't immediately understand the point of
instances and go "YES! EXACTLY WHAT I NEED!" then you can
just stop reading now and forget about them.

What should I know in general?

- Windows users will find the instructions below insufficient.
They'll need to fiddle with new .bat files and make a new .cfg
file. A Windows procedure is on the back burner because frankly
right now the Windows DS version is pretty much supposed to be
for testing and development anyway, making instances pretty
moot to begin with. The chances of there being a production
Windows DS mud anywhere are slim, and really to be discouraged.

- Instances use a concept of a "global" instance and client
instances. The global instance is the first instance: the mud
you installed. Instances you create must be created from the
global instance.

- Client instances don't speak to each other, only to the global

- Don't fiddle with ENABLE_INSTANCES in config.*. This setting
is meant to be manipulated by the instconfig command only. You
should leave that define alone in the global instance, and
leave it alone also in the client instances.

How do I get it going?

To get a second instance of your mud running if the
new port is 8888 and the instance name is "Foo":

- Get the mud running the normal way. Create an admin char, etc.
- Once it's up, login as an administrator.
- Type: instconfig create Foo 8888
- Copy /secure/cfg/mudos.8888.cfg into bin/
- Go into bin/ and type: ./driver ./mudos.8888.cfg
- Ta-daa!


- Instances are a somewhat advanced feature. If you're new to
Dead Souls, you should concentrate on basics. If you're a newbie
and have problems dealing with instances, it will be very very
difficult for me to extract from you the information I need
to help you, so you'll need to be very rigorous in reporting

- I don't know what happens if you set up an instance with the
same port number as the global instance. If you actually do this,
please keep it to yourself. I'd rather not know.

- The instance communication protocol is quite primitive and
only allows for instances to communicate with the global instance.

- You can't create a character with the same name on another
instance. This is for security reasons. If you need to have a
character with the same name on instance foo, you'll need to
copy the user file. for example:

cp testyguy.o testyguy.8888.o

Note that whatever privileges are in effect for testyguy on the
global instance will be in effect in the client instance, since
all instances use the same groups.cfg file. You are very much
copying the same player to the new instance, not making a "new"

- If you have the slightest concern that instances pose a security
risk, do not use them. In fact, *don't* use them, unless you grok
the code completely. For the most part I'm including this in the
distribution as a convenience and favor to me, because i am awesome
and I deserve it, so don't be surprised if it doesn't suit you,
and please understand what you're reporting if you do want to
report a problem.

Another new feature in a17 is "deviation":

By default, Dead Souls uses body characteristics of different races
(e.g. ogres, deer, fish, human) to calculate all sorts of things...
combat effectiveness, learning proficiency, etc. Some of these
characteristics are "stats", like strength or intelligence.

For example, orcs can be formidable warriors because their
starting strength stats tend to be very high. In addition,
strength is high in importance to the orc body...its "stat class",
or how important it is, is 1, which is the highest level of
importance. This means that orc players increase the strength
stat by one point every time they are promoted one player level.

Therefore an orc player who started with a strength stat of 40
would have a strength stat of 50 upon reaching level 11.

Humans, however, have a low starting strength and the human
stat class for strength is 3, meaning that human players get a
strength point added every 3 level promotions. A human with
a starting strength stat of 15 would, upon reaching level 11,
have reached a strength stat of 18.

This can seem a little unfair to a person that wants to play
a human warrior...and in a way it *is* somewhat unfair, since it's
entirely possible for there to be freakishly strong humans or
humans who devote themselves to becoming very very strong.

One way to make up for this is to use "customization points".
They allow you to add a small number of stat points to the
stats you feel are most important. But you only get 15 customization
points ever, and they go quick. And even if you use all of them
to jack up a stat...if that stat has a low stat class you'll
always be lagging behind.

For example, if our human warrior jacks up her strength from
15 to 30 by using up all her customization points in that stat,
she'll still be struggling somewhat against physically stronger
races of her same player level.

Similarly, orcs tend to have low starting intelligence and
a dismal intelligence stat class. This makes playing an orc
mage a torturous experience, such that it would be quite
rare to ever see a player choose that race and class combination.
But orc mages do exist in some settings, and making it practically
impossible seems a bit unfair.

Stat deviation is a way of helping make it possible to have
these unusual class and race combinations without torturing
players unnecessarily for them. Stat deviation is an alteration
of a player's stat class which allows them to gain stat points
more quickly than her racial defaults normally would allow. This
alteration comes at the cost of a percentage of experience points
gained while so deviated.

For example, our human warrior princess could choose to deviate
her stat class from the default of 3 to a more favorable 2,
allowing her to gain a strength point every other level, rather than
every third level.

Each deviation point comes at a 22% cost of XP gained, meaning that
once she deviates by one point, killing a monster that would normally
earn her 1000 XP now earns her 780 XP. If she wants to max out on
the strength stat class and use 2 deviations on it, it'll cost her
44% of the XP she gains from then on, meaning a 1000 XP monster
for her is now just worth 560 XP.

Clearly deviations are severely expensive, and will tend to slow
down a player's overall advancement, but they do offer the possibility
of playing the kind of race with the kind of class you prefer, facing
opponents with a more class appropriate set of attributes. Rather
than it being, for example, practically impossible to reach level
20 as an orc mage, and being nearly useless as an orc mage even at
that level, deviating right would actually *allow* you to reasonably
hope you could get to that level one day, and that at that level you
would actually be able to stand up to nearly-level-appropriate opponents.

Since deviation is something that involves your character's devotion
to improving herself and doing things in a way that is different from
others of her race, it makes sense that there is a cost (XP) but
also that it cannot be revoked. Once you deviate, you're a deviant
forever, so think long and hard before using the "deviate" command.
You may not miss the XP now, but you might miss them later, when you're
a mighty player and that 22% is now thousands of XP.

See also: deviate, customize, stat, score

More details here:
download here:


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #57 on: May 05, 2009, 02:58:08 pm »
Happy Cinco de Cuatro, y'all!

I know it's only been a cupla days since a17, but that "reply bug"
was drivin me crazy, and I figured I wouldn't be the only
a18 is out with some minor but important-to-me fixes.

Enjoy, and as always, code responsibly.


release notes:
download here:

Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #58 on: May 25, 2009, 10:10:50 pm »
Happy Towel Day, frewdz!

Creepin up on 2.10...we're not there yet, but almost.

Dead Souls 2.9a19 is out now as a release candidate for 2.10.
Please hammer on it mercilessly and let me know what
problems you find.

release notes:
download here:


Offline cratylus

  • Your favorite and best
  • Administrator
  • ***
  • Posts: 1024
  • Cratylus@Dead Souls <ds> np
    • View Profile
    • About Cratylus
Re: Dead Souls news
« Reply #59 on: July 19, 2009, 06:15:49 pm »
The Public Domain version of 2.10 is now released.
It is called Dead Souls IIr10, and it is
available at:

Please note that this version of Dead Souls is
completely unsupported, documentation was removed, and is
missing some code from 2.10. The public domain version
is not for normal people to use. It's for the rare
0.01% of people who intend to fork a distribution
lib or do something weird along those lines.

If you have any doubt at all, just use the regular
supported version.

For more info on the point of having a PD version,
please see the FAQ: