Monthly Archives: April 2011

Iteration 5 news: Textured models incoming and finaly a name for the project

I’ve purchased some stock models and they will soon appear in game. Also I’ve begun actively recruiting artists to start the process of bringing the game’s assets up to a professional level. So in Iteration 5 (due in about a week more or less) you will start to see more and more textured assets.

In other news I’ve finally settled on the name of this project, and the name is “Void Destroyer” I’m terrible with naming things because it is hard for me to make a final decision, I get very critical of names, sometimes staring at the “name your character screen” for a while in games. I’ve registered and will soon start to build that website. The website will be in a more “themed” fashion (as compared to whose goal is about the technical and game development aspects of the project). The Void Destroyer website will include the background for the “universe” of the game, descriptions of the forces you encounter and tech that make up the game world in the hopes of getting players more excited about the project, drawing them into the setting. The neat thing about finally settling on a name is that it will become less awkward to discuss the game, instead of saying “unnamed project” I can say Void Destroyer, this means that I could start approaching the blog and game review communities with the title.

Command ship progress and happenings

The very basics of the command ship upgrades is in place. Players can now upgrade and repair the command ship a bit, the only options avaiable are to add front guns, turrets, boost cruise speed and autorepair rate. These are just basic placeholders that are useful for coding the behind the scenes of the command ship, so if you think they are lame… you are right. These upgrades are passive, meaning that they are always on and don’t require any thought to use, they currently also have no cost except for time. In the next/future iterations the command ship will also gain active abilities, for example a missile barrage or some sort of a heavy weapon, more are planned and appear in a list on this forum thread: feel free to add to this list. Players will select these abilities, they will be active for a short time and take a bit of time to re-charge/get ready for next use making them a tactical decision and a great aid in fights. In near iterations upgrades and abilities will also cost resources, the command ship will get these resources either from trading stations (you will see a cargo container fly towards the command ship) or through trading ships. Making the decision to upgrade and which portions to upgrade a strategic decision with costs and benefits as well.

In more personal news, this was finals week, and I’m now on “summer vacation” (still full time employed). A month and a bit without school, then back for a brief summer session and then a Fall session. I’m hoping I’ll be able to add quite a bit to this project over this free time.

Started work on the player’s command ship.

So the first steps in adding this big part of the game are in. The game will have elements from multiple game genres: commanding ships like in an RTS, ship to ship combat like in a space sim, economy and base management like in an empire game and repairing/upgrading the player’s command ship like in a RPG.

First off I added a new model to the game thanks to Solcommand.

Click to see full size.

Click to see full size.

This is a placeholder model since my “vision” for the end result is a bit different. First off the ship will need a more distinct heavy weapons placement towards the front. The ship will also need to be able to accomodate more turrets and have a small hangar bay. The ship will also need a neat looking bridge.

After adding this ship I gave it a “is critical” flag. So from now on when this ship is destroyed the game ends (prior to this the game would end when all of the player’s ships were destroyed). So after almost 2 years in develoment I’ve started on the “game over” screen when the player’s ship gets destroyed. The game now doesn’t instantly end and return to the main menu. Instead the camera gets positioned to look at the critical ship being destroyed and a “game over” screen is displayed showing some statistics (work in progress).

Things still left to do: make a autorepair type ability (otherwise the ship is far too big a liability). Add functionality for repairs and upgrades to the ship. Add functionality for using some unique abilities eg: firing of heavy special weapons, speed boosts, shields, etc. Add some sort of a warning system when the ship is under attack and/or low on health (since the player may often be in control of another ship this will be necessary to bring the attention back to the command ship if needed).

Working on sound/music

The first portion of the soundtrack is completed thanks to Pat. So it is time to add music to the game, adding it is easy, however I want to let a player disable it or change the volume so I’m working on modifying OgreOggSound to take these added functions. It is pretty easy, but also pretty boring. Oh well it has to be done, and I look forward to the result.

Iteration 4.2

Iteration 4.2 is ready to download on the main site. The biggest change is the weeklong struggle with the physics engine. I finally was able to learn how to properly communicate with it and it is working fairly well. There is still a little issue with thrust not always correctly reaching the speed setting, but that can be looked at later. I’m really excited about the changes so I wanted to make it available.

I gave the AI the ability for its weapons to turn slightly to better aim, as a consequence of the AI not being able to line up to its target as good as it could under the other flight system. What’s neat is that the AI is much better at hitting targets, but the player can still do a good deal of evasion (in the old system, evasion was almost impossible) of enemy fire. The lateral thrusters really help in this.

