YouTube Infringement

By Shamus Posted Monday Aug 24, 2009

Filed under: Rants 57 comments

The “copyright dispute” system in YouTube is pathetic. Remember my Reset Button video?


Link (YouTube)

Someone claimed I was using their “copyrighted material”. That’s pretty hard to believe, since I made the content myself. There are a few still images used in there, but they’re from promotional materials from Nintendo, Sony, etc. and they fall easily under fair use. But someone from the Japanese YouTube channel eb!TV claimed that some unspecified portion of my video infringed on their content. Now they get a free link from the video’s page, which accuses me of stealing content. Also, ads now run over the bottom of my video.

I disputed the claim, but now I have to wait for a response from the accuser. I don’t think he has much incentive to get back to me in a hurry, since the longer he takes the longer his ad sits on my page for free. This entire system is preposterous. I’m not crazy about the guilty-until-you-can-prove-yourself-innocent attitude of it, although I guess that’s necessary on YouTube’s part because they don’t want to end up mediating a bunch of disputes. However, the system of giving a free link to the accuser and then making the accused fight to get rid of it is a nasty one, since it sets up incentives for people to game or abuse the system in order to increase traffic. The fact that the accuser doesn’t even need to make specific claims is even worse, since they can make drive-by blanket accusations claiming that “some unspecified portion of your ten-minute video is taken from us” and then leave all the legwork to the accused to figure out what part they might be talking about and address it specifically.

This sucks. I can’t stand that eb!TV gets a link and a finger in my eye every time someone visits the page. (The accusation the “this uses content from eb!TV” bothers me more than the link itself.) I’ve scanned through their archives. The only thing I could find is this Mirror’s Edge video, which is a lame-ass shot of the game taken from a camcorder aimed at a TV. The thumbnail view of their video looks like the opening of mine, except mine was taken directly from the game and not that amateur-hour setup they have going there. But all Mirror’s Edge footage looks more or less the same. Is that the basis of their claim? That I somehow swiped the crappy TV footage and magically turned it into my nice, clean direct-feed footage? Or is it something else? How am I supposed to defend myself against this sort of nonsense?

Do I take my video down? It’s only got 28k views, which is pretty small. Having said that, doing so will hurt me (my hard work gone) more than it hurts my accuser. (Who will lose the tiny trickle of traffic I bring them, perhaps a visit a day or something similarly meaningless.) It doesn’t help that the accuser is Japanese, and thus operating under an entirely different language and set of IP laws.

A system where you’re guilty and punished until you can prove yourself innocent against lazily vague claims (the details of which have never even been shown to me) of infringement with no cost or penalty to the accuser – even if they are proven wrong – is unjust and unhealthy. eb!TV should have been required to not only cite what portion of my video infringed, but also where I supposedly took the content from. That can still be faked, but at least it would require the accuser to commit an act of deliberate deception rather than just fire off an email and get free advertising at my expense.

As it stands, I could do a bunch of legwork, harangue YouTube for details, and maybe win the fight and get the video cleared, and all that will happen is that my video will return to normal. Adding to the injustice is that fact that drawing attention to the problem increases their benefit even more. Now lots of people will click on that link and view their channel.

Jerks.

 


 

Good weekend

By Shamus Posted Sunday Aug 23, 2009

Filed under: Personal 48 comments

My wife has her birthday on the 20th and mine is on the 24th, so we usually celebrate them together. On Saturday we had our birthday date.

We went to see Funny People. I’m one of those hated people who actually enjoys the standard-issue Adam Sandler movie where he stumbles around, babbling like an ignoramus. But Funny People mixed this up by having Sandler play an actor who was typecast as a babbling ignoramus. Somewhere down that particular hall of mirrors was a charming film with solid laughs that was a bit overlong. The ending worked, and we left the theater thoughtful and talking about the characters rather than re-hashing the jokes in search of our favorites. Unexpected.

Then it was to Red Lobster. I usually tell people, “I don’t eat seafood 300 miles inland”. But we were in the mood. Today’s catch: FRIED BREADING. What luck! That’s my favorite kind of fish!

After that was home, where we fired up Netflix and I watched The IT Crowd for the first time. Good stuff. I’m not prepared to embrace it as the next Red Dwarf, but it was fun.

Then Left 4 Dead. Incidentally, if you play Left 4 Dead on the Twenty Sided server from time to time, then you might want to download Death Aboard, and / or Dam It!, which are user-made campaigns which have been added to the server. Not quite up to Valve level quality, but they’re still fun and a nice change of pace.

Tomorrow I turn 38. Today is the last day I can tell people “I’m not old”, in the Dennis the Peasant voice. So, I guess tomorrow I turn old.

Bah. I’ve had worse.

 


 

How Differential Gear Works

By Shamus Posted Saturday Aug 22, 2009

Filed under: Movies 44 comments

How can a single drive shaft turn two wheels at different rates? I knew what a differential did, but I couldn’t picture how. This movie gives a great visual illustration of the problem and the solution.

Skip to the two minute mark to get to the good part.


Link (YouTube)

