Wing Commander Prophecy: Unlimited

Hello!
What do You mean under WC3/WC4 style turret firing and WC3/WC4 style fighter guns?

For turrets I mean:
  • WC3/4: Alternate barrel fire
  • Privateer2: Random refire delay
For fighters:
  • Staggered weapons fire
  • Refire delay not cumulative
I might also be able to make the AI fighters fire faster than every 0.25 seconds so AI can use the storm fire and dust cannons at full speed. Wooooo!
 
I had a strange notion that it would be cool to try and push the vision engine to support Privateer style gameplay. It's probably too much to ask of the gameflow part of prophecy without getting ahold of the source code itself, but I got to thinking about what the maximum map size is in the game and whether it would be possible to populate a single map with enough ships, star bases and such to make it feel alive.. For example, what would we need to reproduce a single Privateer star system in the vision engine?

It's certainly possible to have multiple locations that you can land on already. There's at least one mission in prophecy where you have to land on a space station. Gameflow scenes once landed should be simple enough. However my (albeit rudimentart) understanding of prophecy is that one of the big challenges is that the game will want a mission file every time you take off. Similarly with ships, to change the loadout on your ship you pretty much have to have multiple ship files for each possible loadout. A few other challenges would be creating a faction system, cargo, credits, etc.

Anyway, the steps I was thinking would be to
1) Determine largest size playable area. Can it be increased?
2)Can it be populated with multiple (more than two) landable areas?
3)Is it possible to switch the way the game tracks your mission to be map based (update nav data instead of world data) to allow for landing and taking off without needing separate mission files that detail every encounter and scripted events? Possible have the game dynamically alter a master mission that individual missions get added to when activated?
4)Is it possible to allow the game to rewrite ship files on the fly to allow player customization of loadout/weapons/shields etc.?
5)Would all encounters need placed in the mission files? or is there a way to create random encounters as well as set mission parameters? A simplified version of this for testing could be to write a mission with a single encounter, and three nav points and see if it's possible to randomize which navpoint the ship shows up at, or if it even shows up at all.
6)I honestly don't remember if Prophecy ever has you use a jump drive. However it's kind of a magic "load a new map" button anyway.
7)The standoff guy's found a way to track the amount of fighters available on your carrier per mission and to allow some basic ship selection. It's possible the game could track a rudimentary reputation system based on what type of fighters you've destroyed.

Anyway, I know it's probably beyond what you intend to do with your tools for the game, but your work just had me wondering what was actually possible. Another one of the things I was thinking of was full 3D cockpits with a freelook mode. Is it possible to unlock the camera to allow something like that? Biggest issue there I see is that the hud is not in the actual cockpit geometry, But you could pretend the HUD is helmet based I guess.

Thanks for reading through my rambling.
 
I had a strange notion that it would be cool to try and push the vision engine to support Privateer style gameplay. It's probably too much to ask of the gameflow part of prophecy without getting ahold of the source code itself, but I got to thinking about what the maximum map size is in the game and whether it would be possible to populate a single map with enough ships, star bases and such to make it feel alive.. For example, what would we need to reproduce a single Privateer star system in the vision engine?
It's actually something that I had given a lot of thought to, years ago. Obviously I never made any attempt to create such a project - and in all likelihood, I never will - but I believe I had the core mechanics figured out quite satisfactorily. Only one aspect seemed to pose extreme difficulty - the player's ship. I never could see any satisfactory way of allowing ship modifications. At best, complete ship replacement might be feasible. Mission assignment (as opposed to mission content) also poses a challenge, but only in terms of the effort it would require when editing gameflow - nothing impossible, though.

The way to implement Privateer in WCP is to basically treat missions as systems. There is nothing in the game's structure to prevent a mission from being repeated multiple times, so the player can take off to fly in a given system as many times as he likes. Landing on a different station (and being able to take off from it again) is also easily done, as global variables are shared between missions, and can be used to keep track of where the player is landing, and where he needs to appear on take-off.

