Yesterday my game AI started going haywire on me. At a random point, all of my creatures would start moving in a single direction.
Turns out the cause was Random.NextDouble starting to return only zero. And it turns out the cause of that was multiple threads accessing the same instance of the Random class.
As I would have expected had I thought about it, Random is not thread safe. If it gets accessed from one thread while it is in the middle of an operation for another, its internal state gets mucked up and it just spits back zeros from then on.
The solution is to use one instance of Random per thread (which is what I did) or to ensure synchronized access.
Thursday, October 28, 2010
Wednesday, October 20, 2010
Friday, October 15, 2010
Thursday, October 7, 2010
I hate making editors. Creating an editor for a feature always takes ten times the amount of time that it took to add the actual feature itself. And it is much less rewarding code to write.
I need an intern...
Anyway, I've got a half-assed editor for the block models that I will be scattering throughout my block world. I used my mad 3D art skills to draw a tree. So there!
Monday, October 4, 2010
I am currently working on adding more details to my Block World environment. This will be done mostly through the use of what I am calling "Block Models" - meshes generated from a 3D cubic grid of "trixels".
I started with 16x16x16 grid and did a test to see how many I could render. Quite a few, it turns out.