百科问答小站 logo
百科问答小站 font logo



为什么没人做类似《艾尔登法环》风格的开放世界手游? 第1页

  

user avatar   narikiri 网友的相关建议: 
      

好家伙,现在打开老头环,去一趟盖利德地区看看,是不是显得血腥又恐怖?这种要素做手游在国内能过审啊????

以老头环的升级加点模式,再配合手游那群追求速度的效率厨,必然会出现一堆玻璃大炮无伤的情况。洗点卡和复活卡作为付费点,要不要加?怎么加?

既然都有级别了,加个战力系统很合理吧?反复挑战boss可以学习隔壁噬血代码的深层,再加上手游特色分难度机制,再搞个战力限制很合理吧?

好,假如做一个推荐100w战力的副本,80w可以进图,120w可以横着走。那还需要把boss做成老贼的形状吗?他们土豪肯定充钱砸战力80w就下本交钱复活也要打死boss用来吹牛,可平民玩家怎么办?

环还有各种装备及强化,人家土豪砸钱强化快装备好,pvp一般都会取得优势的。平民可以赢,玻璃大炮,上吧,被砍一下就被土豪送回家了。

所以国内手游做不来这种游戏,能做出来也不是一般人能氪的起的,何必呢?


user avatar   fu-chou-zhe-16-45 网友的相关建议: 
      

为啥中国车企不直接把外国顶流跑车模仿成电动车做出来,想必一定可以在国内市场爆火吧。


user avatar   gu-shou-jing-liu 网友的相关建议: 
      

魂系手游就有,《雀魂》。多端互通的。不过不是开放世界。

我后来想了一下,《雀魂》可以算开放世界。这种开放世界的玩法我们一般称之为“面麻”。


user avatar   goshizanka 网友的相关建议: 
      

看了一眼这题目下面的回答,只能感慨手游玩家里都开始有代差了。

所以大概已经没多少人知道2010年的手游玩家们花上一个月工资买个iPhone 4,越狱之后等着桌面上的这个图标下载完成,亮起,并准备点进去时有多激动了。


user avatar   feng-jie-4444 网友的相关建议: 
      

玩家出生,属性全5,穿着布甲拿着匕首轻盾,出门。

大树守卫见一次你死一次。

哦搓玻璃操作没那么方便,想要打赢更难。

然后首充188送陨石杖和陨石法术,充了之后发现滥不够打不死。

路口要塞也冲不过去,只能杀垃圾怪存钱升级。

升级价格得翻倍。

刷两天把大树守卫干死。

后面以此类推。

手游的重点是数值和延迟满足,拉长游戏的投入产出时间,逃课要花钱。

艾尔登法环是单机游戏的杰作,拿去手游里就是粪作,因为太难了。


user avatar   li-ming-33-94 网友的相关建议: 
      

离完美的全能本还差几步?——华硕 天选3评测(i7+3070版)

天选系列从诞生至今,一直有着极高的讨论度和不错的销量。无论是二次元属性的天选姬,还是备受好评的「魔幻青」配色都是一道非常靓丽的风景线。

此外,天选系列的前2代总有着特殊的引发讨论技巧:

1代面世时除了其首发AMD的4000系CPU之外,那块45%NTSC色域的144Hz屏幕也成功打破了「高刷屏都是好屏幕」的定律,QLC表面固态硬盘也是2020年华硕非常独家的特色;

2代改进了屏幕刷新率,换上了TLC固态,但性能释放沦为了2021年游戏本基石单位,不支持独显直连更是进一步奠定了其稳定的地位。

这些并没有妨碍天选系列不错的销量,也好在产品经理没有躺在销量数据和拥趸的支持之上,在这次的3代做出了不小的进步。

