Author Archives: xangis

Client Work

John Baker has delivered a new set of artwork for the client and I’ve spent some time working on integrating it into the code.

What I’ve discovered is that the client code is rather brittle and prone to explode.  It will need some significant work before a new version is ready to release.  Testing with valgrind has helped a bit, but it still requires some heavy lifting to get right.

I started working on the client 6 years ago, long before I knew C++ very well (I’ve known C a lot longer, but it took a while to get the hang of C++ and the OO world).  The client was originally written to use the Simple DirectMedia Layer (SDL) and has had some bizarre things done to it over the years.

So — there are significant changes coming with it, but no idea when they’re coming.

Minor Data Fixes

I finally got around to taking care of two things that have been bugging me for a bit.

1. Every boot the MUD would reset the time/day/year to the first day of the first month of the first year (time zero).  Now time continues across reboots.  No more Groundhog Day.

2. The current, maximum, and record number of players data was not being kept correctly.  It is now.

They haven’t been deployed to the server yet since I’m in the middle of reworking the map engine on both the client and server for the new graphics, but when that’s done those two fixes will ride along.

Stuff After Death

Lyran mentioned that it’d pretty tough to do anything after dying above level 5 for complete lack of equipment.  I added a toggle that lets players start with newbie equipment every time they die no matter what level they are and turned it on.

Newbie equipment isn’t exactly a huge advantage, so it might be worth leaving that on permanently.  It’s bad enough that you lose your sword +5, no reason you should have to walk around barefoot with no pants on.  A level 6 adventurer shouldn’t find it too hard to scrounge up 2 silver pieces worth of equipment anyhow.

A Dozen More Spells Working

These spells were made to work today:

Water Elementalist

* Blending
* Minor Blending
* Tide of the Seas
* Water Bolt
* Dispel Magic

Air Elementalist

* Coldshield

Earth Elementalist

* Dirt Cloud

Fire Elementalist

* Fireskin
* Fireshield

Paladin

* Judgement

Anti-Paladin

* Apocalypse

Cleric

* Soulshield

C#: Compiling For 32-bit Systems on 64-bit

I recently upgraded from 32-bit Vista to 64-bit Windows 7.  I may be one of the only people who didn’t have anything bad to say about Vista.  For me it was a huge step up from Windows XP, but since I have 6GB of RAM in my system it’s a little silly to run a 32-bit OS.

I understand the differences between 32-bit and 64-bit C++ code behavior quite well, but I really haven’t spent any time digging into the differences between 32-bit and 64-bit .NET IL code.  Apparently it’s all quite a bit simpler in managed code.

Just right-click on a project, click properties, click on the build tab, and then select “x86” under “Platform Target”.

Ubuntu 10.10

I’ve been using Ubuntu as my main Linux distribution since 2005.  Not that I used it that much, but not until 9.04 was it good enough to use as my main laptop OS.  Before that I just ran it as a virtual machine or on spare pieces of junk lying around.

It’s been getting prettier every update, with the exception of 10.04, the update that put minimize and maximize buttons on the wrong side of a window in emulation of MacOS.  To me MacOS has always felt like a clunky, thrown-together, visually distracting OS that makes it very annoying to get anything useful done — BSD UNIX from 1990 with a few coats of paint sprayed on.  Luckily it’s just a quick config setting to put the buttons back where they belong.

The latest, 10.10, changes its primary font to something that almost looks a little cartoony compared to the previous font, but after spending a few days getting used to it I really like it.  It’s crisper, cleaner, and smoother, but it does emphasize how poor some of the web fonts are that it ships with, especially Arial, which is far too wide compared with its counterparts on Windows and OSX, and Times New Roman, which is so thin and weak that it’s hard on the eyes.

Canonical has accomplished their mission — they’ve made Linux a usable desktop OS.  In the process they’ve dragged others kicking and screaming into the future.  Fedora, for instance, has improved its look greatly ever since Ubuntu started making them look bad.

I still prefer Windows 7, but if I have two systems I’ll take one of each.  Each one has better apps for certain tasks and I can get more done with access to both.

A Bunch of Spells

Nearly three dozen spells were made functional today:

Air Elementalist