Of course, a differential is a long understood technology, but it’s beautifully elegant and seeing it revealed in its simplicity is a lot of fun.

 


 

Experienced Points#29 – The Future is Procedural

By Shamus Posted Friday Aug 21, 2009

Filed under: Column 24 comments

For me, one of the most exciting games this year has been FUEL. I haven’t written about it yet, but I have a series coming at some point. (Most likely after the AI series and my series on The Path.) I want to pick apart the procedural methods used and compare it to some work I’ve done in the past. The technology is really exciting to a procedural content fetishist like myself. This week’s Experienced Points is a very brief analysis of the technology and some ideas on where I hope this tech is headed.

 


 

Stolen Pixels #118: A Farce to be Reckoned With

By Shamus Posted Friday Aug 21, 2009

Filed under: Column 27 comments

The comic is up over at The Escapist. The Overlord turns out to be a handy character for when Travis’ point-of-view just doesn’t fit the subject matter. This subject is probably worthy of its own Experienced Points column, and in fact the after-comic text is halfway there.

 


 

AI Follies: Pathing

By Shamus Posted Thursday Aug 20, 2009

Filed under: Programming 54 comments

Pathing (or path finding) is the process of getting some AI controlled entity to move from A to B. It used to be that when people said “AI” they meant “pathing”. The two terms were synonymous, because pathing was the only intelligent thing you needed the game to do. We’ve come a long way and we need a lot more from our AI than just a trip planner, but the need for pathing is still there and it’s still a challenge.

Getting From A to B

Green: Optimal route.  Red: The area you would cover if you were to use the “stick to the right or left wall” logic of navigation.  Woefully inadequate by today’s standards.
Green: Optimal route. Red: The area you would cover if you were to use the “stick to the right or left wall” logic of navigation. Woefully inadequate by today’s standards.
We’ve needed AI entities to navigate a complex environment for well over twenty years so this is not new territory. It’s not trivial to write code to do this, but it’s a fundamental task and there is an expectation that any system you write should be able to do at least this.

While most game enviroments aren’t quite as complex as a real maze, they might as well be. They still have places where you can’t use a simple attractor. (An attractor would be where the AI will simply run towards the goal.) There will be room layouts or topography where you need to go south a bit if your ultimate goal is to the north. Solving this is, in practice, the same thing as finding an optimal route through a maze.

There are a couple of approaches to navigation:

1) Geometry analysis. The program has to analyze the geometry in the room, deciding what areas are passable and what the sensible routes are. This can get to be really complicated. Remember that AI doesn’t understand “furniture” vs. “hallways”. It’s all just “shapes” to the AI. It sees the shortest-distance path across the room requires it to go up a step, then down a step. Except, that “step” is actually a footlocker, and people usually walk around those. Humans can skip the two-step flight of stairs and hop up onto a deck or porch, but we usually take the stairs. On the other hand, we’ll hop over a low fence or wall on the edge of a field rather than go around. But I won’t jump over a similar-sized “wall” if it’s actually the countertop island in the middle of the kitchen, or the dining room table. If I walk around the yard, I walk on the level parts, and avoid the awkward feeling of traveling horizontally across the face of a hill. I’ll generally avoid walking in paces where I have to duck, and I walk around desks rather than crawl under them. It becomes very hard to make the AI choose the right thing without a few hints from the level designer about whether this bit of geometry is a thing to be walked around, through, climbed over, or avoided. Which brings us to…

The waypoint-based pathing in Unreal Tournament.  The level designer has placed nodes (the little apple or peach icons) around the level, and they were then analyzed and linked by the software to construct this system of routes around the level.  When the game is played, AI’s will travel along these routes.
The waypoint-based pathing in Unreal Tournament. The level designer has placed nodes (the little apple or peach icons) around the level, and they were then analyzed and linked by the software to construct this system of routes around the level. When the game is played, AI’s will travel along these routes.
2) Waypoints. These are invisible markers set around the level by the designer that define the possible routes. Generally, every bend or every intersection will have a waypoint. The AI can stand at one waypoint and look for another, or plan a trip through several waypoints. This turns navigation into something very much like a Google Maps-type trip planner. Waypoint-based navigation is much less work for the programmer, but it’s more work for the level designers (who must place them) and it makes the AI a little more rigid and mechanical. Waypoint-based bad guys tend to follow the routes tightly, which makes them very predictable and exploitable. If you can reach a spot where the level designer didn’t think to put a waypoint you can confuse the AI, possibly exploiting it and unmasking its stupidity. You can fix this by having the AI leave these “rails” as needed, but the more they leave the rails the more generalized geometry analysis skills it will have. If you want them to be really flexible and adaptable, you’ll basically end up writing both systems.

Generalized systems are much harder to author. (At least, I think they would be. It might not be so bad for general “deathmatch” arenas, but the more realistically cluttered the environment is, the harder this will be. I’m still curious how they handle the “footlocker” problem in some of these games.) But it has the advantage is that your level designers don’t end up wrangling with AI and can focus on design. Back in the day, Unreal Tournament way a waypoint game and Quake III Arena was a generalized game. I don’t know that I could say the bots in one were better than the other at getting around.

