Wednesday, June 28, 2006
Play Testing, Part 1
...Of 5,217, no doubt.
First, I want to send my thanks to Will Webb, both for helping me find all the bits that stopped working during the elevation changes over the weekend, and for putting up with my general ill temper and overall bitchiness during the process. (I meant to say this in Monday's update, but ended up getting sidetracked. Mea culpa.) Will has been indispensable as a beta tester and sounding board throughout this project.
Now, on with the update. Last night, I managed to squash a irritatingly unpredictable bug in the monster rezzing routines for the Garage of DOOM. Every once in a while, a monster would rez, and then just sit there staring straight ahead and doing nothing but block the rezzer. Vexing. Turned out to be a listen statement that was not triggering, in combination with the roll call system and the initial target information sent by the rezzer. Basically, I was a bit overzealous in closing off unused llListens. (Have to be lag conscious in the design of my scanning, chat-spewing, self-guiding physical monsters, don'cha know!) If the roll call information (the list of the keys of the current players) came through at exactly the wrong time (between the time the monster is rezzed and the key of the first target is sent to said monster), the llListen command waiting for initial marching orders would be killed prematurely (it is only supposed to listen for one command, then remove itself), and the monster would just sit there in standby.
I know, that's not terribly interesting, but it illustrates a point. I fully expect to run into all sorts of odd synergistic effects between the various systems. I suppose that's one of the hazards of this kind of build-as-you-go programming. I have all sorts of different subsystems doing any number of things at a given time, and it's often hard to tell what will interact with what. I really need to learn a little discipline in my programming, and plan these things in advance. But it's so much easier, not to mention more fun, to just wade in and start grappling with it right away.
Last night, I also did my first real play testing under realistic game conditions. This means playing the game straight, without Edit "God Mode" monster deletions and with a realistic number of power ups, until I die. Unfortunately, it appears that the game is far too easy as it stands now. Granted, I've got a bit of an edge, since I've been playing with it from the beginning. But even given that, it should not be possible for me to last 10 to 15 minutes without losing more than half my health.
As expected, this is going to be tough to balance. It would be easy to simply overwhelm the player by making rapid-fire swarms of unstoppable killing machines. And I'll definitely be nudging the game more in that direction. That was my intent all along, and it's only been my general timidity about LSL and simulator stability that's been holding me back. But the real challenge will be to make the game more difficult in an intelligent fashion. It's easy to cook the game to be unbeatable. It's harder to make it challenging, yet playable enough to encourage folks to come back.
I think one of the major issues is movement. As it stands now, many of the monsters move too slowly. I want that for some of them. Traditional zombies are slow, implacable horrors. But, as it stands now, most of my ghouls can be outrun at a walking pace, and none can keep up with a running player. Ideally, I'd like to tune the game such that a player is never given a chance to stand still and offload on one specific monster. Part of that is assured by the layout of the monster generators. There is no place a player can safely stand for extended periods in order to pick off targets from a distance. Ideally, fast monsters should move at a running pace (6 m/s), or perhaps a bit faster.
The other issue is damage. With the exception of the Jack o' Lantern (which explodes, damaging everything in a 7 meter radius), the monsters must be within a meter or so of the player to strike him. So it's easy for a player to use his superior agility to run circles around them. Ultimately, I'm going to have to introduce fiends with ranged strike abilities.
Enter the Old Soldier. He's a zombie type, slow moving and tough. But he's dressed in an old WW2 military uniform, and holding an M1 Garand rifle. He moves very slowly, and periodically stops to fire a few rounds of the same bullets fired by the player guns. This works neatly with the existing friendly fire system, and effectively removes the safety of range. (And if he manages to wing a few bad guys standing between him and his target, so much the better.) I'm thinking the Old Soldier will not use the conventional death effects of the other zombies. Instead, I think I will have him become dimmer and more transparent as he takes damage. Because, of course, Old Solders never die. They just fade away.
Ha! I slay me! More to come.