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



氪金抽卡机制多久才会被明令禁止? 第1页

  

user avatar   hand_of_god 网友的相关建议: 
      

======1月12日更新=====

之前评论里有些小伙伴说,现在有厂商没有公示具体的每个物品的概率,而是笼统地划分了几个档次。这种应该是厂商自作聪明耍花枪,经不起举报的。这里就有个例子,被举报了。

只有具体公示到每个奖品的概率才是符合要求的,其他的形式一概都可以去举报。

=============之前的答案==========

10连抽已经被国家禁止过一次了。以前10连抽是随机出东西,国家说不得,这个不是明码标价,属于欺骗消费者。

了解了么,国家对于10连抽的反感只在于这样的销售方式没有做到明码标价。所以厂商改了,变成消费者花了钱,肯定得50瓶药水,华丽变身成明码标价就这么简单。然后为了鼓励你多买几次,每购买一次50瓶药水,我再随机送你几张sss卡/10把钥匙,多买多送。

是的,除了表现形式上有了一些变化之外,10连抽在实质上没有任何改变。但是厂商有话说了啊,国家出了新规定,我已经按国家的规定改了,10连抽已经没了。新的销售方式是用户花10连抽的钱就是应该得50瓶药水啊,然后那些英雄伙伴是我大发慈悲送给用户的,还想要我怎么样?

所以,这个事情说明一个道理,办法总比困难多,再生搬硬造、粗暴地出新规定,只会闹更大的笑话,你以为管事的不会在意被管的嘲笑声吗?

至于,题主说的那个赌博是不存在的。你用10连抽的钱,买1个礼包,里面50瓶药水。我这个是明码标价对不对?然后这个礼包开启时,有概率出SSS卡。请注意,这个SSS卡是我送给用户的,是赠品,用户根本没花钱来买,他花的是买药水的钱。

苦思冥想的东西,没想到早已有成熟的解决方案了,说来说去,还是因为没入行,经验不足啊。

======================

有些小伙伴关心这个,再说2句。

当时国家出的政策在别的答案有,说话文绉绉的,但其实就一个意思:

1、虚拟货币不能直接用于抽奖。

2、抽奖要公示获得奖品的概率。

那上有政策,下有对策。以前648抽10次;现在是648买50瓶药水,然后我再赠送给你10把钥匙,用钥匙去打开宝箱可随机获得额外的奖品(类似sss卡)。

1)648买的是药水,明码标价,不是随机的东西,使用性质从抽奖变成买东西了。用文字游戏钻了政策上的不严谨之处。而这50瓶药水,本质上就是本次10连抽的保底奖励。

2)钥匙是赠品,我送给玩家的锦上添花的东西。钥匙能打开的宝箱里所有奖品的概率我都公示出来了,请玩家理性消费。补齐了政策要求的内容。

3)要是说赠品的价值远大过药水,那厂商有话说了哦,成本如何巴拉巴拉的,就是一口咬定50瓶药水的售价就值得648,几个SSS卡我是限量的,只送不卖,价值玩家自己定。这就涉及到一个东西,电子虚拟产品,你很难去估算它的成本和价值,目测现在工商局还没办法算得了。这东西说白了就是玩家花钱去买一段代码,开价多少全在厂商一张嘴。一些游戏的皮肤,30块赵云皮肤,288鲁班七号皮肤,这个价格真实反映了它们之间的实际价值吗?我把它们的价格对调一下,288赵云皮肤,30鲁班七号皮肤,应该也没问题,一样都可以卖得动。

4)我个人认为,当初国家是真的想禁网游里的10连抽这种形式来着。现在形式上也禁到了,但没想到下面的人玩个文字游戏,就把这政策在实质上给废掉了。现在抽奖有保底了,厂商也公示概率了,已经可以交差了。主管部门能帮的就这么多了,这东西已经是明码标价了,用户还买,那就是用户自己心甘情愿了,别人也不好拦着你,是不是。

=======================

为了方便说明,我将买保底物品送抽奖,称之为变种十连抽。

运营商肯定是玩的文字游戏呀。因为玩家在修改前和修改后的成本和收益没有任何变化,只是操作上多了一个兑换的过程,形式变了一下,国家政策的目的根本没达到,这不是文字游戏是什么?国家希望的是A英雄68元,B英雄288元,SSS装备是648元的价格,这样的明码标价方式。但是很可惜,这也是已经在网络游戏业里被淘汰的落后的营销方式。花多少钱,就能买多少属性,这样的方式太露骨了,缺乏变化和趣味,按这样方式卖东西的游戏现在已经全部死光了,无一存活,所以厂商一定会极力避免这样的明码标价方式。博弈的结果就是变成现在这样,卖东西的方式是每次购买都一个同样的价格,但得到的东西会存在一个概率,使得结果有赚有亏,开出SSS英雄就超赚,都是药水或是已有伙伴就超亏,这种销售方式的核心思路就是不会让你只花一次的钱就买到自己想要的东西。

