Border World territory
As we are finishing up the longbow cockpit I’d like to skip over to give a little preview of Tyr, and discuss some of the challenges ground missions present us.
The Tyr System
FeklyrTarg has managed to convincingly recreate Tyr VII (DefianceIndustries noticed that it is actually a blow up of the Sinai Peninsula; if you look you can see the Suez in the texture).
I mistakenly thought that the planets scale up as you got closer to them, so that is how I implemented them. Turns out this wasn’t the case in the original game but the effect of Tyr getting larger as you approach is a definite plus.
When you have a junkyard dog snapping at your heels…
This mission is the first time you encounter Banshees, and although they’ve not had an art pass yet they’re already looking great.
After taking a few of them out you’re treated to a cutscene down to the surface – and this is where our challenges begin.
The first issue was to add support for loading the terrain and we had to ensure that the models which we had full transforms for lined up exactly as they did in the original game.
We have accomplished this and added support for terrain collisions. The ~1million vertex original terrain can be rendered on modern hardware in a single draw call – but still that’s not an insignificant number of poly’s. Going in I had expected to find a largely repeating landscape, but no, the team had a single heightmap that it took hours to fly across.
The only screenshots we can currently show once you get down to the terrain are from classic mode as we are still working on high detail terrain.
In the classic game the fog started incredibly close to the player – when you can see into the distance you notice the repetition of single texel mountains.
As a rule we have always matched the original geometry, just with more detail, however the increased draw distances really draw attention to the fact that the mountains were nothing more than noise on the original heightmap.
…the best thing to do is turn around and kick it in the chops.
We want to stay as true to the original games as possible, but being too faithful to this geometry would inevitably be disappointing. As such we’ve decided we are going to work on creating more exciting terrain, something perhaps more inline with what PSX gamers were shown than what PC gamers actually got.
I’ve long been sitting on code to tesselate a high resolution heightmap around the player so that we can theoretically support incredibly detailed heightmaps but not melt poor wingnuts laptops.
This is the first time we’ve deviated in any significant way from the original game and are curious to hear peoples reactions to that idea before we get too deep into it. Here’s a list of things we are hoping to explore:
Sky materials in place of space backgrounds (on a planet by planet basis)
Volumetric clouds
Original terrain models with greater height variation
Slight altering of controls to give the feel of gravity and air resistance
We also have a list of tasks that ground missions mean we have to prioritize, none of which generate screenshots or articles:
Object avoidance (specifically the terrain, but in the process I will be adding generic avoidance) – hopefully better than WCP’s asteroid suicide avoidance which is actually more complex and has been put off too long.
Saving player damage between missions (the ground portion of a mission is a unique file)
Saving power configuration settings between missions
Missile turrets
Although in a very basic state the mission is playable from beginning to end, we’ve added support for the camera laser and other special weapons.
Whilst all this is going on I am also focusing on improved AI, with a greater variety of behaviours. This also won’t generate any articles but hopefully will be evident in the next demo.
Like bees on honey
Speaking of those pesky relentless surface to air missiles, ground missile launchers are another ground related task. We had tracked down a missile launcher model in the game which we had assumed was not used (supposedly there were a number of bugs with missile turrets) and were planning to resurrect it; as what you see in the game is a standard capship turret we assumed it was removed at the last minute.
But All-Tinker helped us identify it – it *is* in the game, taking the place of the two barrels connected to a standard turret. It was particularly hard to spot as there seems to be a bug rendering it. I’d love to know if this was always intended to the be the case or if the model was quickly thrown onto the standard turret due to time constraints.
Unless someone corrects us however we will be assuming the model was designed to be part of something closer to a SAM launcher and we will aim to do something distinct from the capship turrets.
Well, carriers don’t fly themselves, Admiral.
Finally a call for help. If you want to speed up our development time then we need you! This job requires no technical background and will reduce our workload considerably.
One thing we’ve recently gotten working is switching CDs, this means with LOAF’s save archive we can jump to any mission in the game. Unfortunately the universe is not so simple…
…one thing we often say internally is “we should have done any game but IV” – one of the many reasons for this is that as far as we can tell a lot was hardcoded *shakes fist*. In Wing Commander 3 the rooms are data driven – in IV we have found no such data and so each room requires leg work. Currently if you load a mission from later in the game the background will not match the available conversation.
What we need is for people to play a special build of the game which logs which room you entered, which videos played – and most importantly what variables were changed so we can identify what they are used for. We need people to then go through the original game and record which of the multiple background images are used for each conversation (these can be viewed in originator by looking in SPECIAL<X>.TRE ->Gameflow -> Shapes<X>.PAK ).
If you can help let us know on the forums and we can provide you with a special build for tracking the variables in-game.