独显直连有了,性能释放好了,机身还更轻薄了,青天就有了!(x

购入渠道

这次的首发供货非常少,京东渠道出货不到1万台。我是从咸鱼加价400入手的。(可能是经历了去年,居然感觉加价400完全可以接受…)

配置一览

表格漏写了,机器网卡是Intel的AX201

对这样高功耗的i7-12700H、RTX 3070,同时还能有90Wh的电池,机身做到了2.05kg,重量控制非常好。某种程度上完全可以起到部分全能本的职能。

最遗憾的是不支持PD充电。

故外带时要带上1斤4两的240瓦适配器,出行重量骤增。

测试环境/跑分原则

室温保持在24.0°C~26.0°C之间(空调调温,没法做到恒温,望见谅)。

机器在控制台中有3个模式可以选「安静模式」、「性能模式」和「狂飙模式」,可用Fn+F5进行切换。

若无,测试均采用「增强模式」。

除了续航测试使用「集显输出」(iGPU)之外,其他测试均开启MUX的「独显直连」选项。

「独显直连」图形性能更好,「混合输出」续航更好。

所有跑分、帧数测试都会重复5次,每次跑完后静置5分钟再开始下一次,取最高分。

外观

英特尔版天选3的3070显卡只有「日蚀灰」配色可选,无魔幻青。黑色有个小缺点,就是手上的油容易沾染,看上去比较明显。幸好比较好擦。

A面有LOGO「TX」代表天选(和企鹅没啥关系),位于上部。

B面&屏幕素质

B面为一块2160*1440分辨率、165Hz刷新率的屏幕。没有采用16:10的屏幕稍有可惜,下巴2指宽。

屏幕来自京东方。

作为一块广色域屏幕,色域容积142.7%sRGB、101.1%DCI P3;色域覆盖99.9%sRGB、98.9%DCI P3。

sRGB基准下,色准并不理想。有条件的话最好自行校色。

屏幕最高亮度为310尼特,边缘仅250尼特左右,在同定位&同价位游戏本里明显偏低。


C面键盘布局

键盘布局方面,风格延续上一代,WASD采用了反色设计。方向键半高。空格左半部分的突出被取消。数字小键盘相对完整,Delete和小键盘切换按键被做到了一起,对我来说需要适应。键盘手感回弹偏软。

最大可开合角度如图。

机器有运输模式,不插电无法直接开机。

CPU:i7-12700H(90W)

之前已经测过了,而这也不会是最后一台,应该未来很长一段时间时间内很熟悉很主流的CPU。

15轮R20:稳定分6622

除了开头2次之外,之后基本稳定在6620分左右,取后5轮中位数6622。

观察功耗可以发现,第一次较高,第二次逐步下降到100W,第三次出现波动,第四次开始比较平稳,打包功耗90W,IA大约83W,符合跑分曲线。

蓝线打包功耗,橙线IA功耗

大小核频率如图。(蓝线大核频率,橙线小核频率)

R23跑分:多核16619,单核1803

功耗表现如图(蓝线打包功耗,橙线IA功耗)

大小核频率如图(蓝线大核,橙线小核)

显卡:RTX 3070(140W)

RTX 3070是我心目中笔记本最值得选购的旗舰级显卡,处于一个性能与价格的甜区。

跑分

TimeSpy图形分 10261分

FSE图形分:13134

Superposition 1080P Extreme:6637

游戏表现实测

网游

测了DOTA2、CSGO和《彩虹六号·围攻》3款网游在1440P和1080P下的表现。

DOTA2:全最高特效,比赛编号6040722034,完美世界视角。

CSGO:开多核渲染,其他全部最低,创意工坊BenchMark。

彩虹六号围攻:全最高档,性能测试。

可以看出网游部分的1080P和1440P分辨率下,帧数基本非常接近。可以任意按照自己喜好开高。

单机游戏

对比上面的网游,单机中,1440P和1080P分辨率下,帧数差距还是比较大的。帧数和清晰度不可得兼。

续航测试

机器电池为90Wh。

把机器切换至核显输出,系统为「均衡模式」,中心亮度150尼特,开WIFI,关蓝牙,PC Mark 8的Conventional测试,办公场景下的中高负载,成绩比较接近实际使用。

实测续航为5小时15分,Conventional 3.0 Score为3572分。

还好买了个延时相机,现在拍续航方便多了,不再担心错过

烤机/散热测试

室温在25°C附近。

单烤CPU

使用AIDA64中的Stress FPU单烤CPU。

20分钟后,CPU功耗为90W,温度为87°C,大核3.6GHz,小核2.9GHz。

图上可以看出一个小插曲:单烤CPU期间,桌面突然变成一片白…我寻思又不是海涛,给我看一片纯白干甚…之后在任务管理器启动Explorer才恢复正常。

单烤期间功耗如图。

前期会冲到115W左右,前3分钟会保持在约100W(中间有过瞬间掉下去),之后稳定在90W。


单烤显卡

使用Furmark 1.10.6(比较老的版本了,只不过我之前电脑都用这个烤的,所以暂时还没换新版本)。

关抗锯齿、1920*1080、勾选Burn-in和X Burn-in。

20分钟后,GPU温度75.8°C,功耗139.5W,频率1260MHz。

除了偶尔掉到过125W左右,其他时间基本全程在140W左右。

双烤

同时进行上面2项测试。数据取20-30分钟的平均值。

CPU功耗48W,温度为82°C,大核频率2.54GHz,小核频率2.29GHz。

GPU功耗115W,温度78.1°C,频率837MHz。

CPU功耗、GPU功耗与总功耗如图。

从110秒左右开始区域稳定,达到CPU 48W加上GPU 115W的功耗水平。

测试时电脑和分贝仪有固定位置,大概是在这个位置关系,比较接近人耳所听到的噪音,可能会比其他测试者的数据低一些。

烤机全程最高为52.3分贝,总体还算可以接受的水平。

此时键盘表面温度如图。

腕托为室温,WASD区域仅30°C附近比较低,键盘最热的区域在上部,键帽最高温在F8按钮名为48.4°C。中间有一个倒三角区域相对偏热,其他的地方温度都不算很高。

另外,这台机器用瓶盖垫高机身之后,双烤成绩上除了CPU和GPU的频率稍微提高,其他部分几乎完全一致,可能是原本已经有4个出风口充分散热的关系,底壳基本不出风。


拆机

拆机不难,机器底面除了右下角的螺丝之外的11颗螺丝全部拧下。

注意拆的时候右下角一颗螺丝是和后盖一体的,无法取下,但一定一定也要拧松。

先从这个螺丝周围开始撬开,右边撬开之后就比较方便可以拆下了。

机器为双风扇、五热管、四出风口的散热设计。贴纸下面有硬盘和内存。

内存

我这台机器内存是三星的,跑分如图。读写都在56GB/s左右,延迟102.3ns偏高(DDR5目前的通病)

硬盘

硬盘为美光的3400,大文件读写的跑分如图。

ASSSD的10GB读写跑分如图。

CrystalDiskMark的32GB读写跑分如图。

硬盘初始状态没有分盘,全部在一个C盘下,还剩余396GB(图为393是因为我装了测试软件)

机器总结部分

优点

1.机身轻

一拿到手的时候,就能感觉到,机器总体的重量比以往任何一台15.6寸的3070游戏本都要明显轻,这种第一印象是很好的。

在这样的机身重量下,双烤成绩弱于部分更重、更大的游戏本,其实是完全可以接受的。

2.游戏表现达到主流水准

双烤47+115不算特别出色,但已经完全不拉跨了。相比于上一代天选2的3070,那这一代进步非常明显。

游戏的表现也都达到了主流水平。除了个别像2077这样优化不好的游戏,或者像《全战·三国》这样同屏单位多的游戏,其他大部分单机游戏都能1440p开预设的高档位拿到60帧以上,这个成绩是很令人满意的。

3.散热和隔热还行

键盘的键帽温度热区在中间,基本避开了WASD部分,而且腕托很凉快。

同时,噪音比想象中要小很多,也不是特别吵的那种,使用体验是OK的。

缺点

1.屏幕素质有待提高

当价格来到五位数的时候,我认为屏幕最高亮度至少也得有350尼特吧…310尼特真的有点拿不出手了,这点真的不得行啊。

机器的其他硬件已经都没啥问题了,硬盘、内存都没缩,网卡也是AX201,但就是这个屏幕给了个300尼特屏…淦…

同时,作为一块广色域屏幕,在色彩管理上基本没花心思和力气,非常放任。

2.不支持PD充电

这点其实是我感觉特别难受,要是这台机器支持PD,那我就不出二手留下自用了。

不满意的地方在于,明明ROG是支持PD的,而且之后会发售的天选Air也是支持PD的,天选3不支持PD完全是有意而为之的选择,真的感觉很不爽…

这样一来,机身轻的优势完全被不支持PD给削了一大部分。

左:65W GaN;中:100W GaN;右:天选3适配器

我要是出趟门,你猜我更愿意带这三个充电器里左边这两个,还是右边这个?

尤其对我这种有紫米20充电宝的,我就更希望会支持PD了,这样找不到插头还能用充电宝应急。

3.i7+3070版目前只有一个配色

不是很清楚为啥机器没有天选3经典的「魔幻青」配色。倒不是我多喜欢这个颜值,只是黑色真的容易看起来脏。

而且锐龙版3070也有,怎么这Intel版的3070就没这个颜色了…很奇怪。

缺货,需要加价

这个没啥好说的,英特尔版京东放货7000台,锐龙版甚至不到5000台…目前需要加价购买。

购买建议

总得来说,天选3是天选最均衡的一代,这次测试的3070版表现也远超个人的预期。

由于个人原因经常在多个城市之间来往,手头的17.3寸笔记本多有不便,今年也一直在考虑换一台笔记本。天选3差一点就成了我的落脚处,可惜最终由于屏幕不够亮、不支持PD两个主要原因,算是擦肩而过了…

总得来说,如果你对天选系列的外观垂涎已久,那天选3就是目前最值得购买的一代。

如果你需要当一个便携的全能本来用,那记得要把适配器重量也考虑在内。

如果上面提到的2个问题你不在意,又需要换一台12代的新3070游戏本,那目前天选3的3070版是值得考虑的。


至于上面提的2个主要缺点,大家多吐槽吐槽,按照天选以往每年的进步来看,说不定天选4就会更好。


这台机器,原价10299,我10700入手,按惯例一般是自刀300。

不过这台机器涨价买,而我无论如何都不太能接受自己的二手价高于首发价,会有点良心不安,因此折价500,按10200出。

等我视频做完就会放上海鲜二手平台,有兴趣的朋友可以去蹲一下。


user avatar   adam-yang-49 网友的相关建议: 
      

很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)

