Thursday, November 4, 2010

We reached the 40mb limit today. The last bit was compression across common files using .tar . Most files are now less than 100k each...

Monday, October 25, 2010

speex for the win.

So i tried out speex on our voice files. Turns out it does a really great job. Then i tried it out on some of our sound effects. I needed to turn the quality up some but it still comes out ahead of any other codec. 94mb of audio into 5.4mb makes me happy!

Sunday, October 24, 2010

squeezing the wii version



Phill and I have been focusing on the Wii port for the last while. One of the biggest challenges is squeezing the game into nintendo's 40mb limit for WiiWare titles. The game originally shipped with roughly 400mb data and 600mb music. To get it to fit we have to make absolutely every bit count.

The last thing we want to do is completely butcher the game so we've been trying lots of tricks. For the textures we started with 298mb of data. That's 32bit completely uncompressed. We have a budget of 6mb so simply resizing them is not going to work out at all.

Without looking at compression we noticed that many of the textures had repeating information in them. This came about from the texture compression on the dreamcast. We limited the textures to power of 2 and square. This meant that the artists filled the textures to meet that when smaller repeat textures would do.

To solve this Phill whipped up a shading language to sit of the Wii gx. With it we can apply texture repeating and scaling. Here's an example:

Original texture


New Texture with shader


shader hw_tile13b
blend Solid
stage
texture hw_tile13b
texwrap MirroredRepeat MirroredRepeat
texmod scale
u 2
v 2
end
end
end

Some of the unique detail across the texture is lost but we get to maintain a better resolution.

MDK2

It's been a few years since MDK2 was released, this has been quite a trip down memory lane. I was recalling when the project first started at Bioware we were developing with Windows 95 and no 3d cards for sale. I think I had a k6-200 overclocked or something ... :)