【X-Plane 插件开发】Part 1 - 插件开发介绍

发布网友

我来回答

1个回答

热心网友

为什么要进行XP的插件开发:

笔者之前从事过DCS的插件开发,主要用于战术模拟以及飞控测试。但由于DCS的历史性原因,其文档较为老旧且附带大量俄语。做一些简单的插件尚可,但要进行复杂的开发则较为困难。XP作为军民两用航空模拟器的佼佼者,提供了实时计算的空气动力学数据以及最接近真实的飞行模拟体验。笔者的终极目标是想尝试做一些XP周边的软硬件,如家庭座舱,飞控算法测试等。

X-Plane (XP) 提供了官方SDK(软件开发包),为插件开发提供了良好的环境、全面的文档。插件使用C++编写,为.xpl后缀的动态链接库形式。其中一些较为著名且常用的插件包括:

其中 FlyWithLua 提供了使用Lua进行插件开发的接口,例如BetterMouseYoke就是基于Lua开发。若您想参考更多有关资料,请查阅:FlyWithLua 。本教程使用XP原生SDK进行插件开发,不会涉及Lua。 用FlyWithLua 的好处(猜测)应该是能更快地开发一些跨平台的插件(由于用Lua编写不涉及系统环境)。

目前了解到的至少需要熟悉以下技能点:

参考资料:

SDK的安装以及第一个插件示例: Hello X-Plane

效果图:

详细步骤:

预备工作

下载并安装Visual Studio (2017及以上版本),并安装响应Windows下开发C++的工具链。

若使用Mac或者Linux系统,使用最新版本的XCode或者gcc也可,但后续的配置工作可能稍为繁琐。

下载X-Plane官网的SDK开发包

developer.x-plane.com/s...

注意对应的版本。如果使用XP10则下载XPLM300即可。

下载完成并解压得到以下文件结构:

下载XP官网示例项目

本示例使用的是XP官网提供的“HelloWorld”项目: developer.x-plane.com/s...

下载VS版本

解压并打开VS项目

若使用VS2017以上版本则会提示升级工具集,直接升级到最新即可。

打开Hello-World-SDK-3.cpp文件:

构建项目

项目目录中有一个SDK文件夹,实际上就是我们稍早前下载的SDK包。如果没有的话或者版本不对手动添加即可。注意目录。

构建项目前需要先检查配置:右键项目名-属性

使用Debug或者Release配置均可,注意保持配置属性和实际构建时的属性一致。建议直接使用默认的Debug配置。

C/C++-常规-附加包含目录,发现已经配置好了SDK中的头文件的XPLM以及Widgets目录。

接下来,链接器-常规:已经配置好了SDK文件夹中的链接库Libraries-Win(如果是Mac平台就添加Mac文件夹)

此时配置完成,可以重新生成解决方案:

生成的插件在项目的Debug-plugins 文件夹内,里面包含了平台下的.xpl文件

接下来用正常方法安装插件即可,将生成的Hello-World-SDK-3文件夹放到X-Plane11主目录的Resources-Plugins文件夹下。也可以放置到某机型文件夹的Plugins文件夹内,例如笔者放到了Cessna 172中,这样该插件就只对该特定机型有效。

运行效果

打开XP,选择C172(若采用第二种插件安装方法)

至此安装成功!

代码解释及修改

主题代码一共一百多行,目的是构建.xpl这个动态链接库。其中包含了创建窗口,添加文字等。笔者认为没有必要完全搞懂每一行代码的意思,重要的是能把项目构建流程先搞懂,能够在源代码上稍微修改主要功能即可。

例如,代码的最后一行的“Hello world!”显然是窗口显示的文字,我们可以改成"Hello X-Plane!":

在代码的73行左右我们可以更改窗口的标题:

将”Sample Window”改为”Hello X-Plane” :

此时重新构建插件,就可以得到置顶效果图中的样式。

代码中还有很多值得玩味和尝试修改的地方,如有兴趣不妨一试。例如以下三行代码可以更改插件自身的属性:插件名字,签名以及描述等。

注:该插件虽然看似简单,但涉及到窗口绘制以及显示的功能,若要从0开始开发还是有不少难度。这个示例主要是为了能够对插件构建及开发流程有个直观感受。下一节将从DataRef开始着手XP的数据获取工作。XP几乎提供了一切飞行参数,包括飞机姿态、运动学数据、动力学数据、航电、仪表数据等,以及如何对可读写数据进行更改,有了它们就可以do everything you want。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com