Should the networking of my game be a component or a service?"Shouldn't the game send its own updates to others the moment it has it to cut down on lag?" Games often coalesce messages into fewer, larger packets sent less often. This may mean delaying updates by a few milliseconds, or using client side prediction & interpolation to smooth out the gaps, but you save a lot of bandwidth. Data rates may be a platform certification requirement, or just a nice thing to do for your customers who pay through the nose for cellular data.

Bitwise operators in DX9 ps_2_0 shaderI had a task where I needed to read textures from the card back into main memory and treat the textures as though they were arrays of bitmasks. I can't share code due to NDAs, I apologize, but I did it by multiplying by the shift values (so a <<8 would be *256) plus some floating point epsilon slop to make sure the right bits got flipped. It's entirely possible this would fail for different HW but at the time it worked on NVIDIA and ATI cards.

How can I have my game engine track player history?@Daniel, it's exactly a bit map: if bit 1 is set, VisitedTheTown is true, if bit 2 is set, KilledTheOgre is true. Unset bits are false conditions. In a map sense, a set bit might be an explored tile or sector. Storing quantities requires a different data structure as I said.

Teamwork in UnityThe latest developer preview of Unity (3.5 RC1) has made a change to support version control in the free version. from the changelog (unity3d.com/unity/preview/notes): License: Generic external version control (.meta files) are now available in the free version.

Jan25

comment

Is storing all game objects in a single list an acceptable design?True enough in terms of most XNA games, but organizing your objects can actually make iterating through them faster: objects of the same type are more likely to hit the instruction & data cache of your CPU. Cache misses are expensive, especially on consoles. On the Xbox 360 for example, an L2 cache miss will cost you ~600 cycles. That's leaving a lot of performance on the table. This is one place where managed code has an advantage over native code: objects allocated close together in time will be close in memory as well, and the situation improves with garbage collection (compaction).