【X-Plane 插件开发】Part 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 文件夹内,里面包含了64平台下的.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。
温馨提示:内容为网友见解,仅供参考
无其他回答

【X-Plane 插件开发】Part 1 - 插件开发介绍
【X-Plane 插件开发】Part 1 - 开发概述 由于DCS插件开发的局限性,特别是在文档资源和语言支持上,转向XP(X-Plane)插件开发显得更为吸引人。XP作为高质量的航空模拟器,其官方提供的SDK为开发者提供了理想的环境和详尽文档。通过C++编写.xpl动态链接库,如FlyWithLua的Lua接口可提升跨平台开发效率,...

【X-Plane 插件开发】Part 1 - 插件开发介绍
生成的插件在项目的Debug-plugins 文件夹内,里面包含了64平台下的.xpl文件 接下来用正常方法安装插件即可,将生成的Hello-World-SDK-3文件夹放到X-Plane11主目录的Resources-Plugins文件夹下。也可以放置到某机型文件夹的Plugins文件夹内,例如笔者放到了Cessna 172中,这样该插件就只对该特定机型有效。运...

【X-Plane 插件开发】Part 2 - 数据读取
在X-Plane的插件开发中,数据读取是关键功能之一,官方提供的API称为Data References。通过使用XPLMDataAccess这个API,开发者可以灵活高效地在X-Plane和其他插件中读取和写入数据。这一API为获取飞机的导航无线电、飞机位置、有效图形帧速率等提供了便利。一个通用且高性能的读取方法是通过XPLMDataRef指针进...

X-Plane折腾不完全指南-Pt.01-“我模拟器怎么崩了?”
虽然log文件能记录大部分崩溃事件,但X-Plane有时会出现无法在其中追溯的崩溃。这类崩溃可能表现为模拟器窗口突然消失,且在log文件中找不到崩溃信息。这类崩溃的诱因较多,通常在重新启动后不再出现。尝试在log底部寻找错误信息来大致判断崩溃原因,但有时log可能显示一切正常后突然停止。4. 排故方法 了解...

【X-Plane 插件开发】Part 3 - 动作执行及数据写入
【X-Plane 插件开发】Part 3 - 动作执行与数据写入详解 在X-Plane插件开发的第三部分,我们深入探讨了数据的读写操作,特别是关于可写数据的处理。核心概念是,所有的DataRef大致可分为读取和可修改两种类型。读取数据在前文中已经演示,而本节重点在于如何修改数据。有两种方法:一是直接在DataRefTool...

有没有能破解X-Plane10全机型的插件或文档?急需iOS9.3.2已越狱_百度...
回答:怎么我的越不成求帮忙?

X-Plane 10 要钱吗?
不要钱 可以下载的,所谓验证正版就是加载DVD1镜像。有的插件是要钱的 不过免费飞机插件也有。收费的话,也就是现在很多收费的飞机插件都开始加密了 无法团购了。

X-plane简介
本文将为您详细介绍一款专业模拟飞行领域的游戏——X-Plane 9。这款游戏是由知名开发者Austin Meyer精心打造的,其英文名称直接称为X Plane 9,而中文名称则是"专业模拟飞行9"。它不仅提供了深度的模拟体验,还深受飞行爱好者们的喜爱。在游戏发行方面,X-Plane 9由Laminar Research和ValueSoft联合发行,...

fsx,p3dv4,x-plane哪个好
xp 毫无疑问 但加插件的话推荐fsx p3d 低配选fsx 高配选p3d

X-Plane好还是模拟飞行好
如果想学如何驾驶飞机,就选模拟飞行,如果想体真实飞机的气动,就选X-Plane!建议FSX.

相似回答
大家正在搜