It’s hosted on a blog, so there’s no need for me to mirror-post every single Chainmail Bikini entry like I do with Stolen Pixels. So, I’m warning you now I won’t be reminding you every MWF to read it. However, I do want to point you to the first one.
EA Sues Langdell
A reader sent this link along:
Electronic Arts is Suing Tim Langdel. This is like finding out Jack Thompson will be in a steel cage match with Kevin McCullough. I don’t care who wins, I’m just glad they’re fighting!
Actually, that’s not quite true. I think EA are scoundrels in the short-sighted business sense, but I’ve never thought of them as criminals. Aside from the EA Spouse controversy I’ve always thought of them as more aggravating and bumbling than malicious and predatory.
Langdell has been inexplicably baiting them (his site as been promoting a game called: MIRRORS a game by EDGE) and so now he’s going to get in the ring with someone about three orders of magnitude above his weight class. He seems to be up for it, so it should be an interesting fight. Of course, these sorts of cases unwind slowly, and it will probably be a few years before we see the outcome, but maybe he’s finally feeling a little of the discomfort he’s inflicted on so many others. Or maybe he sees this as his ticket to riches. But this is like fist-fighting an elephant for its tusks. Yeah, that would be a pretty sweet prize, I guess. If you’re a jerk. And if you live.
Fuel: Terrain
Games have trouble covering large surfaces so that they can look good at a distance and close-up. This was a huge problem in the past (and basically unsolvable for pre-2000 game engines) that still crops up today under certain circumstances.
Let’s say we have a room. We’ll use our old standby UnrealEd to illustrate. We make a room and adjust the textures so that they look good from a distance. But then they look super blurry when we get close:
Continue reading 〉〉 “Fuel: Terrain”
Stolen Pixels #129: Champions In Line
I made this comic backwards. Usually I start with an idea for a joke, and then look for a way to set it up. In this case, I found this scene of NPC heroes waiting to get into hero club (whatever it’s called) and decided the moment needed to be a part of a comic.
A Star is Born:
Let’s Play Champions Online Pt. 2
When we last left our hero (that would be me) I had just crawled out of a pile of rubble during an alien invasion. The city was in danger, the people needed me, and I couldn’t reach my publicist.
![]() |
| I don’t want to tell you how to do your job or anything officer, but since you’re standing there greeting people as they emerge from the rubble maybe you could, you know, help dig them out? |
I briefly consider slipping back into the rubble and waiting things out, but a police officer recognizes me and calls me over. He serves no other purpose than to welcome me to the game. He’s sort of the Wal-Mart greeter of the alien apocalypse. Officer Greeter tells me that SOCRATES wants to talk to me. Socrates is the immense self-aware AI that guides the heroes of the city. Of course (s)he would want to talk to me. (The gender of Socrates seems to change depending on what mood the thing is in and what service packs have been recently applied.) I clap him on the shoulder and let him know he’s doing a good job. I’m a professional, and I know you always let the police know they’re doing a good job. It’s the sort of lie they really appreciate.
As luck would have it, the closest Socrates kiosk is right across the street. It’s hard to miss, since it projects a twenty foot hologram of Socrates looking down on us. Since the entire purpose of this device is to allow us to talk to Socrates, it seems like they don’t need anything more elaborate than a microphone and a speaker. Your average McDonald’s drive-thru mastered that technology ages ago. I don’t know how much a 20-foot holographic projector costs, but I it’s probably a waste of taxpayer money if it just serves basically the same function as a pay phone. Ill bet people vandalize these things all the time.
![]() |
| Anyone using this thing is going to glance upward and get an eyeful of holo-crotch. When it comes to misappropriating public funds, this city doesn’t screw around. |
Let me paint you a picture of what is going on around me:
No that won’t do. I can’t find my paints and my brushwork is inept. You’ll have to settle for prose: Across the street is the looming hologram projector. Beyond that are some tents, and beyond those is a hastily constructed barricade where a couple of cops are fending off waves of aliens. To my right are rows of heavily armed soldiers, who are doing nothing. To my left is a street where aliens have deposited a bunch of oozing eggs.
Socrates asks me to walk over and kill some eggs. Three, to be exact. All things in moderation, I guess.
Right. Time to send these space-roaches packing. I smash some eggs the aliens have foolishly laid in the middle of the street and I can’t help but feel a little un-heroic. I mean, they’re eggs. What the hell kind of strategy is this? Did Hitler begin the scourging of London by putting German babies all over Piccadilly Square? I don’t claim to be Sun-Tzu or anything, but I’m pretty sure you don’t spearhead your invasion with abandoned infants.
![]() |
| Worst. Tactics. Ever. |
The eggs are gooey. I made sure my suit was made of glossy easy-wipe material for just this reason.
After I kill the third one I realize I absolutely hate, hate these Ego powers. It looks like I’m fighting with an energy sword and holding it wrong. This doesn’t fit with the character concept, it doesn’t look cool, and it’s not fun. So I execute the Nuclear Retcon Option and exit the game, delete Star On Chest, and then re-create him exactly the same but with different powers. I go for old-school “smash with fist” style powers this time. Unimaginative, yes. But it fits with what we’re trying to do here and I simply refuse to compromise when dealing with an issue as important as myself. Besides, all the big superheroes are doing the continuity re-boot thing these days. I’m just getting that out of the way super early.
Login screen. New character. Powers. Character creation. Obsessive fussing. Re-enter biography. Say no to drugs. Start game. Skip cutscene. Talk to cop. Talk to Socrates. Punch Eggs.
And we’re back! Let’s continue…
Next Socrates wants me to help the police test some weapons. Rows of police are standing nearby, waiting to see if their weapons work. Socrates’ plan is thus: I stand still, police shoot me. Yeah. And this is the guy who opens every conversation by telling you how smart he is. Directly to my left are four street cops holding off an endless wave of aliens with their sidearms, and here we have ten paramilitary guys with body armor and handheld howitzers who won’t join the fight until they can shoot someone and ask them if it hurts.
![]() |
| They instruct me to, “Use the block button”. I instruct them to, “Stop shooting me, asshole!” |
So, we’re countering the babies-first invasion tactics of the aliens with mandatory friendly-fire against our own troops. Here is an idea for you geniuses: Point your weapons at the bugs and shoot. If they die, the guns work. If not, grab a brick. Once you’ve got a fight going within brick-throwing distance, it’s time to stop with the R&D and make do with what you’ve got.
Barring that, why shoot me? Just shoot some cars or rubble or something if you want to see the gun go zap so bad. It’s all going to be written off anyway. It’s not like I own any of this stuff.
This whole thing is obviously a bad idea and a waste of everyone’s time. I’m beginning to suspect that Socrates might be a little buggy. But if I refuse to get shot in the face, people might think I’m a coward, and the whiff of cowardice is deadly for a hero. Companies will pull their endorsement agreements in a flash if the public gets the impression you’re a jelly-spine. From a public relations standpoint, being called a chicken is worse than being caught in a hotel with heroin* and a couple of underage hookers**.
* I would like to re-iterate my very strong and focus-group approved anti-drug stance.
** While I have no official position on this sort of thing, it’s probably not a good idea. Try to keep this sort of behavior to one at a time.
So I take a couple of blasts in the face. As I walk away, I make a point of NOT telling the officer he’s doing a good job. That should sting a bit, and maybe next time he’s repelling an invasion he won’t ask passing allies for permission to shoot them. Knave.
Socrates sends me to see the mayor. This sounds impressive, but the mayor is in a tent ten feet away and being ignored by every single person in his employ. There’s not much mayoring that needs done at the moment. Maybe he can publicly condemn the aliens via a public address (shouting) or a strongly worded letter (although I bet he doesn’t even have a pen) but other than that he’s making even less of an impact than Officer Greeter. Unless he’s got guns or kung-fu he’s just in the way. I suggest he go over and visit the friendly firing squad and make himself useful, but NPC’s never react when I say things out loud to my computer.
![]() |
| Our befuddled and not-particularly-useful mayor. Usually the question mark is there to tell the player, “I have quest stuff for you”, but in this case it’s there to express, “Uhbuh-what”? |
The mayor asks me to walk to the other side of the barricade and recover the city disaster plans, as he seems to have left them in a building I have now dubbed, “Roach Central”.
Sir, the good people of this city took the time to author disaster plans. Your only job was to have those plans. I don’t want to seem rude, but… is the deputy mayor available?
In any case, I’m betting that if we did have the plans here, somewhere near the top of page one it would say: DO NOT TEST WEAPONS BY SHOOTING EACH OTHER. I agree to get the plans, in the hopes he can at least put a stop to that.
I jog over and grab the documents. They’re in a pile of rubble and guarded by about a half dozen loitering bug men. These guys aren’t really invading, but sort of hangin’ out. I am glad to see that despite their fantastic array of space guns and future toys, the aliens have faces which are susceptible to punching.
Nearby is a woman wanting to be escorted back to the safe zone, but there is a line of heroes waiting to do so. They’re all elbowing and jockying for position to be the next lucky hero to march her back to the mayor’s camp site command center before she appears back in the hot zone and needs to be re-rescued. I opt to not rescue her at this time.
I would like to point out that chivalry is not dead, it just hates waiting in line.
The mayor is grateful for the documents, and sends me down the street to meet with the chief of police. I don’t like where my career is headed so far, as I seem to be moving down the chain of command. At level 1 I was working for the self-aware super-intelligence of the city. At level 2 I was working for the mayor, and heading into level 3 I’m working for the chief of police. If this trend continues I’ll be the world’s most powerful assistant meter-maid by level 10.
Getting to the chief of police means going through waves of enemy bugs, some ambushing fliers, and a minefield. This sounds bad, but the truth is that under normal, non-alien-invasion circumstances, this section of the city is home to groups of level 28-ish criminals who are so bloodthirsty they will attack groups of superheroes. On sight. But right now it’s just overrun with simple level 1 and 2 bugmen. Despite the wreckage, this is actually the safest this part of the city has ever been.
Right. We’re off to see the chief of police.
How Many More Must Die? (Until I level?)
Some friends and I had an interesting conversation about kills in MMO games. Lets us begin with:
- Eleven million World of Warcraft players. I’m never sure if the “number of players” is the total number of active and inactive accounts, or the number of currently active players. Let’s stay way on the safe side and assume no more than eleven million players, ever.
- Assume four characters per account. (Real characters with a few levels under their belt. Let’s just ignore the characters which are created and deleted before they turn ten.) Again, this is a very conservative estimate. Some players might have just one, but other players will have a dozen or more spread out over multiple servers.
- Assume each character kills an average of 1,000 boars during their career. This is also conservative, I think, given the fact that you fight various types of boars throughout the game. From the starting areas to the end game, most zones have one or two varieties of boar in them.
Final boar death toll: 44,000,000,000. Forty-four Billion. More than seven times the number of human beings in the world. And that’s just boars.
I’d love to know the final death toll for the game, all monsters, NPCs, and players combined. I’ll bet it’s enough to extinguish all mammalian life on Earth.
No point to this, really. I’m just saying.
Fuel: Roads
![]() |
| This shows the zooming in, just to give you a sense of scale of the world. |
Roads are interesting because of how organic they look. They bend and twist and split and have overpasses / underpasses, change width and (from a distance) tend to resemble more a circulatory system than a circuit board.
Roads have rules which most of us intuit even when we don’t think about it, and when a virtual road breaks those rules it tends to break immersion as well. Proper public roads generally don’t bank (or only do so very slightly) but are graded such that they are higher in the middle, so rainwater will run off. Roads tend to change direction more readily than elevation. When circumnavigating a hill, the road generally cuts into a hill a bit, (as opposed to jutting out) so you’ll have a steep bank upwards on the inside and a drop downwards on the outside. If that drop is steep enough or the road curves abruptly enough, there’s usually a guard rail. Roads bend all over the place, and it’s not uncommon for you to find yourself on a “northbound” highway heading due east or west. And there is a limit on how steep a road can get.
And these are just the rules for a single road, which is what my program dealt with. (It was eventually going to be a screensaver. If I were to do it again I’d no doubt put the thing on Google code for safekeeping.) The program would load in or generate some hills of dubious realism. (This was before I did my terrain project, so the terrain system here would have been crap.) Then it would plot a road to go from the south edge to the north edge. It would examine the angle between its current location and its desired endpoint, and would try to head in that general direction while staying as level as possible. It ran on a flexible scale: The bigger the deviation between it’s current heading and its desired heading, the more willing it was to go up or down hill. This worked amazingly well at producing a road that wasn’t too hilly but didn’t get lost. It had a “create a bridge” fail-safe for when it just couldn’t find a proper solution, which happened whenever it was cut off by a steep valley. The “bridge” was just a section where the road would run straight and level until it ran into the opposite wall of the valley. All told, it wasn’t a flawless system but it produced some amazingly plausible roads on some challenging topography.
Check out this heightmap I swiped from Google Image Search:
![]() |
On the left is a straightforward heightmap. It’s like a satellite view, with brighter pixels representing higher elevations. The right is the same thing, but with a particular elevation set to red. If you were standing on that red area, you could obviously go pretty far without needing to go up or down, as long as you didn’t mind swerving around a bit. This swerving is basically the exact behavior you see on a road. My program would basically travel on the red as much as possible. If it was forced to go up or down, then the “red” area would shift radially – outward from the tip of the hill if it was moving down, inward if it was moving up.
![]() |
| Top: The road system on perfectly flat terrain. Bottom: The road system in pervasively hilly country. |
![]() |
| While not completely unrealistic, this abrupt curve is a little dubious. (There is actually a turn like this not far from where I live. The people who live on the outside of this bend have placed a row of massive rocks in their front yard, just in case some drunk or fool is careening down the road without paying attention. They’ll be stopped by the rocks instead of the house. In the above picture, note the blank gray area on the outer part of the corner, no doubt that exists to hide the awful distortion in the road lines. |
The one thing that bedeviled me was the difficulty of splicing roads together. This has gotten way, way harder as graphics have gotten better. Merging two strips of flat gray polygons is trivial, but a real road isn’t flat gray. Real roads have a very distinct pattern of light and dark stripes, which I assume are the result of tires depositing slight amounts of rubber into the asphalt. Real roads have white lines at the edges, and dashed lines (or double yellow) down the middle. Splicing two of these together is murderously complex, because you can’t allow the texture to distort at all. If you stretch one texture at the point of the splice, the lines in the road will get longer or shorter, and that will look really, really obviously bad. You can’t do a hard join and simply end one road as it intersects with the other, as the patterns of light and dark won’t match up and you’ll get a huge seam. The problem gets even harder when you take into account the fact that some roads will have different numbers of lanes, and they’ll be joining at unpredictable angles. I never did come up with a way to do it without needing multiple texture passes.
![]() |
| It’s hard to see, but just above my driver there is a staircase-shaped seam where the two roads were stitched together. |
![]() |
| Guardrail fail. |
You could solve this problem by having artists make pre-fab intersections. For example, the artists could make the four-way intersection pieces, the forks, and the merges, and the program could use those the way a plumber uses pipe fixtures: Just bend the roads around and plug them in. But that only works on level land, and flattening the land around every single intersection will instantly make the world a lot more generic and repetitive.
![]() |
| In many cases you can get away with joining two roads with a hard edge, as is done here. It’s not perfect, but it’s not awful, either. |
To the people that have been pointing to Dwarf Fortress as the zenith of procedural content: Being unfettered by graphics, DF will never have to face the worst of the procedural challenges. That’s fine. It doesn’t need to. But the really humbling challenges will be for programmers who have to work with polygons to realize their world.
One of these days I’d like to take another crack at the highway system problem. It’s a toughie, but if you can solve it you’ll have gone a long way to making game content turnkey. Even in fixed worlds like GTA, I’ll bet the art team would love a tool that let them make roads by drawing simple lines, and having the software work out all the messy details and landscaping.
Video Compression Gone Wrong
How does image compression work, and why does it create those ugly spots all over some videos and not others?
Black Desert Online
This Korean title would be the greatest MMO ever made if not for the horrendous monetization system. And the embarrassing translation. And the terrible progression. And the developer's general apathy towards its western audience.
Spider-Man
A game I love. It has a solid main story and a couple of really obnoxious, cringy, incoherent side-plots in it. What happened here?
The Dumbest Cutscene
This is it. This is the dumbest cutscene ever created for a AAA game. It's so bad it's simultaneously hilarious and painful. This is "The Room" of video game cutscenes.
Silent Hill Origins
Here is a long look at a game that tries to live up to a big legacy and fails hilariously.
Good to be the King?
Which would you rather be: A king in the middle ages, or a lower-income laborer in the 21st century?
DM of the Rings
Both a celebration and an evisceration of tabletop roleplaying games, by twisting the Lord of the Rings films into a D&D game.
Quakecon 2012 Annotated
An interesting but technically dense talk about gaming technology. I translate it for the non-coders.
Push the Button!
Scenes from Half-Life 2:Episode 2, showing Gordon Freeman being a jerk.
Control
A wild game filled with wild ideas that features fun puzzles and mind-blowing environments. It has a great atmosphere, and one REALLY annoying flaw with its gameplay.
T w e n t y S i d e d











