A buoy is a marker that is placed in a Point in Space and is advertising a message of some sort. It is an object that all players have the possibility to see on the galactic map.
Some players use these as a way to draw a border between players. Another use is to show everyone where the major threat of the game is. It can always be used as false information / propaganda. Other player see them as an annoyance and a reason to destroy you.
There is a long running debate with buoys; whether they are something that should be only dropped by a ship or allowed at all. The rebuttal against this is that buoys don't matter since you can still send a message to everyone giving them the same information regardless. Advanced players don't enjoy their use since it clutters the game map. Senator Guru put it this way: "They're considered about as polite as setting up a flashing floodlight outside someones bedroom at night."
There is at least one advanced player, who enjoys their use.
E.g.: If you want to keep track of WHs then one can use pen 'n' paper, 3rd party tools, excel or just set a bouy with the important informations about the WH (Name, exit and turn number of last scan). So even if you lose the scan of a WH you permanently have the information at hand. In the case of unstable ones you can check via the existence of the ID and the age of the information how likely the WH still exists. There are several other kinds of information which are bound to locations in the map which one likes to be marked directly on the map.
--GFM GToeroe 21:03, 24 July 2011 (CEST)
To create a buoy, you must first create a Point in Space. You can choose this option from the VGA Planets client interface on the task bar. Once chosen, click in an area of space where you would like the Point in Space created. It will be immediately created there. Select the Point in Space then go into its properties page. There you will be able to configure its message and who should be able to automatically see it. Any text that you enter into the Name field will appear as the object's name on the galactic space map. Any text put into the description field below that will be available by looking at the Data Pad of the buoy. By default, all players will be able to clearly see this buoy. If you do not want this to happen, then click on their number to turn it off for them. NOTE: They will still be able to scan the buoy if they get close enough.
Only the creating player or a player with the Allow Commands selection on the Races Screen will be able to destroy a buoy. If you destroy a buoy on the turn that it was created then it will never be created. If you destroy a buoy at any other time then it will be queued for deletion and will be destroyed at the end of the following turn.
Buoys have a noise value of 0 and a scan range of 0, so they don't make any noise and can't see anything. Even a noise value of 0 will appear on the map as an Unknown Contact and if your enemy's scanners are good enough, they will be able to see it from afar.
 Game Configuration
The host of a game can configure the game (in HCONFIG) to have the maximum number of buoys allowed. If this value is set to 0 then there will be no limit, but if it is set to 1, then each race will be allowed only 1 buoy. The default value is 20.
Tim Wisseman provides this snippet of code in December of 2003. It demonstrates how buoys are detected by the players. Jason Northrup reviewed the code in February 2004 and believes that player 1 can see all buoys.
SUB DetectBuoy() DIM z AS LONG DIM b AS LONG FOR z = 1 TO 20000 IF flavor(z) = obj_Buoy THEN IF objA(z).pNum > 0 AND objA(z).pNum <= 30 THEN LoadBuoy z b = objA(z).pNum - 1 '// The who sees my buoy bit flags // b = b Or buoy.pFlag objA(z).objMASK = b '// Basic contact m1_Contact(z) = b '// Full data m1_Detect(z) = b Buoy.contact = b SaveBuoy z END IF END IF NEXT z END SUB
This portion is probably a part of the space object creation code.
CASE obj_PodOutFit mW_Hide(objID) = 750 LoadPodOutfit objID If PodOutfit.Docked > 0 Then mW_Hide(objID) = 0 CASE obj_PodResupply mW_Hide(objID) = 200 LoadPodResupply objID If PodResupply.Docked > 0 Then mW_Hide(objID) = 0 CASE obj_Buoy mW_Hide(objID) = 0 mW_Range(objID) = 0 '// '/// Removed sensor range code '//////IF Buoy.range > 30000 THEN Buoy.range = 30000 '///////mW_Range(objID) = Buoy.range
Explanation from Tim: When you flip the switches on the buoy control as to who can see the buoy it flips the bits in the pFlag number, a 32 bit number. We are using bits 0 to 29 for the 30 players in the game. Player 1 is bit 0 and player 30 is bit 29.
b = b Or buoy.pFlag
When the bit in the number objMASK is flipped on, the object data is included in the RST file.
objA(z).objMASK = b
If the Contact bit is flipped you will at least see the object has an UNKNOWN CONTACT!
'// Basic contact m1_Contact(z) = b
If Detect is bit is flipped the race will see the object as FULL data, as in they will see the buoy. Bits 0 to 29 are used in Contact and Detect as bit flags, one for each player.
'// Full data m1_Detect(z) = b Buoy.contact = b SaveBuoy z END IF END IF NEXT z END SUB
If m1_Detect(z) = 1 And m1_Contact(z) = 1 player 1 will see the bouy
If m1_Detect(z) = 3 And m1_Contact(z) = 3 player 1 and 2 will see the bouy
If m1_Detect(z) = 2 And m1_Contact(z) = 3 player 2 will see the bouy and player 1 will see an unknown contact.
CASE obj_PodOutFit mW_Hide(objID) = 750 LoadPodOutfit objID If PodOutfit.Docked > 0 Then mW_Hide(objID) = 0
A resource pod has a hide power of 200 the lower the number the harder it is to see CASE obj_PodResupply mW_Hide(objID) = 200 LoadPodResupply objID If PodResupply.Docked > 0 Then mW_Hide(objID) = 0
A bouy has a hide power of 0, meaning scanners will never see it and a scan range of 0, meaning the buoy can not SEE anthing around it, the Buoy is blind.