wwj718 / Dynaverse

Dynaverse: A Metaverse for Children of All Agess
https://wwj718.github.io/post/%E7%BC%96%E7%A8%8B/dynaverse-studio/
15 stars 3 forks source link

Proposal: 当前打造 Dynaverse/Metaverse 世界的一点看法 #1

Open snowyu opened 2 years ago

snowyu commented 2 years ago

Dynaverse: 万物皆动,名称不错!

完全同意如今的所谓“元宇宙”概念只不过是把游戏的关卡(故事)设计放入到游戏世界中而已,想跳出去,穿越到另一个公司的游戏世界里,对不起,鄙公司才是正宗元宇宙,为了保护用户您的安全,老实待着。

但是对于 Croquet 我有不同的看法。不过,首先让我阐述自己关于元宇宙的一些想法。

在我眼里,元宇宙也许是下一代互联网的标志。如今的互联网打通了信息交互的通道,随着个人创作的盛行以及VR/AR的出现,进而才有了metaverse概念的出现。

不过如同最开始互联网Web浏览器的出现一样,从最简陋的文本Web浏览器(lynx),到图形界面的Web浏览器,再到有脚本交互多媒体Web浏览器。而这次则是metaverse 浏览器,其根本是协同创作展现不同虚拟世界,在不同的世界中自由创作与穿梭。

Web浏览器的网址是网页的地址,而metaverse 浏览器的网址则是各个虚拟世界的网络地址。 Web浏览器的超链接在metaverse 浏览器中则是虚拟世界里面的传送门。

而要打通不同的虚拟世界,在不同的虚拟世界之间进行穿梭,那么需要更多的关于世界(数据)的约定(规范):

要想打通不同的虚拟世界,成为业界标准,那么metaverse 浏览器项目本身必须是开放和开源的,并且是简单的:易于开发和使用的。这样的项目永远也不是一家公司所能打造出来,例如,互联网永远不可能作为一家公司的消费品出现。互联网在非商业研究文化中孵化了数十年. 当一个价值万亿美元的产业围绕它发展时,核心协议中嵌入了一套核心价值观(去中心化、人人平等),并且今天仍然被认为是值得为之奋斗的理想。

如今互联网常规的登录认证方式是以密码为主,但是该方式存在极大的问题,首先安全性依赖于口令,其次是口令的唯一性:不同的站点登录需要不同口令, 而且口令不能记录(审计)用户行为(任何有数据库权限的人员都能随意篡改用户行为)。而目前2FA以及WebAuthn认证机制做到的也只是提高了安全性。 并不能有效解决唯一性和审计问题。

其次metaverse 浏览器需要适应各种不同的计算环境(跨平台,跨设备),而不是象普通游戏那样,必须满足最小配置方能运行。 换句话说,底层的渲染引擎应该也是自适应的(当然不仅仅是渲染,物理引擎和AI生物引擎也应该是自适应的),能够自动切换渲染类型以便适应不同的计算环境(甚至可以将3D作为2D渲染):

不过,目前我还没有看到类似的游戏(渲染)引擎能完全满足我的需求。

好了现在回到 Croquet,在我看来它充满了浓浓的学术研究味,它是在为未来做实验研究准备,而不是为现在,从它的使用环境来看:

这怎么让现在互联网的大多数人愉快的玩耍,尤其是欠发达地区,这符合互联网人人平等的宗旨?当然作为研究是没啥的。

就语言来说,越通俗的,使用的人越多的,找到人的可能性越大,越生僻的越难找到人!现代面向对象语言从 Smalltalk 中吸取养分,Smalltalk因缺乏标准而没落,不过,就研究来说选 Squeak 无可厚非。

当然,在Croquet以及 dynamicland 中许多好的理念可以吸收,利用。但是直接用,那么就不是在做一个现阶段让人人都能玩得起的东西。

就游戏来说,目前尝试协同创作的沙盒游戏最成功的是像素《我的世界》,它欠缺的就是分享世界比较麻烦,而且在《我的世界》中穿越不同的世界也都不可能。 在我看来Roblox的创作方式还是太复杂,Roblox成功之处在于它的作品分享以及商业模式。