Qt

几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。

它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。

它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。

但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。

Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。

Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。

Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。

除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。

GTK

GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。

这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。

GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。

另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。

wxWidgets

wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。

它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。

它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。

FLTK

fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,

它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。

FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)

它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。

Duilib

是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。

相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。

Sciter

Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。

它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。

它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。

RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。

CEF

CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。

由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。

它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。

由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。

与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。

MAUI

这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。

它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。

使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。

Compose Multiplatform

这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。

它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。

JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。

flutter-desktop

这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。

如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。

由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。

开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。

webview2

这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。

这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。

它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。

它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。

webview

这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。

开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。

TAURI

采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,

使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,

NW.js

NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。

除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。

NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。

NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。

Electron

Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。

Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。

无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。

--------2022-02-25更新--------

这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。

类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):

       panel {   row {     checkBox(...)     row {       textField(...) // indented relatively to the checkbox above     }   } }     

但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。

除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:

强大的事件处理机制必不可少。

想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...

qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)

强大的异步处理机制必不可少

你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。

我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。

这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。

可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。

确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。

web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:

------------2022-02-27更新----------

用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。

实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。

当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?

所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?

你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。

你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)

目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。

虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。

希望桌面软件开发领域的从业者都能获得幸福。

满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...



user avatar   chen-si-qi-22-3-44 网友的相关建议: 
      

很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)

