[OpenScope] 正在开发的新的开源跨平台管制软件

本人为Linux用户,不愿用wine苟且偷生,在给ES发邮件后被告知由于大量使用Windows的API, ES将不会被迁移至Linux,故决心自行编写管制软件。

技术栈: HTML/CSS/JavaScript/Electron框架

欢迎有能力的同伴加入开发,请联系[email protected]

开发进度将实时更新在我的个人博客

当前软件截图(更新于1/3/2023/10:14):

[1/3/2023]

  • 增加了对symbology.txt的读取支持
  • 实现了菜单栏中扇区选择的功能
  • 增加了对sct定义的颜色的读取支持(发现PRC扇区定义的颜色ES不支持,所以大家在ES看到的颜色不是PRC扇区的真正配色)
  • 限定绘制区域,优化绘制性能
  • 晚9:54补:将要进行的改进
    • 绘制坐标由直角坐标改为使用极坐标,实现极坐标<=>直角坐标处理函数
    • 对symbol/name/line限定更加细致的绘制上下文
    • 实现绘制脚本语言

[1/2/2023]

  • 增加了对gbk编码的扇区文件的支持
  • 完善了管制信息显示模块
  • 增加了对prf配置文件的读取支持(千万不要轻易加载全扇,我试过了,i7-10510U渲染一次要快一分钟)
  • 增加了对asr文件的读取支持
  • 自动识别扇区文件编码,并以正确编码格式读取(这个功能带来的附加bug差点搞死我!最后还是当天修复了)
  • 晚10:33补:优化了渲染代码,扇区读取速度不变,渲染耗时减少85%(PS:我的i7-10510U原来ZBBB_FULL绘制一次要54秒,现在8秒,如果你的处理器强劲些,耗时会更短),这同时意味这拖拽和缩放的响应速度也提升了85%。

[1/1/2023]

  • 增加了对ESE扇区文件的读取支持
  • 绘制FREETEXT
  • 设计了新的软件界面,取消了自带的窗口边框
  • 优化绘制性能

[12/31/2022]

  • 增加了对SCT扇区文件的读取支持
  • 绘制VOR/NDB点
  • 绘制机场symbol
  • 绘制跑道symbol
  • 绘制FIX航点symbol
  • 绘制情报区边界
  • 绘制机场平面(草地/机坪/航站楼等)
  • 绘制机场滑行线等

[12/30/2022]

  • 完善了drawer.js/datareader.js/coordinate.js
  • 坐标转换、文件读取、canvas绘制准备
  • 设计放大缩小绘制算法
  • 设计移动绘制算法
3 个赞

:tada:
加入开发不需要是计算机专业~只要有相关技术栈能力即可~

1 个赞

看上去不错!需要提醒一下,在合规方面,开发新客户端连线前建议咨询总部相关技术部门看看是否需要获取特殊的测试许可或者是否有测试环境可供测试。

2 个赞

你好!
谢谢关注!
当前软件并不具备连线功能。根据已知的信息,VATSIM连线客户端要求具备VATSIM官方认证的客户端识别代码,连线时通过数据包发送。因此,如果未通过VATSIM许可,该软件将不能连接至VATSIM服务器。若该软件已连接至VATSIM服务器,则说明其已经通过了认证 :hamburger:

另外,软件截图中的连接按钮和其他连接信息(如callsign)仅作为软件功能展示,并不表示已经连接,为避免误会特此声明 :tada:

[1/4/2023]

  • 进行第一次代码重构,加入更多的TypeScript代码以取代JavaScript代码。
  • 实现SectorLoader模块,以取代诸多繁琐且冗余的原datareader.js中的类
    • 设计并实现了LoadPrfFile(path:string, callback: (err: NodeJS.ErrnoException | null, data: sectortype.PrfData) => void) : void及另外一个Sync函数
    • 设计并实现了LoadAsrFile(path:string, callback: (err: NodeJS.ErrnoException | null, data: sectortype.AsrData) => void) : void及另外一个Sync函数
    • 设计并实现了LoadSctFile(path:string, callback: (err: NodeJS.ErrnoException | null, data: sectortype.SctData) => void) : void及另外一个Sync函数
    • 设计并实现了LoadEseFile(path:string, callback: (err: NodeJS.ErrnoException | null, data: sectortype.EseData) => void) : void及另外一个Sync函数
  • 使用TypeScript类型定义,以取代原datatype.js中的类
  • 向代码中加入更多注释,为代码开源作准备
    以及更多……,请见博客
1 个赞

太巨了!!!!!!!!!

太巨了!!!!!

1 个赞

补:

  • 设计并实现了LoadSymbology(path: string, callback: (err: NodeJS.ErrnoException | null, data: SymbologyData) => void) : void及另外一个Sync函数
  • 设计并实现了LoadVoice(path: string, callback: (err: NodeJS.ErrnoException | null, data: VoiceData) => void) : void及另外一个Sync函数
  • 设计并实现了LoadProfile(path: string, callback: (err: NodeJS.ErrnoException | null, data: ProfileData) => void) : void及另外一个Sync函数

注:该软件支持Windows/Linux/macOS平台,并非独占软件。

[1/5/2023]

  • 引入ESLint以规范代码(万幸需要的改动不多)
  • 主程序迁移至preload,使用沙盒环境运行Node代码,提高用户安全性
  • 新增了很多(真的很多)代码,就不一一列举了

当前项目结构

Profile配置读取测试

Electron!快进到web管制(x

言归正传,项目现在的性能释放怎么样?感觉很多Electron项目的性能释放真的一言难尽。如果性能释放不行的话可能无法满足大流量活动的管制需要。

1 个赞

从此我的电脑上又多了一个浏览器

是否有考虑过使用tauri等更轻量化的web跨平台客户端解决方案呢

1 个赞

现在正在完善绘制代码,目前来看采用新缓存模式的Openscope扇区绘制速度又提升了40%左右,扇区加载速度和Euroscope没有能明显察觉到的区别,绘制速度在大型扇区下可能比Euroscope还要快! :smile:

如果有兴趣的话可以加入开发,现已加入Github豪华套餐!

1 个赞

嗯哼,了解到你的顾虑,Electron打包后体积庞大确实是众所周知的缺陷,但毕竟tauri过于年轻,综合考虑其使用的普遍性和应用安全/代码规范等因素,目前Electron还是更胜一筹~

tauri确实是一匹黑马,不妨再让它成长一些呢? :blush:

1 个赞

[1/6/2023]

  • 完成了40%的新的drawer.ts代码,改进工作流,目前支持绘制Fixes/Free Text/Geo/High airways/Low airways/Regions
  • 添加了README.md
  • 在主进程中添加了消息处理回调
  • 现已加入Github豪华套餐

欢迎大家踊跃贡献代码! :partying_face:

[1/7/2023]