而在开源中,最成功的目前是《minetest》,类似《我的世界》,而与之不同的是,它的目标是希望作为开发各类像素沙盒游戏的引擎,而非游戏。它的一个重要特点是跨平台设备,不挑机器显卡。脚本引擎用的是lua。利用它,可以快速做一些原型验证。

我目前正在基于《minetest》,开发《minetest教育版》对标的是《我的世界教育版》,为啥用《minetest》,就是因为它不挑机器显卡,再老的机器也能跑,这样对贫困山区的教育也会有帮助。当前已经完成了一个集时间管理和挑战为一体的功能模组: Quiz. 我正在思考的是如何用文本描述的方式去创建世界(而不是在游戏世界里堆砖),以此来降低创建世界门槛,让教案更符合教师的习惯,更便于阅读修改.

如果希望快速玩原型验证,minetest是一个不错的起点,尽管它的内部存在大量待解决的问题:

wwj718 commented 2 years ago

@snowyu 谢谢!丰富、精彩而深入的讨论。

要逐一回复讨论中提及的事物/观点,可能超出我的能力范围或兴趣范围。就其中我曾经思考过的话题,做一些回复。

在不同的虚拟世界之间进行穿梭,那么需要更多的关于世界(数据)的约定(规范)

似乎与语义网的想法有相似之处。

metaverse 浏览器项目本身必须是开放和开源的,并且是简单的:易于开发和使用的。这样的项目永远也不是一家公司所能打造出来,例如,互联网永远不可能作为一家公司的消费品出现。互联网在非商业研究文化中孵化了数十年. 当一个价值万亿美元的产业围绕它发展时,核心协议中嵌入了一套核心价值观(去中心化、人人平等),并且今天仍然被认为是值得为之奋斗的理想。

非常赞同这段讨论。这或许正是目前 metaverse 值得吐槽的地方。


关于 Croquet 的讨论,我认同前半段(底层的渲染引擎应该也是自适应的. 事实上Croquet也正是这么做的),而不认同后半段。

Croquet 确实是一个研究项目,正如当年的互联网和面相对象是一个研究项目。 抵达未来的方式不是模仿和迎合流行的东西(这是很好的改良思路),而是去询问我们真正需要什么。 流行的东西和好的东西,这两个集合,有时候有重叠,但“流行”不是“好”的原因,它们有时候也没什么关系。计算机领域的流行文化问题,Alan Kay在这篇访谈中有深入讨论 A Conversation with Alan Kay

至于Smalltalk为何没流行,原因有很多 The Rise and Fall of Commercial Smalltalk

那么就不是在做一个现阶段让人人都能玩得起的东西。

个人计算社区在 Croquet 项目上前后投入了近30年的时间,30年前,这个项目确实太未来,太慢,研究小组通过更好的计算机提前抵达未来(Alan Kay的方法论,通过使用最好的硬件提前到未来,以避免过早优化: 7 Steps For Inventing The Future),但是我们差不多到了过去的未来。

今天,大多数硬件,甚至树莓派,都已经足够快。 我在虚拟机上(window 7)运行Croquet都已经很快了, Croquet目前需要做的是,把架构运行在现在技术栈上,以获得图形学和其他领域的进展

摩尔定律和互联网是两股主要力量,它们像大陆板块一样碰撞在一起,创造了巨大的可能性山脉。由于现有的操作系统都是在世界还相当平坦的时候创建的,它们在设计时并没有真正考虑到这些板块力量,因而无法抵达我们现在所能攀登的高度。

wwj718 commented 2 years ago

minetest 是个很棒的项目,谢谢分享!

snowyu commented 2 years ago

似乎与语义网的想法有相似之处。

是的,基于知识库是我长期关注的点,大概7年前我就在构想一种通用的数据库架构:面向知识的iKB数据库,主要是语义网以及wordnet的一些思想。

底层的渲染引擎应该也是自适应的. 事实上Croquet也正是这么做的

我无法找到,在它的官方网站上的例子,只是演示TeaTime的简化示例,例子和虚拟世界无关。当然可能是我接触Croquet时间太短(昨天才从你那里听说)的缘故,无法找到和虚拟世界相关的例子。 我唯一能找到的就是dynamicland,这个点子很酷,感觉里面的idea能被应用到虚拟世界中,然后更酷。

