[RELEASE] - Synchronised Torus 1.0 (2015-12-14)
Posted: Fri Dec 11, 2015 8:11 pm
Did you ever follow a freighter or another ship from witchpoint to the station, to the sun, or to a remote rock hermit? Did you spend countless hours of real world time doing this because NPC ships don't seem to have torus drives?
But the NPC pilots are using the same ship types as the player, so they must have torus drives too. We just don't see them being used because of the mass-locking problem. If we follow NPCs, we mass-lock them! And perhaps NPC pilots, especially Anaconda and shuttle pilots, are paid by the hour...
Since the release of the Escort Contracts OXP we know that even Anacondas have torus drives and that mass-locking can be prevented if the torus drives of two or perhaps even more than two ships are synchronised. This is possible when the ships are close together and head in the same direction.
Because I liked to follow freighter convoys from the beginning, I had the idea for this even before I had changed a single line in any OXP and definitely before I had installed Escort Contracts. Now, some months later, I have learned enough to implement the idea, and the OXP took only a few hours to create. It uses the same basic technique as Escort Contracts, using a high velocity to simulate torus speeds and a frame callback function to keep the velocity of both ships identical. But there are also significant differences between both OXPs because I use a timer function to control everything while Escort Contracts uses a special AI. And, of course, the synchronisation is started by the player in my OXP, while it is controlled by the "mother" in Escort Contracts.
The torus synchronisation controller is a piece of (invisible) equipment, but you don't need to buy it because every ship can do this (as is shown by Escort Contracts). It can be primed by using "shift-n". Then you have to target a ship, and if all conditions are met you can start and stop the synchronised torus drive with the "n" key. Note that while the player has to start the synchronisation and can interrupt it at any time, he isn't really in charge: The course and destination is defined by the NPC, and you can't steer a NPC somewhere you want him to go!
The conditions for starting and maintaining synchronisation include:
- Distance between ships must be between 500 and 2500 meters (like in Escort Contracts).
- The headings must match (a few degrees deviation will be tolerated).
- The destination (next waypoint) of the NPC ship must be outside scanner range.
- Neither the player nor the NPC ship must be mass-locked.
I consider this first release a beta version because there are still some things to do:
- It works only for single ships. But many ships travel with escorts, and I plan to include them (this shouldn't be too difficult).
- Perhaps I'll have to implement some kind of asteroid detection to prevent collisions, especially when including escorts.
- The console messages should "beep up" and "beep down" like it is done with the standard torus messages.
- I want to make some more testing runs.
Is there a simple way to include the beeping without using a SoundObject? There is a method player.consoleMessage() but no player.beep() or, what I had expected, a beep parameter for the console message.
The OXP is actually quite simple (at least until now) and easy to understand. If you look at the code, much of it is used for checking the conditions (distance, heading, mass locking). Because it isn't AI based, it doesn't change the "target" ship in any way, so it should work with OXP ships too. It even works with friendly aliens - I was able to make a long test flight together with an Odonatean, only the second one I've ever met! (If you are reading this, thank you for your cooperation!)
Is this OXP useful for playing? It is probably usful for testing, especially AI testing, but it's not much of a game changer. It's made for players who love flying around and watching other ships. On one of the first test runs with this OXP, I met a Moray Medical Boat, and I was able to follow it during sun skimming, and today I did the same with the mentioned Odonatean. This would not have been possible without torus synchronisation because approaching the sun without torus drive takes too long and the player ship would overheat.
But, at least in theory, you can use torus synchronisation for tactical reasons too. If you feel unsafe, you can attach to a group of Vipers (when I have finished including escorts). Or you can follow a freighter, hoping that it will be attacked and drop its cargo, so you can scoop it after killing the pirates. You could do the same without torus drive of course, but it would take much longer. Using the torus drive seems to increase the chances of running into trouble: If you travel through a system with normal speed, many of the pirates, bounty hunters, and police seem to eliminate each other before you run into them.
The current version is available in the OXZ manager and also on the Wiki page.
But the NPC pilots are using the same ship types as the player, so they must have torus drives too. We just don't see them being used because of the mass-locking problem. If we follow NPCs, we mass-lock them! And perhaps NPC pilots, especially Anaconda and shuttle pilots, are paid by the hour...
Since the release of the Escort Contracts OXP we know that even Anacondas have torus drives and that mass-locking can be prevented if the torus drives of two or perhaps even more than two ships are synchronised. This is possible when the ships are close together and head in the same direction.
Because I liked to follow freighter convoys from the beginning, I had the idea for this even before I had changed a single line in any OXP and definitely before I had installed Escort Contracts. Now, some months later, I have learned enough to implement the idea, and the OXP took only a few hours to create. It uses the same basic technique as Escort Contracts, using a high velocity to simulate torus speeds and a frame callback function to keep the velocity of both ships identical. But there are also significant differences between both OXPs because I use a timer function to control everything while Escort Contracts uses a special AI. And, of course, the synchronisation is started by the player in my OXP, while it is controlled by the "mother" in Escort Contracts.
The torus synchronisation controller is a piece of (invisible) equipment, but you don't need to buy it because every ship can do this (as is shown by Escort Contracts). It can be primed by using "shift-n". Then you have to target a ship, and if all conditions are met you can start and stop the synchronised torus drive with the "n" key. Note that while the player has to start the synchronisation and can interrupt it at any time, he isn't really in charge: The course and destination is defined by the NPC, and you can't steer a NPC somewhere you want him to go!
The conditions for starting and maintaining synchronisation include:
- Distance between ships must be between 500 and 2500 meters (like in Escort Contracts).
- The headings must match (a few degrees deviation will be tolerated).
- The destination (next waypoint) of the NPC ship must be outside scanner range.
- Neither the player nor the NPC ship must be mass-locked.
I consider this first release a beta version because there are still some things to do:
- It works only for single ships. But many ships travel with escorts, and I plan to include them (this shouldn't be too difficult).
- Perhaps I'll have to implement some kind of asteroid detection to prevent collisions, especially when including escorts.
- The console messages should "beep up" and "beep down" like it is done with the standard torus messages.
- I want to make some more testing runs.
Is there a simple way to include the beeping without using a SoundObject? There is a method player.consoleMessage() but no player.beep() or, what I had expected, a beep parameter for the console message.
The OXP is actually quite simple (at least until now) and easy to understand. If you look at the code, much of it is used for checking the conditions (distance, heading, mass locking). Because it isn't AI based, it doesn't change the "target" ship in any way, so it should work with OXP ships too. It even works with friendly aliens - I was able to make a long test flight together with an Odonatean, only the second one I've ever met! (If you are reading this, thank you for your cooperation!)
Is this OXP useful for playing? It is probably usful for testing, especially AI testing, but it's not much of a game changer. It's made for players who love flying around and watching other ships. On one of the first test runs with this OXP, I met a Moray Medical Boat, and I was able to follow it during sun skimming, and today I did the same with the mentioned Odonatean. This would not have been possible without torus synchronisation because approaching the sun without torus drive takes too long and the player ship would overheat.
But, at least in theory, you can use torus synchronisation for tactical reasons too. If you feel unsafe, you can attach to a group of Vipers (when I have finished including escorts). Or you can follow a freighter, hoping that it will be attacked and drop its cargo, so you can scoop it after killing the pirates. You could do the same without torus drive of course, but it would take much longer. Using the torus drive seems to increase the chances of running into trouble: If you travel through a system with normal speed, many of the pirates, bounty hunters, and police seem to eliminate each other before you run into them.
The current version is available in the OXZ manager and also on the Wiki page.