{"id":50766330,"url":"https://github.com/TwinFan/XPMP2","last_synced_at":"2026-06-28T18:00:36.655Z","repository":{"id":37893326,"uuid":"238804152","full_name":"TwinFan/XPMP2","owner":"TwinFan","description":"Multiplayer library for X-Plane 11/12 with instancing, TCAS override, and sound","archived":false,"fork":false,"pushed_at":"2026-05-10T20:54:05.000Z","size":126296,"stargazers_count":34,"open_issues_count":2,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-05-10T22:29:30.749Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://twinfan.github.io/XPMP2/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TwinFan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-06T23:15:42.000Z","updated_at":"2026-04-02T03:53:57.000Z","dependencies_parsed_at":"2023-12-04T23:55:43.981Z","dependency_job_id":"2fe127c0-25f9-4d46-851e-abe592f574c2","html_url":"https://github.com/TwinFan/XPMP2","commit_stats":null,"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/TwinFan/XPMP2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwinFan%2FXPMP2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwinFan%2FXPMP2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwinFan%2FXPMP2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwinFan%2FXPMP2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TwinFan","download_url":"https://codeload.github.com/TwinFan/XPMP2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwinFan%2FXPMP2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34898568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-11T14:01:24.521Z","updated_at":"2026-06-28T18:00:36.649Z","avatar_url":"https://github.com/TwinFan.png","language":"C++","funding_links":[],"categories":["Other Software Librares"],"sub_categories":["Python Language Plugin and Scripts"],"readme":"XPMP 2 and XPMP2 Remote Client\n=========\n\n[![Build all Platforms](https://github.com/TwinFan/XPMP2/actions/workflows/build.yml/badge.svg)](https://github.com/TwinFan/XPMP2/actions/workflows/build.yml)\n\nThe original X-Plane Multiplay Library is the work of many fantastic people,\nwith Ben Supnik, Chris Serio, and Chris Collins appearing in recent files and documentation.\nBut the origins date back to 2004, and very likely many more were involved. Thanks to all of them!\n\nThis complete re-implementation honours all the basic concepts (so I hope)\nbut makes use of now 3 modern X-Plane 11 concepts:\n- [instancing](https://developer.x-plane.com/sdk/XPLMInstance/),\n- [TCAS Override](https://developer.x-plane.com/article/overriding-tcas-and-providing-traffic-information/), and\n- [Wake Turbulence](https://developer.x-plane.com/2022/02/wake-turbulence/)\n\nThus, it ports the idea of the library also into the times of Vulkan and Metal\nwhen the drawing mechanisms used by the original library no longer work.\n\nAt the same time, using instancing marks basically all parts of the original rendering code\nof the library outdated...it is basically replaced by one line of code calling\n`XPLMInstanceSetPosition`.\n\nConcepts like the syntax of the `xsb_aircraft.txt` file or certainly the idea of an\nmulti-pass matching to find a good model are retained, though re-implemented.\n\nXPMP2 does no longer call any OpenGL function and hence does not require\nto be linked to an OpenGL library. The included XPMP2 Remote Client and\nXPMP2-Sample applications do not link to OpenGL.\n\nDespite its new approach, XPMP2 shall be your **drop-in replacement for libxplanemp**:\nThe original header files are still provided with the same name.\nAll original public functions are still there.\nThe original [XPCAircraft class](https://twinfan.github.io/XPMP2/html/classXPCAircraft.html)\nis still there, now derived from [XPMP2::Aircraft](https://twinfan.github.io/XPMP2/html/classXPMP2_1_1Aircraft.html).\nSee [here](https://twinfan.github.io/XPMP2/BackwardsCompatibility.html) for more details.\n\n## Pre-Built Library Release ##\n\nIf you don't want to build the library yourself you can find archives with\nheaders and release/debug builds in the\n[Release section](https://github.com/TwinFan/XPMP2/releases)\nhere on GitHub.\n\n## Status ##\n\nAvailable, and should be rather reliable now. No (major) bugs are known.\nFuture development can certainly extend functionality while trying hard\nto stay backward compatible.\n\nThe XPMP2 library has been successfully tested with\n- X-Plane 11.5x under OpenGL, Vulkan, and Metal,\n- X-Plane 12,\n- the [XPMP2 Remote Client](#XPMP2-Remote-Client-Synchronizing-Planes-across-the-Network),\n- the [`XPMP2-Sample` plugin](https://github.com/TwinFan/XPMP2-Remote),\n- [LiveTraffic](https://forums.x-plane.org/index.php?/files/file/49749-livetraffic/)\n- [X-Pilot](http://xpilot-project.org/)\n- X-Plane version of [IVAO Altitude](https://www.ivao.aero/softdev/beta/altitudebeta.asp)\n- on Mac OS,\n- Windows, and\n- Linux (Ubuntu 20.04 and similar).\n\n## Requirements ##\n\n- XPMP2 implements [instancing](https://developer.x-plane.com/sdk/XPLMInstance/),\n  so it **requires X-Plane 11.10** or later\n- CSL models in **OBJ8 format** (ie. older OBJ7 models are no longer supported)\n- Potentially an FMOD license if built with FMOD sound support, see \n  [Sound Support](#sound-support)\n\n## Documentation: See [GitHub pages](https://twinfan.github.io/XPMP2/) ##\n\n...on requirements, API, building, deployment, TCAS target, CSL mode dataRefs\nand more is available in the\n[GitHub pages](https://twinfan.github.io/XPMP2/).\n\n### Sample Plugin ###\n\nThe separate\n[_Public Template_ repository `XPMP2-Sample`](https://github.com/TwinFan/XPMP2-Sample)\nprovides a complete\nplugin including build projects and CMake setup and can be the basis for your plugin project.\nIt displays 3 aircraft flying circles in front of the user's plane.\nEach of the 3 aircraft is using a different technology:\nthe now recommended way of subclassing `XPMP2::Aircraft`, the legacy way\nof subclassing `XPCAircraft` (as used by LiveTraffic v1.x), and by calling\nstandard C functions.\n\nThe [HowTo documentation](https://twinfan.github.io/XPMP2/HowTo.html#sample-plugin)\nincludes how to install the sample plugin, especially also CSL models.\n\n## Main Features ##\n\n### Model Matching ###\n\nThe way how XPMP2 picks any of the available CSL models for display\nis [documented here](https://twinfan.github.io/XPMP2/Matching.html).\n\n### Enhancing CSL Models ###\n\nCSL packages come in different flavours. Popular ones for general use are\nthe Bluebell and the X-CSL packages. Both come with different history.\nFor XPMP2 to use all their features (all liveries, turning rotors, props, wheels...)\nit needs to adapt their `.obj` files. Performing these changes is built into XPMP2,\n[details here](https://twinfan.github.io/XPMP2/CopyingObjFiles.html).\n\nXPMP2 offers a wide range of animaton dataRefs that can be used in CSL models,\n[details here](https://twinfan.github.io/XPMP2/CSLdataRefs.html).\n\n### TCAS and AI/multiplayer Support ###\n\nXPMP2 provides TCAS blibs and AI/multiplayer data using\n[TCAS Override](https://developer.x-plane.com/article/overriding-tcas-and-providing-traffic-information/)\nintroduced with X-Plane 11.50 Beta 8. Find\n[details here](https://twinfan.github.io/XPMP2/TCAS.html)\nincluding a reference lists of provided dataRef values and their sources.\n\nWhen TCS Override is not available (like up to X-Plane 11.41),\nthen TCAS is provided by writing the classic multiplayer dataRefs directly.\n\nBeyond the standard set of information by X-Plane's family of dataRefs,\nXPMP2 also supports a set of shared dataRefs for providing\ntextual aircraft and flight information,\n[details here](https://twinfan.github.io/XPMP2/SharedDataRefs.html).\n\n### Wake Turbulence ###\n\nX-Plane 12 started to\n[support wake turbulence](https://developer.x-plane.com/2022/02/wake-turbulence/)\nalso for TCAS targets. As a trade-off between complexity (knowing exact\nwing dimensions and weight/lift of any plane) and results (strength of the wake)\nXPMP2 applies defaults to the aircraft dimensions based on the\nWake Turbulence Category (WTC) listed in the `Doc8643` data.\n\nA plugin using XPMP2 can opt to provide its own values for even more\nprecice results.\n\nFind [more details here](https://twinfan.github.io/XPMP2/Wake.html).\n\n### Sound Support ###\n\nAll displayed aircraft can produce sound in the 3D world for\nengine, reversers, taxiing, gear and flap movement.\n\nThere are 2 options:\n- As of X-Plane 12.04, XPMP2 can use X-Plane's new\n  [Sound API](https://developer.x-plane.com/sdk/XPLMSound/) and hence\n  integrate sounds with X-Plane's own FMOD instance; this does not\n  need linking and licensing your plugin with FMOD, but is restricted\n  to rather simple forms of `.WAV` sound file formats.\n- When building with FMOD support directly, then XPMP2's Audio Engine is\n  FMOD Core API by Firelight Technologies Pty Ltd.\n  Understand FMOD [licensing](https://www.fmod.com/licensing) and\n  [attribution requirements](https://www.fmod.com/attribution) first,\n  as they will apply to _your_ plugin if using XPMP2 with sound support.\n\nBecause of the FMOD licensing requirements, XPMP2 by default is built\nwithout FMOD library support, but always supports X-Plane 12's\ninternal Sound API out of the box.\n\nSee the [Sound Support documentation](https://twinfan.github.io/XPMP2/Sound.html)\nfor details how to enable sound support and how to include it into your plugin.\n\n### Map Layer ###\n\nXPMP2 creates an additional layer in X-Plane's internal map, named after the\nplugin's name. This layer displays all planes as currently controled by XPMP2\nwith an icon roughly matching the plane type, taken from `Resources/MapIcons.png`.\n\n## XPMP2 Remote Client: Synchronizing Planes across the Network ##\n\nPlanes displayed using XPMP2 can by synchronized across the network.\nThe included **XPMP2 Remote Client** needs to run on all remote computers,\nreceives aircraft data from any number of XPMP2-based plugins anywhere\nin the network, and displays the aircraft using the same CSL model,\nat the same world location with the same animation dataRefs.\n\nThis supports usage in setups like\n- [Networking Multiple Computers for Multiple Displays](https://x-plane.com/manuals/desktop/#networkingmultiplecomputersformultipledisplays),\n- [Networked Multiplayer](https://x-plane.com/manuals/desktop/#networkedmultiplayer),\n- but also just locally as a **TCAS Concentrator**, which collects plane\n  information from other local plugins and forwards them combined to TCAS\n  and classic multiplayer dataRefs for 3rd party add-ons.\n\nFor end user documentation refer to\n[LiveTraffic/XPMP2 Remote Client](https://twinfan.gitbook.io/livetraffic/setup/installation/xpmp2-remote-client)\ndocumentation.\n\nFor more background information refer to\n[GitHub XPMP2 documentation](https://twinfan.github.io/XPMP2/Remote.html).\n\nOne of many possible setups:\n![XPMP2 in a Standard Networked Setup](docs/pic/XPMP2_Remote_Standard.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTwinFan%2FXPMP2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTwinFan%2FXPMP2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTwinFan%2FXPMP2/lists"}