其实厂商可以明码标价的,但一个英雄标价28888元会很倒用户胃口,把用户吓跑,对不对?所以就变成648抽一次,慢慢抽去咯。用户当中或许会出现欧皇,但总体上欧皇数量是可以忽略不计的,通过概率去调整用户的收益,这样基本上用户的消费金额都会达到厂商预期的数额,甚至比预期多得多才能拿到想要的东西。用户或许会大赚,而运营商永远都不会亏,概率和收益都是老早就计算好的。

而且运营商也不怕再次修改,你跟我说这种卖法不行,那我就继续改咯。运营商之所以喜欢用变种十连抽是因为这样的形式有很多的优点,第一个就是用户的学习成本很低,不用教一看就知道怎么回事。

另外变种十连抽放在游戏前期也不违和,这样可以在游戏新手期间就可以拉收入,开服拉收入的程度如何也是考察一个游戏是否能合作的重要指标。评论里很多种规避政策的方法都只能用在游戏中/后期,等玩家有一定等级、对游戏有一定认知以后才能做,这样来钱太慢了。现在就讲究来钱快,越快越好,最好玩家一登录就刺激/鼓励玩家充钱。而变种10连抽在新人第一次登录游戏后,过了90分钟的新手引导期就可以让玩家接触到了。最后,变种十连抽的价格并不便宜,所以总体上来说对运营商是一个比较合适的拉收入手段。所谓的新手期也没那么死板,大概就是在玩家接触到伙伴/英雄/宠物这一系统以后就可以开放了。

最后,主管部门也不反对这样的形式,那就用它咯。至于主管部门为啥会允许买保底送抽奖的形式存在,个人水平有限,评论不了。

=====================

那么多人关心,我试着从我的理解来说一下。

这种规定,一般不会轻易做出,主管部门应该是做了功课的。要求是禁止虚拟货币用来抽奖,直指问题的核心。不能让消费者对自己花钱购买的东西,一无所知,得到什么完全靠碰运气。

通过要求运营商公示奖品概率,我理解为国家不赞成抽奖这样的消费方式,主管部门在隐晦地告诉消费者,这样的消费方式所具有的风险。理性一点的人看到自己的消费只有1%,甚至不到1%的概率才能获得实质利益,基本都不会再去抽奖了,那些死心塌地,心甘情愿一定要抽奖的玩家除外。这也是运营商在以前不愿意公开获奖奖品的概率的原因,怕把玩家吓跑。

而且抽奖是非常非常常见的促销手段,各行各业都有。你买我一个东西,我送你一次抽奖,很常见啊。如果单独在游戏这里禁止了,会显得在各行业里不公平,针对游戏,歧视游戏的意味很浓。所以,应该不会粗暴地出个禁止游戏里抽奖的规定,只能对这个禁止抽奖,加了不少定性的描述。

但没想到的是,运营商真的有人头铁敢玩文字游戏,而且按照规定的文字解释对照下来,做得滴水不漏。虚拟货币不能直接抽奖,现在变种十连抽的确做到了,对吧,都变成明码标价了哦。但玩家得到东西的金钱成本、获得奖品的数量、范围和概率并没有丝毫的改变,在操作上还多拐了一个弯,用户的成本不减反增,多了个操作成本,你说尴尬不?要封掉这样的把戏,那就只有再改过规定咯,文字再严谨一些,条例说明、适用范围再多一些,主要还是看有没有必要,值不值得。

至于改了规定以后的后续发展,谁能知道呢。


user avatar   rollingisland 网友的相关建议: 
      

感觉看的人多了起来,将答案中一些不当之处略作修改。

不知道题主玩过阴阳师没有,16年刚开服时是没有魂玉的,钱充进去直接是勾玉,勾玉直接抽卡。后在文化部要求下不准用法币和虚拟币直接抽奖且需要公示概率,于是很快引入魂玉作为虚拟币,而将勾玉解释为一般道具,这实际上就是为了回避赌博的指控。你花钱买的是魂玉,一块钱一个,童叟无欺,至于你是在游戏里拿魂玉买别的商品还是兑换勾玉来抽卡,这个是你个人的行为,并且在公示抽卡概率后,表面上还有了点明码标价的意味。

具体规定详见 文化部关于规范网络游戏运营加强事中事后监管工作的通知_国务院部门政务联播_中国政府网 中第二条第(六)项:

所以现在的抽卡游戏包括原神,你看你买的都不是直接拿来抽卡的代币,中间总要绕一步兑换,并且概率规则必须写明。