Qt

几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。

它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。

它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。

但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。

Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。

Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。

Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。

除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。

GTK

GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。

这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。

GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。

另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。

wxWidgets

wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。

它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。

它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。

FLTK

fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,

它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。

FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)

它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。

Duilib

是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。

相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。

Sciter

Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。

它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。

它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。

RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。

CEF

CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。

由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。

它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。

由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。

与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。

MAUI

这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。

它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。

使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。

Compose Multiplatform

这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。

它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。

JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。

flutter-desktop

这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。

如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。

由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。

开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。

webview2

这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。

这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。

它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。

它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。

webview

这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。

开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。

TAURI

采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,

使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,

NW.js

NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。

除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。

NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。

NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。

Electron

Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。

Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。

无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。

--------2022-02-25更新--------

这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。

类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):

       panel {   row {     checkBox(...)     row {       textField(...) // indented relatively to the checkbox above     }   } }     

但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。

除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:

强大的事件处理机制必不可少。

想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...

qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)

强大的异步处理机制必不可少

你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。

我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。

这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。

可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。

确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。

web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:

------------2022-02-27更新----------

用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。

实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。

当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?

所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?

你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。

你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)

目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。

虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。

希望桌面软件开发领域的从业者都能获得幸福。

满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...



user avatar   sithferia 网友的相关建议: 
      

因为阿宅是非不分,脑回路奇葩,胸大+倒贴,他们甚至可以拿仇人当老婆。

蕾姆开头是怎么对待486的?直接杀穿!一点商量都不带的那种。

魔女的香气就你蕾姆能闻到?用得着这么赶尽杀绝么?486都快被逼疯了,最后是谁出面化解的?

还不是艾米莉亚!

自己重要的东西都不顾,对陌生的486伸出援手的是谁?这心胸是蕾姆能比的?

好,你说这是白莲花人设,那咱不说她多么善良。

但人总要分个好歹吧,你代入角色,进个异世界被蕾姆虐杀那么多回,得亏是486脑回路奇葩,放别的正常人,谁不想砍死蕾姆,恨都恨不过来,还有心情谈恋爱?

一个手无缚鸡之力的少年,就因为身上带点味道,被拦在半山腰,拿流星锤,围着打!

会功夫了不起啊,欺负普通人良心不会痛吗?

第一次绝望轮回雷姆杀你千百回,我也不知道该夸486大气还是脑子不正常,纵身一跳说雷姆我要拯救你。

论恩,绝境中伸出援手的是你永远可以相信的图书馆老太婆。

明明无甚交集,关键时刻肯为男主站出来和拉姆对线,在这一点上我觉得比艾米莉亚第一集的小恩小惠强得多。

而这个时候艾米莉亚其实是有责任的,把救命恩人带回家,明知城堡上下都对他怀有敌意而不加以保护,搞得486逃都逃不掉。

但艾米莉亚可能是没料到蕾姆如此心狠手辣,最后发话阻止双姆辣手摧花,还给个膝枕,勉强扯平了吧。

阿宅只看见后期蕾姆被攻略变得忠心耿耿,全然忘记了初期杀穿主角的事。

反观艾米莉亚,即便不知道死亡轮回的事,也保留了很大一部分的善意,王选那么大的事也带他玩了,还给名分。

也就486自己飘了才整出一系列窘迫的事,这486自己也承认,能怪emt?不会吧不会吧,不会真的有人在那一段自白中破防了还怪女主怪世界吧?

蕾姆全身心交托这点是很吸引阿宅,可仔细考虑一下,忠于“我”的时候当然爽了,为你赴汤蹈火粉身碎骨在所不惜;忠于别人的时候呢?身为普通人连怎么死的都不知道,完全不肯坐下来谈谈。


0. 阿宅泛指观众;

1. 是非不分的形容没那么言重,类似于p社玩家人均战犯,毕竟拿仇人当老婆怎么了,我也把持不住啊,阿宅不用太敏感;

2. 说我拉踩的建议优先出警捧雷踩艾的回答,况且雷姆暴打486这明明是事实吧..


3. 说喜欢蕾姆和486有什么关系的,哎,喜欢雷姆还真得和男主绑在一起,你喜欢蕾姆的啥心里没数吗?

奉献、忠犬?患难与共?

哪一点和你有关系啊,不代入486能感受到吗?蕾姆是会对486小鸟依人,但会对你多看哪怕一眼吗?




  

相关话题

  有没有一款游戏玩到最后会哭,如果再玩一次,会选择不通关? 
  什么是游戏后端?大多数公司用python做游戏用什么框架?(pygame就算了..)? 
  iOS 非越狱机打开网页可以不跳转到 App Store 直接安装应用是怎么实现的? 
  如何评价游戏《明日方舟》的概念设计水平? 
  如何评价《王者荣耀》推出的春节限时无限制段位五排活动? 
  《艾尔登法环》碎星拉塔恩的BOSS战难度,在魂系游戏里算什么水准呢? 
  既然手游开发成本低,吸金程度高,为何游戏大厂愿意耗费巨资制作 3A 级游戏? 
  你为什么不喜欢《黑暗之魂》? 
  玩lovelive太非该如何正确思考这个问题? 
  中国游戏行业现在有没有能力做出《荒野大镖客2》档次的游戏? 

前一个讨论
为什么单位给年轻人提供了工作,年轻人却不懂得感恩?
下一个讨论
住建部谈青年买不起租不好房:下决心下力气解决问题。对此你有什么想法?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利