资产包
目录
概览
资产储存库是Decentrand生态系统的一个基本组成部分,是默认物品和资产的中央储存和分配系统。 它管理和分发:
- 资产包: 3D 资产按主题( cyberpunk, s蒸汽punk, 起源地城市) 排列的解析集合
- 静态项目: 有纹理和材料的基本三维模型
- 智能项目: 具有可编程行为和配置的交互式项目
部署后,所有资产被散开并上载到下面的一桶S3 contents/:hashNpm 软件包 @dcl/asset-packs 现发布内容包括:
- A 类
catalog.json拥有所有资产包的数据和内容散列 - A 类
bin/index.js智能项目功能所需的运行时间
资产可通过 builder-items.decentraland.* 通过Cloudflare.
快速启动
使用您的场景中的资产包
在您的 Decentrand SDK7 场景中安装软件包 :
npm install @dcl/asset-packs
在您的场景中导入并使用资产包 :
import { readGltfLocator } from '@dcl/asset-packs'
// Use an asset from the catalog
const assetId = 'some-asset-id'
const gltfSrc = readGltfLocator(assetId)
// Use in your scene
engine.addEntity({
transform: Transform.create(),
gltfContainer: GltfContainer.create({ src: gltfSrc })
})
发展的先决条件
- 节点.js 22.x或更高
- 无 (来与节点.js)
- 夹克 (用于运行本地内容服务器)
- @dcl/sdk-命令 全球或当地安装
分发
生产
- 无 :
@dcl/asset-packs@latest - cdn: (中文(简体) )
https://builder-items.decentraland.org/contents/:hash
发展
- 无 :
@dcl/asset-packs@next - cdn: (中文(简体) )
https://builder-items.decentraland.zone/contents/:hash
部署
生产部署:
- 触发符 :
main分支 - npm: 发布
@dcl/asset-packs@latest - CDN: 上传资产到
https://builder-items.decentraland.org
发展部署:
- 触发者: 手动注释
/upload-assets(仅限成员) - 无 : 通过 S3 测试包可用于 PR 测试
- CDN: 上传资产到
https://builder-items.decentraland.zone
说明:所有资产均按内容处理(hashed),确保不可更改性并正确缓存.
地方发展
您可以在本地开发此repo, 并在 Web 编辑器内进行测试 :
到你的机器里去 做这个:
- 运行
npm run start以监视更改并启动 SDK7 dev 服务器(在端口上)8001(默认情况下). - 在一个新的终端上,运行
docker-compose up启动本地内容服务器http://localhost:9000/asset-packs - 在一个新的终端上,运行
npm run upload上传所有资产到本地内容服务器(复制.env.example输入.env如果你以前没有这样做. - 复制路径到
bin/index.js在这种回放中( 比如/Users/my-user/path/to/creators-hub/packages/asset-packs/bin/index.js) (中文(简体) ).
转到 packages/inspector 在这个单曲中,并做到这一点:
- 运行
npm start启动本地 dev 服务器。 它应该默认在端口开始8000。 。 。 .
转到 packages/creator-hub 在这个单曲中,并做到这一点:
- 复制
.env.example改为.env如果你以前没做过的话. - 设定
VITE_INSPECTOR_PORT(原始内容存档于2018-10-21) (英语). env var in.env将会是8000(这是@dcl/inspectordev 服务器, 我们在上一节开始 . - 设定
VITE_ASSET_PACKS_JS_PORT到SDK7在第一节开始运行的端口(8001) (中文(简体) ). - 设定
VITE_ASSET_PACKS_JS_PATH(原始内容存档于2018-10-21) (英语). env var in.env路径bin/index.js在第一节中复制. - 设定
VITE_ASSET_PACKS_CONTENT_URL(原始内容存档于2018-10-21) (英语). env var in.env将会是http://localhost:9000/asset-packs(这是我们在第一节开始的内容服务器). - 运行
npm start启动应该从端口启动的本地服务器3000
现在你们都准备好了,可以在此repo中开始开发SDK7场景,从本地的构建器开始使用,并通过预览场景来测试,该场景应该使用本地的构建器服务器服务开发的javascript文件.
测试检查员的新资产
检查员在运行时间从S3取出资产目录. 若为 latest/catalog.json 无法获取(例如,在预置的PR分支上,在CI中,或离线),它自动倒回 catalog.json 捆绑在 @dcl/asset-packs npm包-所以督察总是会装入.
当你添加一个 新设 本地资产不会自动出现在“资产包”标签中,因为CDN和捆绑的目录尚不清楚。 有两个选择:
备选方案1——多克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克
现存的插头编组处理所有事务. npm run upload 现在也上传 catalog.json 作为 asset-packs/latest/catalog.json 给MineIO, 反射CI对S3所做的.
跟着步骤走 地方发展 在上文中,然后以下列方式开放检查员:
http://localhost:8000/?contentUrl=http://localhost:9000/asset-packs
目录列表和所有资产文件都在当地提供——完全端到端测试,不需要远程CDN.
备选案文2——通过PR上传到dev CDN
推出你的分行并评论 /upload-assets (仅限成员参加)。 CI 将把您分支的所有资产文件上传到开发 CDN (CI) https://builder-items.decentraland.zone)并张贴一个确认上传的评论.
然后配置检查器以使用 Dev CDN :
VITE_ASSET_PACKS_CONTENT_URL=https://builder-items.decentraland.zone
或当直接打开检查员:
http://localhost:8000/?contentUrl=https://builder-items.decentraland.zone
目录指针( E)latest/catalog.json)仅在合并到 main,因此"资产包"标签仍将显示当前已发布的目录——但资产文件本身将可供加载.
解决问题
失踪 @dcl/ecs 依赖性
此软件包依赖 @dcl/ecs 对于几种类型。 此软件包即使应该如此, 也不会被添加为依赖性, 因为这会在安装时引起问题 @dcl/sdk@next 在现场。 问题如下:
@dcl/sdk- > (中文)@dcl/ecs@dcl/sdk- > (中文)@dcl/sdk-commands- > (中文)@dcl/inspector- > (中文)@dcl/asset-packs- > (中文)@dcl/ecs
当用户安装时 @dcl/sdk@next 作为现场,该更新 @dcl/ecs 但由于冲突 npm 储存 @latest 在节点和模块顶端的版本 @next 版本只呼唤 @dcl/sdk/node_modules。这会引起运行时间问题.
因此,我们决定 消除明显的依赖性 @dcl/ecs 从 @dcl/asset-packs 软件包,允许用户安装 @dcl/sdk@next 或毫无问题地升级版本.
缺点是,如果在某个项目中使用这个软件包,其中 @dcl/ecs 无法使用,它会破裂。 这个包不应该在 德克萨斯州的场景之外使用 所以这不应该是一个问题.
相关的结构决定
为了更深入地了解结构和设计决定:
- ADR- 281: 分散工具的项目 - 说明项目抽象、项目类型(稳定、智能、自定义)和技术执行细节.