Category Archives: Areas/Zones

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:

Akyura
Alachest
Baghtru
Beretorn
Clavados
Cy
Denel
Dregeath
Drevarr
Drokal
Dryn
Drzx
Dubar
Gharl
Gnosha
Ilshad
Iris
Kolut
Khiba
Kuldrim
Lortar
Losh
Malthrix
Parkan
Pesto
Phreak
Raliq
Sarlac
Scipio
Sjad
Ski
Sniktiorg
Talos
Threnody
Thugan
Timken
Trask
Trika
Xueqin
Zaeru
Zileas

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 basternae.org 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.

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)

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.

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:  http://www.basternae.org/Basternae3EditorSetup_v0.40.exe

Basternae 3 Test Port Currently Running

I have a test port of Basternae 3 running on basternae.org port 4502.  This is only temporary for the purpose of testing.

Here’s a list of things that need to be tested.  Feel free to spend as little as 1 minute testing, or as long as the server is up.  I only plan to have it up for a few days or less.  Please report any results to xangis at the yahoo dot com email service.  One big email is far better than lots of little emails.  Also let me know the name you’d like to be listed in the credits as (up to you whether you want to use your handle/nickname or your real name).  As I receive testing reports I’ll post what sections of this list have been covered so there’s not too much overlap of effort between testers.

1. Tester: Create one character of each race and one of each class to make sure that:

– The help file/info is displayed properly for each race and makes sense.
– The help file/info is displayed properly for each class and makes sense.
– The character creation process is logical, sensible, and user-frieldy enough that someone who has never played a MUD could make sense of it.
– Nothing weird happens.
– Nothing looks too un-customized.
– You actually start in the Kobold Village instead of a room with no exits.
– Text formatting glitches are under control.

Report any ideas/suggestions/observances during the process.

2. Tester: Check help entries for all commands and report any that don’t exist.

The “commands” command will give you a list of the commands available.  “help <command_name>” should display the help for that command.

3. Tester: Check help entries for all skills and report any that don’t exist.

Type “skills” to show the skills available for your character.  “help <skill_name>” should display the help for that skill.

4. Tester: Check help entries for all spells and report any that don’t exist.

Type “spells” to show the spells available for your character.  “help <spell_name>” should display the help for that spell.

5. Tester: Test all spells available to you and report any that don’t work.

Until I have the “auto advance to max level” stuff going there’s not a whole lot you can test with this.  In addition, spellbook/scribe classes will have trouble.  Just do what you can.

6. Tester: Try all commands without arguments and report any that malfunction, fail to give any feedback, give badly-formatted responses, or give responses that look like a stock codebase.

For instance, try “score”, “attributes”, “who”, and any other commands shown when you type “commands”.

7. Tester: Try all socials and report any that malfunction, print output that is garbled or nonsensical, or looks like a stock codebase.

Type “socials” to get a list of the available socials.  Then try these different combinations with each social:
<social_name>
<social_name> me
<social_name> <some_mobile_in_the_room>

8. Tester:  Try combat and see whether you’re able to successfully kill a mobile.  If anything strange happens, report it.  This includes messages that don’t make sense, like getting kicked by a creature with no legs, bitten by a creature without a head, etc.

During the history of Basternae (1 through 3) there have been issues with combat round timing, corpse creation, and deathblows.  I’d like to identify any of those as early as possible.

9. Tester:  Try combat and see whether you’re able to successfully get killed by a mobile.

During the history of Basternae (1 through 3) there have been issues with combat round timing, corpse creation, and deathblows.  I’d like to identify any of those as early as possible.

10. Tester: Log in with two characters and see whether you can successfully kill another player in PvP combat.  If anything strange happens or if you’re unable to fight another player, report it.  Try with characters on the same racewar side (i.e. Troll vs. Ogre) and with characters on opposite racewar sides (i.e. Dwarf vs. Orc)

There’s all kinds of extra logic involved in PvP combat and there’s plenty of room for weirdness.

11. Tester: Check help entries for all bard songs and report any that don’t exist.

This assumes you’ll be able to create a Bard and that they actually have songs defined..  I haven’t tried.

12. Tester: Walk through a zone looking at mobiles, objects, and rooms and report anything that is formatted weird or doesn’t display properly.

Although issues of that nature are usually zone file related, it’s entirely possible that with our entirely-new socket and text formatting code that something will look wrong.

13. Tester: Download the Basternae client and try using it with Basternae 3.

It’s available here:  http://www.basternae.org/BasternaeClientPreview_08-04-09.exe

I know it’s only barely functional (none of the extra windows do anything yet), but it’d be nice to get a little feedback, and to know what it would require before you’d consider using it as your main MUD client (if you’d consider using it).  And, of course, if it doesn’t run on your main OS that’d be nice to know too.  It’s probably worth running it side-by-side with another MUD/telnet client to make sure that text comes across OK (it’s entirely likely that the text parser isn’t 100% right).  If anything looks wonky, screenshots might be helpful.

14. Tester: Download and try to use the Basternae zone editor and take note of what parts of it are confusing and/or unclear.

The basternae editor can be downloaded here: http://www.basternae.org/Basternae3EditorSetup_v0.39.exe

There isn’t any documentation for the zone editor yet, so it might help to have some input as to what a new zone writer would want to know how to do and what guidelines should be made clear.  If you’re feeling really brave you could write a basic conceptual overview or intro tutorial.

The editor currently only runs on Windows and requires the .NET framework (you’ll already have it if you have Windows).

15: Tester:  Download the Basternae zone editor and try creating a 2-3 room zone with a mob, a quest, and an object.

