想开发一个桌面应用软件,求前辈们推荐技术栈 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Oilybear
V2EX    程序员

想开发一个桌面应用软件,求前辈们推荐技术栈

  •  
  •   Oilybear 2024-02-26 19:05:10 +08:00 3897 次点击
    这是一个创建于 592 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 背景:小弟很喜欢赛车,最近想用爱发电开发一个基于 Forza 遥测 UDP 的赛道 LOG 分析工具,帮助自己还有一些群里的车迷朋友分析圈速和刹车点。

    • 需求:

      1. 跨平台支持 Windows & Mac ,( Windows 游玩、分析或者 Xbox 游玩,Mac 分析)
      2. 有现成的图标分析组件,毕竟 Log 图可以理解为折线分析图
    • 初步想法:React-Native / Element UI ,后者似乎看到更多人使用,但是 React 我想对熟悉一点

    不知道各位大佬对于技术栈选取,有没有什么建议或者忠告。 PS:软件的样子及功能可以参考,B 乎这边提到的软件: https://zhuanlan.zhihu.com/p/404070375

    DiamondYuan
        1
    DiamondYuan  
       2024-02-26 19:07:42 +08:00 via Android   1
    为什么做桌面软件而不是桌面网页?
    网页的话可以用 react ,如果要桌面分发,可以用 electron
    lmdown
        2
    lmdown  
       2024-02-26 19:11:18 +08:00 via Android   1
    tauri ? UI 是 html+js
    xieren58
        3
    xieren58  
       2024-02-26 19:11:32 +08:00   2
    GordianZ
        4
    GordianZ  
       2024-02-26 19:14:12 +08:00
    @DiamondYuan 因为要监听局域网 UDP 啊。
    我之前本来准备做一个的,但是 FH 凉透了直接删游了。
    Oilybear
        5
    Oilybear  
    OP
       2024-02-26 19:16:23 +08:00
    @DiamondYuan 这个思路也可行,我其实不是太懂,我的理解 React-Native 应该也是你这个意思,搞个 Chrome 内核在上面渲染出一些组件界面,只是看起来像是桌面应用,因为跨平台,我想最后选出来的大概率也是这个类型的方案。

    @xieren58 这个相当于是.Net 写吗?我 .Net 没什么经验感觉学习成本可能比较高,但是还是谢谢你的回复
    Jirajine
        6
    Jirajine  
       2024-02-26 19:20:32 +08:00   3
    如果是商业产品,electron 是最优选。
    如果是个人项目,可以试试 flutter/tauri/rn 这些尚未成熟的踩坑。
    Oilybear
        7
    Oilybear  
    OP
       2024-02-26 19:20:35 +08:00
    @GordianZ FH 做不太了,只能做做类似 Simhub 那种效果。IsRacing 段是 1 的时候,起码 FM8 车辆真的在赛道中跑,可以通过数据推断映射到地图上具体的弯道,FH 随便在地图上动一动 IsRacing 都是 1 ,没有很好的办法映射到某个赛道某个具体的弯道上,这样 Log 图就算做出来也就没太多意义了
    icaolei
        8
    icaolei  
       2024-02-26 19:21:44 +08:00
    桌面分发建议 tauri
    GordianZ
        9
    GordianZ  
       2024-02-26 19:24:45 +08:00
    @Oilybear 我说错了,我说的就是 FM8
    FM8 的遥测扩充了一些,确实比 FH 好多了。但是照现在的用户量,除非自己组联赛,不然都没人正经玩。
    lisongeee
        10
    lisongeee  
       2024-02-26 19:26:05 +08:00
    说实话,我没看懂为什么把 React-Native 和 Element UI 并列,这俩也不是同层级的技术

    而且 Element UI 已经停止维护,替代版本叫 Element Plus
    Oilybear
        11
    Oilybear  
    OP
       2024-02-26 19:30:05 +08:00
    @lisongeee 因为确实不懂,不好意思
    Oilybear
        12
    Oilybear  
    OP
       2024-02-26 19:31:31 +08:00
    好的了,谢谢各位的答复,基本上是 electron 和 tauri 两个得到大家的认可多一些,我对比调研一下进行选择,再次感谢本贴留言的各位前辈
    Elroooo0Y
        13
    Elroooo0Y  
       2024-02-26 21:01:08+08:00
    前端技术栈 + 本地 server ;


    软件打开时, 即启动一个 server, 并自动打开浏览器;
    服务端和前端技术栈两个没有关联, 使用 http 进行通信.
    bronyakaka
        14
    bronyakaka  
       2024-02-26 22:13:44 +08:00   1
    建议 python ,使用 flet 库,简单、漂亮
    看我的项目 https://github.com/Bronya0/Kafka-King
    ysc3839
        15
    ysc3839  
       2024-02-27 01:02:33 +08:00
    React Native 在 Windows 和 macOS 都能使用原生的 UI 库,性能更好、更接近系统风格。不过要监听 UDP 的话,可能需要用 C++ 之类的写监听部分代码了。
    journalist
        16
    journalist  
       2024-02-27 02:03:22 +08:00
    https://github.com/austinbaccus/forza-telemetry

    这个感觉做得挺好的。我觉的难点在于分析数据吧,毕竟这游戏自带的回放到现在都不太正常.
    akjarjash
        17
    akjarjash  
       2024-02-27 09:11:41 +08:00
    @xieren58 #3 这个不行,你实际使用了吗?
    sorude
        18
    sorude  
       2024-02-27 09:29:22 +08:00
    electron+react 有脚手架。https://electron-react-boilerplate.js.org/
    XavierLing
        19
    XavierLing  
       2024-02-27 09:43:29 +08:00
    今年准备用 Flutter 写一款 windows
    xieren58
        20
    xieren58  
       2024-02-27 12:19:08 +08:00
    @akjarjash 都做了几个项目, 赚钱了... 还不行.. (doge
    akjarjash
        21
    akjarjash  
       2024-02-27 13:03:57 +08:00
    @xieren58 #20 做的什么类型的项目赚了多少?
    wozhihuipinyin
        22
    wozhihuipinyin  
       2024-02-27 13:31:24 +08:00 via Android
    @Elroooo0Y 这种方案使用哪些技术?有案例能参考下吗?
    Oilybear
        23
    Oilybear  
    OP
       2024-02-29 09:44:28 +08:00
    @bronyakaka 感谢你的推荐,我自己本职是 Python 开发相关。
    Python 的 GUI 方向,wxPython 和 pyqt 我两个 python 比较主流的 GUI 方案在其他项目上使用过,当时需要配合 pytorch 做一些实时完成一些采集和推理。个人体感不是很好,毕竟数据采集相关的工作肯定有独立的线程/进程维护,不会放置在和 GUI 相关的主进程中,但是 Python 的多线程受制于 GIL ,多进程的话数据共享也需要而外的进程维护数据相对性能牺牲代价较大。
    这个项目的运行环境是运行游戏的同时还运行该软件,后期预想的甚至是配合 N/A 卡的一些录制 API 同步进行一部分录制,以满足圈速分析上刹车点分析的一些需求,所以性能层面可能要很早考虑。
    目前我的决定是使用上面的前辈推荐的 tauri 这个框架 [前端技术栈+本地 Rust 后端] ,毕竟非商业项目尝鲜一下,另外一个是我觉得 python 有潜在风险不太适合,但是还是感谢你的推荐,以后有什么小工具需要快速实现又尽可能考虑美观的地方我会看一下 flet 这个框架。
    nicholasxuu
        24
    nicholasxuu  
       2024-03-03 16:02:20 +08:00
    要注意一下游戏 udp 提供的采样率,采样率低的话,很多遥测数据的意义不大。
    知乎文章里的那个工具看上去很基础,基本只有视频(方向盘操作),油门刹车,速度数据。
    感觉如果只是要这个数据的话,可以考虑纯从 60fps 视频里提取,从游戏的 hud 数据里识别出来,有录屏就能用了?

    *rfactor2 之类的遥测数据导出后放 motec 看,避震压缩甚至轮胎与地面的倾角都能看(可能比真车还强)
    Oilybear
        25
    Oilybear  
    OP
       2024-03-04 23:06:38 +08:00
    @nicholasxuu 我确实有这个想法,不过你也提醒我了,文档里面( https://support.forzamotorsport.net/hc/en-us/articles/21742934024211-Forza-Motorsport-Data-Out-Documentation )是有明确指明每秒 60 个遥测数据,差不多平均 0.016S ,一个算可用范围。
    相比 rfactor2 这种专业性更强的游戏,在导出视频时就能从游戏引擎层采集了同步的遥测数据。FM 只能获取遥测,也就是说即便采取同步录制,采集的视频和遥测数据的对应也可能有问题,录制方式导致或者其他因素。
    另外我想其实更重要的是快速验证一下软件可行性,至于这些视频同步分析这些功能有一些可预知的难度我想放到以后的版本中实现。退而求其次,利用刹车点的曲线 gap 和时速也能够推倒计算刹车点差多少米,在配合重刹区的一些指示牌去调整。其实能做的想法还蛮多的,弯角名称的播报,车胎磨损的语音提醒,就想有个赛道工程师在 TR 里做我们的专属工程师,一步一步来哈哈哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2842 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 14:26 PVG 22:26 LAX 07:26 JFK 10:26
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86