Yearly Archives: 2009

Scan Command Fixed

One of the nagging problems I had been meaning to get to was the non-functional scan command. It’s a recursive command, and the C# way is a bit different from the C++ way. It was easier to fix than I had expected and is working now, so scan away.

Editor Update (Version 0.44)

Made more progress on the editor. The walkthrough window now has basic functionality. There are only a few commands working, mainly the directional commands and the goto command. It’s all in black-and-white, but it is enough to let you walk through the rooms and get a feel for what mobs and objects are where.

Basternae Editor v0.44 Screenshot

Pretty basic, but it will evolve with time.

You can get the latest version HERE (or via the link on the sidebar).

Startup Script Created

For the past few days, the test version of the MUD has only been up when I was actively running it from my Linux shell account.

I’ve created a startup/restart script so it should be running all the time now, barring any catastrophic crash-explosions.

Telnet port 4502 to connect.

Zone Permissions Needed

We had permission to use zones from these authors for Basternae 2. Even so, I want to be sure we have permission to use them with Basternae 3. If you know any of these folks, please pass the word that I’d like to get permission to use their zones in Basternae 3 (and/or all future incarnations of whatever Basternae 3 ends up evolving into).

Based on the severely-outdated zone list I have from Basternae 2, here’s a list of the folks I’d like to get zone permission from:


We could probably just use the zones since we were given permission once, but I’d really prefer to run it by the authors first. My email address is xangis [at the mail provider] yahoo (dot) com. Any assistance in contacting these folks would be appreciated. Thank you.

Editor Update (Version 0.43)

I did a little more work on the editor today.  Now that I’m able to convert zones created with DurisEdit, I decided to use the Basternae Editor tinker around a bit with the Minotaur Stronghold zone that I created and converted.  What did I work on?  The map view.

I changed it so that it generates room arrangements more accurately and also shows room interconnections.  It has only been tested with and I only expect it to work with zones that have rooms that are all interconnected (reachable).  I’m sure it will need some work to behave right with non-contiguous zones.  Even so, I have it working with the Minotaur Stronghold, Kobold Village, and Thri-Kreen Hometown, and clicking on the box for a room will take you to the edit window for that room.  Kinda neat if you ask me.

Basternae Editor v0.43 Screenshot

You can get the latest version HERE (or via the link on the sidebar).

Now Able To Import DurisEdit Zones

I’ve been wanting to add support to the zone converter for using DurisEdit to create Basternae 3 zones for a while now.  While it is nearly identical to the DikuEdit 3.10 that we’ve used for ages, there are a few subtle differences — their format allows multiclassing and has a few different classes available and a few different settings that we don’t use, like size.

I built a small 40-room zone using DurisEdit to test against.  I had to make a few changes and had to improvise a bit with class translation, but I’m able to import Duris zones now.  The process is identical to the import of Basternae 1 zones.

Since they don’t have settings for each type of elementalist, I’ve defaulted mobs classed “Conjurer” to “Fire Elementalist”.  If the class should be something different, it will just have to be changed after conversion.  There will also probably need to be some extra affect flag translation and/or a few minor tweaks here and there, but the hard part — reading the files correctly — is covered.

This means we now support:

– Envy zones (You can create them using mzfe2-32 among other things).  This is the least full-featured format.
– Basternae 1 Zones (.obj, .mob, .wld, etc.)
– Basternae 2 Zones (.are)
– Duris Zones (.obj, .mob, .wld, etc.)
– Basternae 3 Zones (.are.xml)

Given the choice between DE 3.10 and DurisEdit, you should choose DE 3.10 because it most closely matches our zone format.

The ideal editor would be the current zone editor, version 0.42, but that may still need some work.

Two More Zones Connected

In addition to fixing a few bugs with immortal commands, I connected two more zones to the MUD, giving us a whopping total of 3 connected right now:  The Kobold Village, The Thri-Kreen hometown, and the Gypsy Encampment.

