发布网友
共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。