FrequentlyAskedQuestions

From X-Plane SDK
Jump to: navigation, search

Who develops the plugin system?

Sandy Barbour and Ben Supnik develop the plugin system for X-Plane. You can contact them at xplanesdk at xsquawkbox dot net.

Do Ben and Sandy get paid to develop the plugin system?

No. Sandy is a volunteer and works on the SDK for fun. Ben is currently employed with Laminar Research to develop the scenery system, but plugin work is still "for fun". When the SDK project was started, Ben did not work for Laminar Research.

Is the plugin system free (as in money)?

Yes. There is no charge for the materials you need to develop plugins. You will need to buy a copy of X-Plane.

Is the plugin system open source?

No. The license on the SDK materials is very permissive, but the SDK source is not generally available. Contact the delevelopers if you need something unusual.

Is there tech support for the plugin system?

No. There are resources you can use, and you can contact the developers, but there is no guarantee for tech support. Please use all available resources before emailing the developers.

I need professional-level tech support (and can afford it for my project). Is there a paid support option?

You can potentially hire either a third party or Laminar Research to help you develop your plugin. Contact the developers for help finding a suitable contractor.

The sim does XXXXX. Can I use the SDK to make the sim do YYYYY?

Probably not. The overall design philosophy of the plugin system is to provide overall areas of expansion and large-scale replacement of sim functionality, not to provide fine-grained customization; such fine-grained hooks would be unsupportable from a compatibility standpoint. If you want to customize XXXX you probably need to recode a large part of the feature yourself.

How do I pick the menu item for XXXX from a plugin?

The SDK does not currently have a general mechanism to simulate UI events. Sim actions that can be assigned to a keyboard shortcut or joystick button can be activated using the command interface for plugins that use the 2.0 APIs. A few general functions (like opening an airplane) have specific APIs that provide functionality.

What is the dataref for XXXX?

In a lot of cases, the developers don't know; a number of data-refs were made by grabbing sim variables in bulk and exporting in the rush to get the plugin system done for X-Plane 6.70. If you can't find what you need, or are not sure which variable to use, use the DataRefEditor plugin to view the variables while you fly and look for datarefs that respond as needed.

What compilers can I use to make plugins? Will XXXX let me compile plugins?

Any compiler that can create a DLL/shared object/shared dynamic library for your operating system can make a plugin. The developers only provide projects and makefiles for the very few most common platforms. You will need to configure alternative compilers yourself. Consider posting to the x-plane-dev mailing list; others may already be using those tools.

What language can I build a plugin with?

Headers/interfaces are provided for C/C++ and Delphi Pascal. You can probably convert the headers to any language that creates C-linkable code that can go in a shared library.

Languages that don't meet that requirement (Java, Visual Basic, etc.) require a C/C++/Pascal adapter plugin to convert from the language the plugin system expects (C ABI) to another system.

Sandy has created a plugin that interprets Python scripts with the plugin system; you can use it to write plugins in Python. However the Python plugin is not part of the SDK itself.

If you are interested in porting the interfaces/headers to another language, or building a C/C++/Pascal plugin to import scripts/code from another language, contact the developers for more information and useful resources.

Can I build a plugin using Visual Basic?

Not directly. You must create a C wrapper around your plugin to interface with the SDK.

My Plugin Does Not Load. Why?

Plugins typically do not load due to a problem with how they are linked, a missing DLL, or being the wrong architecture for the platform. The Log.txt file will contain a specific error message describing what went wrong. If a DLL is missing, use a tool like DependencyWalker or otool or ldd to see what is missing.