Test Connection Up Again (Temporarily)

I put up the MUD server so I could do some development.  Telnet port 4502 and feel free to report anything you find.   I haven’t fixed everything since the last test run, but did fix a handful of things.

I don’t have a restart script running, so if it crashes, that means it’s going to stay down until I check it again.

For those of you who want to use the old version of DikuEdit, I added a link to it on the sidebar.  I would like to get a bit of feedback on the new editor, so feel free to try that and let me know what you think of it so far.

Domain For Sale:

At one point I owned 40 domains.  I’m gradually reducing that number, selling off or otherwise parting with those that I don’t have the time/energy/resources to build properly.  One of those that may be of interest is

It’s for sale on eBay right now, and you’re likely to be able to get a pretty good deal on it.

It would be an excellent domain to use for hosting a MUD server, a MMORPG, or a related subject of interest to the loyal Basternae 3 blog readers.

New Release: Zeta Telnet Version 3

One of the first things I wrote when I was learning C# was a basic telnet client. It’s not like the world needed another telnet client, but it was a fun, easy project to learn the .NET socket libraries.

In the process of working on bug reports for Basternae 3, I found something annoying: Windows Vista doesn’t have a telnet client installed by default.  How silly.

Normally I use Putty as my telnet client. Since I was doing a lot of connecting and disconnecting during my code-build-boot-test-shutdown cycle, the fact that Putty closes the window every time the connection was lost became a little annoying.

I know I could just grab a copy of WinTin, but I felt like updating that old telnet client. So, here goes: Zeta Telnet Version 3. Grab it if you need a basic telnet client. If you need a full-fledged MUD client with aliases and the like, it’s not what you’re looking for.

Shandril’s Saga Book 1: Spellfire

I’ve been reading The Harpers series from the Forgotten Realms books.  Next on my list was Crown of Fire, but it required reading the previous book, Spellfire, in order to really know what was going on.  So much for an open-ended series of books.  By “open-ended” they obviously didn’t mean “standalone”.

Spellfire was a very different book from the rest of the Harpers books in that the monsters were much more vicious — dracoliches, archmages, devils, beholders, and all manner of newbie-slaying critters.  It was a decent book overall, but the nonchalance that the epic foes were treated with took a little away from the book.  It’s obvious they expect you to have read a Monster Manual from cover to cover and don’t spend too much time on descriptions of creatures, their ferociousness, and all the horrible things they can do to a foe.

Most of the characters in this book are pretty one-dimensional, and the interactions between the main characters (especially Shandril and Narm) are pretty empty.  Even so, it’s a good adventure tale and I give it a solid 3 out of 5 stars.  I liked it well enough, but wouldn’t read it again.  At least now I can read Crown of Fire and continue the Harpers series.

Running At Full Power Again

I like Linux and know it pretty well.  I also like Windows and I know it extremely well.  I can use either as my desktop pretty effectively, but I’m better with Windows and best when I have both available.

That’s why I’m very happy that I can finally run Windows again on my main desktop.  I tried Windows 7 for a week and it almost worked, but only supported 2 of my 3 monitors at best thanks to the drivers for the two different Nvidia cards in my system not wanting to play nice together.

Well, now that Windows 7 has been installed, the Vista install was actually able to see and use one of my drive partitions.  I’ve installed it and spent half a day loading up all of the essentials I can’t live without.  Visual Studio, Dreamweaver, WinSCP, CDBurnerXP, OneNote, CoolEdit 2000, WinMege, VLC, Word, Excel, Winamp, and Audiograbber are the “killer apps” for me on Windows.  Say what you will about Vista, for me it’s the most functional and stable OS available.  Windows 7 won’t be ready to take its place for another year or so (probably at SP1).

As much fun as it is to be able to run Windows in VirtualBox, writing code is a *LOT* better when I have three monitors to do it on.

