A couple colony buildings on a planet. Factions colonize planets to collect resources.

Inside a space station.

My game is getting pretty close to being finished, so I figured I should start posting a bit about it.

It's called Salvation Prophecy. I describe it as a "military space epic". It's single player. You play as a soldier, and rise up through the ranks by undertaking space and planet battle missions. You also spend some time exploring new alien planets. Once you reach high enough rank, you take over the command of your faction.

Whenever I have a bit of free time, I'll post a screenshot or two, and discuss it a bit. I'm much more of a gameplay programmer than a graphics programmer. But since this is a graphics forum, I may try to focus more on the graphics stuff. I dunno, we'll see where it goes.

Thanks guys!I just updated all the video and screenshots on my website in the last couple of days, so anything you see on there now is very recent.

Tod - I've spent a stupidly ridiculous amount of time working on this. If you want to see some real crap, remind me to post some screenshots from early in the project.

_____________

Some planet battle screenshots:

Here's the breakdown on the graphics of these planet battle screenshots.

Landscape:I'm using Ogre 1.7's TerrainComponent. I've modified the terrain shader so it can handle both a main directional light, and a few point lights. I got this to work in a single pass, which seems to help performance a lot. There's also a few other modifications to help reduce the appearance of texture tiling in distant terrain.The shadows are PSSM.

The landscape was sculpted in Ogitor.

Bullets: All bullets are drawn as 2 billboards. One for the streaky tail, and another for the head. The head part is necessary because from a straight-on viewing angle the tail isn't visible.For performance reasons, I draw every similar-looking bullet with a single BillboardSet, and manually move around all the billboards each frame.

Muzzle flashes:These are also drawn with a billboard. I also use a single BillbaordSet to draw all the muzzle flashes.

Explosions and Smoke:I'm using ParticleUniverse for these.

Skybox:These are normal, straight up skyboxes. On some of my skyboxes, especially in space, I use a shader to give the stars and nebula a slight shimmer, but it's subtle.

Rocks and stuff:I use the PagedGeometry add-on for this, which uses static geometry and "impostor billboards" to draw a lot of stuff in a small number of batches. I had to really hack apart PagedGeometry to get the PSSM shadows working with them. Shadows were a huge time-sink for me. I actually don't get why pure graphics programmers enjoy working on stuff like shadows, it gives me a gigantic headache. I'm a million times happier when I'm working on gameplay code.

User Interface:This is CEGUI, with a completely rewritten skin.I've always had excellent performance out of CEGUI.

Bottom right icons: Stims. These are heals or performance enhancing buffs. The second screenshot also shows a rune with a special power that I've collected from an alien planet.

Left meter: weapons and health

Top right: radar

Buildings:The main point of a planet battle is to destroy the buildings of an enemy colony.The shader for the buildings use diffuse, spec, normal, and glow textures.It handles all the lighting in one pass.It does a second pass to display damage. I keep a list of the bullet impact positions for each building, and pass these into the shader. The shader then briefly displays a sort of energy-fizzle-glow at the point of the bullet impact.

Fliers:Those things in the sky of screenshot 2 are called fliers. They drop bombs on you until you shoot them down. The character in screenshot 2 is taking some damage from a flier bomb.

Characters:

The character shader is pretty complicated:

diffuse, spec, normal, and glow textures.

hardware skinning

up to 5 lights, point lights and directional supported

a "stim texture" overlay for when you're using a stim effect.

a damage texture overlay for when you're taking damage

everything in single pass

I spent a lot of work on this, so I could have quite a few troops fighting at once, without killing performance.

Character Animations:Ogre provides a pretty low-level layer for animation support. So I spent a lot of time creating an animation system capable of smoothly transitioning between 2 different animations without any animation hitching. And it also needed to be capable of blending different animations so I could do stuff like run and shoot at the same time. I used Ogre's BoneBlendMask functionality to accomplish this. For example, if I'm just shooting, it uses all the bones from the shoot animation. But if I'm shooting and running, it uses the upper-body bones from the shoot animation, and combines them with the lower-body bones for the run animation.

Mind Calamity wrote:I wonder if you're using a physics library? The air/spacecraft movement was awesome.

Hey Mind Calamity,

I'm using PhysX. Although in space, the ship movement doesn't have anything specifically to do with PhysX. I calculate the ship's velocity every frame, based on user input for the player, or AI code for the non-player ships. Then I just tell PhysX which direction everything is moving in. So each frame, there's a PhysX call to setLinearVelocity and setAngularVelocity, and that's it.

I'm pretty sure it could easily be done in any other physics library. Although PhysX is extremely fast, so it doesn't impact my framerate much at all.

DavlexDesign wrote:Very nice stuff, the info you provided is great, and what I wouldn't give to have all that in my system mate.

Hey Alex,I find it interesting to compare our projects. You're like 100% awesome crazy new tech, 0% gameplay (so far). And I'm like 0% awesome crazy new tech, 100% gameplay. Maybe someday (if I'm not totally burnt out on space games or totally bankrupt after SP ships), we'll combine our talents to make a game with 100% awesome crazy new tech and 100% gameplay.

That sounds good, maybe we can do something together (one day), by the end of these projects, you never know, we'll both probably be burned out and BROKE !!!lol, As long as you're enjoying it, it won't be a problem, I know I'm enjoying writing my project, it's a real brain bender for me (that's how I like it).

tod wrote:Do you use paged geometry for your plants? Or only for smaller stuff. I ask because I have some issues with impostors for big meshes.

Yes, I use paged geometry for my plants. Although I agree, there are certain meshes that impostors work very well for, and others not so well. They work best for roughly symmetrical trees, such as a cone-shaped pine tree. You start to notice the popping between the different impostor billboards more with less symmetrical trees. You also don't get proper lighting or shadows on impostors, although this may not be a problem depending on the lighting and fog in your scene.

There were a few times where I had to open the impostor image file and manually adjusted the colours to get the impostors to look right.

SunSailor wrote:What are your plans for distribution? Any deals made yet?

Nothing signed. I explored a traditional publisher route early in the project, and really didn't like the options which were available. I walked away from one contract offer. So now I'm far more sold on digital distribution. Getting on Steam is my priority, due to their huge subscriber base. I had an opportunity to demo my game for them at a Game Developer's Conference, and got some good feedback and contacts, so I am highly optimistic about getting the game on Steam.

As far as I understand, Steam does not ask for or want exclusive distribution rights, so I will likely consider other digital distribution services as well.

I followed the projec from earlier stages and there were some videos on the net, the progress even on graphics is impressive

I would have some questions :How do you manage enemy movement and obstacle avoidance ? for example with structures or trees ?Do you use some special library or terrain map navigation or something else ?Do you have your own map editor or how do you generated the worlds ?