Decentraland SDK Integration

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1 servicesAll 1306 services
Decentraland SDK Integration
Medium
~1-2 weeks
FAQ
Blockchain Development Services
Blockchain Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1214
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823

Decentraland SDK Integration

Decentraland is a browser-based metaverse on Ethereum, where land plots (LAND) are NFTs. SDK 7 (current version) provides the ability to create interactive scenes with 3D objects, game logic, and Web3 integration.

Decentraland Project Structure

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

Structure:

my-scene/
├── src/
│   ├── index.ts     # scene entry point
│   └── systems/     # game systems
├── assets/          # 3D models, textures
└── scene.json       # metadata (plot coordinates, title)

Creating an Interactive Scene

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

export function main() {
  // Create interactive object
  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',
  })
  
  // Click handler
  PointerEvents.create(nftDisplay, {
    pointerEvents: [{ eventType: PointerEventType.PET_DOWN,
                      info: { button: InputAction.IA_POINTER, hoverText: 'Inspect NFT' } }],
  })
  
  // Update system
  engine.addSystem(() => {
    if (inputSystem.isTriggered(InputAction.IA_POINTER, PointerEventType.PET_DOWN, nftDisplay)) {
      openNFTDetails()
    }
  })
}

Web3 Integration

Decentraland SDK 7 supports wallet interaction via @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()
}

// Show exclusive content only to NFT holders
async function unlockExclusiveArea() {
  const hasAccess = await checkNFTOwnership(MEMBERSHIP_TOKEN_ID)
  
  if (hasAccess) {
    showExclusiveContent()
  } else {
    showPurchasePrompt()
  }
}

Server Logic via Scene Runtime

For complex logic (multiplayer, game mechanics) use Decentraland Scene Server based on 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
    }
  })
})

Scene deployment: npx @dcl/sdk-commands deploy — uploads content to Decentraland Content Server. Private scenes are deployed on own infrastructure via catalyst node.

Development of a simple interactive Decentraland scene with Web3 integration: 3–5 weeks. Complex scene with multiplayer and game mechanics — 2–3 months.