nasal脚本起源与环境搭建(flightgear开源项目)

简介: 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

1.Get code from this repo using git.


2.In Visual Studio, click File->New->Project From Existing Code....


3.Select Visual C++->Next->choose project file location->write the project name at ease->Finish.


4.Remove cpp files in module to avoid compilation problems.(they should be compiled to dynamic libraries)


5.Click Source Files in Search Solution Explorer at left, right click main.cpp, compile.


如何创建VS工程

1.用git从这个仓库获取代码。


2.在VS的界面,点击文件(F)->新建(N)->从现有代码创建项目(E)。


3.选择创建Visual C++项目->下一步->项目文件位置选择你下载的代码存放的文件夹->填项目名称,随便写->完成。


4.从项目中去掉 module 里的cpp文件,以防止编译错误。(那些本应该编译到动态库)


5.点开左侧解决方案资源管理器中的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 回车。

语法:可执行程序 脚本文件

目录
相关文章
|
数据可视化 算法 定位技术
SWMM从入门到实践教程 01 SWMM软件介绍
SWMM(Storm Water Management Model)是一款用于城市暴雨径流模拟和城市雨水管理的计算机软件。SWMM软件最初由美国环保局(EPA)开发,现在已经成为一个广泛使用的软件,用于设计、规划和管理城市排水系统。
|
7月前
|
消息中间件 前端开发 Java
从0到1参与开源项目——EFAK(本地开发环境搭建)
从0到1参与开源项目——EFAK(本地开发环境搭建)
126 0
|
传感器 算法 安全
开源Marlin2.x源代码架构学习笔记
开源Marlin2.x源代码架构学习笔记
820 0
|
运维 安全 Java
Linux操作系统开发实践专栏介绍
Linux操作系统开发实践专栏介绍
|
Java 编译器 Maven
谷歌开源项目ProtoBuf一探(基础环境配置)
谷歌开源项目ProtoBuf一探(基础环境配置)
171 0
谷歌开源项目ProtoBuf一探(基础环境配置)
|
负载均衡 应用服务中间件 Linux
从零开始写项目第四篇【搭建Linux环境】(三)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
474 0
从零开始写项目第四篇【搭建Linux环境】(三)
|
Oracle 关系型数据库 MySQL
从零开始写项目第四篇【搭建Linux环境】(一)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
632 0
从零开始写项目第四篇【搭建Linux环境】(一)
|
弹性计算 关系型数据库 MySQL
从零开始写项目第四篇【搭建Linux环境】(二)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
194 0
从零开始写项目第四篇【搭建Linux环境】(二)
|
XML 存储 jenkins
【实战】手把手教你部署敏捷数据开发环境
关注公众号“达摩院首座”,了解开发者最真实生活
477 0
【实战】手把手教你部署敏捷数据开发环境
|
SQL 存储 安全
阿里巴巴Java开发手册快速学习
善医者“未有形而除之”,提高工程健壮性最好的方式是在代码出现问题之前就排除掉,不给Bug出现的机会。一份好的开发规范就可以起到这样的作用,大大减少产品上线后的问题。《阿里巴巴Java开发手册》是阿里巴巴的内部编码规范,阿里官方的Java代码规范标准,这份开发手册不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好好阅读。
27624 0
下一篇
DataWorks