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 回车。

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

目录
相关文章
|
2月前
|
Oracle Java 关系型数据库
搭建Java开发环境:
搭建Java开发环境:
47 0
|
3月前
|
Oracle Java 关系型数据库
搭建Java开发环境
搭建Java开发环境
46 0
|
6月前
|
Oracle Java 关系型数据库
搭建Java开发天堂:构建理想的开发环境
搭建Java开发天堂:构建理想的开发环境
87 1
搭建Java开发天堂:构建理想的开发环境
|
6月前
|
消息中间件 前端开发 Java
从0到1参与开源项目——EFAK(本地开发环境搭建)
从0到1参与开源项目——EFAK(本地开发环境搭建)
116 0
|
数据库连接 PHP 数据库
Laravel框架简介与环境搭建
Laravel框架简介与环境搭建
176 0
|
机器学习/深度学习 安全 Ubuntu
《小团队web技术搭建》(十)Linux初阶入门(二)
《小团队web技术搭建》(十)Linux初阶入门(二)
93 0
|
Java 编译器 Maven
谷歌开源项目ProtoBuf一探(基础环境配置)
谷歌开源项目ProtoBuf一探(基础环境配置)
167 0
谷歌开源项目ProtoBuf一探(基础环境配置)
|
Oracle 关系型数据库 MySQL
从零开始写项目第四篇【搭建Linux环境】(一)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
625 0
从零开始写项目第四篇【搭建Linux环境】(一)
|
负载均衡 应用服务中间件 Linux
从零开始写项目第四篇【搭建Linux环境】(三)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
469 0
从零开始写项目第四篇【搭建Linux环境】(三)
|
弹性计算 关系型数据库 MySQL
从零开始写项目第四篇【搭建Linux环境】(二)
经过十多天的时间,我的网站备案终于完成了…接下来我就收到了阿里云的邮件。它让我在网站首页的尾部添加备案号,貌似还需要去公安网站中再备案什么资料的。
190 0
从零开始写项目第四篇【搭建Linux环境】(二)
下一篇
无影云桌面