A Solid Batch of Fixes

Thanks to reports from the pre-testing test and from actually trying to use the MUD as a player, I’ve taken care of a bunch of things.  Here’s the list:

— Fixed “look in object” command.
— Fixes to damage messages.  Sometimes they wouldn’t print thanks to a stray ‘\0’ (null) character.
— Kill message now shows properly.  Yet again, caused by a stray null character.  A remnant from the old C days.
— Improvements to name capitalization in prompts, descriptions, and room entry/exit messages.  Some things will still need adjustments, but it’s better.
— Fixed “no help on Grey Elf” during character creation.
— Fixed display of spell schools when using the “spells” command.
— Fixed a nasty bug that would cause a newly-killed player to become unplayable.
— Picking up items should work now.  Zone files weren’t synchronized with code (zone files were a version behind in the zone format).  That can cause all manner of weirdness, but the fix is simple — run the zone converter to build a new set of zones.  In this case, flags that included “takeable” settings were missing.
— Corpse creation should be less broken.  Can’t promise it’s perfect, but it’s better.  At the very least, I can kill things and loot coins from corpses.

Those are some pretty significant fixes, but I’m still no more than 45% through the things mentioned during the test.  Add to that the fact that I found a few other things that need to be looked at.  Actually PLAYING a game you’re working on does wonders for figuring out whether it works as intended.

Another Editor Update

Two zone editor updates in 24 hours — I’m on a roll here.

Here’s what’s changed in version 0.42:

— Select list dropdown now updates its text on navigate (< and >) for all object types.
— Fixed a save-on-navigate issue that caused some information loss.
— Set edit windows to have controls disabled when no items exist for editing.  This will prevent editing empty objects (which there would be no way to save).
— Can now delete items of all types, not just mobs.
— “Known Issues” has been added to the help menu.  It will show what I know is broken.
— Use flags and wear flags on objects can now be edited via the flag editor window.

You can get it here.

An Update To The Editor

I admit it.  The last release of the zone editor (0.40) was pretty much unusable.  This one (0.41) should be quite a bit better.

Things fixed/improved in this version:

— Will now rebuild item select drop down list on create new items for all types.
— Resets, shops, and quests now save current item on navigate forward/backward.
— Current edit window contents were not saved when clicking “new” for all types.  They are now.
— Rooms and objects would not autonumber.  They do now.
— Update status bar on add new items for all types.
— Fixed crash on clicking greyed out ‘edit special’ buttons.

Ignore the little brown boxes that show up on the map window.  I started working on map generation from the room list, but it’s nowhere near done yet and will look completely wrong for now.

You can get it here. Feel free to report any bugs/glitches/inconveniences. One known issue is that the “delete” buttons aren’t functional yet (if you create a room, shop, or obj you’re stuck with it for now :P)

I Must Be Cursed

It’s bad enough that I can’t run Windows natively on either of my computers. Well, now the Vista virtual machine on my laptop is hosed up and bluescreens on boot up. This wouldn’t be such a big deal, but that VM has the most recent version of the Basternae codebase. If I can’t get it working, I lose 2-3 days of work, including all of the changes/fixes for the test that I posted about a few days ago.

Does this mean that my WinXP laptop at work is next?

Test Port Turned Off Now

The experiment is over for now. I more-or-less have the data I was looking for — what the most major issues are, where the crashes happen, what’s super-broken, and what needs a lot of work.  If you have any other results from your experimentation, feel free to send them to xangis at the yahoo email service.  Thank you for what you’ve sent in so far.

The main crashy issues have to do with object deletion and some odd who list thing.  I’ll have to get those sorted out before the next test, whenever that is, but it shouldn’t be too tough.

After this batch of issues is worked out I’ll have to think about finding someone to be zone chief, and/or someone to be the highfalutin’ potentate of overlorditude.

Removing Hard-Coded Rooms, Objects, and Mobs

