Thursday, October 18, 2012

A New Zero Update 10/18/12

I've been working on various aspects of A New Zero, human physics, tank physics, aircraft physics, landscape rendering, landscape generation and economy. You can see the human physics in the video, still needs some work but it's getting close to playable. Surprisingly this video I put together in about an hour with awkward movement got some press, including Reddit, PC Gamer, Rock Paper Shotgun, Kotaku and CliffyB. It's good to see that people are looking for something new/different in an FPS, if I can get it right I think it will be revolutionary.

For tank physics I finally figured out a good gear simulation, the tanks and trucks have physically modeled wheels, suspension, engines and gears. The previous gear simulation was off, so in low gear not enough torque was transferred to the wheels and high gear too much was. In the ANZ armor test you can kind of feel this, it's especially important for tanks since they have around 100:1 ratios in the lowest gear. The cars in Sub Rosa also have the gear issue, not as noticeable but the new simulation should make them a bit easier to drive.

There's an image of the voxel landscape renderer, the new feature is ray tracing for far away sectors. I had been thinking about how to render low level-of-detail (LOD) for areas in the distance. The usual solution to this is build a mesh using lower detail polygons, combining 2x2x2 blocks into one block, then 4x4x4 and so on. The problem with this is it still takes time to generate these meshes, and they look progressively worse unless you do some sort of progressive LOD, which is even slower. There's also issues with cracks between LODs and a lot vertex processing.

Instead I've decided to render those areas as boxes, and ray trace through the voxel grid with a pixel shader. It takes more pixel shader time obviously, but it saves vertex shader time, and occlusion culling is automatic (pixels behind the landscape mesh, objects or buildings will be Z-culled). It's also much faster to generate lower LOD voxel grids, since it's basically a 3D texture mipmap. The quality of the ray trace can be adjusted based on the GPU speed. You can see in the image where it changes from mesh to ray trace, I still have some work to do on the lighting and ray trace quality, but I'm fairly confident this is the right direction.

Hi Alex, really enjoy sub rosa and anz. I hope you post more about the tech behind your projects in future posts. The procedural techniques used and your development process seem like would be a good read.

Hi Alex, really enjoy sub rosa and anz. I hope you post more about the tech behind your projects in future posts. The procedural techniques used and your development process seem like would be a good read.

Hi, probably our entry may be off topic but anyways, I have been surfing around your blog and it looks very professional. It’s obvious you know your topic and you appear fervent about it. I’m developing a fresh blog plus I’m struggling to make it look good, as well as offer the best quality content. I have learned much at your web site and also I anticipate alot more articles and will be coming back soon. Thank you...