nasal脚本起源与环境搭建(flightgear开源项目)
Posted 林夕07
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nasal脚本起源与环境搭建(flightgear开源项目)相关的知识,希望对你有一定的参考价值。
目录
FlightGear
FlightGear是一款开源飞行模拟器。项目始于1997年,主要目标是为学术科研领域创造一个尖端的飞行模拟器框架,也可拓展到飞行训练,飞行仿真,模拟飞行游戏等方面。
它支持全球三维实景,20,000多个跑道、400多种飞行器、跨平台、多人联飞、多样的开放飞行数据模型等功能。
官网直达 | 中文官网
FlightGear下载
官网:https://www.flightgear.org/
进入官网首页就可以看到大大的【Download Now and Fly Free!】
然后就可以选择对应的版本,如果想添加其他飞机就点击下面的Download Aircraft。
因为我是Win10就选择【FlightGear 2020.3 for windows】链接,然后跳转到下面这个界面,等待下载完成即可。
安装流程较为简单,这里不再赘述,一直下一步即可。
nasal 脚本
nasal脚本起源
NASAL
是FlightGear
使用的一种非常强大的脚本语言系统,它与FlightGear
关系十分密切,可以读取、修改FlightGear
的属性树中的属性值,可以函数直接访问FlightGear
的内部数据,可以创建GUI
对话框,等等。要想深入的理解FlightGear
,并对其进行开发,NASAL
是一个强有力的工具。
nasal脚本介绍
NASAL全称是Not Another Scripting Language
。NASAL借鉴了如javascript、Python、Perl等流行的脚本语言系统的设计理念,实现了一个简单且完整的OOP
(面向对象程序设计)脚本语言系统,并且是不依赖于操作系统平台的。NASAL内置了一个垃圾回收器来管理内存。
NASAL的语法规则有点类似于Javascript
。
FlightGear
提供了很多用于库函数,这些函数都可以被NASAL直接调用。
NASAL代码可以在FlightGear
的aircraft
配置文件中调用执行,也可以嵌入到XML
文件里面执行。FlightGear
中有各种XML
文件用于描述对话框、指定物体动作、响应键盘游戏杆的操作、对应场景中的物体等等。这些XML文件中都可以嵌入NASAL代码并执行。
使用FlightGear内置的环境
首先进来是这样一个界面。我们不需要过多的操作,除非你想开飞机。这里我们直接点击左下角的开始飞行。
点击上方功能菜单的【Debug】-》【Nasal Console】
然后在代码区中写入代码,然后点击右下角的【Execute】按钮。即可执行脚本。
使用开源的Nasal脚本解释器
这里贴一下这位作者的账号以及开源库
大佬的bilbil账号 | GitHub | Gitee
进不去GitHub的小伙伴可以点击Gitee进入下载。下载好之后大体就是下面这个样子。
在README.md中详细说明了Win\\Linux\\ios的环境搭建。下面贴出VS环境的搭建过程。
Create VS project | 创建 VS 工程
First | 首先
Make sure you are using VS 2022.
确保你使用的是 VS 2022。
How to Create VS project
-
Get code from this repo using
git
. -
In Visual Studio, click
File
->New
->Project From Existing Code...
. -
Select
Visual C++
->Next
->chooseproject file location
->write theproject name
at ease->Finish
. -
Remove cpp files in
module
to avoid compilation problems.(they should be compiled to dynamic libraries) -
Click
Source Files
inSearch Solution Explorer
at left, right clickmain.cpp
, compile.
如何创建VS工程
-
用
git
从这个仓库获取代码。 -
在VS的界面,点击文件(F)->新建(N)->从现有代码创建项目(E)。
-
选择创建
Visual C++
项目->下一步->项目文件位置选择你下载的代码存放的文件夹->填项目名称,随便写->完成。 -
从项目中去掉
module
里的cpp文件,以防止编译错误。(那些本应该编译到动态库) -
点开左侧解决方案资源管理器中的
Source Files
,右键点击main.cpp
,编译。
会遇到问题
重定义问题
这里需要注意的是,你不能将model模块添加到vs工程中,否则会报重定义问题,关于这个问题我在bilbil上问过作者。
无法将参数1从WCHAR[260]转换为char
这个问题我也咨询过作者,作者称这是字符集设置的问题,并且已将版本进行更新。
解决方法我贴下面,你们如果使用的话应该不会报这个错误了。
指针类型转换报错
这里我们使用C++11的强制类型转换reinterpret_cast
就可以了
解决方法
项目配置
我将项目的输入路径改到项目根路径了,这样方便与库函数查找,否则还需要在项目配置添加库函数的路径。
使用nasal解释器
先将项目进行编译,然后在项目根路径上面路径那块输入cmd,然后回车,就打开cmd并在当前路径下。
然后输入chcp 65001
命令,回车。
在当前路径创建一个1.nas
的脚本文件。
然后在cmd中输入 nasal.exe 1.nas
回车。
语法:可执行程序 脚本文件
以上是关于nasal脚本起源与环境搭建(flightgear开源项目)的主要内容,如果未能解决你的问题,请参考以下文章