——————————————————————————————————————

这两天也看了一些讨论游戏赌博与抽卡的文章和视频,有一些新的思考,故把最后一段结论稍作修改。

这种盈利模式现在看还很难被取缔,一方面17年网易的阴阳师作为先行者替后来人一定程度上解决了合法性问题,另一方面目前的很多抽卡游戏里的物品没法换人民币,因此危害性小于一般的赌博和博彩。

种种原因使得抽卡没有发展成真金白银的赌博,其中之一就是在抽卡游戏普遍存在满足白嫖玩家需求的福利的情况下,很多早期的稀有物品会随着时间推移不再稀有而贬值。举个极端例子,刚开服一个半月的原神,买一个双黄初始号的价格已经远低于真金白银抽俩五星的期望价格了,因为开局白送的30抽多刷一些号总能刷出双黄来。

赌狗们显然无法从抽卡中得到高回报,因此抽卡对个人的危害是比较有限的。投入抽卡的资金直接成为游戏公司的营收,也无法形成一进一出的现金流为各种违法违规的资金提供掩护。当然,对消费能力有限的个人来说,抽卡这种概率游戏仍然是有害的,因为侥幸心理很容易导致冲动消费。


user avatar   pansz 网友的相关建议: 
      

现在国家已经明令抽卡必须公示概率跟保底了。

有保底相当于所有机制都是明码实价,只不过在保底外抽出来就算是你额外中奖而已。

至于所谓的「禁止概率」,那就相当于把中奖概率设定为0%,这样所有产物都必须到保底才能抽出,也就完全变成所有道具明码实价了。

所谓的禁止氪金抽卡本质上等同于禁止额外中奖的意思,对吧?我个人其实是支持的。反正我平时抽卡基本上都是靠保底,哪怕掉率0%对我也没有影响。但是这种规定缺乏法理依据支撑啊。

思考一下为什么氪金有诱惑力?无非是因为,很多人存在「自己能在保底外出货」的幻想,于是怒而氪金抽卡。如果完全禁止保底外出货,是能够拦住一部分没钱的玩家的。

你看,这句话可以翻译成「国家什么时候才能明令禁止保底外出货」?我觉得在可以预见的将来都不太会发生。


user avatar   crowblood 网友的相关建议: 
      

学史可知兴替:

国耻网赌端游及页游雅达利大崩溃前:

1:10%研发,90%宣发,多胞胎换皮轮着抄,《成吉思汗》广告做到各大杂志页上,做到站台上。


2:用户“入坑”前,先在社交媒体上问“烧钱吗?”

现在神武烧钱吗?_百度知道


3:普通人莫名其妙打开一个网页跳出一串弹窗,自动建号,被玩游戏,下载个软件莫名其妙桌面上就蹦出个惊喜过时不候的端游下载器。


4:一边网赌游戏公司宣发无所不用其极,各种野榜排行刷钱杀的血红,软件杂志变成了广告杂志,一边遍地都在喊“游戏荒”,偌大个中原,竟然没可玩的游戏。

满网最不缺的就是游戏,打开个门户网页莫名其妙就被入了坑,怎么就没游戏可玩了?


user avatar   wang-jia-41-22 网友的相关建议: 
      

借用一下德国的观点,我觉得非常合理。

我记得一个德国UP主关于纳粹暴行的言论,让我觉得德国部分民众是对历史有敬畏之心的。

1.不支持纳粹的德国民众不应当承受纳粹的战争暴行罪责,因为他们不支持纳粹。如果将来纳粹复辟,他们也拒绝成为纳粹的帮凶,他们出生在战后也没有事实性的帮助纳粹。

那么谁来承受纳粹的战争暴行的罪责呢?新纳粹应该承受,那些叫嚣这纳粹无罪的人应该承受,那些试图将法西斯在德国复辟的人应该承受,他们是纳粹的后继者。

二战的德国民众有罪责么,有的,他们有的真心诚意帮助纳粹,有的事实性的帮助纳粹。

2.德国人民即使不支持纳粹,也应当承担传递历史真相的使命。

不支持纳粹的德国民众不会去给也不需要给奥斯维辛,屠杀等行径洗地或者否认,因为他们本身不是罪人,但是他们理应告诉后代,在1939-1945年发生了什么,德国做了什么,万恶的法西斯分子做了什么丧尽天良的龌龊事情。

正是因为这样,德国人才有如此资格挺起腰来对历史的受害者正视,我不支持纳粹,我也没支持过纳粹,纳粹干的坏事赖不到我头上,但是我仍然告诉你们当年纳粹丧尽天良的事。

正视历史,反思历史,肩负历史,这是德国人的优良品质。


