Did you ever tried to use threads in your code for unity? I have done, these days you can't think of Advanced AI systems without thinking about putting parts of it on threads, why? think about it, an agent needs to do path finding, and at the same time decision making, well, you would want decision making on higher priority maybe, but that can take half a second for each agent, so you would prefer to handle path finding first and then start decision making, now you may say that we can use coroutines but the thing is that it is still on the main thread, meaning that much of your computer's resources may not being used at all. another example, I will speak about a pet project of mine, currently developing an AI sand box, started with node based grid system, restoring every type of data u need for a game in serialization is out of question, it will cause like gigabytes of data on hard drive (more can be found on my weblog : unityai.net). so you would like to keep the minimum data serialized with scene levels and the rest being calculated on the fly, one of the most important thing is line of sight and line of fire for each node, that is if you want to be able to do tactical decision making. Now, both of them are using line casts, and you would never want to do them on the fly time and time again when you are doing decision making, the sane approach would be to have a data lookup table so that when you need to test a node, you could simply look inside the table and get the result. how this effect us? think about it, you are starting a game, loading a level and as soon as the level is being loaded you would like to have your data there or at least starting the collection of data. You can still use coroutines but as i said it's waist of resources on machine, so you would like to start a thread that is looping through every node out there and do the ray casts for you, and that is only LOS and LOF, how about finding covers? another sets of line casts, at least 8 on mid height for crouching covers and another 8 for full standing covers, if we have 4000 nodes (pretty low for these day's games) that would mean 18 line casts per node, now we still would be able to do them on the fly for when an ai need to make decision and mark the node being processed but that would cause possible freeze on the agent till it is being done. So you would want to have to do those line casts on a thread that is adding data to a static class and later on agents can read these data but wait..... Line cast is part of unity's engine and api, and ..... yah you can;t use them on threads GAH I think the day that unity announce that these type of things can be done on threads i will have a heart attack !