Editing OMP
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 2: | Line 2: | ||
{{Addon| | {{Addon| | ||
− | 1=[http:// | + | 1=[http://www.snoopie.at/face/omp/?Home OMP homepage]| |
2=Friedrich 'Face' Kastner-Masilko | 2=Friedrich 'Face' Kastner-Masilko | ||
}} | }} | ||
− | + | '''OMP''' was announced on [[IRC]] as project to 'properly' execute a [[Multi-player|multi-player]] environment in Orbiter. Presumably this meant it would take care of more of the conventional space-simulator multiple player caveats and be more of an end-user oriented product than the previous, mostly experimental multi-player projects [[IRCMFD]] and [[Multiorb]]. | |
− | |||
− | ''' | ||
Using low-level TCP and UDP connections between machines, OMP may be considered a third-generation Orbiter [[multi-player]] system, although it's understood that each machine is still responsible for its own physics. | Using low-level TCP and UDP connections between machines, OMP may be considered a third-generation Orbiter [[multi-player]] system, although it's understood that each machine is still responsible for its own physics. | ||
Line 26: | Line 24: | ||
* '''V0.2.9.6''' - 2006-09-21 Public development closed, start of closed beta-testing. First release to beta-team | * '''V0.2.9.6''' - 2006-09-21 Public development closed, start of closed beta-testing. First release to beta-team | ||
-------- | -------- | ||
− | + | ==Status== | |
− | + | As of January 2009, software development is ongoing by means of a [http://bitbucket.org/face/omp BitBucket project]. Both server and client software were rewritten using .NET technology. At this time no public servers are known. Some [[Virtual space agency|Virtual space agencies]] used OMP for their missions before public development was closed. | |
− | + | ||
− | + | The current development model consists of one private server - hosted by the author of OMP - and a beta-test team using the newest client snapshots. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | In early December 2008, a [http://bitbucket.org/face/orrl fork] called ORRL (Orbiter Rocket Racing League) was established - consisting of additional content by various other developers - to create a more intriguing environment for online racing competition. This is based on the ORRL ideas introduced in [http://orbiter-forum.com/showthread.php?t=5490 Orbiter-Forum]. | |
− | |||
==Networking issues== | ==Networking issues== | ||
− | From the 0. | + | From the 0.2.2 patch most NAT problems are worked around and OMP now sends 8 kb packets, so, virtually any type of internet connection can use, as well as host OMP. |
+ | |||
+ | ==Installing early versions== | ||
+ | |||
+ | # Download the OMP 0.2 pack from [http://www.snoopie.at/face/omp/?Releases here] | ||
+ | # Extract the zip archive in the orbiter directory. | ||
+ | # Download the following files from [http://www.snoopie.at/face/omp/?Development here] | ||
+ | #* Orbiter plugin | ||
+ | #* Default configuration for the Orbiter plugin | ||
+ | #* Dummy scenario file for the automatic startup feature | ||
+ | # Put the orbiter plugin in Orbiter\modules\plugin directory. OVERWRITE THE PREVIOUS FILE! | ||
+ | # Put the Default configuration for the orbiter plugin in Orbiter\modules\plugin directory. OVERWRITE THE PREVIOUS FILE! | ||
+ | # Put the Dummy scenario file for the automatic startup feature in orbiter\scenarios OVERWRITE THE PREVIOUS FILE! | ||
+ | # Disable any firewalls. | ||
+ | # Open the orbiter launchpad, and under the modules tab, activate the OMPClient module. | ||
+ | # When you activate that module, a dialog will pop up. That's the OMP client. | ||
+ | # Click in the server text field. Delete the IP inside it, and put the server IP you are trying to connect. | ||
+ | # Click on standard. | ||
+ | # Under name, put the username you want. Put a password you can remember, and hit connect Orbiter.(Launch Orbiter changes to connect orbiter) | ||
+ | |||
+ | This should get most of the users connected, if they follow the procedures correctly. If you are still having problems connecting, try this alternative method: | ||
+ | |||
+ | # In the OMP client, click on Custom. The custom field should become active. Type your IP address in the custom field. If you don't know your IP address, get it [http://whatismyipaddress.com/ here]. | ||
+ | # Make sure ports 1500 and 2500 are forwarded, for both UDP and TCP | ||
+ | # Try reconnecting. | ||
==Features== | ==Features== | ||
Line 53: | Line 68: | ||
* Orbiter Playback function works with OMP | * Orbiter Playback function works with OMP | ||
* Support for different planetary systems | * Support for different planetary systems | ||
− | |||
− | |||
− | |||
[[Image:ompschematic.png|thumb|right|OMP technology schematic.]] | [[Image:ompschematic.png|thumb|right|OMP technology schematic.]] | ||
Line 62: | Line 74: | ||
==Technology== | ==Technology== | ||
− | The concept of OMP is a client/server-based architecture with timestamped stream communication. The system uses [[w:SNTP|SNTP]] timeservers to synchronize both clients and server to [[w:UTC|UTC]]. The 3 elements in the concept – client, server and timeserver – can be seen in figure to the right | + | The concept of OMP is a client/server-based architecture with timestamped stream communication. The system uses [[w:SNTP|SNTP]] timeservers to synchronize both clients and server to [[w:UTC|UTC]]. The 3 elements in the concept – client, server and timeserver – can be seen in figure to the right. |
− | Not shown in this sketch is the communication between clients. This communication is similar to the [[w:UDP|UDP]] transmissions between client and server | + | Not shown in this sketch is the communication between clients. This communication is similar to the [[w:UDP|UDP]] transmissions between client and server. |
Basically, there is one server hosting a “universe” for all connected clients. This “universe” is a specific Orbiter configuration and should be known by every client. I.e., every client must know what Orbiter configuration it has to start before it connects to the server. This will be changed in later versions towards automatic negotiation in order to assure proper client/server configurations. | Basically, there is one server hosting a “universe” for all connected clients. This “universe” is a specific Orbiter configuration and should be known by every client. I.e., every client must know what Orbiter configuration it has to start before it connects to the server. This will be changed in later versions towards automatic negotiation in order to assure proper client/server configurations. | ||
Line 70: | Line 82: | ||
Clients start a [[w:TCP|TCP]] session with the appropriate server and can check out the server environment (users, information about vessels, scenario information etc.) similar to an [[IRC]] or [[w:telnet|telnet]] session. They actually join the [[multi-player]] session by sending an appropriate command followed by their name, password and receiving port. The server responds with the reserved receiving port on the server side. Clients can then start the actual simulation link. | Clients start a [[w:TCP|TCP]] session with the appropriate server and can check out the server environment (users, information about vessels, scenario information etc.) similar to an [[IRC]] or [[w:telnet|telnet]] session. They actually join the [[multi-player]] session by sending an appropriate command followed by their name, password and receiving port. The server responds with the reserved receiving port on the server side. Clients can then start the actual simulation link. | ||
− | The TCP session is | + | The TCP session is used for transmission of text information of any kind to keep UDP packet sizes small. An open TCP session is therefore a must, if the client wants to see the right class (mesh) and name of its neighbor vessels, because this text information is transmitted via TCP rather than UDP with an automated negotiation sequence. |
− | As soon as a client joins the [[multi-player]] session, it tries to synchronize the simulation’s [[w:MJD|MJD]] to the | + | As soon as a client joins the [[multi-player]] session, it tries to synchronize the simulation’s [[w:MJD|MJD]] to the server’s MJD – being a fault tolerant average of all client’s MJDs. The server transmits this information by means of a '''Keep Alive''' UDP packet (KA). As soon as a client is in sync with the server regarding MJD (i.e. all celestial bodies are in proper position), all vessels hosted by the client are transmitted to the server by means of the absolute position w.r.t. the appropriate gravitational body with major influence. |
− | The server decides, | + | The server decides, which vessel is in visible range of which other vessel and transmits the appropriate information by means of a '''Group Information''' UDP packet (GI). Each client processes it’s GI list and sends either an absolute or a relative '''State Information''' UDP packet (SI) to the neighbor client, depending on: |
− | + | * the velocity of the vessel w.r.t. the gravitational body – currently everything below 1000 m/s is considered “non-orbital speed”, therefore absolute coordinates can be transmitted – and | |
− | * | + | * the availability of the target vessel (i.e., the vessel of the neighbor client) – if there wasn't an absolute coordinates transmission before, the target vessel is not visible to the client yet, therefore it can not calculate relative coordinates. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | If a client receives an SI, it creates or updates the appropriate vessel with a generic name (based on the global ID of the vessel) and a default class. This default vessel will be exchanged with the proper name and class later on, if the client was able to gather the information from the server via TCP | + | If a client receives an SI, it creates or updates the appropriate vessel with a generic name (based on the global ID of the vessel) and a default class. This default vessel will be exchanged with the proper name and class later on, if the client was able to gather the information from the server via TCP. |
− | |||
− | |||
− | |||
If streaming of SI or GI is interrupted (either because the server is offline, the neighbor client is offline or – less dramatically – the vessel is out of visible range) for more then 5 seconds, the appropriate vessel is removed. | If streaming of SI or GI is interrupted (either because the server is offline, the neighbor client is offline or – less dramatically – the vessel is out of visible range) for more then 5 seconds, the appropriate vessel is removed. | ||
− | + | In order to automate the above mentioned steps for login and logoff, the client software uses the following procedure for instant Orbiter scenario launch: | |
− | [ | + | After the [[multi-player]] session scenario has been generated with a special name (“$Multiplayer session$” ensures the scenario showing up as first entry in the scenario list in the launch pad), the system remote-controls the Orbiter launchpad to select that scenario and launches the simulation. The same remote-controlling ensures, that no other scenario can be launched in the meantime by disabling the appropriate buttons and controls. |
==See also== | ==See also== | ||
* [[Multi-player]] -- an overview of multi-player add-ons for Orbiter | * [[Multi-player]] -- an overview of multi-player add-ons for Orbiter | ||
− | |||
* [[IRCMFD]] | * [[IRCMFD]] | ||
* [[Multiorb]] | * [[Multiorb]] | ||
Line 104: | Line 104: | ||
* [[Project Hamac]] | * [[Project Hamac]] | ||
− | |||
[[Category:Add-ons]] | [[Category:Add-ons]] | ||
[[Category:Multi-player add-ons]] | [[Category:Multi-player add-ons]] |