* Airy Starshell
* Hypnotic Pattern
* Telekinesis

Cleric

* Create Water
* Detect Poison
* Group Heal
* Know Alignment
* Silence
* Turn Undead

Druid

* Analyze Balance
* Harbor of Balance
* Twilight

Earth Elementalist

* Earthen Starshell
* Earthen Tomb
* Stornogs Spheres

Fire Elementalist

* Fiery Starshell
* Group Globe

Illusionist

* Cowardice
* Demi Shadow Magic
* Dispel Invisible
* Hypnotic Pattern
* Mirage Arcana
* Mass Invisibility
* Misdirection
* Phantasmal Killer

Necromancer

* Cloak of Fear
* Heal Undead
* Protect Undead

Ranger

* Dazzle

Shaman

* Greater Ravenflight
* Greater Sustenance

Sorcerer

* Infravision
* Meteor Swarm

Water Elementalist

* Adaptation
* Watery Starshell

In addition, some immortal commands were improved to make development easier and some “to caster” spell messages that were previously not shown are now shown.

Damage type vulnerability, which had only been partially implemented, is fully functional now.

Opera: My New Favorite Browser

For the longest time Firefox has been my favorite browser, with Internet Explorer second.  Firefox was the most user-friendly and where FF didn’t work very well or crashed, IE was always a reliable fallback.  I don’t mean IE6.  That was an exploding turd.

Other than consuming more memory and CPU, over the past few years Firefox hasn’t really improved at all.  It hasn’t become more user-friendly, more stable, or more fun to use.  That’s not really a problem — it’s always been perfectly usable — but it’s left room for other browsers to pass them up.

Well, not everyone is as inept as the developers of Konqueror.  Doing some memory and CPU benchmarking for work led me to try a few browsers I hadn’t spent any time with before — Opera, Safari, Seamonkey, Aurora, Epiphany, etc.  For the most part they were just your average Webkit-based or Gecko-based cookie-cutter browsers without much going for them.  Except Opera.

I only spent a little while with it, but for the purposes of the project I was working on, it was the most consistent across operating systems (Linux, Windows, MacOS), most consistently standards-compliant , and most reliable.  I used it enough that I got used to the interface, which is nice because it just gets the hell out of the way and leaves plenty of room for the sites its displaying.  Even better, the behavior and options (open in new tab vs. open in new background tab, search bar has ‘paste and go’ option, etc.) cater precisely to the way I want to use the web.

I really like the Internet Explorer 9 beta and it’s better than any IE yet, but it doesn’t make the greatest use of screen real estate.

I’m sold on Opera.  I’ve made it my primary because it’s the best choice if you use multiple operating systems.

A Few Spell Fixes

I think I remembered what I was working on — spells.

Ten more spells were made functional today:

Air Elementalist

* Chill of the Windsaber
* Hurricane

Cleric

* Destroy Undead

Druid

* Sunburst
* Sunray

Illusionist

* Shadow Magic

Psionicist

* Detonate
* Neural Fragmentation

Shaman

* Greater Mending

Water Elementalist

* Tidal Wave

Visual Studio 2010

Three months ago I switched from Visual Studio 2008 to Visual Studio 2010 as my main development environment.  Functionally it’s the same as it’s always been, but there are two things about it I consider great improvements.

First, the UI:  It looks so a lot better and cleaner than earlier versions.  It’s not that older versions were ugly, but it has a cleaner look and is much easier on the eye.

Next, C++ Development:  For the last few versions of VS, C++ developers have pretty much been shafted — no real feature improvements for the most part with all the love going to C#.  C++ received a major boost, gaining just-in-time compilation and error-detection intellisense almost exactly like C# has always had.  It doesn’t sound like a big deal, but it is excellent for speeding up the code-compile-fix cycle.

Only a small portion of Basternae code is in C++, just the client and the Basternae 2 to 3 zone converter, but it is a lot more pleasant to write with Visual Studio 2010.

This project started on Visual Studio 2003, so now we’ve been through four versions.

Now Where Was I?

OK, now that I’ve travelled halfway across the planet, built a good bit of software for a startup (not done yet, but it’s settled down to a saner pace), and unpacked a ton of boxes, it might be a good time to start working on Basternae a bit more.

