Archive for January, 2011
The enemy has a very well protected asteroid field. This asteroid field is a major problem to our interests; it has a long range cannon installed in it, and it’s bombarding our mining facilities at regular intervals. Adding to it, the Alliance also has a BattleStation close by, and everything‘s protected by a powerful shield generator. These structures are also protected by heavy turrets inside the shield itself, which means that any ships that try to attack this position will be completely exposed to the fire of the heavy turrets without any chance to fight back, as their shots will be stopped by the shield generator.
The Alliance doesn’t have many ships stationed in there; they probably think they won’t need them.
So we decided to gather a strong fleet, and try to destroy this Alliance position.
We gathered a fleet of 4 battleships, 4 cruisers, 11 destroyers and 10 Frigates and ordered it to jump out of hyperspace near the asteroid field.
Our fleet gets closer to the Alliance Shield – the Alliance units can be seen inside the shield.
These kinds of shields are very strong, but our battleships have a lot of firepower – they should be able to disable it if they have the chance to concentrate their fire into it. But the Alliance commander will surely move his ships against our fleet to prevent that from happening.
Some of our ships’ long range weapons started firing against the Alliance frigates that are coming out of the shield. We can see one cruiser hitting the massive shield, and its shot being stopped by it.
The Alliance frigates are no match against our fleet’s firepower, and some of them are already exploding in pieces. In the meantime, the shield is now in range of some of our ships. 2 battleships and 3 cruisers start to attack the shield.
We just finished the last frigates, and now we’re hitting the shield.
Our ships keep hitting the shields, and the enemy tries to prevent this, by sending their cruisers against our ships. Two of our destroyers just exploded.
Although the cruisers are inflicting some damage to our ships – another of our destroyers is exploding – our ships keep concentrating their fire on the shields, and hopefully it will soon be down. One of our batteships is engaging an enemy cruiser with missiles.
The shield is finally down – our ships can now get closer. The Battlestation has its own shields though, and there are still some enemy cruisers in there, and a lot of heavy turrets.
Let’s see if we have enough firepower to win this battle.
We are now taking heavy losses; one battleship and one cruiser are gone, although we just finished 2 enemy heavy turrets.
There are no more screenshots from this point forward, but we did lose this engagement.
We were able to destroy the enemy Battlestation, but ended up losing all our ships in the process, and the enemy shield generator was not destroyed, so soon enough his shield will be up again.
This attack was a complete disaster.
In this Tech post we will talk a bit about new features in Gemini wars.
Physx real time explosions and simulation of exploding structures in space.
What’s a space game without nice explosions? All big ships have awesome explosions, who doesn’t remember star wars or stargate ships blowing up? If we pay close attention to movies, it usually starts with a chain reaction of small explosions around the ship, and then a huge final explosion as the ship is vaporized.
Well, we want the same in Gemini. And we worked quite a bit at it, making a big ship explode in a cool and epic way is not easy.
We want the explosions of space stations and massive ships to be gradual, we want the player in panic and pain witnessing his precious ship being pulverized, or ecstatic at the massive destruction that he’s delivering his opponent. We really believe this is a must for gameplay.
So to achieve this, a ship exploding has two stages:
First, when a ship “dies”, several explosions are set off in key parts of the ship, like a chain of explosions.
Then, just before the final explosion the ship is broken into massive fragments.
The original idea we had was to “break” the ship in a modeling program, let’s say in 50 different pieces, attach to them a rigid body, and when the ship is about to explode, just hide the rendered ship and exchange it with these pieces. Then a force would be applied into these pieces and we would let the physics engine calculate the pieces flying away.
Technically it could be done. But it would be a nightmare for a large amount of ships and structures. The player would need a super computer to calculate forces, rigid bodies, etc. In other words, it wouldn’t be a very good solution for slower machines, so, we came up with another solution, much faster than this one.
What we do is still break the ship into pieces and make it explode, still using rigid bodies and forces that PhysX calculate, but all is pre computed into a 3d animation file. So the 3d simulation of breaking parts flying around is no longer using the CPU to calculate all of this in real time, instead we just play back an animation of what PhysX did.
So now when a ship explodes, we change the ship object by a low poly version of a ship animation exploding into pieces. The result is pure awesomeness ? and an extremely fast effect.
To make it look better, we unblend an alpha factor on the ship pieces in time, so that when the pieces are moving away they fade out nicely while moving.
We made a small video showing USF Battleships exploding:
We hope it looks as good to you guys as it looks to us.
Until next time, in Gemini Sector.
I’m going to talk a bit about how we render the ships in Gemini Wars.
Gemini Wars is real time strategy game in real time, and we want to achieve great visuals in the game so it looks really good.
As such, each ship can have from 20k polys (battleships) to 3k polys (frigates). If we do some math, having 100 ships simultaneously at the screen will become quite prohibitive.
We want the game to be playable in a large range of hardware, and at the same time to look great, but how to do this if we need to render planetary bases, shields impacts, flares, ships, lasers, asteroids, and still do the entire math for physics (calculating weapons impacts, ships maneuvering) and still perform AI calculations?
The answer to this is LODS (level of detail).
Let’s first take a look at this USF cruiser:
This ship is rendered in full detail at close range, using 3 textures (diffuse, normal and illumination map) in the shader, and also self-shadowing. If you look closely, the parts of the ship that are in the shadow still have illumination from the windows and little lights casting over the entire structure.
This is achieved by an illumination map; an illumination map is an alpha image that says NO to the shader when calculating the light impact on that area, leaving that pixel always on.
As we scroll the mouse wheel, we can start zooming out, to see what’s around the ship.
Over here we still see a lot of detail in the ship. But if we zoom out a bit more..,
We can still see the ship structure perfectly, however it’s already too far to notice any shadowing, and the texture detail can be lowered too.
Zooming out a bit more, there’s no need any more to any fancy shaders, no illumination maps, no normal mapping, and now we have an icon over the ship, showing us where the ship is.
This icon is of extreme importance, as we zoom out we will stop seeing the ship.
The zoom out in Gemini is quite huge, so this is really needed. Let’s zoom out a bit more.
We can barely see the ship anymore, although it’s still possible to select it clicking on the icon, or moving it anywhere we want.
Just the ship model rendering is in its lower LOD. We probably could get away with rendering a 50 poly ship here, but with today’s graphics cards, there’s not a reason to do so.
Right now, we don’t even render the ship anymore, or render any shield impacts. The ships can still be selected and moved, or issued attack orders. Zooming out even more, we can see the entire Star System.
From this view, hyperspace travel between planetary bodies can be ordered.
Going back to the Level of Detail on the ships, and taking a look at the Cruiser in high detail:
We can see the self-shadowing on the top cannons falling over the ship structure, the small windows, and even little cracks in the armor of the ship.
If we rotate the view, looking at the engines we can see light flares:
All of this detail is gone in lower Lods.
The next image shows 2 different Lods of the cruiser, side to side for comparison. You won’t ever see this in the game
The cruiser closer to the camera has self-shadowing, no illumination maps, and the textures are low resolution. The farthest cruiser has all the bells and whistles on.
The next shot shows 3 levels of the cruiser; the lower lod doesn’t even have proper UV cords, there’s actually no need for it, the player will never see them anyway:
And to finish this entry, one image of the Cruiser with motion blur enabled, in the battle camera view:
During the Campaign, the player will meet and interact with several characters.
This is General Roarke, the USF commanding officer in the Gemini Sector.
A career officer obsessed with the USF, who wants to see the whole Alliance dead, no matter what. He’s been through quite a lot in his life, and we can see that in his face.
In the beginning of his career as a commanding officer in a class Destroyer ship, he was injured in his face and lost his eye, but thanks to biotechnology he gained a new one.
He’s not the kind of guy I would like to meet in a dark alley at night
The website for our new upcoming RTS game – Gemini Wars – has been officially launched: www.geminiwars.com.
Along with the website, the first teaser of the game has been released. It can be viewed in the website, or in our Youtube channel: http://www.youtube.com/user/MrCamel101
We will be revealing new media and content soon, so stay tuned and be sure to follow our blog :)