jump to navigation

X-Clamp replacement + heat gun: 360 fixed!!! February 26, 2010

Posted by Cesar in gaming me.
Tags: , , , , ,
add a comment

Los tres amigos

Another one for the collection of fixed 360s!!! On the picture, from left to right, Chris, Max and I. Chris had the infamous 3rlod a few weeks ago. This weekend we finally got all necessary tools and parts, yesterday we made and effort and guess what? It worked! I am proud to say his 360 is back to life.

This is the second time I fix a 360. By the end of 2008 my 360 died on me. I did a lot of research and with the help of my good friends Wallace and Jamir we resuscitated the dying Microsoft console. I have a new one here in Canada, but I hear my old friend is doing just fine back in Brazil.

Even thought the errors were different, the fixes were essentially the same: X-Clamp replacement + heat gun treatment. Want more details on the success story? Continue reading.

I found most of the information at the xbox-scene forums. They are a great source of information, with guys that work in repair shops and work on dozens of 360s every day.

The very first step when your 360 dies is to figure out the error. If you get any number of red lights, you can get an exact error number with a few tricks (turning the 360 on, pressing eject and some other crazy stuff). So go to this thread and find out the exact error you are having. That’s what you should research. Many errors, like the classic 3rlod and E74, can be fixed with the heat gun and prevented with the x-clamp replacement. Different errors require heat-gun focus on different areas, so make sure you find that out.

So if the error is related to motherboard bending, there’s a good chance it is fixable. I feel this asks for an explanation: in the 360 hardware, the heatsinks are attached to the motherboard with a clamp in X shape (duh): heatsink above, x-clamp below. When the 360 overheats, the x-clamp dilates a little and gets a bit out of place. When it cools down again, however, the clamp does not always go back to the original position. Sometimes when it shrinks back it is a bit skewed and that slightly bends the motherboard. The same process happening over and over again eventually causes microsolds in the motherboard to break. And that’s what causes most 3rlod and other issues.

The solution to the problem is to heat the motherboard up to a point where the microsolds melt and reconnect. If that happens, when the 360 cools down it is back in business. So heat is what fixes the problem, replacing the x-clamp is just a way to prevent it from happening again. That’s why the towel trick works (up to a point). Essentially what it does is overheat the whole hardware and reconnect the sold. But there is a huge number of drawbacks to the towel trick! Don’t do it, it causes more harm than good!

Anyway, back to the 360 surgery, if you got your error number and it is related to motherboard bending, follow one of the tutorials on this page . Read a lot, make sure you understand every step and try to improvise as little as possible. Important things to remember:

  • be very careful with the components and the motherboard;
  • make sure to clean the chips until they shine before applying the thermal compound. Be patient;
  • make sure you use nylon washers or some other non-conductive thing to isolate the metal washers and screws from the motherboard. A very valid alternative is to cut your own washers out of old credit cards, they have the perfect height. Use a drill or a hole cutter and scissors;
  • isolate all other components with a plastic layer and then a tin foil layer before using the heat gun. Don’t use just tin foil, you need insulation. Be specially careful with the capacitors, if they get too hot they will explode, don’t leave a single one exposed;
  • use the heat gun as prescribed. Never get it too close to the motherboard and keep it moving slowly all the time, don’t stop. No matter how long you keep it there, a good indicator is the color of the sold. If you notice they get a bit of a golden hue (as opposed to the usual green/silverish look), you are almost done;
  • if you hear popping, stop immediately. That means one of the capacitors is gone and your 360 is DOA. The capacitors are very probably replaceable, they are not so hard to sold, but I never got that far.
  • it sounds silly but be careful removing the insulation plastic layer. Sometimes it melts and glues to the capacitors. When it cools down it is easy to remove, but you have to make sure no capacitors detach in the process.

It worked for Chris and me. But if it fails for you, don’t blame me, heh… Good luck!

See you space cowboys…

AI navigation in Left 4 Dead: Part I February 25, 2010

Posted by Cesar in gaming me, working me.
Tags: , , , , , ,
1 comment so far

The other day my good friend (and great game designer) Bruno Palermo pointed me to this presentation that Mike Booth used last year at the Artificial Intelligence and Interactive Digital Entertainment Conference. I found it extremely interesting and useful. I didn’t know Valve made publication material available through their website!