Except…  I can’t remember where I was and what needed to be done (or priority levels for things that need to happen).

So, could someone go ahead and log into the MUD and tell me what the heck I need to work on?

Basternae.org port 4502.

Seriously, I could use a project manager.  Anyone want to volunteer?

Silicon Valley Is The Best Place In The Universe

I’ve been in California for two weeks and already have two job offers, at least one of which offers a six-figure salary and is a company you’ve definitely heard of, and I’m likely to get a third offer within the next week.  I know which one I’m going to go with (hint: it isn’t the one that pays the most), but it is awesome to be in a place where my skills will be appreciated.

If I were still in Ohio I’d likely have to work somewhere that would involve cranking out WTF-worthy ASP.NET pages all day.  I’d rather live under a bridge, thanks.  Too bad Ohio doesn’t have very good bridges.

Funny thing is, I don’t really care all that much about pay and benefits at a place where I work.  I’m more interested in finding a problem that’s so hard I’ll have to throw my whole brain at it.  Not having to waste time shoveling snow and scraping ice off my car windows makes for more time to brain at hard problems.

Help Entries Improved

When the help file entries were translated from a text file to our fancy help entry format, the line spacing in each entry was converted from single to double.  It was just a quirk of XML serialization, but it made for long, spammy entries when helps were displayed.  I had gone through and cleaned up one or two hundred of them, but there were about four or five hundred more to go.  I spent a while going through the rest and removing the extra newlines where they weren’t wanted.  It would have taken forever if not for the help editor tool, but thanks to that it only took half an afternoon to clean them up.

Another thing that was a nuisance about the help system was that it would match and display every entry that matched the entered keyword.  If you typed “help heal” you’d get the entries for the spells heal, group heal, full heal, and mass heal.  I’m not even going to say how many entries you’d see if you typed “wall” or “fire”.  While it was intentional that a general match would take place, i.e. if you did “help wall” you’d see all of the help entries for wall of fire, wall of stone, etc., the unintended consequences were that you’d see extra entries even if you had an exact title match.

That’s been changed, so now when you type “help wall of fire” or “help heal” you’ll see the exact entry you were looking for, while you’ll still see multiple entries if you were doing a general query like “help fire” or “help wall”.

Go ahead, log in and play around a bit and see what you think of the way help is organized and how it works now.  Let me know if you see anything wacky or see a way to make it more useful.

Editor Version 0.56 Update

Working on a zone always results in editor improvements, so here’s what we get this release:

* Changed the error window shown for “Check Area” to a scrollable list so all errors can be seen.
* When items in the list of errors found by “Check Area” are double-clicked, the object, room, or mob will open in the edit window so you can change whatever the area check complained about.
* The map window is now refreshed when “apply” is clicked in the room editor so we see the room change color when the terrain type changes.
* The map window is now cleared if there was an area loaded when File –> New is used to create a new area.
* Added a “New” button to the exit edit dialog so new empty rooms with reciprocal exits can be created from the exit editor.  This will be easier than creating both rooms and manually creating an exit in each room pointing to the other.
* Added more content to the help file.

Grey Elf Hometown Layout Finished

I have the general layout of the Grey Elf hometown finished now. There’s a lot of work still to do — room descriptions, shops, mobs, objects, etc., but the layout is done and the repopulation points have been set.

Here’s what it looks like:

Now In California

I’ve escaped Ohio. Right now I’m living in San Jose, CA and it’s a vast improvement so far. Hopefully development on Basternae 3 can resume soon, work and life arrangements permitting.

Editor Version 0.55 Update

I spent a little while working on the Grey Elf hometown today. That sort of thing always results in editor changes. Version 0.55 was released today with these two changes:

* Added the “Check Area” command to the tools menu. Right now it only checks for missing descriptions on rooms, objects, and mobs.
* Added instrument type selection for the edit values screen when editing instrument objects.

Some Text Fixes

I made a couple minor text fixes, the most noticeable of which was a map rendering glitch that would cause mobs to show up as P’s and the map to be strangely distorted in the client.

I also released a minor update to the client (now version 0.18), with a map fix and a couple window focus improvements.