Just try it out and see if it works, offer usability suggestions, and/or report anything weird.  Once you’re done, send me the test zone and I’ll see if it actually loads in the MUD engine.  Quality does not count — this is only a test.  You could create an entire zone if you want to, but I don’t recommend it until after these tests are done because there could be some breaking file format changes.

A few things to be aware of:

The code was written and compiled on Windows and is currently running on Linux under Mono.  Since Mono doesn’t have full support for everything in .NET there’s a chance something will go haywire at some point.  While doing some initial testing a few weeks ago I saw CPU usage on the server spike to 100% for no obvious reason.  If this happens, I’ll have to kill the process because I have about 15 or so other sites running on the server and I can’t let them be taken down.

I’m sure some of these tests will not really be able to be run effectively without some code changes/fixes.

THIS IS NOT A FULLY FUNCTIONAL MUD.  THIS IS JUST SO I CAN BUILD MY “TO DO” LIST OF THINGS THAT MUST BE FIXED OR REWRITTEN.

Integrating Python?

One of the things I’ve been worrying over is how to write a new scripting and artificial intelligence engine that integrates all the buttery goodness and capabilities of MobProgs and the homebrew probability-based AI system I wrote for Basternae II along with the only-used-once movement scripts I put together. They were all pretty powerful, but the bad things are/were:

1. Too many pieces of code to maintain.
2. Required a programmer’s full attention — far too complex for a zone writer or newbie-level web scripter to use.
3. Always required a recompile if changes were made.
4. Always required a reboot to load new changes. This made it un-tweakable. Want a mob to cast fireball half as often? Change it and reboot the MUD.
5. Extremely zone-dependent. If we unload the plane of fire, we still have all of the plane of fire scripts active, including hard-coded mob names and numbers.

It definitely shouldn’t require a restart of the game just to make a troll kick someone in the head more often. This naturally leads me to Python and/or IronPython, since it’s my current obsession. I have some reading to do, but don’t be surprised if I come up with a scripting engine of pure awesomeness.

First Zone Editor Preview Version

Here’s the first view of the Basternae Zone Editor available for download:

BasternaeEditorPreview1.zip (download removed, see the post about preview version 2)

Some warnings:

1. This is a pre-release version and it’s entirely likely that it will be unstable and lacking in features.
2. It has no help files.
3. It has no icons for the edit window buttons — just colors.  You have to guess what they do.
4. The map edit and walkthrough edit modes are not done yet (and haven’t been started yet either).
5. Save your work often and keep backup copies.

This is just to download, play around with a bit, and get a feel for.  I don’t expect that the area file format will change in a way that will break zones created with this editor, so you can actually start trying to use it to build something.

Check it out, see if it’s usable, and feel free to make requests, bug reports, or just say what would make you more likely to want to use the tool to create a zone for the new Basternae.

Rewiring The Core

In the process or getting an alpha version of the editor ready I’ve found that I had to separate the game code, a.k.a. “business logic” from the data, a.k.a. “object model”.  Otherwise I’d have to include the entire MUD engine in the editor download.  Since that’s not something I want to do I’ve had to pull them apart.  It’s a lot like pulling apart a cold grilled cheese sandwich, and as expected, the bread did tear a little.

The “core rewire” still needs some work, but I should have an “alpha”, a.k.a. “try it and see how broken it is or isn’t” version of the zone editor out sometime this month.

Basternae Zone Contract

I’ve put together a simple “zone permission contract” here:
http://www.basternae.org/BasternaeZoneContract.pdf

It’s probably not necessary, but while I was publishing my science fiction magazine I found it to be a good idea to get everything in “official” writing.

If you have written any zones you’d like to let us use or know someone who has, this can be sent either to my xangis at yahoo mail account or to the following mailing address:

Jason Champion
Zeta Centauri, Inc.
1388 Clydesdale Ave.
Columbus, OH 43229

An Upgrade (For Me)

It’s been a busy week at work — just got myself a promotion and haven’t had a chance to work on the MUD as much as I’d like (more tired in the evenings than out of time, really). Most of this week’s effort has been directed toward the editor.

I’m wondering whether it would be a better idea to release a prototype of the editor to get ideas and suggestions or wait until it’s pretty much useable before releasing it.  It’s probably a difference of about 4 weeks in time/effort.

Automatic Line Wrap

When writing a zone, it can be tough to know where to end your lines of text.

While a standard terminal has 80 characters, some telnet programs start to look weird with any line that is more than 77 characters, and some terminals have 130 or more characters per line (usually depends on screen resolution).

With different zone writers writing descriptions with varying line lengths it can make the MUD look pretty inconsistent from zone to zone.

That’s why I wrote an auto-wrapping function that takes care of all of that.  It will take a description and insert line breaks as necessary.  Right now it just defaults to a 78-character terminal width, but it will be user-configurable when I’m done with it.

This means that zone writers don’t have to worry about line breaks anymore.  They can just type out their descriptions and it’ll be handled by the MUD.

Word wrapping still isn’t perfect, so I’ll need to work on that a little, but it’s pretty neat to have autowrapping in place now.

Tweaking The Zone Converter

In working on the new zone editor I noticed that a few things seemed a little off in some of the test zones I was working with.  As much as I would like to blame the editor, since it’s new and untested, it turns out that the zone converter had an issue with race conversion between Basternae 2 and 3 zones.   It was a relatively simple bug, but it was one that made all converted zones look a little stupid.  Being simple, it’s been fixed with minimal effort.

Now that the converter is working pretty well I’m pretty comfortable with accepting zones that were on Basternae 2 if anyone is willing to give permission to use them.