Cat Pictures

By Shamus Posted Wednesday May 21, 2014

Filed under: Random 96 comments

I’ve been worried about my website traffic lately. I’m just not getting the kind of adoration and fame that I deserve as a blogger. Asking around, people are telling me that cat pictures are supposed to be a good draw. So I’m going to post a bunch of pictures of cat things and wait for the traffic to roll in.

Continue reading ⟩⟩ “Cat Pictures”

 


 

Experienced Points: Unbelievable Tournament

By Shamus Posted Tuesday May 20, 2014

Filed under: Column 34 comments

My column this week is about the baffling announcement that:

  1. Epic Games is making a new Unreal Tournament. Despite the fact that Epic has been focusing so much on consoles, the game…
  2. …is planned to be a PC exclusive that…
  3. …will be completely free and…
  4. …developed in collaboration with the community.

So yeah. Strange things afoot.

 


 

Diecast #59: Bombshell, Dark Souls, Marvel Comics

By Shamus Posted Monday May 19, 2014

Filed under: Diecast 103 comments

Download MP3 File
Download Ogg Vorbis File

Hosts: Chris, SuperBunnyHop, Josh, Shamus, and Rutskarn, with a secret surprise guest that you can probably guess.

Show notes:

1:30 Bombshell

Behold the Bombshell site, in all its kitschy glory. Maybe they’re serious. Maybe it’s ironic. It’s definitely unapologetic.

The whole thing eventually degrades into yet another ride on the “what do we REALLY think of Duke Nukem?” rollercoaster.

25:00 DARK SOULS 2

If you only listen to one 80’s sitcom-style song about Dark Souls 2, make sure it’s THIS one!

30:00 If one Marvel hero was set up on a blind date with one DC hero, what would be the most interesting pairing?

35:00 Talking about Dark Souls 2 again.

48:00 Shamus and Mumbles talk comic books.

1:03:00 Mumbles is playing Diablo III for Xbox.

 


 

Frontier Rebooted Part 4: Stuck in a Rut

By Shamus Posted Sunday May 18, 2014

Filed under: Programming 87 comments

I’ve implemented erosion simulation a few times in my career. My usual technique has you begin at a single spot on the map, landing like a virtual raindrop. From there, you examine the immediate surrounding points and see which one is lowest. Then you move there and repeat the process. As you go, you shave a tiny little bit off of each point. If you want to get fancy, you look at the steepness of the slope. If you’re going on a nice downhill then you assume this theoretical trickle / stream / river is moving fast. You might pick up a little extra dirt (thus making the riverbed deeper) and taking it with you. When the land levels out, you assume the flow has slowed and you drop off a bit of what you’ve collected.

And if the erosion code doesn’t pan out, maybe we can repurpose it into a sled-riding simulator.
And if the erosion code doesn’t pan out, maybe we can repurpose it into a sled-riding simulator.

Eventually you hit the ocean or find yourself at the bottom of a hole. Here you drop off whatever you’ve collected, which ought to help form sloping beaches, river deltas, and gradually fill in craters. At this point you’re done. Now pick another point on the map, drop another raindrop, and start the whole thing over.

It’s not perfect. This would be useless to a geologist or other science-type person trying to study science-type stuff. But it’s perfectly good for making a plausible landscape.

This is nice, but shaders simply can’t do this kind of processing. You can’t say, “I’m done with grid coord X, Y, now let me move next door to X+1, Y”. You can’t just store values globally, and you can’t stop processing when you feel you’re done. (Unless you don’t want to generate any output. In which case you just wasted your time.) When your shader is executed, you’re dropped into a situation where you’re expected to do the calculations of one pixel, and only that pixel. You can’t change any adjacent pixels and you can’t carry values between them using variables. You can LOOK at adjacent pixels, but because processing is heavily parallelized, you can’t even guarantee that points will be handled in any particular order.

So how do we handle large processing jobs like this, where we have a lot of inter-dependency and changes that need to propagate in unpredictable ways?

Continue reading ⟩⟩ “Frontier Rebooted Part 4: Stuck in a Rut”

 


 

Skyrim EP33: Aquaman!