I’m pretty sure Left 4 Dead uses a generalized system and it seems to work really well. The zombies climb all over the insanely complex debris-strewn topography with ease. Then again, they can get away with climbing over furniture. They can take the direct-line route and aren’t expected to to the “smart” thing when crossing the room.

Finding B

Once you find B, you still have to plan a sensible route to get there.
Once you find B, you still have to plan a sensible route to get there.
It’s no good being able to go from A to B if B itself isn’t a useful location. If this AI is trying engage the enemy in melee combat, figuring out B is fairly straightforward: B is the position of the player. Now go hit him. But if the AI is trying to shoot the player, then this is a complex question. In an open field, there will be hundreds of possible vantage points from which you could shoot at the player, but only a few will make any sense. Now instead of trying to reach the player, you must:

  1. Examine the battlefield and find every place I could stand and get a shot at my target.
  2. Disregard ones that are already occupied by allies.
  3. Now rate all of the points according to the criteria: How long it will take to reach the point, how much cover the point provides, and how dangerous the route is to reach it.
  4. Note that there probably isn’t a “best” one. It’s all a bunch of tradeoffs, with the importance of each attribute varying on the situation. (For example, if the AI is low on health it should rate dangerous routes very low.) Good luck with that.

Before Half-Life 2 came out there was a preview gameplay demo floating around the net. One of the most sublime moments in that video for me was the point there the player blocked a door with some furniture and the Metrocops ran to a nearby window to get a clear shot at the player. Another moment that amazed me once I had the game was where the Strider fights the player in a parking garage. The Strider is brilliant at moving to the right spot and then crouching to the right level to be able to get a clear shot. Both of these are complex problems to solve, and the game handles it very well.

Making things worse: If the AI needs to lob projectiles at the player rather than simply shoot them. This is a great way to induce weeping and gnashing of teeth for your AI programmer. Now the pathing needs to make sure that B is a location with enough overhead space to allow for any of the useful firing parabolas. I have yet to see a game do this properly. Generally, the projectiles simply pass through obstacles or (more commonly) the bad guy will stand there like an idiot and mindlessly heave projectiles into the obstruction.

Dealing with Blockades

The classic Starcraft frustration.  I tell my Ultralisks (blue things) to go up the ramp.  The first one gets hung up for just an instant as it brushes a marine aside. But! As soon as it stops, the second one sees the route up the ramp is blocked and immediately heads for the alternate path, taking a needless pounding from the units above along the way. If #2 had just waited for a moment, the two could have gone up the ramp together. The very worst was trying to get three or four siege tanks up a single ramp, which would result in a horrifying mess.
The classic Starcraft frustration. I tell my Ultralisks (blue things) to go up the ramp. The first one gets hung up for just an instant as it brushes a marine aside. But! As soon as it stops, the second one sees the route up the ramp is blocked and immediately heads for the alternate path, taking a needless pounding from the units above along the way. If #2 had just waited for a moment, the two could have gone up the ramp together. The very worst was trying to get three or four siege tanks up a single ramp, which would result in a horrifying mess.
Two enemy soldiers want to shoot the player, who is hiding in a building. Soldier A kicks open the door, stops in the doorway, and begins shooting. Now, Soldier B is standing behind him, still outside. What should he do? Stand in line waiting for his turn? Abandon his teammate and use a longer alternate route? The answer, annoyingly, is “it depends”.

When an AI needs to pass through a choke point which is blocked, the resulting decision is infuriatingly difficult and complex. It has to be able to appraise how long this traffic jam is going to last. A second? Several minutes? Has the guy in the doorway just stopped for a moment or is he pinned down by gunfire? (Or worse, does he want to retreat out of the room, and now you’re in the way, and the two of you are now stuck like the Zax.)

Once you have some sort of guess as to how long the logjam is going to last, you’ll have to weigh it against the time it will take to run the alternate route, which is itself a bit of annoying guesswork and approximations.

Putting it all together

This is where things go wrong. The AI looks at the battlefield and sees six locations where it can shoot at the player. Each location needs to be weighted according to these criteria:

  1. How advantageous position is.
  2. How long it would take to get there.
  3. How risky the trip to that location will be. (This is very subjective. A momentary dash over open ground is okay, but prolonged exposure in the open should be regarded as suicide.)

All three of these variables are very hard to judge, and harder still to balance against each other. (For example, a healthy AI can afford a little risk, while a severely injured AI needs to take into account that any further injury will probably be lethal.) It’s no good heading along a safe route to reach an optimal vantage point if the battle will be over by the time you get there. It’s stupid to bolt for a great location if you’re just going to get cut down on the way. It’s not good risking life and limb for a position that will only be slightly better than your current location from a tactical standpoint.

 


 

ZP on Silent Hill 2

By Shamus Posted Wednesday Aug 19, 2009

Filed under: Movies 26 comments

I would just like to point at this movie and say that you should listen to this guy, because everything he says in the following movie is brilliant.

(Full disclosure: It always sounds brilliant when people articulate opinions with which you emphatically agree.)

(The usual Zero Punctuation profanity disclaimers apply.)