| alephnull said: 1) OOE will make the highly branchy code you are talking about run slower. The purpose of OOE is to avoid wasting cycles on memory loads. The problem is if your code branches the wrong way an OOE architecture has to undo either undo all the damage it did, or just stall at every conditional. Either way you were better off without it. 2) Define AI. I don't think any games are using neural networks. Not that they require loads of branching anyway, in fact they are probably one of the inherently least branchy things I can think of which is why people do them on GPUs or even better FPGAs. But, Neual networks are non-rigourus silliness any way:P FSMs can easily be done with matrix multiplies. All graph operations have matrix analogs. Back in the day when I wrote an RTS the unit AIs were modeled as a particle swarm. Now I assume you are talking about decision trees, but there are invariably better ways of doing clustering (which pretty much all AI boils down to) than that. And yes people who work with decision trees tend to write inefficient code. Hence LISP. 3) Just because there are conditional statements doesn't mean you actually need to branch. You can use masks and guards as I did in that sample code 1-2 nights ago in the Xenon vs Cell thread. |
1. Uhm... And how will in-order execution handle very branchy code? What will happen when prediction fails? Anyway, you are right. OOE tries to kill latencies.
2. Well, I know that neural networks won't work with just about anything more complex. Just commenting on MikeBs comment about Cell simulating human brains. And yes, I was talking mostly about decision trees. Just think about decision tree + more than 256kb memory for decisions. Cell would have hard time with that kind of AI. And using/not using decision trees it really depends on game.
(Well to be honest, I prefer HFSM myself usually.)
3. Can you provide link. I am just too lazy to search it.