Another somewhat big challenge was a proper way for the ships to stop rotationg. So to recap, with the new physics engine the ships rotate via applying a force, because there is no fricksion in this space sim, this would mean that the ship would rotate forever. So of course this wouldn’t make it easy to control the ship, so I have to add a counter force to stop. Problem was that there was this tiny amount of rotation that messed with a variety of things. For example aligning for gravity drive (what I call the fast mode of travel beteen large objects) didn’t work well because in order for it to kick in it checks whether the ship is stopped (including rotation). This also interfered with the camera, as you can probably see when the ship turns the camera turns to give the effect of motion, this depends on the rotation being stopped to return to the neutral position. So with a tiny bit of rotation persisting, even though the ship wasn’t rotating, it had a big impact.

So when I fixed the rotation issue, a bunch of other problems simply went away! yay!

Drunken AI

So I started work on converting the AI to use the new physics system. Before the AI would know exactly how to turn, if it needed to turn right 90 degrees and the ship had a capacity to turn 80 degrees a second, it would then turn at 80 degrees per second, then the final 10. Now that turning is velocity based this is a bit more complex. The AI now has to decelerate the turn or it will over shoot the target.

At first I had a bug where the AI would constantly overshoot so it looked like the AI was drunk, weaving left and right eventually slowly getting to the correct point. I’ve fixed that bug, but the AI has a bit of a problem rotating correctly to hit fast moving/turning targets.

This may not be totally bad since this solves a problem that I had for a long time, the AI was far too accurate and the player didn’t stand a chance on a one on one fight. Now that the AI can’t turn perfectly anymore and has to slow down the turn the player has an advantage. The problem is that the AI is now too disadvantaged, especially when it comes to beam weapons. Before beam weapons were clearly superior to projectile weapons, now they are inferior. So what’s the solution?

One thing that I think I should invest much time into is making the ships a bit easier to maneuver, not as easy as before, but the deceleration of a turn should be faster to give both the player and the AI more control. Its pretty neat and feels fairly “realistic” the way it is now, but needs tweaking to be more fun and arcade like, a good balance between both worlds to reduce unwanted frustration of the player.

The other thing that I can do is give the AI the same “cheat” ability that the player has had. When the player ship’s weapons were near the target, they would turn within 30 degrees or so and help the player aim. The AI might need this ability as well.


The other neat thing about the better physics integration is that now there exists the “correct” momentum of a ship. Before I had a value that was most of the time correct, except when a ship would be colliding against another object, then the value was horribly mistaken, because the ship’s momentum wouldn’t be affected by the impact (under the old system, now this is under the control of the physics engine). This might not sound like a huge issue, however when it comes to aiming and AI it was big. Weapons have a built in “aimNode’ (as I call it) that calculates the correct position for the weapon to be aimed to have a great chance to hit their target. Part of the formula was the target object’s momentum and the firing object’s momentum. If this value was off then the weapons would miss. This off value would crop up a lot when objects were colliding, the weapon AI would still think it was moving and thus shots would be hopelessly off target.

So not only was the old physics bad in the sense that collisions were very sticky and ships sometimes would get stuck on each other, but in many cases weapons wouldn’t be able to destroy them, aggravating the stuck issue because the ships were basically invulnerable due to weapons constantly overshooting them.

Physics engine

As I was play testing Iteration 4, I watched as a large carrier turned maneuvered. Problem was that the large carrier was able to stop turning instantly. This is not the type of space sim I want to make. Don’t get me wrong I don’t want the ships to be sliding left and right either, hard to maneuver, but I want there to be some weight to them. I’ve been planning on fully integrating the Bullet physics engine for a while and started down this path again (I gave up many times).

The last attempt of me doing this resulted in a hybrid system, I would position and orient my ships manually, but when a collision happened I would give the physics engine control which would then show a dynamic collision. Problem was that doing things this way severely limited the physics engine’s understanding of the situation, because it didn’t know about the linear and angular velocity of the objects, the collision wasn’t dynamic. I would limit the physics engine control over the object for a split second because if the physics engine had control then the player wouldn’t, so I limited this to the point of impact and a few moments after, meaning that the collision would start abruptly, then stop abruptly, no fluidity. Plus the ship’s momentum wasn’t impacted by the collision.

Anyways the above system gave me more then I had before so I was fairly happy with it. But now I have a much more integrated system, now I don’t rotate an object, I apply a angular force to it, I don’t move a ship, I apply a linear force to it.

Here’s a before and after video showing the same collision happen in the two modes:

The change is subtle, but the after is more fluid and dynamic, and best of all the player has some degree of control at all times. What is left is for me to teach the AI how to maneuver with this new system in place as well. Hopefuly the benefits here will also be neat.