Інтеграція з Decentraland SDK

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція з Decentraland SDK
Середній
~1-2 тижні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1120
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    588
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    855

Інтеграція з Decentraland SDK

Decentraland — браузерна метавселенна на базі Ethereum, де land-ділянки (LAND) є NFT. SDK 7 (поточна версія) дає можливість створювати інтерактивні сцени з 3D-об'єктами, ігровою логікою та Web3-інтеграцією.

Структура проекту Decentraland

npx @dcl/sdk-commands init my-scene --skip-install
cd my-scene && npm install

Структура:

my-scene/
├── src/
│   ├── index.ts     # точка входу сцени
│   └── systems/     # ігрові системи
├── assets/          # 3D моделі, текстури
└── scene.json       # метадані (координати ділянки, назва)

Створення інтерактивної сцени

import { engine, Entity, Transform, GltfContainer, 
         PointerEvents, InputAction, inputSystem } from '@dcl/sdk/ecs'
import { Vector3, Quaternion } from '@dcl/sdk/math'

export function main() {
  // Створюємо інтерактивний об'єкт
  const nftDisplay = engine.addEntity()
  
  Transform.create(nftDisplay, {
    position: Vector3.create(8, 1, 8),
    scale: Vector3.create(1, 1, 1),
    rotation: Quaternion.fromEulerDegrees(0, 0, 0),
  })
  
  GltfContainer.create(nftDisplay, {
    src: 'assets/nft_frame.glb',
  })
  
  // Обробчик кліку
  PointerEvents.create(nftDisplay, {
    pointerEvents: [{ eventType: PointerEventType.PET_DOWN,
                      info: { button: InputAction.IA_POINTER, hoverText: 'Inspect NFT' } }],
  })
  
  // Система оновлення
  engine.addSystem(() => {
    if (inputSystem.isTriggered(InputAction.IA_POINTER, PointerEventType.PET_DOWN, nftDisplay)) {
      openNFTDetails()
    }
  })
}

Web3 інтеграція

Decentraland SDK 7 підтримує взаємодію з кошельком користувача через @dcl/sdk/ethereum-provider:

import { createEthereumProvider } from '@dcl/sdk/ethereum-provider'
import { ethers } from 'ethers'

async function checkNFTOwnership(tokenId: number): Promise<boolean> {
  const provider = createEthereumProvider()
  const ethProvider = new ethers.BrowserProvider(provider)
  const signer = await ethProvider.getSigner()
  const userAddress = await signer.getAddress()
  
  const nftContract = new ethers.Contract(NFT_CONTRACT_ADDRESS, ERC721_ABI, ethProvider)
  const owner = await nftContract.ownerOf(tokenId)
  
  return owner.toLowerCase() === userAddress.toLowerCase()
}

// Показуємо екслюзивний контент тільки власникам NFT
async function unlockExclusiveArea() {
  const hasAccess = await checkNFTOwnership(MEMBERSHIP_TOKEN_ID)
  
  if (hasAccess) {
    showExclusiveContent()
  } else {
    showPurchasePrompt()
  }
}

Серверна логіка через Scene Runtime

Для складної логіки (мультиплеєр, ігрові механіки) використовується Decentraland Scene Server на базі TypeScript:

// server/index.ts
import { WebSocketServer } from 'ws '

const wss = new WebSocketServer({ port: 8080 })
const players = new Map<string, PlayerState>()

wss.on('connection', (ws, req) => {
  const playerId = getPlayerIdFromRequest(req)
  
  ws.on('message', (data) => {
    const event = JSON.parse(data.toString())
    
    switch(event.type) {
      case 'MOVE':
        players.set(playerId, event.position)
        broadcastToAll({ type: 'PLAYER_MOVED', playerId, position: event.position })
        break
      case 'INTERACT':
        handleInteraction(playerId, event.objectId)
        break
    }
  })
})

Деплой сцени: npx @dcl/sdk-commands deploy — завантажує контент на Decentraland Content Server. Приватні сцени деплоятся на власній інфраструктурі через catalyst node.

Розробка простої інтерактивної Decentraland сцени з Web3 інтеграцією: 3–5 тижнів. Складна сцена з мультиплеєром та ігровими механіками — 2–3 місяці.