Populating the system is the least of all problems. WCP's limits, without any modifications at all, are vast compared to what Privateer did. I doubt any Privateer system had more than twenty navpoints (note: encounters between navpoints were actually invisible navpoints). I doubt WCP would have any difficulty with that many navpoints, and certainly the amount of space it can put between navpoints is far greater - I mean, in Priv, you had tens of thousands of kilometres, in WCP you have hundreds of thousands, or even millions of kilometres. When it comes to ships themselves, again there is no difficulty. WCP has far more powerful scripting capabilities than Priv did. Those basic random encounters you had in Priv are a piece of cake. More complex scenarios are easily possible - little set-pieces, where you encounter pirates who have disabled a freighter, dock with it, and then run away afterwards unless you happen to interrupt them. Or a bounty hunter popping in to pick out one particular ship among a dozen others. Or a militia flight scanning somebody else other than you, sometimes finding something, sometimes not. Some of the more complex situations, to keep scripting reasonable, would have to be bound to specific locations, but there is a lot that could be done. I don't know if you've played Skyrim, but if you did, and you recall the random events that happened throughout the wilderness, that's the level of complexity we're talking about. That can be done. The way this would work is that as much of these events as possible would be scripted in a separate unit, which would be shared by multiple missions. In the end, during compilation, each mission would end up with all of this code, but while scripting, only one place would need to be modified.

Questions remained on how missions would actually be assigned. Having random activity every time the player flies is no problem. The fiction system we had in Standoff gets us part of the way towards a mission computer like those in Priv, except that it doesn't easily allow randomisation of mission selection, and mission parametres: in other words, we could have, for example, nine missions for the player to choose, but these same missions would be displayed every time you were in this system. Mission parametres would be randomisable, but only partially so - basically, we can replace numbers in the fiction, but nothing more than that. So, you can have a mission where you must kill x Retros at Nav y, and you can change the x and y, but that's as far as it goes, and even the navpoint changes would be limited to numbered navpoints. However, the fiction system is our own implementation, and I don't doubt that if somebody wanted to, it could be sufficiently enhanced.

Oh, and when it comes to going to another system - well, we did that easily in Standoff, so it's not much of an issue here either. The only catch is that because of the way we handled the jump cutscene, there might be some issues if you're jumping out while under enemy fire, because the ship you see in the Standoff jumping cutscenes is not actually the player, but a stand-in.

As I said, the big catch is the ship. However, if someone were determined enough, there is certainly no reason why a DLL patch couldn't actually modify a ship file outside of the game. In that case - and if somebody could create a decent interface - the player would basically always be flying the same object (e.g. something called player.iff), and then the DLL patch would modify this object accordingly. This is still not perfect, as using a system of this kind would actually be making universal changes to the game: so, modify your ship, then load a savegame from two missions ago, and guess what? You've got both the modification and the cash you paid for it. Unless the changes to the ship file were done only in memory, and based on global variables (but that's a lot of variables). As you can see, the more I talk about this aspect, the more problematic and complicated it gets.

One other catch for the overall concept: it goes without saying, that as you think through a mod like this, there are some things that sound very easy and unproblematic, but then turn out to be extremely problematic in practice. That's bound to happen. Somebody would simply have to give it a try and see how it goes.
 
Great work on improving the engine!

It's great to see this much excitement around all the potential this could hold!

Bravo Zulu, Wingnuts!
 
Thanks for the positive comments guys, nice to see the interest in this.

Regarding the making the engine into a Privateer style game, it would certainly be a challenge to do. It is currently outside of the scope of this project but it did get me thinking about tackling some of the issues raised by @AD and @Quarto and some things could be done. Could think about something for the future but it would definitely be a big project.

One thing I have found is there is currently a limit of 10 'Action Spheres' which I believe translates to Nav Points so this needs increasing if we wanted to take a trip around New Detroit.

Back on to WCPUNL I have squashed the bug causing the crash with the extended cap ship turrets. I had an offset wrong by two bytes and I had missed an opcode altogether so I'll give that a run through this weekend to see if its all solved.
 
1) Determine largest size playable area. Can it be increased?
  • There doesn't appear to be a size limit of the playable area that I can see. The only current limit is 10 nav points.
