However, a big benefit of this new policy of 'openess' is that I've had to strip out or make consistent a lot of the hardcoded and cludgy stuff of which there was a fair quantity.
As an example, here's the DATA/TANKBASE.cfg text for a Blue Team Medium Tankbase with Medium Turret attached;
#TANKBASE MEDIUM BLUE
DefData 7,5,2 'CLASS, SUBCLASS,ALIGNMENT
DefData "MESH\BLUE\MEDIUM TANK\TANKBASE.B3D"
DefData "MEDIUM TANKBASE"
DefData 0, 0 ' FULLBRIGHT, BLENDMODE
DefData 0.1 ' SHININESS
DefData 255,255,255 ' R,G,B
DefData 0.75 ' POWER OUTPUT (1 MAX)
DefData 1.5 ' INIT POWER OUTPUT
DefData 3, 0, 0 ' POWERUPS INSTALLED (3 = INSTALLED)
DefData 0, 0, 0
DefData 0, 0, 0
DefData 0.333 ' ENGINES POWER ALLOCATION
DefData 0.333 ' WEAPONS POWER ALLOCATION
DefData 0.333 ' SHIELDS POWER ALLOCATION
DefData 0.4 ' TURN RADIUS .1 - 1 (IMMEDIATE)
DefData 0.01 ' ACCELERATION .1 - 1 (IMMEDIATE)
DefData 2 ' TOP SPEED ALLOWED
DefData 0 ' TOP CLIMB SPEED
DefData 0 ' SCANRANGE
DefData 0 ' SCANANGLE
DefData 512 ' BATTLE RANGE
DefData 0 ' NO OF BULLETS IN FLIGHT
DefData 5 ' SHIELD STRENGTH
DefData 5,5 ' ARMOUR MAX LEFT, RIGHT
DefData 5,5 ' ARMOUR INIT LEFT, RIGHT
DefData 0 ' RELOAD TIME
DefData 0 ' SALVO RELOAD TIME
DefData 4 ' BASE COURAGE
DefData 1024 ' MIN OFFSET FROM PATROL GOALPOINT
DefData 2048 ' MAX OFFSET FROM PATROL GOALPOINT
DefData 2 ' COL TYPE
DefData 10, 4, 10 ' COL RADII:X,Y,Z
DefData 0, 1000 ' COL SHAPE, MASS
DefData 1 ' DYNAMIC
DefData 1000 ' PAUSE TIME BETWEEN RETREATS
DefData 1 ' SHADOW CAST FLAG
DefData 3, 1 ' INVENTORY SLOTS, GLYPHS CAN CARRY
DefData 0 ' UNDEFINED
DefData -99 ' ACTOR MAX LIFETIME
DefData 1 ' PLACE ON TERRAIN
DefData 3 ' ENERGY SHARDS DROPPED
DefData 3, 0 ' EXPLOSION SUBCLASS,EXPLODE AT MAX LIFETIME
DefData 150 ' SCORE IF DESTROYED
DefData 1 ' LEAVE CORPSE
DefData 0 ' UNDEFINED
DefData 1, 1.25 ' TRAIL TYPE, WIDTH
DefData 0.01,1 ' TRAIL FADE TIME, TEX INDEX
DefData 0 ' ANIMATED
DefData 2048, 128 ' FADE DISTANCE/SPAN
DefData 0,0,0 'FLAG_TARGETMODE, FLAG_SHOOTFLYER, ACCURACY
DefData 0,0 ' MIN/MAX PITCH
DefData 0,0 ' MIN/MAX YAW
DefData 0,0 ' MIN/MAX ROLL
DefData 0,0 ' MIN/MAX ALTITUDE
DefData 2 ' THREAT VALUE
DefData 2 ' TARGET VALUE
'CHILD ACTOR; CLASS, SUB_CLASS, X, Y, Z, SCALE
DefChild 8,7,0,0,0,1
'SAMPLE, ACTION, PITCH BY SPEED, STATE REQ
DefSound "ROOT",17,1,1,1
'PARENT, X/Y/Z, DEF 1, 2, 3, SCALE, LINKSPEED, SHIELDLEV, ACTORSTATE
DefEmitter "ROOT", 0,0,0, 22,0,0, 1,0,0.33, 0'DAMAGE SMOKE
#DefEnd
The DefChild entry adds the tank turret.
The DefSound is the engine sample linked to tank speed.
The DefEmitter is a particle emitter linked to shield level i.e. shield level <.33 then emit smoke.
I hated going back into working code and chopping masses out just to get back functionality I already had, but the clean up is starting to reap benefits. Actor creation and tweaking is more flexible and easy now, code compilation time has dropped a bit (important when you're making many, many test compiles), and random oddness due to code inconsistency has (hopefully) been reduced.
With the above I'd like to start getting early builds out into the wild for testing. The ultimate goal would be that players have thoroughly tested the game before it's officially released and that any serious technical issues would have been dealt with before, say, the game appears on Steam.
But I'm behind a few roadblocks at present. The main issue is that the game uses an old PhysX wrapper for collisions. Xors3d is the game's engine and Bullet Physics is present in Xors, but it needs extra features such as collision groups and filtering before it can be used. Luckily the Xors team have indicated these features are on the way, so here's hoping the critical update is not too far away.
There's also issues with shadowing - in that although it looks great, it's far too slow at present. This IS mainly due to shadows being applied across the entire level. Xors current shadow system does not have a specified distance shadow cutoff. This is odd. Squid has indicated he may change this.
Regardless of an update, a problem I'll need to solve is that I want level geometry such as hills to cast shadows that objects can move into. This looks great as (for example) a tank's glowing bits then define its shape as it moves through a darkened area. Downside is that it's wasteful to calculate shadows for the entire level. Need a solution that allows for local dynamic shadow casting from largescale terrain features but also allows for distant large scale static shadows. Perhaps a combination of static lightmaps and local shadow casting?
On the graphics side, there has been some progress. For example, have redesigned Red Team Powerstations and Basecamp - which can be seen in the cap below. Got a bit of an art deco look going on I think.
When a fortress's surrounding powerstations are down, the invading team can send in sappers to destroy fortress walls.
For an extra wrinkle, I've placed a 'hole' high up on one side. Lob a shell in there and the station's shields will be massively reduced in one shot (which is a reference to the Council Tower level in TU1) . I figure this may be a bit more interesting that simply pinging away at the station's shields. Am toying with the idea that only medium tanks have the gun elevation to acheive this.
Updated the powerup install screen. Still rough, but have redesigned so that it's clearer which parts of a tank are upgradeable and which upgrades have sub-upgrades. Drag the cursor over an icon to have a brief description of the powerup appear bottom left. Worked up a very rough GUI editor to do this as I was sick and tired of recompiling to see where things were.

