Yesterday, Psychomancer 1.0.7 was released, which coincided with the ten year anniversary of the release of the Linux version of the previous version -- 1.06. As mentioned earlier this year, a number of older projects are being cleaned up and retired. Psychomancer was one of the earliest Edenwaith products, but it has been largely ignored for the past decade as newer Mac and iOS projects took precedence. However, before retiring Psychomancer in its current incarnation, a little love needed to be shown with one more update. Over the course of the past two months, Psychomancer was updated with 150 new features, improvements, and bug fixes. This represents the largest set of changes to the game since the original incarnation of the game in August 1999.
Before sending off Psychomancer, let's reflect on how things have changed since the last significant update. In 2002, Psychomancer was still being developed under Digital UNIX, the same platform where it was born in 1999. 2002 and 2003 extended the range of supported platforms to Mac OS 8, 9, X, Linux (x86), and Windows 9x - XP. Strangely enough, Windows XP is one which is still relevant in its same incarnation as it was years ago, whereas (Mac) OS X has undergone quite a few transitions since then, the most noteworthy change being the switch from PowerPC to Intel processors.
The first early versions of Psychomancer 1.0.7 had been organized under Project Builder on Macs running Mac OS X 10.1 and 10.2. Since I no longer have any computers running those versions of the Mac OS (however, my trusty PowerMac G4 is still running which supports Mac OS 9, Mac OS X 10.3 and 10.4), I had to convert the old Project Builder file using Xcode 2 before upgrading the project to Xcode 3. One primary goal for this update was to create a Universal Binary for both PowerPC and Intel-based Macs. Unfortunately, Xcode 4 dropped this feature, so Xcode 3 was necessary to be able to generate a Universal Binary. This project was built on a 2003 PowerBook G4, running Mac OS X 10.5.8 and Xcode 3.1.4.
Going through this game with a fresh perspective (since it had been so long since the last update), I found numerous areas for improvement from better descriptions, adding new features, and fixing bugs.
Improvements to each of the classes:
- Sorcerer: The Sorcerer received the least of the changes, but the Aura and Acid Burn spells were fixed and work much better, which makes the Sorcerer quite effective in battle.
- Elementalist: The Elementalist finds a skeleton key, which is used to unlock the chest in the Apothecary to find the Elixir spell. Before, the spell scroll was just laying on top of the table. Fire Spear now causes random amounts of damage, instead of a flat 7 LP. Fire Wind's minimum amount of damage has been raised from 10 to 15. The Elementalist also knows the Create BloodStone spell at the beginning of the game.
- Psychomancer: If playing the "short" version of the game, it is possible to re-enter the temple via the Temple With Statues at the top of the island. Fixed a bad bug where getting in a fight would cause an loop where the opponent would just keep casting Psychic Block over and over again.
- Spirit Mage: The Spirit Mage received the largest set of additions of the four with the addition of the Astral Shield and Death Wish spells. Like the Elementalist, she uses the skeleton key to open the Apothecary chest to get the scroll.
After playing Diablo 3, I took inspiration in adding more random events to increase the playability of the game by randomizing the potions found in the Treasury and adding additional random puzzle locks.
Upon going through the list of old and new bugs, I kept encountering odd issues with the inventory. Sometimes too many health potions would be added. Sometimes an item wouldn't be added. Other times, random items would just disappear from the inventory. I finally sat down and reworked the inventory system, based off of a linked list. This was an interesting (and somewhat fun) exercise to go back to code written thirteen years ago and figure out what wasn't working properly. All things considered, most of the code in this project was quite clean and organized. However, there were a couple of odd issues with adding and removing items from the linked list, which were finally fixed.
The largest bug I quickly encountered was that drinking potions didn't do anything. What the...?! I was quite surprised that issue hadn't been caught and fixed a long time ago. Fortunately, a quick fix, but an issue that should have never stayed around as long as it had.
And so, now, we bid Psychomancer a fond adieu. While this journey has come to an end, it does not mean that a new one cannot begin. One never knows. Perhaps someday Psychomancer will be converted to work on Z-machine interpreters. Perhaps it will be given a long-promised overhaul and be gain graphics and sound. Considering the popularity of mobile development in 2012, it would not be unthinkable to one day see Psychomancer on a phone or tablet. Or perhaps Psychomancer will end up in some other form entirely. Time will tell...