2)Can it be populated with multiple (more than two) landable areas?
  • I don't see why not. In prophecy you change from midway to the comm relay, it just uses a mission call to change landing location. When you arrive at the nav point your landing location would change via a trigger.
3)Is it possible to switch the way the game tracks your mission to be map based (update nav data instead of world data) to allow for landing and taking off without needing separate mission files that detail every encounter and scripted events? Possible have the game dynamically alter a master mission that individual missions get added to when activated?
  • Not too sure, would need some investigation. My guess is some sort of dynamic .MIS creator would be needed that takes into account current missions.
4)Is it possible to allow the game to rewrite ship files on the fly to allow player customization of loadout/weapons/shields etc.?
  • I would probably maintain a 'ships\player.iff' file instead of using multiple different ship files and rebuild it depending on current ship and components that have been purchased. Some sort of mapping file would be needed to map the hardpoint names of mesh files of all the playable ships.
5)Would all encounters need placed in the mission files? or is there a way to create random encounters as well as set mission parameters? A simplified version of this for testing could be to write a mission with a single encounter, and three nav points and see if it's possible to randomize which navpoint the ship shows up at, or if it even shows up at all.
  • All ships need to be added to the mission files. It would be like privateer is now: once you clear out the nav points they remain empty until you jump out and in, land and launch. Additional code would be needed to jump ships in and out like P2 does.
6)I honestly don't remember if Prophecy ever has you use a jump drive. However it's kind of a magic "load a new map" button anyway.
  • Not sure as players never jumped in Prophecy. Will have to see how Standoff does it.
7)The standoff guy's found a way to track the amount of fighters available on your carrier per mission and to allow some basic ship selection. It's possible the game could track a rudimentary reputation system based on what type of fighters you've destroyed.
  • Possibly. A file could be used to maintain certain stats. Logically the save file I guess.

Anyway, I know it's probably beyond what you intend to do with your tools for the game, but your work just had me wondering what was actually possible. Another one of the things I was thinking of was full 3D cockpits with a freelook mode. Is it possible to unlock the camera to allow something like that? Biggest issue there I see is that the hud is not in the actual cockpit geometry, But you could pretend the HUD is helmet based I guess.
  • Not sure. It should be possible to change the position of the camera dynamically, but assigning it to buttons could be the stumbling point.
 
It should be possible to change the position of the camera dynamically, but assigning it to buttons could be the stumbling point.

Awesome! I'm just glad to see people thinking about this kind of stuff. I will have to reply more in depth later but your last line got me thinking that a proper button mapper to allow us to better support more controllers without needing external third party programs would be a welcome thing.
 
One thing I have found is there is currently a limit of 10 'Action Spheres' which I believe translates to Nav Points so this needs increasing if we wanted to take a trip around New Detroit.
Wow, really? Just ten actionspheres? It's rather remarkable that I didn't remember this... surely, there must have been a Standoff mission of some kind that would have used up this limit. Maybe not, though.
 
Quick update:
  • Confirmed capship turret limit increase no longer causes a crash.
  • Capship gun turrets now use the refire delay from BULLET.IFF instead of being fixed at 1 second.
The Confed/Kilrathi laser turret is unaffected as it is set to 1.0 second refire anyway, but the Nephilim maser turret has a smaller refire delay of 0.8 seconds potentially increasing game difficulty a little. Naturally all can be reconfigured to your hearts content.
 
Last edited:
Another quick update...
  • Privateer 2 style random refire delay on gun turrets. Impossible to chain all turrets together for a true P2 style. Refire delay calculated using refire delay from BULLET.IFF and a random number gen so high refire guns don't refire too fast.
 
I like the slightly randomized refire delay because it adds the impression that each shot is being triggered manually by a gunner instead of automatically.
 
Hm, sorry if it is apparent, but where can I get the model upgrade pack? Can't see any link and don't see it in the downloads of the game section either ?! Thanks
 
Back
Top