Monday, July 10, 2006
Monsters Old and New
Another weekend down, another session of assorted tweaks and improvements.
This time, I focused on improvements and additions to the monsters themselves, and to their dispensing patterns. The latter is mostly a tweaking exercise, nothing too interesting. It's just a matter of pushing around my threshold numbers for easy, medium, and hard monsters, and working up the range for the random numbers. Right now, my scheme is to pick a random number from 0 to 40, then add +1 to it for every 5 monsters that have been summoned. If the random number comes out less than 40, summon an easy. Less than 55, summon a medium. Otherwise, go with a hard monster. As you can see, all of these numbers can be changed to vary the types of monsters that appear as the game progresses. Ideally, I'd like a barrage of easy monsters for the first minute or two, then a gradual increase in medium monsters for another few minutes, finally fading into hard monsters after seven or eight minutes. (Monster rate is something like two every 6 seconds, on average.) This is all pretty fuzzy, though. I've arbitrarily picked five minutes as a typical game duration for a moderately skilled player. We'll see how that works out.
As for the monsters themselves, that's mostly been a matter of changing their movement patterns. I have modified the Coffee Zombie such that it moves in a random, hyperactive jittering pattern. This seems fitting, and makes it quite challenging to deal with, especially at close ranges. It doesn't seem to be as effective at dealing damage to a stationary target, but it is quite effective at blocking escape and preventing players from "threading the needle" between two monsters.
Similarly, I've added a sinusoidal component to the Wraith's movement. The sidestep direction is based on its current facing. So, when the player is directly in front of it, it moves in a side-to-side motion as it approaches. However, the movement when a player runs past it is unexpected. Since the creature takes a moment to turn to face the rapidly fleeing player, it has a 50-50 chance of sidling into him as he passes (if the sinusoidal offset is currently in that direction). Then, as the Wraith turns, the path becomes a smooth arc before settling back into the side-to-side motion again. The net result is very hard to anticipate, and can be lethal for the player who passes too close. This behavior also forms nifty synchronized ballet when they're in large groups.
I've opted to leave the behavior the same for the other walking monsters (Ankle Biter, Newbie Zombie, Vampire, Skeleton). The straight-line behavior still fills some gaps that the varying movement types might miss. And too much oddball movements makes the whole mob appear random and purpose-less, especially when coupled with the collision avoidance routines talked about before. That, and I'm out of ideas for movement types.
Well, almost. I was able to whip together a first pass at a Rover from "The Prisoner." It's simply a big, white ball that bounces toward the target. But I'm having a little trouble keeping it in the arena. It may simply be a matter of excessive speed, but I kept finding the prototypes bouncing around on the roof. And the over-exuberant collisions would often send the player back several steps. I hope that a general reduction in speed will fix both issues.
I've also introduced a couple more monster types. On the left is the Mummy. The avatar was made by Tod69 Talamasca of Living Dead Skins. It's probably a good thing I didn't discover Living Dead earlier, or the zombies would be considerably more gruesome than they are now. Tod69's zombies are stomach churning, with exposed muscle and bone, not to mention considerable signs of rot, decay, and gangrene. Quite realistic (if such a thing can be said for a zombie), but I think I prefer the green-skinned, but otherwise whole, zombies. It's more in keeping with the tongue-in-cheek nature of the game. I'm going to have to give some serious though to whether the mummy is too gruesome. I may have to re-cast him.
The Mummy is another easy, straightforward walker. It uses the same mechanics as the Skeleton. The main difference is it comes into play with existing damage. So the difficulty is somewhat variable. Not a massive change, but it at least gives a little variety.
On the right is the Old Soldier, a Hard difficulty monster. The outfit is a mix of three or four different store-bought and freebie army uniforms. I opted to give him a little more dignity than the other zombies, and used the more world-weary sounding moans from my ever-growing zombie sounds collection.
I'm still not 100% happy with his behavior. Offensively, he periodically stops to fire a short burst of two to four bullets at his chosen target. This seems to work well enough, although calculation delays hurt his accuracy somewhat. I'm still streamlining this a bit, in hopes of making him more effective at leading the target. Movement-wise, he is a little odd. He moves into range (between 8 and 16 meters), then sidesteps until he moves out of range again. The net result is a saw-toothed orbit around the target player. When he collides with an obstruction (such as a wall or another monster), he reverses his sidestep direction. This all works fine, and is difficult to track. But it lacks a certain dignity. He seems to spend half his time wobbling or bouncing as he suddenly changes directions. Not really satisfactory. Unfortunately, the only solution I can find is to slow him down. This may be appropriate, I suppose, but it also makes him easier to hit. Needs work.