Friday, March 30, 2012

v0.906 released

Get the monthly drop at the SourceForge site. This wraps up most of the UI refresh for now. There's always more to do on that front, but I have some fun stuff to tackle next.

v0.906 (31 March 2012)
 - UI Refresh: main menu, character detail screens, all dialogs, mana display, level up, character creation, crafting items
 - Background music: main menu
 - Non-castable spells can now still be queried for their details
3277594: Random encounter interrupts NPC appearance
3497105: Linux .WAV incompatibility
3477638: Linux: Invalid display mode, again
3277593: Widget focus problem makes UI unresponsive
3277584: Early resurrection powders
3277581: More accessible loot in starting dungeon
3510779: EmptyStackException on quitting to main menu
3510781: NPX on save/load screen
3511270: Merge item invokes the second item
3495593: Implement item stack splitting

Thursday, March 29, 2012

It's a bug in OpenJDK

Or IcedTea. Or PulseAudio. Who cares. Linux users can run it on the Oracle JVM, or disable music.

Wednesday, March 28, 2012

Yet another Linux showstopper

Good thing I fired up that linux test VM, because the music playback crashes the JVM. At least, it does on OpenJDK on Ubuntu.

Unable to open the sourceDataLine: javax.sound.sampled.LineUnavailableException: unable to prepare stream
java: /build/buildd/openjdk-6-6b23~pre11/build/../pulseaudio/src/native/org_classpath_icedtea_pulseaudio_Stream.c:726: Java_org_classpath_icedtea_pulseaudio_Stream_native_1pa_1stream_1cork: Assertion `operation' failed.
Bam, game over.

The internet suggests that the bug is between OpenJDK and Pulse Audio. But we will see. Goddam leaky abstractions.

Tuesday, March 27, 2012

Gearing up for the monthly drop

Just the testing on Linux outstanding. Probably quite important seeing as we're playing .ogg now.

Actually I'm posting this to write down some things that I'm planning to tackle in the short to medium term.

Refactor Damage Resistance
I'm planning to split the single "Resist Damage" modifier into three: "Resist Bludgeoning Damage", "Resist Piercing Damage" and "Resist Slashing Damage". I got the idea from Frayed Knights, but it's been brewing a while anyway. This will make regular melee combat a bit spicier, and give a much needed chance to implement foes like skeleton warriors. Different weapon attack modes would deal different types of damage; bludgeoning for bash, piercing for thrust, and so on. Some niceties will be required, like a default damage type for a weapon (applicable for things like thrown weapons and backstab/snipe attacks).

I was never really big on the Music thing in the Wizardry series. Having had a few years to think about it, I think it's time to get it in there. The Music modifier will be one of those under the Magic heading. I have some ideas about how to bend the feature more to my liking, like more interesting backfire effects from an unskilled user. We will see.

Ditto on not being a fan of the Wiz8 Gadgeteer. The time has probably come to add such a feature. I'm undecided whether the Engineering modifier will be a Stealth or Magic modifier, how to make the functioning gadgets more interesting to me than Wiz8, and what to do about the Omnigun.

A laundry list of other things to go with this:
  • Adding an Alchemist class, now that craft recipes are starting to go in. Perhaps a magic focused class with zero or limited spell casting but much craft skill and various special abilities that enable him to rock with potions, powders, bombs and the like.
  • Adding a Gadgeteer class, once there is Engineering. Probably a stealth class with zero backstab/snipe, but with much engineering and something cool like the Omnigun.
  • Character personalities, like Wiz8, implemented without voice acting as in Frayed Knights. I'm starting to see this as a replacement for the character class knowledge.
  • Scouting. Time to add a similar detect-secrets ability to characters.

Tuesday, March 20, 2012

Fabled Lands republished

Holy crap, the epic Fables Lands game books have been republished!

Go and  buy them, now.
Morris and Thomson only ever managed to publish half of the planned books. With enough support for the new editions, perhaps the remainder will see the light of day...

Thursday, March 15, 2012


Since starting this project, I have developed new found respect for people that work professionally in game development. It's hard. Code is code, that's my industry and I knew what to expect. But developing art and sound content for a game is difficult and time consuming. Creating an entertaining plot and designing engaging game play is hard. Balancing an RPG is hard. Hell, doing the data entry into the database to create foes, items and especially zones is time consuming.

So, as the project wends its way along, collaborations others than myself were merely a matter of time.

Starting with v0.906, original musical backing tracks composed by the enigmatic Zazza will start appearing in Maze. Her dark, silky ambiances and haunting rhythms will bring an aspect to the game that has long been missed. Frankly, your humble author couldn't compose a simple ditty to save his life, and the game has been far better off with silence than any ham-fisted attempt of my own at music.

For v0.906 we probably won't have more than the main menu music in place. Ultimately I'd like the game to be as musically rich as Wizardry 8, but that's a very high bar to set.

Tuesday, March 6, 2012

Write once, debug anywhere

Finally I've got the much-procrastinated task of setting up a Linux test environment. Ubuntu 11 on VirtualBox does the trick, with Puppy Linux on the wife's old HP G7000 Laptop as a backup.

Right off the bat, two showstopping bug were easy to fix. Graphics and audio related oddities in the Java API, this despite the entire app being in 100% pure java and using no third party libraries other than what comes with the JDK (I am in the process of integrating JOrbis for music, but that's another blog post).

Inset a moderate rant about leaky abstractions here.

Clearly nobody has been playing on Linux, because these were non-starters. My apologies if you tried. v0.906, due out at the end of the month, will include these fixes.