尝试使用 Decentraland SDK

首先,先下载 nodejs 。安装完后,开terminal 输入
npm install -g decentraland

然后去一个空的directory ,输入

dcl init
dcl start

就搞定了。 你去browser 浏览
http://localhost:8000/?SCENE_DEBUG_PANEL&position=-1%2C-1&realm=localhost-stub

就会看到场景了。

image.png

一行代码都还没写就有一个拥有multiplayer 环境的场景出现了。 这时如果你开第二个browser 去同一个页面 , 你就会看到两个人了 。

image.png

就是那么简单.

不过,虽然人物是自动 multiplayer 了, 但里面的物件可不是自动 multiplayer的。 比如说其中一个人按了那个箱子可以产生更多的箱子, 但另一个人却没看到。

Decentraland 提供给你两种方式把 物件的state multiplayer 化。

第一种是 P2P的, 基本上就是提供了 emit 和 receive function 。

玩家A 要干什么, 就要把该动作 emit , 其它在场的玩家就会 receive 到。不过,如果你物件换了几次state ,玩家 C 才刚进入场景 , 那玩家C 就错过了 receive 。

第二个就是 把所有物件的 state 传送到自己的私人 server , 然后任何玩家刚进来就必须先到那个私人server 拿所有物件的state .

要建立一个server 来存放物件的state 基本上不用太复杂, 只要一个基本的 key value 库例如 memcached 就可以了。 找了几个免费的例如

https://meeiot.org/
http://keyvalue.immanuel.co/

用最简单的 http get/put 来存/读取就可以了。

来说说 Decentraland 的3D 环境。 基本上, Decentraland 走的是 Low Poly 风格,

Low Poly 基本上是 3D 的一门艺术 , 就是要用最少的polygon 来呈现3D 物件/人物。 3D物件格式支援 .gITF 格式。这个基本上包含了 物件的 mesh , texture, animation 。在blender 上建模可以直接 export 成此格式。

不会用 blender也可以到 google poly 去下载物件。

在来说说代码的部分。

Decentraland基本上是使用 typescript , 基本上就是 javascript 的superset 。 只要会写javascript, 基本上是没什么问题的。

目前就研究到此。

其它的以后在说

谢谢阅读。