I’ve burned for the week. There is one major network bug still to be fixed. I estimate I’ll get it done and release in the beginning of next week.
Meanwhile the Dev Branch version has been released to the happy alpha testers.
Posts from February 2011
Health & armor system
Link-Dead is very detailed about the health system. Each limb has its own health parameter. This plays a bit different than most games (including Soldat). For example a weapon that requires 2 shots will require two shots at the same spot in order to kill. If you shoot at different spots you will just hurt each limb instead of killing. Fortunately I introduced wounds:
– on legs: slow you down
– on arms: make your aiming really hard
– fatal wounds which make the the dude slowly die from bleeding
The armor in the next version will be a bit different. First of all it can be placed on any limb you want. If you shoot at the armor it doesn’t decrease your health it just damages the armor. So every armor piece has its own damage parameter. If it is destroyed completely – the armor falls off (you can actually see the armor falling off). After the armor falls off flesh is exposed, if you shoot at that, it will kill the guy. This also brings new mechanics to the gameplay. For example a fully armored guy will be very resistant to explosions. Because only the armor will take the damage. So is he really tough? Yes and no. Because it is sufficient for one armor part to fall off to expose some flesh. If he has just this tiny hole, the explosion will tear that flesh and kill him. Cool eh?
Bug fixing and tweaking is nearly complete. After this I still need to finish the Nuclear Plant map & draw guides for the new features. I’m thinking of releasing a test branch of the game besides the public release. I could update that frequently but it would be more confusing with all the unexplained new features.
Packing floats
This is a post for coders.
Here are 4 useful inline routines to decrease the size of a float by 50% (from 4 bytes to 2 bytes). I use them to pack every float in the game that doesn’t need big precision. Actually none of them do. So positions, velocities, cursor points are all packed (starting from the next version).
typedef unsigned short u16
typedef signed short s16
typedef float f32
// packs floats in the range of 0.f -> 32776.f/base;
// in this case base = 100.0f so range 0.f -> 327.76f
// when packing floats in this way you need to make sure they stay in this range
// that is the cost of packing
inline void packfloatu16( f32 x, u16 &y, f32 base = 100.0f)
{
assert( x <= 32776.f/base );
x = min( 32776.f/base, max( 0.0f, x ) );
y = x * base;
}
inline void unpackfloatu16( u16 x, f32 &y, f32 base = 100.0f)
{
y = (f32) x / base;
}
// the same routine as above for signed characters
// this is very good for packing velocities, since they rarely
// become very large
inline void packfloats16( f32 x, s16 &y, f32 base = 100.0f)
{
assert( x <= -0.5f*32776.f/base );
assert( x >= 0.5f*32776.f/base );
x = min( 0.5f*32776.f/base, max( -0.5f*32776.f/base, x ) );
y = x * base;
}
inline void unpackfloats16( s16 x, f32 &y, f32 base = 100.0f)
{
y = (f32) x / base;
}
If assert() doesn’t work on your system, replace it with ASSERT or whatever the equivalent is. You can also remove it entirely since it is only for debug.
Weapons as real objects
One of the biggest additions in the next release will be guns as real physical objects. So now when you drop a gun it actually falls on the floor instead of disappearing. I added this a couple weeks ago and it launched an avalanche of changes. Because now I had to tweak everything to meet this standard. So picking items off the floor is a bit different (you can do it from different positions, not just by standing next to it, even in air), clips fall out from the gun, shells have sounds;
weapons can be shot at – this has 2 effects:
1. If your fatigue is high the weapon falls out of your hands. (the gun being shot at also rises your fatigue, cause it hurts)
2. The weapon can be actually used as a little shield; this makes more sense with melee weapons which actually have a block animation (press UP [W] to block).
Gun resting
Normally when you fire an automatic weapon you have to deal all the time with big recoil. To compensate that you can use a bipod to place it in a firm position. I haven’t yet done a bipod attachment but what I did is resting the gun (is that the proper term?). You can just put the gun against a window frame, barrel or any other object at shoulder height. This pretty much eliminates recoil. Take a look at the picture:
Just place the gun on a horizontal obstacle and the gun “locks”. The circle cursor indicates that the gun is resting. This seems pretty cool now, but we’ll see how it plays when this version is released. I’m currently wrapping everything up and I hope to have everything ready at the end of the week. I encourage anyone that hasn’t payed and downloaded the LD Alpha yet, because this is a one-time opportunity to participate actively in the development of the game (before the beta is finished). Working with a team of fans is much more fun than doing this game alone. So if you have cool ideas, c’mon!
Picture tutorials
I decided that the video tutorials aren’t such a great idea. The controls in Link-Dead aren’t that complicated (especially in the next release it will be super simple). Sometimes you just need to take a look for a second to know what to do. So the best way to do this is a picture.
Take a look at these example picture tutorials and tell me what you think. I want to make more of these for each movement/action and put them in some sort of Field Manual which would be available under F1.