今天,大多数硬件,甚至树莓派,都已经足够快。 我在虚拟机上(window 7)运行Croquet都已经很快了, Croquet目前需要做的是,把架构运行在现在技术栈上,以获得图形学和其他领域的进展

需要一个类似像素沙盒世界跑起来才能真正知道,目前我看到的croquet提供的demo,只是一些基本的技术展示,连demo都算不上。他们似乎已经在把架构运行在现在技术栈上了,基于浏览器,见这里 Croquet-based multi-player game engine,是js的。我看到最近的更新都是和js相关的,而 squeak 版本有三年都没有更新,也没有放到croquet仓库中。

我找了不少的的开源像素沙盒世界,能在老手机老设备流畅跑起来的,就只剩minetest. 甚至目前对minetest里的大型游戏(MineClone2)老手机也会加载错误(内存不够),当然这块后续可以通过优化模组包的内存加载管理,目前对我来说用来教育完全够了,不需要复杂的游戏。

我相信 metaverse 是为黑客帝国准备的:从真实世界中开辟出另类的光怪陆离的虚拟世界。而不是媒体资讯3D化。 虚拟世界的后果是用资讯自动化描述搜索世界以及创建世界变得更加困难。这也是我的着手点: 用一段文字创建世界,以及根据世界自动建立世界的文字描述。

minetest 是个很棒的项目,谢谢分享!

u r welcome! minetest 了解得比较多了,如有问题尽管说.

snowyu commented 2 years ago

Now, I've got this: https://github.com/NikolaySuslov/livecodingspace

通过它应该可以更好的了解Open Croquet tech。 从它的技术栈来看,还是很初级, glTF schematic 远远不够,还要基于它扩展。不过好处是 js 够普及,看得懂的人更多。

snowyu commented 2 years ago

@wwj718 Croquet 的核心果然是 TeaTime, 这个在远程同步教学示范中很有意思,以及在一些精细化时序协同的场合,不过带宽不够就没法用。个人感觉从虚拟世界的角度来看不是必须(没有这个,不影响在minetest虚拟世界中一起搬砖建设),而是锦上添花。

如果就以Minetest来实现metaverse原型来看,首先碰到的就是在不同服务器之间的传送问题:

  1. 安全的跨服务器免密码登录,技术是有现成的,但是需要对整个现有登录体系改造(每一个游戏世界服务器注册可以用不同的密码,需要自己记住)
  2. 资产增量传送,不同服务器使用不同的游戏世界,游戏资产也不一样,如果传送需要全部传送,代价太大,需要一个基本资产包,在minetest如果都基于minetest_game进行游戏开发,那么这就是基本资产包。
  3. 最后是传送门命令规范,这个相对简单。

要实现自适应渲染,那么这个要填的坑更多,从livecodingspace的架构来看目前并没有涉及。 最简单的方式可能就是将像素模式的像素块缩小n倍,画面自然就细腻了,这个就全靠显卡来扛,可能的优化就是在像素模式中引入线和面,3D模型minetest加载是没有问题(只要多边形不要太多),针对物体用物理引擎做应力分析,进行破碎化,而不是直接套用像素模式,3D开发这块我也不是专家。

Minetest可以多看看,就沙盒游戏来说,已经有很多有趣好玩的模组和游戏,FPGA,乃至电脑, printer 都有模拟。

wwj718 commented 2 years ago

你的许多讨论我都是赞同的,这导致我一时不知道如何回复。

我想指出的是这些问题在 Croquet的架构论文里,大多数都是谈论到的,而且方案并非改良式的,而是重新出发,甚至可能需要重新思考网络和操作系统。他们之所以会这么激进,是因为创始团队极强,包括了Alan Kay和Reed等人物,而Reed是UDP的设计者之一,也参与了TCP的设计。

我觉得你目前的思路是沿着现有技术生态叠加自己想要的抽象层, 但Alan Kay对目前整个软件工程极不满意,他此前的STEPS项目甚至完全重新开始。