The old codebase had plenty of references to hard-coded room numbers. For instance, “Limbo” and the “default start room” for races without hometowns were set to room number 200.

Well, having those etched permanently into code is a bad idea, since it ties you inextricably to certain specific area files, and more importantly, it forces “zone gods” to dig into code if they want to change some things with how rooms are used. Bad idea.

The interim solution I’ve come up with isn’t great, but it does at least take the specific numbers out of code. I’ve created some XML files that load at boot time: StaticRooms.xml, StaticObjects.xml, and StaticMobs.xml. They contains a list of room, object, or mob names and their numbers, storing them in a Dictionary type. This makes it easy to refer to “ROOM_NUMBER_START” or “ROOM_NUMBER_LIMBO” in code and not worry too much about where it actually points. Of course, those names are still hard-coded, but at least they can be administered by non-programmers now.

I’d like to have them load dynamically as part of the zones, but there’s a bit of a problem there — some bits are just far too tightly integrated, especially things that revolve around locations, such as shifting to the astral or prime material plane. Those problems are better tackled in a future design change. This incremental improvement is good enough for now.

A Batch of Fixes

Between tester reports and the logs I’ve managed to track down and fix a handful of issues, some of which were so nasty as to make things untestable.  Here’s the list:

1 – Fix for removing an object from a room when that object points to a room but the room does not have the object in its content list.
2 – MUD now automatically creates player directories on boot if they don’t exist.  There was a problem with saving players when that dir didn’t exist yet that caused at least one crash.
3 – Changed “_name” to “name” at the login prompt.
4 – Fixed a crash bug that caused the world to explode when some spellcasting classes (i.e. Psionicist) entered the game for the first time.  It was a problem with setting initial spell proficiency values.
5 – Fixed a problem with the way age and total playing time was calculated.
6 – Fixed a problem where the petition command would make the MUD explode by calling itself.
7 – Fixed a problem with “get all”.
8 – Fixed a problem with clearing a mob’s hate list when it is killed.
9 – Fixed a glitch that would occasionally come up when taking an object out of another object.

Please try again and keep the observations coming.

InnoSetup Is Most Excellent

For a couple months back in 2003 I had a full-time job doing nothing but building InstallShield installers.  It was a pretty arduous process even for simple applications.

I wanted to build an installer for the Basternae Editor, which is a very simple program in that it doesn’t need any registry entries, license keys, services, or database objects.  It’s just data files and an executable.

This means that I really didn’t want to fire up my ancient (2003) copy of InstallShield to build an installer.  Instead I decided to give InnoSetup another chance.  I had tried it back when it was “brand spankin’ new” and didn’t really care for it, but that was a very very long time ago (before 2003).

I downloaded Inno Setup 5 and within minutes I was building an installer for the Basternae Editor.  I just ran through the wizard, added my files and executables, and fired it up.

Well, things were a little off on the first try — I wanted to run my app from the /bin directory and not the root program install directory.  Easy enough, the paths were right in front of me and I changed “{app}” to “{app}\bin” where it needed to be changed.

Next I found that it wasn’t using the executable’s directory as the working directory.  Yet again this was easy — I just added WorkingDir: “{app}\bin” to the icon setting and I’m good to go.  Total time spent building the installer, including Google searches and test install/uninstalls was about half an hour.  Nice.

The true test is whether it’s easy to maintain an install script.  I made a new build of the Basternae Editor today and wanted to update the installer.  The editor had no functional changes, just icons added to the menu so it’s a little clearer what button does what.

So I fire up InnoSetup, change the version at the top of the script from 0.39 to 0.40, hit “compile” and let it do its magic.  Seconds later I have a working install.  The best part is that this install cleanly installs over the top of an existing install, updates the listing in add/remove programs, and is COMPLETELY HASSLE FREE, a concept that was pretty alien to me given my InstallShield and WISE Installer experience.

So, here’s the new build of the Basternae Editor: