News for the ‘Gaming’ Category

Valve’s “Left 4 Dead 2: The Passing” Shows No Sign of Humanity

WARNING: Spoilers for Left 4 Dead 2: The Passing and Half-Life 2:
Episode 2

For the last few months, Valve coyly hyped up that in their new Left 4 Dead 2 DLC "The Passing" the survivors from the first game were going to meet up with the survivors of the second game, and that one of the original survivors was going to die. Awesome, I thought, but no. Here's how Valve managed to fuck that up: I went into The Passing without expecting anything groundbreaking in terms of gameplay (it is, after all, just a DLC pack). What I was expecting was some story. Obviously, the overall arc of Left 4 Dead 1 and 2 isn't very well presented. Hell, the first game was supposed to be 4 unrelated B-Movies strung together with Valve retroactively making an actual coherent story out of them all. But with the release of Crash Course and an overall arc between episodes in Left 4 Dead 2, I was expecting Valve to at least do something memorable for this somewhat-hyped The Passing. What we got is two decently sized levels of typical L4D2 zombie killing. Fine. A little stale, but fine.

What do we get as our two-groups-of-survivors-crossing-paths? We walk by a bridge with three survivors standing on it, looking normal, acting like everything's ok, ready and willing to help. About three sentences later, we're off. Ok… maybe the cool part is coming up. Go about searching these rooms and oh-by-the-way there's Bill's body in a corner room. No subtle hint of sorrow from the original character NPCs. No awesome go-down-in-flames moment. Everything's fine and there's a body in the corner over there that nobody seems to notice. I understand that this is Left 4 Dead we're talking about. It's not exactly a game for its cinematic value and storytelling. Most people just want to kill zombies and be done with it, but come on. That's it?!? At the very least, we could have had the original survivors covering the new group as they make their way across the finale (which they already do anyway), with a short 20 second in-game cut-scene of the old survivors holding off the last wave of zombies while the new heroes speed off into the distance only to have Bill get whisked away by a Charger that crept up out of nowhere. his body thrown into the wall with Zoey and Francis shooting after it only to realize they're too late. The Charger and Bill lie motionless on the ground. Zoey breaks into tears hovering over Bills body whimpering "Bill!…. No…" with Francis offering his best attempt at sincerity: "I'm going to miss that old bastard…" [CREDITS]. Something!… Anything is better than the oh-by-the-way-Bill-died-when-you-weren't-looking that was delivered. What Valve did was pretty much akin to if the original Star Wars never showed Ben Kenobi's death, but rather Ben Kenobi deactivates the tractor beam and is along his merry way only finding out in dialogue as Luke runs to the Millennium Falcon "Sorry kid, the old man's dead, now get your ass on board!". No Luke spectacting the fight. No wise jedi raises his lightsaber and sacrifices himself for the greater good. No cry of anguish from Luke with a John Williams score to seal the deal. "What happened to Ben?" "Oh, he died, but whatever."

We spent the entire Left 4 Dead game with these characters; their dialogue and dynamics building through each succeeding chapter. With Left 4 Dead 1's scarcity of ammo and supplies with you were constantly running out on harder difficulties, forcing you to rely on these characters as your life-line in dire situations. This establishes something with these characters that was completely not acknowledged in The Passing. Remember the end of Half-Life 2: Episode 2? There's a reason you do. In that ending, we lost an important character that we had watched evolved from Half-Life 2. It was an emotional moment for the characters and also an emotional moment for anyone playing who gave a slight damn about the story of Half-Life. We watched Eli Vance die. We didn't walk in and find Alex acting nonchalant to her father's body propped up in the corner. The characters of Left 4 Dead 1 were developed in the same way. We fell in love with the cast of Left 4 Dead 2, and they deserved the same respect as the cast of Half-Life. The only possible way Valve can make this right is if the Left 4 Dead 1 DLC has you play the events prior to The Passing and concludes with Bill's death, and it's actually done in a way that respects the character.

Posted: April 23rd, 2010
Categories: Gaming
Tags:
Comments: No Comments.

Thinking With Portal

I had an epiphany (well, it wasn’t an epiphany, but more of a realization that I’m a college graduate and nowhere near a path that leads to what I want to do with my life) the other day, and decided that it was time to stop playing games and start messing with them again. I had just finished another run through of the Half-Life series and decided that it was time to get back to my game modding roots. Back in the day (when I wanted to go to Art School), I started making maps for GoldSrc games (Counter-Strike, Day of Defeat, HLDM, etc…) and finished about 5 or 6 that I ended up releasing. I always wanted to make a short single player mod, but found that I lacked the honed art skill to make original content (models and textures) and the programming ability to make changes to the game so that it wouldn’t seem like 30 minutes of the original game with a face lift. But now that I’m a college graduate with a degree in Computer Science, maybe now I can make some of those code changes to make the game slightly enhanced from its parent and embrace my art roots to make some custom content that actually looks good. I decided to start my endeavor at the most logical continuation point: The Source Engine.

Actually, on reflection, it would seem more logical to pick up my game-making endeavors where I left them off: the Doom 3 engine. The Doom 3 engine is great for making maps and mods. Everything is open. You don’t need any custom tools to compile anything. Everything except the modeling program (Lightwave) ships with the game, and id software has always been stellar at being open to the modding community. Truth is I’m going with the Source Engine for two reasons: After playing with Portal for the n-th time, I had some ideas of possible modifications I could make to the code base that would enhance the game-play possibilities far greater than I could think of with any other engine; and two, all of my “game-making” buddies I hang around with work with Source on a regular basis (all of them either worked or are working on the Black Mesa Source modification for Half-Life 2).

Cracking open the hood of Source (specifically the Portal code), I see a lot of potential. I’m quite surprised at the way some of the things are done, and other things are just genius (portals are rendered by copying the view into the frame buffer, and use the stencil buffer to help with filters… absolute genius). I would like to build some kind of very quick single player mission that involves not only portal puzzle solving, but also combat with the portal gun. I first tried to see what I could get away with using what’s currently under the hood of the Orange Box SDK. I build a very quick “orange box” (no pun intended [no, seriously, it was a dev level that was a box with a light and a few entities]) to check a few things, and the results… out of the box… not a whole lot that deviates from Portal itself.

First thing I noticed is that all NPCs that aren’t npc_turret_floor or npc_turrent_ground objects do not comprehend Portals at all. I can understand this. I dig some digging through the code-base and found what seems to be the reason for this.

inside npc_turret_floor.cpp:

#ifdef PORTAL
if ( !FInViewCone( pEnemy ) || !FVisible( pEnemy ) )
{

CProp_Portal *pPortal = FInViewConeThroughPortal( pEnemy );

if ( pPortal )
{
// Translate our target across the portal
UTIL_Portal_PointTransform( pPortal->m_hLinkedPortal->MatrixThisToLinked(), vEnemyPos, vEnemyPos );

}
}
#endif

The majority of the Portal specific code seems to be inside of precompiler directives (for obvious reasons). This little snippet lives inside the function that determines how a turret searches for an enemy (the player); basically the turret is saying “if I can’t see the enemy anywhere, are there any portals I can see, and if so, can I see the enemy through the portal (UTIL_Portal_PointTransform function call)”. I haven’t actually ported this logic into any other npc classes yet (I’ll see what I can do this weekend… I really should be studying for my MS Active Directory certification test).

I only spent about an hour prowling through the source code looking for explanations as to why things were they way they were in my test level. While messing around with my box level, I jotted down a few things that I noticed were awry and want to look into changing:

  • NPCs don’t understand portals (can’t detect through portals) [see images at end of post]
    • after detection works, see if I can get the AI to follow through a portal
  • prop_physics don’t seem to inflict fall damage on NPCs (might just be incorrect settings in hammer)
  • Weapons do not understand portals (a combine soldier’s dropped weapon)
  • Ragdolls don’t understand portals
  • Cannot spawn portals underneath NPCs (except turrets)
    • Begs question, what do you do when this happens? If I spawn a portal
      link underneath a combine solder and the end of the link is on a wall
      at floor height, the damage inflicted by the trip wouldn’t kill him…
      The easy way out would just be kill him and make his ragdoll fall
      through and only build maps that allow soldiers to drop through portals
      that cause a very long fall. Also easier because of the fact that
      objects can emerge through a portal upside down in certain cases…
      this would require a metric fuck-ton of animations/conditions to kill
      the npc if he/she’s oriented a certain way, and just fall in others.
      Maybe it wouldn’t be that hard, but at first glance, this seems light a
      lot of work.
  • NPCs don’t shoot bullets (they do throw grenades though) [i hear it's a problem with the multiplayer code base, which I didn't think I was using... maybe Portal's code base is a branch of the multiplayer code base?]
  • Physics gun does not re-grab teleported prop_physics object after going through a portal (portal gun does)

Long shots ideas that will probably never get implemented:

  • HDR through portals?
  • Emulate light coming from a portal [[Extreme Long Shot (Don't have
    access to radiosity engine; probably hard to fake with it still looking
    good)]]

I’m actually kind of excited to see what kind of havoc I can make with the Source SDK.

Creating a portal in front of a Combine NPC and trying to peek-a-boo through it. Combine NPC complete ignores me, while the floor turret (off to the right, not shown) detects me no problem

After going through the portal, and then stepping back through, the Combine NPC is alerted to me, but can’t find me.

Posted: May 1st, 2009
Categories: Gaming, Programming
Tags:
Comments: No Comments.

Sins Entrenchment v1.01 mini-dump crash – One Possible Explaination and “Fix”

I’m seeing a lot of this posted on the Sins of a Solar Empire beta and tech support board (hell, there’s even a post by me complaining about this very same issue before I applied common sense to my list of acquired problem solving skills)

For those of you who have played Sins of a Solar Empire and, like me, enjoy engaging in epic battles for all of space against nine other opponents in a system with the upwards of one hundred planets, you’ve probably had your parade abruptly shat on by the delightful Windows error sound accompanied by a message saying something about a mini-dump. At first you think nothing of it. “A mere fluke”, says I. Surely it shan’t happen again and dissuade me from conquering the galaxy from my remaining opponents; to which Sins replies with yet another Windows error sound, which at this point sounds like evil snickering, and the word “mini-dump” sticking out like a Star Trek fan at a Victoria’s Secret fashion show. What is the meaning of this travesty! Is there a glitch in this epic game that is preventing me from playing matches on an “unrivaled scale”? Well… yes and no.

Here’s the deal. Sins is a huge game (obviously). If you’re running a 32 bit Operating System, Sins is restricted to 2GB of virtual memory. This is a limitation of the 32 bit (x86) operating systems (The Microsoft consumer ones, anyway…). 32 bit OSes (Vista in particular) can only see 4GB of RAM in your box, and only reports 3GB to the user. Why? Because there aren’t enough bits in 32… bits to access memory addresses past 4GB. Well, then you’re asking yourself “why is vista telling me I only have 3GB?”. Because vista is reserving 1GB for hardware addressing. Now you’re probably thinking “Why the hell am I still reading this blog entry?” (because you find my attempts at humorous sincerity amusing) and if you’re not, you’re probably thinking “Alright, then shouldn’t Sins be able to use the 3GB of memory that Vista is telling me I have?”. Short answer “No”, long answer “No.” The other gig is used for Vista’s kernel processes, leaving 2GB for user applications.

If you’re playing a game of Sins on the largest map possible with as many players as possible and everyone has fleets of 200 ships and you’re running on the highest detail settings across the board, your mini-dump crashes are probably due to Sins running out of memory to store that scout frigate you just built. Test it. Launch Sins in windowed mode and open up task manager and start playing. Just watch the Memory Usage of the sins executable climb as you continue to play. Oh yes, it will drop here and there, but if everybody is building fast enough, the memory well dries up quicker than a Scotsman’s beer glass.

The “fix”? Lower all of your detail settings to “High” instead of “Highest” (except “Planet Detail”, leave that at “Highest”, otherwise the planets and main menu look like ass). It’s not really a fix per-say, but it’s the best thing that will let you finish that epic battle for galactic conquest. Besides, it’s really hard to tell the difference between High and Highest when your micromanaging your 7 choke points. Another possible fix is to just switch to a 64 bit operating system, where Sins will have 8GB of virtual memory to play around with.

Addendum: For those of you wondering how an application can use more memory that you physically have in your computer (if you only have 2GB of RAM for example), here’s how:

Wikipedia on Virtual Memory
Wikipedia on Paging

Posted: March 12th, 2009
Categories: Gaming
Tags:
Comments: No Comments.