我想,之所以会有前边这些误会,可能是Croquet的历史原因造成的,Croquet前后经历了几次大变迁。我目前最感兴趣的是它的原始架构, 由于当时的创始团队能力极强,导致野心也更大,这些想法实现在Squeak中。这版本保留了浓郁的个人计算社区风味。

最近的实现(你目前注意到的几个项目),更多妥协于web生态,基本上只保留了teatime的架构,而放弃了架构中其他的目标,是个小得多的项目(也或许因此它能更聚焦)。你对最近的版本的感觉我也都是认同的。

早期的这个版本,可以在32bit window7上运行。 这是它的一些演示视频(2003年!): https://youtu.be/cXGLOiZUZ2U

snowyu commented 2 years ago

方案并非改良式的,而是重新出发,甚至可能需要重新思考网络和操作系统。

可能是大家都在smalltalk上吸取养分的缘故,比如 java 拿走了OO, erlang/golang 拿走了 message. 而这些都是取舍,都是一种权衡: java为了大型项目开发的规范有序,强调了OO; erlang/golang 为了高并发所以需要消息总线和monad. 虽然用过不少语言,但 Smalltalk 正是我的盲点,几乎是一点没接触过。如有谬误请多指教。

就个人来说,我喜欢 FORTH, 但是挂了(在嵌入式领域勉强活着), 喜欢 Delphi ,也挂了。 而如今 js 也被 Java/C++ 的程序员折磨得越来越不象最初的js,越来越OO,正在丧失Javascript Characteristic,让人遗憾.

我觉得你目前的思路是沿着现有技术生态叠加自己想要的抽象层

是的,做了二十多年的系统架构,习惯了,总是在做各种权衡,人力上的,技术上的,最终要保障实施也是麻烦事。而且技术验证和构造可用系统差别蛮大的。以渲染引擎为例,不提前面说到的自适应渲染,就说虚拟世界本身,可不是演示中那样只有方寸之地,以minetest的世界为例,座标极限是(2^16,2^16,2^16),大致就要处理2.38328E14(238TB) nodes. 因此地形总是动态加载的,而整个世界(所有的节点)玩家都有能力改变,服务器既不可能一次性产生地图的所有初始地形,也不可能一次性传送整个世界的数据给到客户。minetest团队最近才在外部contributor的帮助下搞定渲染 shadow,似乎是基于顶点着色器的开发,3D开发也越来越专业了,现在,不是过去一人通才的时代,只不过,现在open source的氛围比过去好得多,可以站在巨人的肩膀上罢了。

这些想法实现在Squeak中。

里面的 Etoys 比较有意思,非常灵活的自编程的交互媒体创作编辑,感谢,我放了n年的imarkdown-响应(交互)式文档又可以吸取灵感了,虽然对于普通人(非开发者)依然不友好(imarkdown也是如此). 但能感觉出来它自成系统,集语言,IDE,操作系统于一身。这点与 FORTH 类似,不过FORTH是极简,Smalltalk是极繁。都走极端,结果都挂了。可能因吾之愚,我故偏爱大道至简。

最近的实现(你目前注意到的几个项目),更多妥协于web生态,基本上只保留了teatime的架构,而放弃了架构中其他的目标,是个小得多的项目(也或许因此它能更聚焦)。

这也是一种权衡后的结果。大家也都在相互学习而已。

演示视频看了,感觉可能还是技术展示,主要展示的是Teatime以及世界之间的无缝传送。具体可能还要细看: 是否真的解决了游戏资产的传送(无缝传送),在网络卡顿的情况下的表现,局部环境下支撑的用户数量。

不过总的来说,Smalltalk还是有不少值得学习借鉴的地方。有的思路似乎和我构想的统一知识数据库一致:

Great Thanks, 以前真还小瞧了Smalltalk, 这次有空真得仔细瞧瞧。

wwj718 commented 2 years ago

imarkdown-响应(交互)式文档 的想法非常有cool! Bret Victor在这块有过相似的思考: tangle

Bret Victor 可能也会是你感兴趣的人物。我私底下认为,Bret Victor 是Alan Kay之后, 人机交互领域最伟大的思考者, Dynamicland 正是他的项目。他继承了个人计算社区大部分理念, Bret 有几个演讲非常有趣:

你说 Smalltalk 是你的盲区,但巧的是,你的许多思考和探索和这个社区的有很多相似点。

Smalltalk 可能会是你感兴趣的下一门语言 :)

snowyu commented 2 years ago

嗯,是的,当时正是受到 tangle 的启迪,才有了 iMarkdown,尽管语义修订过两次,但iMarkdown离普通人使用还是太远,目前语义还是远远达不到简单易用的程度,离我畅想的 interative-markdown 还很远: 编写绘本故事书,根据文字自动产生图画故事, 乃至根据文字创建游戏(在minetest我找到了新的灵感).

Bret Victor 的确是交互领域的天才!

嗯,是的,能感觉到,相信 Smalltalk 能带给我新的灵感。这块还请多指教。

lamdba commented 2 years ago

我感觉元宇宙并不需要追求视觉上的真实性,上世纪的计算机游戏,仅通过文字就可以使人身临其境,重点是信息的整合排布,而不是精致的3d效果。一个ftp,一个html组建的网络足以具备元宇宙的性质了:信息的展示、交互和作为进一步思维的环境。元宇宙应该追求的也应该就是这种描述记忆(思维状态)的能力。可以说在某些方面,3d技术能做得更好,但是也可能引来过多的复杂性。 inspect性(可能是smalltalk编程体系有别于其他语言的特性),浏览器其实也具有那么点(似乎很少对js下手),背后的哲学是“在使用中开发/交互式开发”

wwj718 commented 2 years ago

我感觉元宇宙并不需要追求视觉上的真实性,上世纪的计算机游戏,仅通过文字就可以使人身临其境,重点是信息的整合排布,而不是精致的3d效果

有个例子支持这个观点: 《栖息地:来自一个在线社区的报告》(《True Names》里的一篇评论文章)

3d技术能做得更好,但是也可能引来过多的复杂性。

人类在三维 "空间" 里进化了数百万年,许多思考模型根源于三维空间里习得的经验。明斯基和皮亚杰举了很多例子,当人们说"我和他的关系疏远了",使用的正是空间隐喻,认知结构中存在大量与空间有关的模型(明斯基)。

如果计算机/元宇宙是为了增强人类(人机共生愿景),它首先需要被设计得适应人类的思考方式(Bret Victor、Alan Kay)。因此,接受这种复杂性是值得的。

liuxing3169 commented 2 years ago

想象场景一: 有两个用户,他们决定进行一些关于项目的谈论,然后他们来到了Dynaverse,然后即时新建了一个房间,快速选择了一个场景环境,拿出了一些模型,然后在房间的墙上写写画画,他们时而激烈的讨论,时而开始各自思考,然后又开始讨论,各自发言。他们将讨论的结果形成了共识和下一次待讨论的议题。他们决定让这次讨论'留档',后来过了很久,又有新的人加入他们,通过时间轴或关键tag,后来的人replay了他们这次讨论,并加入了一些新的'注释',也有再后来加入的人只关注了当时的讨论而忽视了'注释'。他们决定开放一系列的讨论回放记录。N年后,有人对他们有兴趣,他们当时变成了研究体,他们当年的讨论成为后续故事的前线

wwj718 commented 2 years ago

想象场景一: 有两个用户,他们决定进行一些关于项目的谈论,然后他们来到了Dynaverse,然后即时新建了一个房间,快速选择了一个场景环境,拿出了一些模型,然后在房间的墙上写写画画,他们时而激烈的讨论,时而开始各自思考,然后又开始讨论,各自发言。他们将讨论的结果形成了共识和下一次待讨论的议题。他们决定让这次讨论'留档',后来过了很久,又有新的人加入他们,通过时间轴或关键tag,后来的人replay了他们这次讨论,并加入了一些新的'注释',也有再后来加入的人只关注了当时的讨论而忽视了'注释'。他们决定开放一系列的讨论回放记录。N年后,有人对他们有兴趣,他们当时变成了研究体,他们当年的讨论成为后续故事的前线

Smalltalk 非常适合用于构建这种随时间持续演进的系统。https://hubs.mozilla.com/ 在很多方面都很不错