回到日本法西斯这边。

相信很多人已经看过了小约翰可汗最新一期的日本变态“鸟”,其实这就是日本战后的写照。

战犯一个劲地说不是我,我没有,文化差异,试图逃避自己的罪行,似乎忘记了就在几个月前还在满脸狰狞的虐待战俘营里的战俘。

民众们有的不能接受自杀殉道,有的遮遮掩掩地说不是我不是我不是我与我无关。

是的,这群人要么畏畏缩缩地求原谅,要么装的楚楚可怜,要么假惺惺的说自己是被上级逼迫的。

施加暴行的时候笑得比谁的猖狂,接受惩罚的时候哭的比谁都可怜。

在1970—80年代,日本经济高速发展,似乎那个战败国日本已经一去不复返,他们开始让军国主义和右翼抬头,因为自己是世界第二经济体,自己有权说不。

那些躲起来的军国主义者们又威风地穿着军服走上了街头,带着军刀的老不死们走过街头,脸上洋溢着得意的神情,忘了十几年前自己如何装成一个可怜的良民丑态。

他们堂而皇之的把战犯放在神社里面供奉。他们小人得志地嘲笑那些被侵略的国家。

他们求饶只是因为弱小。

他们凌虐只是因为强大。

他们支持右翼,却说自己并无罪责。

他们声称自己并无罪责,却不敢承认犯下的战争暴行。

相比之下我甚至还觉得德国的新纳粹也算好东西,至少他们从不遮掩,他们极端排外,他们也不洗地,直接说杀的好。

坏,坏到了极致也至少敢作敢当。

而某些民族,明明是自己犯下了战争暴行,明明是自己侵略其他国家,却支支吾吾不敢承认,却明里暗里洗地,却一个劲的支持右翼,还对中国的dislike率直飙90%以上,不知道的还以为是日本被中国侵略了。

也不是说这是劣根性,人民从来没有什么劣根性支撑,只是麦跑跑当初的清算似乎并不彻底,让大正时期的龌龊国风传递到了现在还能生根发芽。


user avatar   yi-fan-32-94 网友的相关建议: 
      

华为就是一家这样的公司,跟别人合作之后自己就打算重新搞一套东西出来。“弃用寒武纪”本来就是他们达到自主可控目标的过程之一,这和寒武纪做到什么程度关系不大,华为本来就想学经验然后自己搞。

有些键盘侠天天说技术什么的,不知道他们是否了解寒武纪的diannao系列曾经横扫体系结构顶级会议的best paper,甚至谷歌TPU也要喊寒武纪祖师爷(寒武纪在法国INRIA的合作者跳槽到谷歌,参与了谷歌TPU的设计)。虽然寒武纪的ROI align常年是错的(要靠手写bang C来适配),但是某厂仿制的AI芯片目前的输出还时常是离谱的吧...这些东西键盘侠们列参数没用的,用一下才知道。

从过去来看,寒武纪与华为的合作或许是双赢。但其大肆宣传自己的AI性能却很少提及中科院计算所与寒武纪的时候,很多人就已经料到他下一步是什么打算了。他们就希望别人,尤其是沸腾的国民们,认为AI芯片根本就是他们自己的技术吧。

这样的公司也许是好公司,毕竟他们从来都不想一直依靠别人。他们想把自己用的大部分东西都把握在自己手里。除非,迫不得已。


user avatar   bin-shan-xiu-yi 网友的相关建议: 
      

很少有人不基于框架直接写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   sigon-55 网友的相关建议: 
      哪些交往中的小技巧比如沟通做事方式等能够保护自己不受他人欺负?


  

相关话题

  为什么游戏《哈利波特:魔法觉醒》里獾院的成绩这么糟糕? 
  如何看待游戏 FGO 在 9 月 16 日对 13 骑中国英灵名称和立绘的调整? 
  全国网络游戏用户减少 869 万,游戏类 APP 减少超 15 万,是受什么影响?和防沉迷系统有关吗? 
  游戏《原神》的崛起是良币驱逐劣币还是反之? 
  阴阳师能否东山再起,为什么? 
  为什么要肝游戏(原神)?相同的时间去打工,赚的钱氪到游戏里不比肝游戏收益高吗? 
  是否会有部分switch玩家具有优越感? 
  同样都是氪金,为什么 Steam 上的游戏收到的评论更加正面? 
  传闻《哈利波特:魔法觉醒》里四学院的氛围大不相同,是真的吗?为什么会形成这种氛围? 
  安卓上有什么震撼人心的游戏大作? 

前一个讨论
如何看待「轻小说都是厕纸」这种观点?
下一个讨论
如何反驳半佛仙人视频【饭圈少女暴打我】中妹妹的逻辑?





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