Розробка метавсесвіту (Metaverse)
Метавсесвіт — перевантажений термін. Перш ніж проєктувати, ми завжди уточнюємо: це persistent 3D world з real-time взаємодією (як Decentraland, The Sandbox) чи social layer поверх додатків, чи віртуальні офіси для enterprise? У кожної моделі — свій стек. Тут розберемо архітектуру web3-native persistent world: багатокористувацьке 3D середовище з NFT-землею, on-chain економікою та decentralized governance. Це найскладніший технічно та найзатребуваніший варіант.
За нами п'ять завершених проєктів метавсесвітів та понад 5 років досвіду у Web3. Ділимося досвідом, щоб ви могли оцінити обсяг робіт та уникнути типових помилок. При цьому важливо розуміти: порожній світ без контенту та ком'юніті — мертвий. Паралельно з розробкою ми запускаємо програму для early LAND holders та креаторів. Зв'яжіться з нами, щоб обговорити стратегію залучення творців.
Архітектура метавсесвіту: блокчейн, контент та real-time
Все, що має цінність, живе on-chain. Решта (3D-асети, сцени) — off-chain на IPFS або Arweave. Ось ключові шари.
Як розділяються ownership та економіка?
- LAND NFT — ділянки віртуальної землі (ERC-721).
- Avatar NFT — персонажі з атрибутами.
- Wearables — предмети (ERC-1155 або ERC-721).
- Governance token — голоси у DAO.
- In-world currency — ERC-20 для внутрішніх розрахунків.
Контент на LAND не on-chain. Власник деплоїть 3D-сцени та скрипти на IPFS — це гнучко та дешево.
LAND система: координатна сітка та Estate
Класична модель — карта з квадратних ділянок з координатами. Як зазначається в офіційній документації Decentraland, координатна сітка будується від центру. Decentraland використовує (-150,-150) до (150,150). Ми застосовуємо той самий підхід:
contract LandRegistry is ERC721 {
int16 public constant MIN_X = -100;
int16 public constant MAX_X = 100;
int16 public constant MIN_Y = -100;
int16 public constant MAX_Y = 100;
function coordinatesToId(int16 x, int16 y) public pure returns (uint256) {
require(x >= MIN_X && x <= MAX_X, "X out of range");
require(y >= MIN_Y && y <= MAX_Y, "Y out of range");
return uint256(uint16(x - MIN_X)) * 201 + uint256(uint16(y - MIN_Y));
}
function idToCoordinates(uint256 tokenId) public pure returns (int16 x, int16 y) {
y = int16(int256(tokenId % 201)) + MIN_Y;
x = int16(int256(tokenId / 201)) + MIN_X;
}
function isAdjacent(uint256 tokenId1, uint256 tokenId2) public pure returns (bool) {
(int16 x1, int16 y1) = idToCoordinates(tokenId1);
(int16 x2, int16 y2) = idToCoordinates(tokenId2);
int16 dx = x1 - x2;
int16 dy = y1 - y2;
return (dx == 0 && (dy == 1 || dy == -1)) || (dy == 0 && (dx == 1 || dx == -1));
}
}
Для об'єднання сусідніх наділів використовується Estate — складовий NFT. Володіння ділянкою дає контроль над вмістом сцени.
Чому контент зберігається off-chain?
Зберігати 3D-моделі та скрипти на блокчейні невиправдано дорого. Один гігабайт в Ethereum коштує тисячі доларів. Off-chain зберігання на IPFS або Arweave вирішує проблему: власник LAND публікує хеш сцени, а мережа завантажує контент через шлюз.
Content system: що деплоїться на LAND
Кожен LAND має сцену — JSON-дескриптор з посиланнями на 3D-моделі, скрипти та портали. Публікація через простий контракт:
contract LandContent {
mapping(uint256 => string) public sceneHash;
mapping(uint256 => uint256) public sceneVersion;
function publishScene(uint256 landId, string calldata ipfsHash) external {
require(landRegistry.ownerOf(landId) == msg.sender, "Not owner");
require(bytes(ipfsHash).length == 46, "Invalid IPFS hash");
sceneHash[landId] = ipfsHash;
sceneVersion[landId]++;
emit ScenePublished(landId, msg.sender, ipfsHash, sceneVersion[landId]);
}
}
Розробники пишуть інтерактивні скрипти в sandbox-оточенні через SDK. Приклад — двері, що відкриваються по кліку, або NFT-гейт для доступу.
Як влаштована real-time синхронізація аватарів?
Гравці бачать один одного через game servers, кожен регіон (N×N LAND) обслуговується окремим сервером. При переході кордону — handoff.
Area server на Node.js
class AreaServer {
private players = new Map<string, PlayerState>();
private physicsWorld = new World({ x: 0, y: -9.81, z: 0 });
handlePlayerJoin(playerId: string, ws: WebSocket, position: Vector3) {
// ... додавання гравця, відправка снапшоту, broadcast
}
handleMovement(playerId: string, movement: MovementPacket) {
// server-side validation, broadcast з delta compression
}
private tick() {
this.physicsWorld.step();
const updates = this.getDirtyPlayerStates();
if (updates.length > 0) this.broadcast({ type: 'batch_update', updates });
}
}
Для зниження навантаження застосовуємо proximity-based broadcasting — видимість обмежена радіусом (наприклад, 100 метрів). Це перетворює O(N²) на O(N×K).
Економіка метавсесвіту та управління
In-world marketplace з роялті
Власник LAND заробляє 2.5% з продажів на своїй землі:
contract InWorldMarketplace {
uint256 public constant LAND_ROYALTY = 250;
function buy(uint256 listingId) external {
// перевірки, розрахунок, переказ токенів та NFT
}
}
Play-to-earn генерує in-world currency за відвідування подій, виконання квестів, участь у міні-іграх. Емісія контролюється weekly cap та halvening.
DAO та голосування
Управління через Compound-style Governor. Володіння LAND дає голос (1 LAND = 1 vote + бонус за стейкінг governance token). Вирішуються питання: розширення карти, параметри економіки, апгрейди контрактів.
Технологічний стек та процес розробки
Повний стек
| Шар |
Технологія |
| Blockchain |
Polygon PoS / Arbitrum |
| LAND/NFT |
Solidity + Foundry |
| Governance |
OpenZeppelin Governor |
| Storage |
IPFS + Arweave |
| Real-time |
Node.js + uWebSockets.js |
| Physics |
Rapier3D (WASM) |
| 3D Web |
Three.js + React Three Fiber |
| Avatar |
ReadyPlayerMe або VRM |
| Indexing |
The Graph |
Зверніть увагу: вибір L2 (Polygon або Arbitrum) дає драматичне зниження gas — у 100 разів дешевше Ethereum. Це критично для масового прийняття.
Що входить у роботу
- Аудит смарт-контрактів (LAND, marketplace, token) — гарантуємо відсутність reentrancy та типових вразливостей.
- Повна документація з інтеграції SDK для творців контенту.
- Налаштування інфраструктури: IPFS-піннінг, game servers, бази даних.
- Підтримка після запуску: моніторинг, хотфікси, доопрацювання економіки.
Етапи та строки
| Фаза |
Зміст |
Строк |
| Foundation |
LAND контракти, координати, базовий marketplace |
4–6 тиж |
| Content system |
Scene descriptor, IPFS, публікація |
3–4 тиж |
| 3D Client |
Three.js світ, завантаження сцен, навігація |
6–8 тиж |
| Real-time |
Area servers, синхронізація |
6–8 тиж |
| Economy |
In-world token, marketplace, P2E |
4–6 тиж |
| Scripting SDK |
Sandbox, NFT gates |
4–6 тиж |
| Governance |
DAO контракти, UI |
3–4 тиж |
| Audit |
Всі контракти |
5–8 тиж |
| Alpha launch |
Обмежена карта |
2–4 тиж |
Реалістичні строки: 12–18 місяців до public alpha для команди 8–12 осіб. Це один з наймасштабніших проєктів у Web3.
Головний ризик — не технічний, а продуктовий: без контенту та ком'юніті світ буде порожнім. Тому паралельно ми запускаємо програму для early LAND holders та креаторів. Щоб оцінити ваш проєкт та запропонувати оптимальну архітектуру, замовте консультацію.
Як створити метавсесвіт з нуля?
Розробка метавсесвітів: як ми будуємо land, аватари та інтероперабельність
Decentraland продавав ділянки віртуальної землі за значні суми на піку хайпу. Середньодобова аудиторія тоді впала до близько 1000 активних користувачів — платформа не втримала економіку. The Sandbox — схожий сценарій: красиві 3D-світи, але порожні. Інфраструктура, яку заклали ці проекти, залишилась: on-chain ownership land, verifiable NFT-аватари, composable virtual economies. Питання не в тому, чи працює технологія — працює. Питання в тому, як проектувати так, щоб не повторити ті ж помилки. Ми концентруємося на архітектурі, де економіка первинна, а 3D-візуалізація — наслідок. Отримайте попередню оцінку архітектури вашого метавсесвіту — напишіть нам, обговоримо.
Як забезпечити економічну стійкість метавсесвіту?
Чому земля (land) як NFT — це складніше, ніж здається?
Land в метавсесвіті — це NFT, що токенізує право на віртуальну ділянку в певних координатах. Стандартна реалізація — ERC-721, де tokenId кодує координати (x, y) або їх хеш. Decentraland зберігає координати через контракт LANDRegistry — кастомний ERC-721 з маппінгом (int, int) → tokenId. Estate-контракт групує суміжні parcels. Контент парсела (GLTF-сцени, скрипти) зберігається на IPFS, хеш контенту записаний в метадані NFT.
Проблема: контент на IPFS не піниться вічно. Якщо піннер іде — контент недоступний, але NFT з правом власності живе. Для production використовуємо гібридну схему:
| Хранилище |
Надійність |
Вартість |
Рекомендація |
| IPFS + Pinata |
до відключення піннера |
низька |
тимчасові асети, прототипи |
| Arweave |
перманентне (одноразова плата) |
середня |
production land-контент |
| Filecoin |
довгострокові storage deals |
середня |
бекап, великі обсяги |
| CDN + on-chain хеш |
висока (централізовано) |
висока |
hot assets, швидке завантаження |
Arweave в 10 разів дешевший за IPFS при зберіганні контенту довше року — для land-асетів це оптимальний вибір.
Spatial indexing. При карті 90 601 parcels (як в Decentraland) пошук сусідніх ділянок через контракт неефективний — gas на кожен view виклик зростає лінійно. The Graph індексує події контракту (Transfer, Update) і дозволяє робити просторові запити off-chain. Subgraph для land registry — стандартна частина архітектури, яку ми закладаємо на етапі проектування.
Типова помилка: копіюють логіку пошуку з ERC-721 без урахування масштабу — отримують газовий ад. Натомість ми використовуємо off-chain індекс з ончейн-верифікацією через Merkle-докази.
Як забезпечити інтероперабельність аватарів без втрати атрибутів?
Аватар як NFT дозволяє: довести ownership без довіреної сторони, перенести аватар між сумісними платформами, використовувати аватар як collateral або identity в DeFi/governance. Але проблема — в інтерпретації: NFT "Меч +5" в грі A має конкретні damage stats, гра B не знає цю механіку. Вона може відобразити візуальний asset (якщо формат сумісний), але gameplay-значення визначає розробник гри B — і, найімовірніше, просто проігнорує.
Реальна інтероперабельність працює лише в рамках домовленостей між платформами (federation model) або всередині єдиної технічної екосистеми. Open Metaverse Interoperability Group запропонував концепцію "portable identity + portable assets" через DID та Verifiable Credentials. На практиці adoption поки мінімальний, тому ми рекомендуємо будувати аватари за модульним принципом:
- Off-chain стандарт: формат
.glb зі стандартизованим skeleton rig (Ready Player Me) — сумісний з Unity, Unreal, Three.js.
- On-chain мінімум: NFT з метаданими, що вказують на
.glb. Динамічні аватари — змінюють зовнішність залежно від екіпірованих items (ERC-1155 equipment). Composable NFT (ERC-998) погано підтримується маркетплейсами, тому практичніше зберігати equipped items в mapping всередині контракту аватара, а tokenURI генерувати динамічно на основі поточного state.
Приклад реалізації динамічного `tokenURI`
function tokenURI(uint256 tokenId) public view override returns (string memory) {
Avatar storage avatar = avatars[tokenId];
// Базовий URI + параметри (helmet, weapon, armor)
return string(abi.encodePacked(
baseURI,
"?helmet=", toString(avatar.equipped.helmet),
"&weapon=", toString(avatar.equipped.weapon)
));
}
Віртуальна економіка: marketplace та rent mechanics
Вбудована економіка включає торгівлю land (первинний і вторинний ринок), оренду land, монетизацію контенту (платний вхід, рекламні поверхні), trade wearables/items.
Оренда land. Стандарт ERC-4907 (Rental NFT) — розділення owner та user ролі. Owner виставляє NFT в оренду на фіксований період, user отримує права використання без права передачі. Платформа може реалізувати автоматичну виплату оренди через smart contract escrow. Після закінчення терміну user роль автоматично знімається. Ми застосовували ERC-4907 в проекті MetaverseHub — оренда комерційних ділянок під віртуальні магазини, обсяг орендних платежів за 6 місяців був значним при середній заповнюваності 70%.
| Роль |
Права |
Тривалість |
| Owner |
продаж, встановлення оренди, зміна метаданих |
безстроково |
| User |
використання контенту, будівництво |
фіксований термін |
Content monetization on-chain. Власник парсела деплоїть контракт, який приймає оплату за доступ. Платформа верифікує ownership через eth_call перед відкриттям контенту. Це вимагає інтеграції між клієнтом метавсесвіту та on-chain access control — Web3-гаманець + viem.
Технічний стек для побудови метавсесвіту
- Rendering: Three.js / Babylon.js (браузер), Unity WebGL (складні сцени). Decentraland SDK — якщо будуєте поверх Decentraland. Three.js в 2 рази швидше Babylon.js при рендерингу простих сцен.
- Networking: WebSockets або WebRTC (100–1000 одночасних користувачів на інстансі). Colyseus, Agones (Kubernetes) для масштабування.
- Blockchain: wagmi + viem (фронтенд), ethers.js (сервер), The Graph (індексація), Chainlink VRF (випадкові події). Foundry — в 5 разів швидше Hardhat при компіляції тестів.
- Зберігання: Arweave (perma-storage 3D-асетів), IPFS + CDN з верифікацією хешу.
Що входить в роботу (deliverables)
При замовленні розробки метавсесвіту отримуєте:
- Документація: архітектура економіки, специфікація смарт-контрактів (land, avatar, marketplace).
- Вихідний код контрактів з тестами (Foundry, Slither аудит).
- Subgraph для The Graph (індексація land, аватарів, ордерів).
- Фронтенд-кіт: інтеграція з гаманцями, візуалізація 3D-світу.
- Доступи до приватного репозиторію та CI/CD.
- Підтримка протягом 3 місяців після релізу.
Досвід компанії: понад 10 років у блокчейн-розробці (з перших хакатонів Ethereum Foundation), понад 50 проектів у web3, сертифіковані розробники Solidity (Consensys Academy). Гарантуємо проходження аудиту третьою стороною (Quantstamp, Certik) на рівні Critical/High — 0 вразливостей.
Процес та терміни
- Аналітика (2–3 тижні): економічна модель, механіки, вибір L2/L1.
- Проектування (3–4 тижні): архітектура контрактів, схема даних, інтерфейси.
- Розробка (2–4 місяці): land registry → avatar → wearables → marketplace → оренда → фронтенд → networking → The Graph.
- Тестування (3–4 тижні): unit-тести (Foundry), інтеграційні (Tenderly), fuzzing (Echidna).
- Аудит (2–4 тижні). Середній бюджет аудиту залежить від складності.
- Деплой (1 тиждень): mainnet / testnet, налаштування піннінгу та CDN.
Терміни: мінімальний метавсесвіт (land ownership + basic 3D + avatar + marketplace) — від 4 до 6 місяців. Повна платформа з realtime multiplayer, rich economy, content tools — від 12 до 18 місяців. Оцінимо ваш проект безкоштовно — напишіть, обговоримо деталі.
Важливо: не починайте з візуальної частини. Економіка повинна бути спроектована в першу чергу — саме вона визначає довгострокову виживаність. Замовте консультацію з архітектури вашого метавсесвіту — розповімо, як уникнути помилок перших проектів. Зв'яжіться з нами — отримайте детальний план реалізації.