Screen Shots
Tuesday Novemeber 18, 2008
You can see here I've reoriented the station so that the earth is always below it. I've added 3 new roughed in modules to the station. You can't actually "build" the station in-game yet. I'll need to build a bit of the interface before I can implement that part of it.
Here is the latest example of the visual development. I have got several new shaders represented here. This image shows off my new atmosphere shader. The atmosphere (which is just a circular billboard) has it's opacity attenuated by it's distance from the sun. The result is very effective, giving the earth a kind of glow on the bright side.
Here you might notice that the clouds are casting shadows on the earth. This shadow is actually achieved by mapping the coordinates of the sphereical earth to the sphereical cloud object model. This 3D position is mapped to a UV coordinate and used to look up the alpha channel of the cloud map. The inverse of the alpha component is then used to attenuate the intensity of all diffuse light.
The command module has had a slight face life. Most notably, I've added the effect of a multi pass hallation shader that runs on the rasterized image of the station. The effect is not too noticeable to a casual observer, but the difference improves the look and feel of the specular hits significantly. The hallation shader is a modified version of a hallation shader I found online at gamedev.net
Satruday Novemeber 8, 2008
So here is the all new command module. It's design is exactley as I planned it which always makes me happy. I've done a lot of work to bring this baby to life. There are two custom shaders at work to render the module and who knows how many classes. I dedicated myself to making this thing look really good and I'd say I've come very close to my expectations (which is much better than usual). There are only 3 textures being used here. I could use a few more textures (specular, reflection intensity) to touch up some things but I don't think I'll have time to do it.
This view shows my hallation shader fairly well. The shader runs on the rasterized render of the module and blurs areas with bright colors. It works okay but it is still not as intense or blurred as I would like. The place where I'd really like to some glow action is outside the modules silohouette but I'm having a hard time getting it to show up there.
This close up reveals the real-time reflections of my new shader. I found that there are very few tutorials on creating enviroment map reflections for XNA. It is relatively straight forward coneptually but that didn't prevent any head banging on my part.Although this view shows the reflections most visibly in the window they are in fact all over the surface of the module. Naturaly they give themselves away when you tumble the view.
And here is yet another view of the command module. I'm using a simple incandesence texture to create the neon light rings. Those textures are simply hand painted and do their job effectively enough. The incandesence is attenuated by the amount of diffuse light already present at the sample point. This gives the impression in the display that the sunlight overpowers the neon lights while the dark side of the module stays nice and moody. I have not yet programmed "night" which I'm looking forward to seeing.
Tuesday September 28, 2008
I've been working on a conceptual map of the gameplay. The relationships show the relationships between the modules and crew of the space station, the resources available, the research that can be achieved and how these elements are managed. There is some progress now on the interface as well. The conceptual planning of the game and the interface are progressing in tandem as the nature of the game is solidified. Check out a much more detailed explanation of the game play design on the concept page.
As you can see quite nicely here I've added a sun with a lens flare into the scene. I created the flare using my 2d sprite class. I spent a while trying to design the pieces of it and aranging them into something I liked. I think it could still use some work but for now it is more than enough. The nice thing is, it is very easy and intuitive to manipulate with the system I've set up.
I also managed to create a 3d sprite class which I'm using here to create the main part of the sun as well as the "Dummy Module" label over the space station. You may also notice that my star field is looking a lot better thanks to some UV work and a Photoshop plug-in I found at www.flamingpear.com. It is a handy library that I would highly recommend.
The lens flare has a capability worth noting. You might notice that the flare in this screen shot is brighter than the flare in the previous one. To get this working I created about 80 random points on the surface of the sun - I like to call them "sun spots". Thanks to the fact that the Earth has a close to constant radius and the station (in my game) maintains a constant orbital radius, the grazing angle at which objects will touch the horizon does not change. I calculate this value at the program start and then I test each of my 80 sun spots to see if their relative angle is less or more than the grazing angle. Once I found the sun location in screen space, (what I like to call "sun screen") I draw the flare with an alpha value set to the fraction of the number of unoccluded sun spots.
A quite nerdy achievement this week was the ability to print out the scene graph to the text log file. It should have been easier than it was but for some reason I was having a pretty hard time with tree traversal. I finally got it though after some guess and test programming. I think my favorite part are these ASCII character lines and arrows the best.
Tuesday September 23, 2008
The graphics are coming along, slowly but surely. I'm learning how to finesse or sometimes coerce XNA into doing what I want. The blue haze of Earth's atmosphere is created with a billboarded circle with a gradient texture. The clouds on the Earth are a separate piece of geometry from the surface itself so they can slip and slide along. In this screenshot you can see my simple dummy station module which is based on the real ISS Unity Module. I also need to figure out a way to get higher resolution textures, as you can see some pretty bad pixelation in this shot.
Here you can see I have the moon orbiting the Earth. I had a hard time getting to work correctly because it is currently 4000000 units away from the center of the Earth. Units in this case are roughly meters but I'm working with everything at 1/20 of real scale. In this screenshot you can also see the issue I'm having with my sky dome. The problem obviously is that I'm mapping a rectangular image onto a spherical object which is causing it to pinch at the poles. I tried several ways of stretching it out to counteract the issue but so far nothing has really done it right.
Because I'm parsing the geometry into my own data structures, I can do some fun things like change the rendering mode to a wireframe display, show face normals, bounding boxes, and centroids. This proves useful when you can't find an object in your viewport because a HUGE-ASS planet (don't move the hyphen) is filling the screen. This also verifies that the vertex parsing is working correctly.