By Shamus Posted Friday May 16, 2014

Filed under: Spoiler Warning 81 comments


Link (YouTube)

So that’s Markarth. I guess. I wish I’d played through this quest before we covered it in the show. There’s obviously a lot wrong with it, but really charting out the wrongness and identifying the failure points requires more than just watching Josh glitch his way through an endless procession of inventory screens and dead bodies.

 


 

Skyrim EP32: Arrested for Lollygagging

By Shamus Posted Thursday May 15, 2014

Filed under: Spoiler Warning 81 comments


Link (YouTube)

I really feel like I’ve failed you here. How it usually works is that once Josh begins a quest the intro will trigger a few memories and the whole thing will come flooding back to me. I’ll recall my initial impressions and be able to talk about the game. But for some reason it didn’t happen here. I remember having a lot of complaints about this quest back in 2011. I remember being annoyed, frustrated, and bored. But now can barely remember any of it aside from the forced-surrender thing.

The stuff Rutskarn said about the horribleness of the Nepos conversation is really important. It’s not that this game sucks. It’s that this game could be so much better if there was even the slightest glimmer of emotional impact. There’s an entire dimension to this game that we’re missing out on because nobody has a character and everybody talks in exposition.

And while we’re here:

Note the contrast between the entrance to Markarth and the entrance to Solitude:

In Solitude, we have a long lead-up to a very public execution that’s just begging for the player to intervene, but inflexible scripting prohibits you from altering events. On the other hand in Markarth there’s a murder you CAN prevent, but it happens so quickly that you can only do so with foreknowledge. The person killed has no build-up, no identity, and their death means nothing. Since this is your first time in town and this is a huge vista, it’s very likely you won’t even be looking when the murder happens. So the game denies you agency when you really want it, but is happy to give you lots of agency when it doesn’t matter and you don’t care.

How much more powerful would this moment be if the victim was someone we knew? Even if we just shared a few lines of dialog and she mentioned that she was really looking forward to X someday, it would at least give us some impact. Something. Anything.

It doesn’t take a lot, either. I know I slag on BioWare a lot, but this is something they’re really good at. In Mass Effect, they managed to set up a small cluster of characters on Feros (the planet with the mind-control plant monster) that set the tone and gave the adventure some emotional heft. I wasn’t turning on the water because I wanted the XP, I was turning on the water because I wanted to help these people. And when I met the corrupt ExoGeni exec, I really hated his guts. I wanted to cave his face in. Compare him to Nepos here in Skyrim. Both are despicable guys, but I really didn’t get any meaning or satisfaction when we settled up with Nepos. He was just another NPC to kill between us and the end of the quest. His servants had the same depth of characterization as the average Drauger.

 


 

Frontier Rebooted Part 3: Act Normal

By Shamus Posted Thursday May 15, 2014

Filed under: Programming 43 comments

Working with shaders is a little strange. They’re programs that run on your graphics cardI don’t like to bog you down with terminology, but we’re going to need to use SOME. From here on, your computer is the CPU and the graphics card is the GPU.. The pathway between your CPU and the GPU is a bit of a choke point. These two devices can only communicate so fast, and they need to share a monumental amount of data. In an ideal world, you would shove EVERYTHING over to the GPU. Then each frame you would just specify where the camera is, it would crunch all the numbers for you, and in return you’d get the completed image to show to the player. That’s not really feasible outside of the most rudimentary example programs, but we do want to get as close to that idea as possible.

The GPU is very, very good at crunching 3D spatial values. It’s better than your CPU in the same way that a Formula 1 car is better at Formula 1 racing than a dusty pickup truckNo quasi-technical explanation is complete without a Terrible Car Analogy.. It sacrifices flexibility to excel at one very specific task. You can’t run Microsoft Office or a web browser on your GPU. It literally doesn’t have the ability to perform that sort of processing. But the one thing it is good at, it’s really good at. This creates an interesting challenge for us. Any job we want to give to the GPU, we have to first translate into the sort of job a GPU can do.

This first one is easy. We just need to calculate some surface normals.

Continue reading ⟩⟩ “Frontier Rebooted Part 3: Act Normal”