Monday, June 19, 2006
Game Status Report
First off, hello to everyone coming here from New World Notes. Thanks for sending folks my way, Hamlet!
Now, on with the status report. Sunday was a fairly productive day. I believe I have the HUD substantially complete. After nearly an hour of correcting stupid math errors and fiddling with floats vs. integers, I finally managed to get all three numeric readouts to update properly. I'm an engineer. I work with numbers every day. Math should not be this hard! Heavy sigh. Disheartening. Oh well, I'll be able to use the same tech for future projects, so I can't consider it time wasted.
Anyway, the numbers tick off quite nicely now. I also took the time to fix up the baked on shadows for the ceiling light fixtures. Nothing too sophisticated, especially by current SL standards, but I think it's sufficient. I was going for the washed out, grungy, monotonously-lit appearance of a modern underground parking structure. Mission accomplished, I guess.
My methods certainly weren't sophisticated, in any case. I just made a fuzzy rectangular blob in Photo-Paint, put it on a flat prim between an un-shaded ceiling segment and a prim fluorescent light fixture, and snapped a screenshot. The shading on the walls (the slight arc-shaped shading near the ceiling) and the columns (somewhat dimmer at bottom) was done the same general way. Sometimes the easiest methods are the best. Especially when your p-shopping skills are as rudimentary as mine.
I'm still trying to decide if I need further decoration to make the garage work. I probably should add some traffic arrows, assuming I can figure out how traffic flow would work in this messed up lot layout. I'm guessing the ghosts in the game are the enraged spirits of tenants killed in traffic accidents at the garage entry. There's a plotline for you: "The combined psychic onslaught of hundreds of angry, frustrated drivers a day tore a rip in the spacetime continuum, loosing the forces of evil upon an unsuspecting city..." Of course, if that kind of thing really happened, I can think of a couple dozen intersections, freeway interchanges, and mall parking complexes that'd be hip deep in zombies by now.
Come to think of it, most of the more successful shopping malls are already overrun with the shambling undead. Especially around Christmas. I should partner up with a butcher and open a special holiday BRAAAINS! concession stand at the Galleria this year. I'd make a mint! But I digress. Frequently.
There are technical and narrative arguments both for leaving it alone and for festooning it with graffiti. Technically, there's the matter of additional textures. And, given the load times for yet another max resolution texture (so they don't look fuzzy when stretched over a 10 meter wide prim), that's a real issue. But it would break the monotony of the uniformly painted, 60m long walls. I just don't know if I want the monotony broken. I can't decide if the sudden appearance of monsters is more jarring and disconcerting in a grim, rundown, graffiti-decorated building, or in a clean, well-maintained one. I suppose the look-and-feel details can wait until the mechanics are completed.
After some minor revisions to the monster damage tracking system, the Berserker Pack code is finished. Here's the visual effect. As you can see, a red filter has been added to the HUD. This filter is actually two counter-rotating, semi-transparent, mottled red prims. The net result is a slowly changing red film in front of the player's eyes (or covering his screen, anyway). Kind of like looking at a red lava lamp from three inches away.
But don't do that. You'll burn your nose.
A player goes Berserk for 30 seconds after picking up a Berserker Pack. The red filters expand (they're normally invisible and hidden behind the HUD) to cover the screen, and the life indicator icon turns red. (The icon will flash red and white for five seconds before the power up expires.) During this time, the player can't be hurt.
He also gains the ability to kill any monster he collides with, by delivering a mighty, adrenaline-fueled left cross. (Had to drop the one-two punch, because slashing at monsters with the barrel of the rifle in the av's right hand looked a bit odd.) As you may remember, I'd originally intended to make the punches roughly equivalent to 10 bullets (one point-blank blunderbuss salvo). This is very powerful, in the scope of the game, but would still require multiple collisions to kill tougher monsters.
In practice, I found that SL steering is too unwieldy to guide an avatar in for multiple collisions in a reasonable amount of time. Avatars are designed for ease of movement, not precision maneuvers. In this case, the player would spend all his time in eccentric orbits around your target, trying to calculate a return trajectory to finish him off. Quite frustrating. So, instead, we have a one punch, one kill system. It's much more satisfying to just run over the monsters and have them go down, anyway. And the required modifications to the monster health tracking systems open the way for future power ups, like enhanced weapons (rocket launchers?) and mines.
The Holy Hand Grenade effect has mutated a bit since its conception. Originally, it was going to be a conventional thrown grenade. In practice, though, it was too easy for the grenade go off at at the player's feet, or bounce off into a corner. I tinkered with various ideas, such as having the device explode on impact with ground and/or monster, or having it home in on the nearest baddie, but ultimately I settled on having the effect centered on the player. This makes aiming relatively easy, especially if he switches out of mouselook.
So, we're left with the effect above. I created a simple custom animation for the effect. When a Holy Hand Grenade is activated (either by typing "h" in the chat bar or clicking on the grenade icon), the player's avatar rises a meter or so into the air, head thrown back and arms outstretched. Heavenly organ music plays, and a ring-shaped blast of white light explodes outward, destroying every monster in its path. Perhaps a bit heavy on the anime melodrama, but it works.
The range on this attack has doubled since the last time I mentioned it. In particular, it changed from a 10m to a 20m radius. Basically, I switched from using llWhisper (with its ~10 meter audible range) to llSay (which is audible for ~20 meters, just like regular chat) to issue the "monster die" command. (This is the same command the central server uses to clean up the field when the last player dies, although it uses llShout's 100m range.) I found that it was too easy to underestimate distances with the 10m range. I'm going for overwhelming, but still requiring a minimum of advanced planning and strategy (at least of the "wait for it... wait for it... now!" type) to use. This seems like a reasonable enough balance between the two.
So, save for debugging, playtesting, debugging, balancing, and debugging, the game itself is complete. Next comes the entry area, information kiosk, documentation (ugh!), teleportation system, and high altitude construction scripts. More later.