首先游戏中出现过很多已知关于须弥的信息:
地理与环境:位于璃月南方,沿海,国土区分为雨林和沙漠
目前版本(2.5)璃月边界有两条大路,一条向西通往层岩巨渊,另一条向南。
1.4版本中,立本从须弥回来,透露说那里的树和蘑菇令人印象深刻(蘑菇还差点带走了立本,立本啊,没有你我怎么活啊立本)
《足迹》PV中出场的赛诺明显带有沙漠元素,以及神樱大祓任务中花散里年的咒语“西至烬海,东至鲸渊,南至炎光,北至弱水”,可以推测沙漠在须弥境内。
八酝岛任务中,鹫津所说的长次的母亲坐船逃往了海对岸的须弥,可见须弥存在港口。
关于社会背景:须弥崇尚“智慧”,教令院代表统治集团。
我们可以在目前开放的许多地方看到须弥学者的身影,学者们的研究或许非常扯淡,但都反映了教令院的恐怖,告诉他们要延毕还不如直接杀了他们(导能圆盘任务里那个崩溃的倒霉蛋),还有一位NPC提到了自己的导师,导师是个很和蔼的人,但是一提到毕业什么的事立刻变得可怕了起来。嗯,这让天临五年就要毕业的我感到了一点游戏照进现实的魔幻色彩。
学城的目的可能在于他们对学问的追求,但我认为这个智慧不等于科技水平和生产力,而是指关于魔神的研究以及魔神的应用。
我在目前游戏里没有发现须弥专门研究魔神的资料,以下是我的推测。相比于枫丹和至冬国,拥有极高智慧的国家并没有给我们很发达的印象——枫丹有蒸汽鸟报社、留影机、会拍电影会修核电站的工程师泽维尔;至冬国来的托克能把独眼小宝当玩具。立本评价过:须弥除了蘑菇什么都没有,NPC也没展示过“须弥技术震撼人心”,所以很有可能须弥真的除了蘑菇要啥缺啥,只能看大鳄鱼呲牙。
一方面教令院是将知识作为资源分配的,掌握知识的人应该不算多,但你有智慧倒是指导民众搞搞建设啊喂,于是我认为他们的知识可能对于发展生产力并无太大帮助。
须弥的知识有那么点玄乎。
百年一遇的丽莎阿姨从须弥出来之后,宅在西风骑士团图书馆摆烂;凝光办公桌上的笔记提到过“相比于学城学者们的疯狂追寻”;教令院对知识的严格垄断……或许正应了那句“知识就是力量”,谁掌握了须弥的知识,谁就有了让教令院、甚至天理都忌惮的力量!
以上都是关于须弥环境背景推测,至于故事发展,还得搬出谜语人戴因斯雷布:
智慧是智慧之神的敌人,知识是无知之海表面漂浮的诱饵。
学城的学者正在催生愚行,而神的智慧对此并无意见。
——须弥 虚空劫灰往世书
目前推测剧情发展还是有点难度,从单个点开始分析。
先说草神,七神中只有风神和岩神是初代尘世七执政,其余的都发生过交替,草神的交替应该是坎瑞亚战争后的事。目前也只能在屑狐狸口中知道小吉祥草王这么号角色,线索太少。(话说小吉祥草王这个称呼听起来好可爱啊,草神会不会是个萝莉?)交替的原因大概是老吉祥草王的死亡,但是死因不明。
由于草系突破材料未出现,难以对草神的更多细节进行推测,不过结合最胜紫晶的描述,晶石的注释都是对当代执政的描述,草系角色的登场也会帮助推测草神具体细节。
众所周知爷是灾星,草神也必定会失去神之心:风神被抢(游戏初期剧情打磨不多可以理解);岩神对抗磨损主动放弃;雷神,不对,屑狐狸拿来跟雷大炮换人。新上任的草神不见得面临很严重的磨损,战斗力也在巴巴托斯之上(温迪自己说的),自闭宅的剧情也不会再来一次,那么她面临的也许是更麻烦的问题。
在开启须弥之前开启了渊下宫和三界路飨祭活动,原神的世界观直接由尘世拓展至三界:人界、光界、虚界。活动之后我想起须弥任务章节《虚空劫灰往世书》之后立马就想到了虚界,而且须弥的位置,“南至炎光”,我想到了光界,最东边的稻妻有鹤观、海祇岛的情况,看来同样位于大陆边界的须弥也不会很妙。
说到这里也没什么再好说的了,在我看来编剧的发挥不好预测,以米哈游的开发速度,须弥大概已经完成了,正在测试,文案在枫丹,美工在纳塔,而我们能做的就是等待,一边等一边继续猜测。
——————
我突然想到,爷在每个国家都有一段逃亡史,在蒙德偷天空之琴逃跑,在璃月被当成了刺杀帝君的刺客,在稻妻差点被砌进神像里,那么在须弥怎么逃呢?如果是抄袭论文被抓可就太有意思了哈哈哈……
(一旦脑洞更新,会马上过来更新)
个人想到的部分线索:
1、会被通缉
在蒙德,因为偷琴,爷被通缉了
在璃月,因为看见钟离假死,爷被通缉了
在稻妻,因为没有神之眼,爷被通缉了
所以在须弥,爷还会被通缉,原因可能是传播屠龙术或者看到了禁书。
2、愚人众会在此捣乱,但是个人认为最适合出场的是第三席博士,这货是被须弥教令院开除的学生。
比如可以让旅行者接一个委托,帮不知名的客户偷送禁书,然后被通缉了。
也可以因为某些原因被通缉之后,博士过来解围,然后传授一些危险的知识,让爷有威胁草神的把柄,最后他坐收渔翁之利。
3、由于草神易主过,且只有500岁,所以ta大概率对哥哥的事情完全不知情,但是对天理和七神的情报应该会吐出来一些,虽然可能是谜语人。
4、“学城的学者正在催生愚行,而神的智慧对此并无意见”
须弥教令院的大部分学科和课题都要经过严格审查,如果和爬科技树相关或者和触及世界真相相关,就会被砍掉。
但是各种其他奇奇怪怪的东西是可以研究的。
5、和部分国家部门有交流
在蒙德,有迪卢克、琴和温迪参与主线
在璃月,有钟师傅本人参与主线,以及和七星交涉
在稻妻,有神里和骚狐狸参与主线,最后和阿影交涉
所以在须弥,必然和国家部门存在部分交涉或合作
(我有想过舌战群儒,但是这个留给枫丹应该更好)
版本一(仿稻妻内战):
雨林区,一位水系神之眼的官二代对坎瑞亚灾变的历史感兴趣,但是开题时被驳回了,原因不是被禁止研究。
他还透露了可能存在一个原初之人在当时做过什么,要去做考古。爷因为这些线索当然要去帮忙。
考古过程中,随着线索的推进,以及以上活动并不是完全保密的,爷被通缉了,但是那位学生因为没有被发现,以及家里有关系,所以暂时没事。
被通缉之后,爷被那家人托关系转战沙漠区,这里有一个秘密据点,在里面爷见到没有戴面具的博士,他说他是至冬的旅人,因为触碰到一些秘密而也被通缉了,现在需要爷去见草神,还透露一些有用信息。
爷靠着一身的要命的知识威胁到了草神,威胁结束后,博士突入宫殿,秀出了自己的真面目,然后是BOSS战。
博士可能是死,可能是活,但是大概率洗不白,所以当他死了吧。
事后,爷告诉草神,以史为鉴,可以知兴替。历史如果由那些人随意摆弄,没有人吸取到教训,那必然会重演。
于是草神决定放开关于坎瑞亚的研究,然后让爷去找水神。
当然,那个研究坎瑞亚的学生当然顺利毕业了,还可以给一些关于哥哥的信息。
须弥篇,完。
版本二(仿璃月送仙):
由于科技树中的部分被草神压制不能深究,一个部门即将被裁撤,于是
“成为爱抖露拯救学院吧?”
在美食的诱惑下,派蒙拉着爷帮他们点科技树,以保证部门不会被裁撤。
但是研究过程中,有一个人从头到尾点子奇多,研究畅通无阻,甚至你都想怀疑他是不是全都知道。
期间各地收集素材,购置器械,少不了各种战斗。
上报草神之后,草神决定把部门裁撤,因为部分内容涉嫌违禁,不过大部分人员都给安排了去处,那个学生没有。
爷不服,那个学生却软了下来,劝爷不要追究了。
爷不能坐视不管,直接要和草神见面,结果看到王座上的假人。
而身边的那个学生则坐了上去,现在你知道为啥这个小不点学识渊博了。
她表示,这些知识交给你可以,交给臣民不行,不然谁都不知道天理会不会再降下灾祸,反正其他人的去处已经打点好了,能给你的已经给你了,你找下一位神就行了。
但是此时,研究过程中制造的一个初号机因为草神少给了部分器械而失控暴走,爷只能过去把它干趴下。
回来的时候发现博士拿着草神的神之心,然后溜之大吉。
(因为这是博士的调虎离山之计,把爷支走,召集愚人众偷袭草神,草神因为知道和板鸭合作有好处,交了神之心)
须弥篇,完。
版本三(追求真相篇):
3.0部分
爷进入须弥,有人接应爷,但是因为论文问题有些愁眉苦脸,因为承诺给吃的,派蒙让爷去帮忙。
论文主题可以是历史(坎瑞亚问题),可以是物理(混炉核心的作用原理及拓展研究),可以是元素(七元素的能量来源及技术升级),可以是量子能量(光界力—大日御舆能量的研究及控制),可以是虚数能量(暗界力—深渊教团所拥有的本质是什么)
爷成功把难题解决了(可以是呕心沥血,也可以是歪打正着),这件事让那位上面的人知道了(如果他水系,上级就是老师;火系,上级就写父亲)。
后来论文被大改,并且审稿通过了。因为爷被挂了二作,于是被须弥的官方机构邀请喝茶了。
在交谈中,爷被问了很多问题,大部分是普通人不能触及的真相。
分支A:回答大部分被驳回,于是判定这次挂二作是你恰巧擅长这个地方。
爷表示不理解,然后审了他们很多论文,其内容与爷在鹤观,渊下宫,层岩巨渊的实地考察有较大出入,其中还有部分和坎瑞亚战争有关的信息,且在须弥就有实地考察的条件,于是爷要去实地考察了。
3.1部分
实地考察中,有一个人加入了队伍并且大力帮忙,因为他精通考古发掘和器械使用,所以非常快就推理出了合适的逻辑线。
爷准备利用上次打响的名声,在须弥教令院开学术发布会,要将这一切公之于众,让一大批论文撤稿。
但是草神知道了这一切,决定要和爷单独谈谈。
这回,爷脑子里的知识和草神所说的一致了。也就是说,草神已经知道了一切的真相,但是不敢公布,因为上一任草神面壁几千年,就因为一开口破了自己的壁就被天理刀掉了。
这时当初那个帮爷的忙的家伙闯了进来,公布身份,博士。他对须弥教令院隐藏真相的行为早已不满,所以要把一切都捅破,在他的眼里真相最重要,伦理道德其他什么都不重要。
没办法,爷只好打下博士,这里就安排博士死了吧。
因为该说的不能说,于是草神将博士拖出来,声称因为博士嫉妒爷,决定窃取科研成果,于是在演讲前几天决定行刺爷,爷虽然没有生命危险,但是也身受重伤,演讲决定延期。
(有时候死人比活人管用)
事后,因为爷和草神单独待了一段时间,把要讲的部分删除了一些,终于可以讲出来了。(我不喜欢说假话。但是真话不全说是可以的)
因为草神不能明说坎瑞亚发生了啥,所以让爷继续往下走。
须弥篇,完。
分支B:爷被问是否要入学研究,爷答应了
(前情提要,爷挂二作出名了,被叫过去面试了)
爷要研究坎瑞亚历史,于是只能报考古系,爷成为了学院里的转校生。然后就爷和其他人分头进了秘境,要找到一些文物。
(此处可以插入装逼打脸的剧情)
但是发现的部分内容被告知不能声张(换作其他人就是直接驳回,因为草神清楚爷知道一些东西问题不大,但是不能外传),而且不能再继续研究下去了(不然导师有被天理通缉的风险)。
爷觉得不可思议,因为爷还不知道有些信息知道了会被天理通缉(比如看了《日月前事》),于是爷决定刨根问底,一探究竟。
期间,我们的老熟人—渊上,又出现在了爷的面前,这次他真的被打怕了,不敢和爷动手,但是将一些有用的信息分享给了爷。
之后,路上遇到了一个能打的愚人众执行官,他也是来一探究竟的,而且怕爷坏了他的好事,于是和爷动手了。
最终,在那个秘境中,爷找到了一些关键性的文物,证实了坎瑞亚被灭是因为一些东西让人知道了才会导致整个国家都没掉,于是爷决定到此为止了。
但是出来之后爷就被草神传唤了,草神生怕爷真的知道了什么不得了的事情,但是在一段面壁者的对话中,草神确定爷知道了很多而且守口如瓶,于是放心了。
至于神之心,在传唤你以前交出去了,可能是散兵拿的。
须弥篇,完。
版本四(草神被蒙蔽说):
(此版本是看到别人的视频想出来的,ta对于PV的解读和我的想法不一样,但是解释得通,所以在此拓展一个版本)(如果草神被架空了,我觉得神之心很可能不在草神自己身上)
爷进入须弥,老规矩,帮忙写论文。
写完论文之后,问到调查这个有什么用,他表示能拿来毕业,其他的就不知道了。
于是爷去查了教令院的论文,发现没有实际作用的论文一大批,大部分人对于知识的看法是它存在就行,不在乎有没有用。因为这样,教令院的支出大部分都被浪费掉了。(18+剧情就可以说被贪污掉了)
爷去找草神,但是被拦住了,因为下面管事的人觉得这么做没有问题,但是爷不这么认为啊。
分支A,来软的:
提出一个假的课题(比如伪造遗迹),让他们研究,看看最后他们能研究出个什么名堂来。
后来因为得出的矛盾太多,他们实在不行了,只能请草神亲自进来看。
爷就在这里恭候草神,然后说服她。
于是草神出来之后,把那些不干正事的部门裁撤的裁撤,换血的换血,须弥教令院引来生机。
分支B,来硬的:
爷直接开一架卡莲(卡莲免疫元素伤害)攻入教令院,看他们怎么打。
这下,那群说空话的家伙不行了,空有一脑子知识,解决不了问题。
然后部分有能力的家伙愿意站出来解决问题了。
爷就顺坡下了,让这群家伙长长记性。
回头也是老样子,该撤的撤,该换的换。
须弥篇,完。
520用浪漫点缀美妙的时光,用甜蜜包裹美好的生活,用幸福守望甜美的爱情,用真心倾诉真爱的誓言:爱你一辈子,永远不分离!
最近被坚果黑芝麻安利了,之前一直吃黑芝麻丸、坚果,真没想到这俩玩意还能组合到一起,简直太美味了!
谷之优品的芝麻丸里头居然还有个榛子仁,外头包裹着黑芝麻丸的浓香,两个味道混合在一起,真是香上加香!
独立包装,安全卫生,方便携带,出门带两个下课嘴馋的时候吃
羊初乳水嫩焕颜九件套,使用起来皮肤弹润紧实,补水保湿水效果超好
亲民的价格,大牌的效果!
在家里就能体验美容院小气泡,实在是妙!赶快安排起来吧!
这款小米有品DOCO小气泡毛孔吸尘器,它是一款黑科技,使用过程中水补充到毛孔中,然后再循环掉,边清洁边补水,去黑头不伤肤。深深被他种草,深层的补水同时,还能改善我们毛孔粗大的问题!
四叶草手链,幸运由此开始!
每片叶子代表不同的寓意!分别代表着幸运、勇气、爱情、希望!
神秘的黑玛瑙可以缓解我们生活中的各种压力,给我们带来正能量!
圣菲奥拉钻,超闪耀!天使之眼尾链可以加上我的祝福!
最好的礼物,超实用,收到它幸福感满满!
包装精美的几光老虎盒,里面每一格都有暖心话语,蓝牙音响、拍拍灯、加湿器、无线充电底板,寓意虎年四季交好运!
拍拍灯,一拍即亮,晚上起来上厕所更方便!无线充电板可以给手机无线充电,能够提高生活品质!蓝牙音响轻松享受音乐魅力,在干燥的冬季加湿器是必不可少的,补充水分
这是一款神器,一次偶然的机会朋友推荐给我西屋C388眼部按摩仪,淡淡的粉很特别,光看外观就爱上了它!
模式:一个开关,操作简单,很容易上手!
共5个模式:清晰,活力,睡眠,美容祛黑,全自动,待机时间也变长,我每天都在使用,一般一周充一次电!
这个礼物送的最可心
腰椎不好就用这款颐维撑腰座,它可以有效保护腰椎,改善腰部疼痛,EAVY撑腰座是可以调换档位的,基础款有2档,增强款有5档之多。
让你的腰部时刻都有支撑,久坐不累,座面还有弹性,可以轻松洗涤及换新!
百元以内新颖的礼物!
灯光柔和,是超级可爱的宇航员小猫咪,平时不用的时候还可以当玩具或者是摆件!做工精致,亮度刚刚好,适合晚上睡觉怕黑的小姐妹!
这是一款物美价廉的负离子吹风机,外观也挺简单干净,表面是磨砂质感超上档次。它有3个3档位,3种模式可以调控!
吹干的速度还是挺快的,还有一点就是后面风口处固定了一个网罩,为了防止头发吸进去,这一点超级安全
没有锁骨的短脖人的最爱!戴上感觉自己就是仙女美美哒!
视觉拉长脖颈,搭配v领小裙子,太显瘦,不愧是仙女棒呀!
西屋消消乐联名抱枕,可爱呆萌,方便好用!
元气小鸡莱萌,活力小蛙爱逗,不光是外观吸引人,功能超强大,模拟人手指压、揉搓,舒爽无刺痛,头内置远红外发热系统,如人手般温润;双重配合,深层按摩,更解乏。
够力更舒爽,人体躺靠也不卡顿。按摩更舒适,坐着,躺着都舒服
我闺蜜属于在生活精致度上要求很高的人,一直追逐国际大牌,前段时间她来我家住,用了我的最爱瓶中故事沐浴露,从此闺蜜也被她种草了!
外观精致,4种味道,每一种味道我都喜欢,不同的场所我会用不同的味道
爱美人士的首选!即想减肥又不想控制饮食人士的最爱!
这是一款饱腹感超强的奶昔,4种口味,总有一款是你喜欢的!热量超低,怎么吃也不会发胖!
送女友,送礼得送需要的,女人爱美之心,人皆有之!
去黄保湿套装,LOEK三件套,效果超级好,补水保湿还能改善暗沉,提亮肤色!
洗面奶清洁力强,抗痘舒缓,还能提亮淡印。
爽肤水里有熊果苷和光果甘草提取物,去黄提亮效果显而易见。
乳液质上脸 不油腻,吸收超快,干皮油皮敏感肌都可以使用。
它即是香薰又是水晶摆件,夜晚又是一款水晶灯,多种晶石颜色可选,每个颜色代表不同的磁场!可以增强我们的运势!
拥有反转魅力的星渊项链,神秘又酷飒拥有反转魅力!让人爱不释手!
这条[星渊项链],项链小众有质感,氛围感必须到位,闪闪的锆石做点缀,更精致,加上梦幻的黑宝石,感觉戴上了整个宇宙星空!
浪漫优雅,上身仿佛就是艺术品,随意百搭
很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)
几乎是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是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是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。
它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。
它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。
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是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是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,但复杂度还是有点高的,使用的时候要认真细心。
这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。
它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。
使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。
这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。
它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。
JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。
这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。
如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。
由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。
开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。
这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。
这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。
它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。
它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。
这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。
开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。
采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,
使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,
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的作者曾经在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端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。
希望桌面软件开发领域的从业者都能获得幸福。
满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...