I’ve been working on the launcher, server api and getting the two to communicate. Here is a screenshot of the launcher right after I got it to successfully validate user credentials against the remote database. There’s some fake, mock-up style update data being loaded from a tumblr blog in the middle.
Switched the chunk frustum culling from bounding boxes to bounding spheres and wrote spherical vertex buffer magic to visualize it.
Using bounding boxes, each chunk completely outside the frustum would generate 8 tests; one test for each point given that if said point is on the wrong side of one frustum plane, it is outside the frustum. With roughly 2,242 chunks outside the frustum, 17,936 tests would be performed 25 times per second - or 448,400 tests per second.
Using bounding spheres, each chunk completely outside the frustum now generates one test; if the signed distance from the center of the sphere is less than the negated radius of the sphere, it is outside the frustum. Again, with roughly 2,242 chunks outside the frustum, only 56,050 tests are performed each second.
That’s a difference of 392,350 tests per second! (A reduction of 87.5%)
The SSAO is finally working! It needs tweaking and optimization, but the important thing is it works.
I use an interpolated view ray to reconstruct the view-space position of each pixel from the depth buffer. To get the view ray, I pass in the four corners of the frustum’s far plane and let the hardware interpolate the ray in the fragment shader. It turns out that in calculating the geometric representation of my frustum, I forgot to convert my field of view from degrees to radians. I spent hours tweaking and debugging the shader code. Sorry, I mean days. The screenshot on the right is the type of stuff I’ve been looking at for the last week.
The position buffer you see in the left screenshot is temporary. I used it to test if the reconstructed view-space position was accurate.
Next, I plan to optimize / tweak the SSAO, add a blur pass, and re-organize / pack the G-buffer.
Video of the new (rough) map code. I’m now using glc-capture && glc-play | ffmpeg to grab and encode videos. Next, I’ll try for a higher resolution during encoding.
Here is some eye candy to accompany the announcement that the official Press Kit is now online!
If you want to make a nice press kit for your game or game company, I recommend grabbing presskit() from http://dopresskit.com/ and hacking the crap out of it!
Amid all the work on the press kit and publicity for the Kickstarter Campaign, I managed to do a little coding. The units can now hold an item in the left and/or right hand, or neither hand, without breaking! Null checks FTW.
The Lodestar: Stygian Skies fund raising campaign on Kickstarter went live today. Backer rewards include a copy of the final game, beta access, alpha access, source code access, soundtrack access, a PDF and printed lore book, NPC design, quest design, mob design, a hand-made planet from the Kol’estri system, and a unique, hand-modeled Astraean Xenodrone!
Go check it out and help back this project on Kickstarter! Even if you can’t contribute money to this project, you can still help by spreading the word. Thanks for your support.