I didn’t have the pleasure to watch it, but by the slides you can tell his presentation goes through a lot of cool stuff. So what I want to do is focus only in the AI for pathing and movement and try to get closer to an actual implementation of the system. See it as my version of the presentation. Is that possible? I think it is, let’s try (I didn’t think this through when writing, but if you are reading it is because it worked. Don’t worry and continue reading).

The most important thing is to remember that the goal is not the best possible behavior but instead the most realistic one. And an exact, perfect path or movement is not very realistic. So let’s begin.

To move the bots (let’s call them bots, right?), the system works in two phases: path finding and movement. One could think after path finding, moving is easy. Well, it isn’t. The L4D system computes the paths in a navigation mesh and the bots extract a rough direction from the path finding system, not an exact guide on how to get from point A to point B. That means it is up to the movement phase to figure out how to reach the next point in the path (jumping, climbing, crouching, whatever).

So the very first step towards the navigation AI is to generate or edit a navigation mesh for the map. I won’t get into specifics (googling navigation mesh should be a good start), but essentially the algorithm tracks “walkable” areas from the map and then grows rectangles in a way that best fits the areas. The result should be a graph-like structure with a bunch of bounding boxes representing areas where the bots can walk. If a bot can move between boxes, we add a bidirectional connection connecting them.

With the mesh properly generated (never at run-time, eh?), the path finding algorithm goes through the graph with a simple A* algorithm. After running A* in our walkable rectangles graph, we have an ordered list of rectangles in the path. At this point it is obvious things are already imprecise, which means the movement phase has to find the best way to go from one rectangle to the other.

The optimal approach, rejected by Booth because it looks robotic, is to look for the rectangle further away with a clear, direct path to it. Because the pathing system is not the only one acting on the bot at run-time (there’s also flocking, small obstacle avoidance, etc), this alternative also requires a lot of repathing: every time something obstructs the path to the target node, the system would have to compute a new path.

Instead, the navigation system uses what Booth calls Reactive Path Following. The decision is very local and sets as a target the unobstructed node further down the path in the direction the bot is facing. Booth mentions this makes the path fluid which wouldn’t be true unless some steering behavior were in place, so here’s my very high level interpretation of that algorithm:

// Rough example of the path update function.
void Bot::PathUpdate(f32 m_fDeltaTime)
{
	// unless the bot got too far from the path, we don't have to compute it
	// again. In this case, the realism of the algorithm helps performance!
	// Of course we also have to find a path if we don't have one yet.
	if (!HasPath() || (DistanceFromPath() > m_fMaxPathDistance))
	{
		m_lPathNodes = AStar::FindPath(
			m_pWorld->GetNavigationMesh(),
			m_vPosition,
			m_vTarget);
		m_iCurrentNode = 0;
	}

	// looking for the best node to track. Notice that the next node is local,
	// the decision is made every frame.
	Node* pNextNode = m_lPathNodes[m_iCurrentNode];
	for (s32 i = m_iCurrentNode; i < m_lPathNodes.GetSize(); ++i)
	{
		if (IsFacing(m_lPathNodes[i]) && IsClearPath(m_lPathNodes[i]))
		{
			pNextNode = m_lPathNodes[i];
		}
	}

	// assuming some complex heuristic might take place to decide which
	// priority each system gets, we don't update the member variables
	// directly. Instead, make requests informing the current system
	RequestMovement(
		ComputePathTranslation(m_fDeltaTime),
		ComputePathSteering(pNextNode, m_fDeltaTime),
		PATH_FOLLOWING);
}

Ok, that’s it for path finding and basic path following but there’s a lot more to cover. However, I haven’t posted for a really long time and it would take me another week to finish the whole subject. So let’s stop at this point and in the next post I’ll continue to object avoidance and ledge climbing.

See you space cowboys…

Let it snow February 6, 2010

Posted by Cesar in living me.
Tags: , ,
add a comment

snow at king's bridge road

It’s been snowing steadily since Thursday evening. And to make things even more interesting yesterday we had a blizzard. I wanted to go to work walking, just for fun, to pretend I was climbing the Everest or something. But Mariana convinced me otherwise.

Anyway, when I got back home by the end of the afternoon, with the blizzard hitting St. John’s all day, you couldn’t tell where the street started from where the sidewalk began.

So just to scare people back home I thought I could post a picture of the surroundings. I marched inside, got my camera and walked 30 feet to take the snapshot above.

You have to admit it is pretty!

See you space cowboys…