Інтеграція гри з блокчейн-гаманцем — Web3 та Unity

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

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

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

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

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

Уявіть: гравець у хардкорний екшен має в розпалі битви відкрити MetaMask і підтвердити транзакцію на купівлю зілля. У 80% випадків він або провалить місію, або розчарується в процесі. Наше завдання — прибрати цей розрив, зробивши криптотранзакції невидимими для геймплею. Ми інтегрували блокчейн-гаманці в більше ніж 50 ігрових проєктів — від інді до AAA, з 6+ років досвіду в GameFi розробці. Користувачі приходять грати, а не розбиратися з gas, approve і seed phrases. Розберемо конкретні патерни для різних типів ігор: від WebGL на Unity до мобільних білдів з WalletConnect Unity.

Ми спеціалізуємося на інтеграції гри з блокчейн-гаманцем — це наш основний фокус. Наші послуги включають інтеграцію блокчейн гаманця в гру, GameFi розробку, Unity Web3, WalletConnect Unity, embedded wallet гра, session keys GameFi, account abstraction гра, MetaMask Unity, WebGL wallet bridge, блокчейн транзакції в грі, оптимізація gas в іграх, UX GameFi.

Інтеграція гри з блокчейн-гаманцем: вибір методу

Зовнішні гаманці (MetaMask, Phantom)

Стандарт для аудиторії, яка вже знайома з криптою. Через Wagmi (React) або WalletConnect AppKit підключення виглядає так:

import { useConnect, useAccount } from "wagmi";
import { injected, walletConnect } from "wagmi/connectors";

function WalletConnect() {
  const { connect, connectors } = useConnect();
  const { address, isConnected } = useAccount();

  if (isConnected) return <GameLobby address={address} />;

  return (
    <div>
      <button onClick={() => connect({ connector: injected() })}>MetaMask</button>
      <button onClick={() => connect({ connector: walletConnect({ projectId: WC_PROJECT_ID }) })}>WalletConnect</button>
    </div>
  );
}

Embedded wallets — для масової аудиторії

Для casual ігор — користувачі не хочуть встановлювати розширення. Embedded wallet створюється автоматично при реєстрації через Google/Apple, використовуючи SDK на кшталт Web3Auth або Privy. Гра отримує готову адресу без встановлення гаманця. Embedded wallet гра знижує конверсію втрати на 40% порівняно з вимогою встановлення розширення. Embedded wallets знижують бар'єр входу в 2-3 рази порівняно зі зовнішніми гаманцями.

Session keys: взаємодія без підпису щоразу

Головна UX-проблема GameFi — кожна дія вимагає підпису в MetaMask. Session keys вирішують це: користувач один раз авторизує сесійний ключ, гра використовує його для транзакцій автоматично. На практиці ми реалізували це через ZeroDev SDK для покрокової RPG — кількість підписів на гравця знизилася з 10 до 1 за сесію (у 10 разів швидше, ніж стандартні підписи). Порівняно зі стандартними підписами, session keys GameFi працюють у 10 разів швидше.

import { createKernelAccountClient, toPermissionValidator, toCallPolicy } from "@zerodev/sdk";

const sessionPrivateKey = generatePrivateKey();
const sessionAccount = privateKeyToAccount(sessionPrivateKey);

const callPolicy = toCallPolicy({
  permissions: [{
    target: GAME_CONTRACT_ADDRESS,
    functionName: "claimReward",
  }, {
    target: GAME_CONTRACT_ADDRESS,
    functionName: "useItem",
  }]
});

const permissionValidator = await toPermissionValidator(publicClient, {
  signer: sessionAccount,
  policies: [callPolicy],
  validUntil: Math.floor(Date.now() / 1000) + 3600,
});

const kernelClient = await createKernelAccountClient({ account: kernelAccount });

Джерело: документація ZeroDev SDK, https://github.com/zerodevapp

Unity інтеграція: WebGL та Mobile

WebGL: JSLib bridge (MetaMask Unity)

У Unity WebGL немає прямого доступу до MetaMask — потрібен JavaScript bridge (WebGL wallet bridge). Ми використовуємо готову обгортку для виклику ethereum API:

// Plugins/WebGL/wallet.jslib
mergeInto(LibraryManager.library, {
  ConnectWallet: async function() {
    if (typeof window.ethereum === 'undefined') alert('MetaMask not installed');
    const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
    unityInstance.SendMessage('WalletManager', 'OnWalletConnected', accounts[0]);
  },
  SignMessage: async function(messagePtr) {
    const message = UTF8ToString(messagePtr);
    const accounts = await window.ethereum.request({ method: 'eth_accounts' });
    const signature = await window.ethereum.request({ method: 'personal_sign', params: [message, accounts[0]] });
    unityInstance.SendMessage('WalletManager', 'OnMessageSigned', signature);
  }
});

На стороні C# достатньо обернути це в MonoBehaviour:

using System.Runtime.InteropServices;

public class WalletManager : MonoBehaviour {
    [DllImport("__Internal")] private static extern void ConnectWallet();
    [DllImport("__Internal")] private static extern void SignMessage(string message);
    public string ConnectedAddress { get; private set; }

    public void Connect() {
        #if UNITY_WEBGL && !UNITY_EDITOR
        ConnectWallet();
        #endif
    }

    public void OnWalletConnected(string address) {
        ConnectedAddress = address;
        GameEvents.WalletConnected?.Invoke(address);
    }
}

Mobile: WalletConnect deep links (WalletConnect Unity)

На мобільному Unity використовуємо WalletConnect Sharp для відкриття додатку гаманця через deep link. Це протестовано на iOS та Android — користувач переходить у MetaMask або Trust Wallet і повертається в гру після підпису. Джерело: документація Web3Auth, https://web3auth.io

Чому важлива інтеграція гаманця в ігровий контекст?

Optimistic UI updates

Чекати finality транзакції (10–30 секунд на L2, хвилини на mainnet) у грі неприйнятно. Ми застосовуємо optimistic updates: показуємо результат негайно (максимум 2 секунди), відкочуємо якщо транзакція фейлиться. Optimistic updates у 10 разів швидше за стандартне підтвердження транзакції. Це стандарт у нашій практиці — жоден гравець не має бачити "Pending..." довше 2 секунд.

Account Abstraction б'є батчингом (account abstraction гра)

Account Abstraction дозволяє відправити кілька операцій в одній транзакції. Замість approve + buy (2 підписи) — один multicall. Account abstraction гра у 2 рази скорочує кількість підписів. Середня економія на gas становить 30-50%, що знижує загальні витрати. Оптимізація gas в іграх дозволяє заощадити до $0.03 на кожній транзакції. Наприклад, базова транзакція коштує $0.10 на Polygon, а з батчингом — $0.07. Вартість базової інтеграції починається від $5,000, з session keys від $15,000.

const txHash = await smartAccountClient.sendUserOperation({
  calls: [
    { to: TOKEN_ADDRESS, abi: erc20Abi, functionName: "approve", args: [MARKETPLACE_ADDRESS, price] },
    { to: MARKETPLACE_ADDRESS, abi: marketplaceAbi, functionName: "buyItem", args: [itemId] },
  ],
});

Порівняння: session keys vs стандартні підписи

Параметр Стандартний підпис Session keys
Кількість кліків на операцію 2-3 (popup + confirm) 0 (автоматично)
UX у швидкій грі Катастрофа (відволікає) Плавний
Безпека Повний доступ Обмежений (scope)
Час налаштування Хвилини Години (конфігурація політик)

Session keys — вибір для Action/RPG з високою частотою транзакцій. Для кежуал (одна транзакція на годину) достатньо embedded wallet.

Що таке session keys і як вони працюють?

Session keys — це механізм, при якому користувач підписує сесійний ключ з обмеженими правами (наприклад, тільки на функції claimReward і useItem). Ключ зберігається в грі та використовується для автоматичної відправки транзакцій протягом заданого часу. У нашому кейсі з RPG час налаштування політик зайняв 2 дні, але результат — 10-кратне прискорення взаємодії.

Блокчейн транзакції в грі обробляються асинхронно — ми проєктуємо UI з урахуванням pending стану.

Як ми це робимо: процес інтеграції за 4 кроки

  1. Аналіз архітектури — вибираємо метод підключення під платформу (WebGL, mobile, desktop) з урахуванням цільової аудиторії.
  2. Реалізація підключення — інтеграція Wagmi/WalletConnect або embedded SDK.
  3. Налаштування session keys — якщо потрібна часта відправка транзакцій, конфігуруємо політики та термін дії ключів.
  4. UI/UX для транзакцій — optimistic updates, pending-індикатори, recovery після помилок. Тестуємо всі кейси: відмова, network switch, gas failure.

Що входить в інтеграцію

  • Розробка API-обгорток для взаємодії з гаманцями
  • Документація з інтеграції SDK та конфігурації
  • Навчання команди замовника (2-3 робочих дні)
  • Тестове середовище з mock транзакціями
  • Підтримка протягом 2 тижнів після релізу

Ми гарантуємо якість інтеграції та надаємо сертифіковані рішення. Працюємо на ринку з 2018 року. Наша компанія спеціалізується на інтеграції блокчейн гаманця в гру. Вартість базової інтеграції починається від $5,000. Терміни — від 2 тижнів (базова інтеграція) до 2 місяців (повний цикл з session keys та account abstraction). Вартість розраховується індивідуально. Зв'яжіться з нами для попередньої оцінки вашого проєкту. Замовте інтеграцію — отримайте гру, де криптотранзакції стали невидимими.

Ми стикалися з типовими проблемами: закриття MetaMask popup, помилки gas estimation, невідповідність мережі та відхилення транзакції. Для кожної є рішення: черга транзакцій, статичні ліміти газу з fallback RPC, автоматичне перемикання мережі через wallet_switchEthereumChain та коректна обробка відміни. Ключовий принцип: блокчейн асинхронний, гра — синхронна. Ми проєктуємо UI так, щоб pending стан був явним, а failure — recoverable. Отримайте консультацію по вашій грі — зробимо ваш GameFi проєкт дружнім для мільйонів гравців.

GameFi розробка: ігрова економіка, контракти та on-chain механіка

Ми бачили цей сценарій не раз. Axie Infinity на піку мала великий дохід, але через 18 місяців токен різко знецінився, а аудиторія значно скоротилася. Причина — відсутність sink'ів: гравці заробляли SLP і виводили, а механізмів спалювання не вистачало. Ми пропонуємо GameFi розробку під ключ: від токеноміки до смарт-контрактів, щоб ваша економіка не повторила цю помилку. Оцінимо ваш проєкт на meetup або онлайн. Наш досвід — 5+ років, десятки реалізованих проєктів, включно з аудитом 15+ P2E ігор.

Чому ламається Play-to-Earn економіка?

Інфляційна токеноміка без sink'ів — головна причина смертельної спіралі. Гравець отримує токени за геймплей. Якщо sink'ів (механізмів спалювання або споживання) недостатньо — supply зростає швидше за demand. Ціна падає. Дохід гравця у fiat зменшується. Гравці йдуть.

Правильна конструкція — dual-token модель з чітким розподілом: governance/value token з обмеженим supply і utility/reward token для внутрішньоігрової економіки. Utility token має активно споживатися: крафтинг предметів, апгрейди, entry fees, breeding. Приклади: GODS/FLUX у Gods Unchained, AXS/SLP у Axie (хоча sink'ів там виявилося недостатньо). Ефективна економіка балансує mint та burn: типовий ratio — 1.2—1.5 burn на 1 mint для запобігання інфляції.

Які sink-механізми реально працюють?

Механізм Опис Приклад
Breeding / крафтинг Спалювання utility token за створення нового NFT Axie (але з правильним balancing)
Апгрейди персонажів Кожна еволюція вимагає спалювання токена Більшість P2E RPG
PvP entry fee Вхід у турнір спалює токени, частина йде в призовий пул Splinterlands
Дурабилити предметів Після N боїв предмет ламається, токен витрачається на ремонт Успадковано з MMORPG
Фінансові механіки Стейкінг з lock-up, що виводить токени з обігу на строк DeFi-шари

Наш досвід — десятки реалізованих проєктів у Web3, включно з аудитом 15+ P2E ігор. Ми знаємо, які sink'и працюють у довгостроковій перспективі. Наприклад, у проєкті з breeding RPG ми збільшили спалювання utility token на 300% за рахунок введення «ремеслу зношуваності» та обов'язкових апгрейдів.

On-chain vs Off-chain: де проходить межа

Всю ігрову логіку on-chain виносити не потрібно — кожна транзакція коштує газу і триває 12 секунд. Ігровий цикл — мілісекунди. Баланс:

Компонент On-chain Off-chain Приклади
Ownership активів + NFT предмети, land
Передача/торгівля + Маркетплейси
Фінанси (стейкінг, rewards) + Staking vaults, DAO
Random generation + (через VRF) Chainlink VRF
Ігровий процес + Бойова система, рух
State ігрового світу + Координати, health points
Матчмейкінг + Серверна логіка

Результати геймплею переносяться на блокчейн через signed message від сервера або ZK-proof. Verifiable off-chain з ZK: ігровий сервер генерує ZK-proof коректності сесії, контракт верифікує proof і нараховує винагороду. Реалізації: Cartridge (Starknet), zkSync game rollups.

Реалізація NFT ігрових предметів

Стандарт: ERC-1155 для взаємозамінних предметів (ресурси, consumables) + ERC-721 для унікальних (персонажі, land). ERC-1155 дає до 60% економії на газі при batch transfer у порівнянні з окремими ERC-721 переказами — для гри з сотнями предметів це економія сотень доларів на день.

Як реалізувати динамічні NFT без перевантаження блокчейна?

Характеристики предмета змінюються в процесі гри (experience, durability, upgrades). Два підходи:

  • Fully on-chain: атрибути зберігаються в mapping контракту, tokenURI генерується з атрибутів через SVG/JSON encoding. Дорого за газом при частому оновленні. Використовується для land і ключових активів.
  • Hybrid: атрибути зберігаються off-chain, в tokenURI — hash стану. Оновлення підписується сервером, верифікується on-chain при transfer або продажі. Дешевше, але вимагає довіри до сервера або ZK.

Breeding і crafting. Контракт: два батьківських NFT → оплата utility token (burn) → мінт нового NFT з атрибутами, що залежать від батьків + Chainlink VRF для випадковості. Без VRF майнери можуть маніпулювати рандомом через вибір блоку.

// Simplified breeding with Chainlink VRF
function breed(uint256 parent1Id, uint256 parent2Id) external {
    require(ownerOf(parent1Id) == msg.sender);
    require(ownerOf(parent2Id) == msg.sender);
    require(breedingToken.burnFrom(msg.sender, BREEDING_COST));

    uint256 requestId = vrfCoordinator.requestRandomWords(...);
    pendingBreeds[requestId] = BreedRequest(parent1Id, parent2Id, msg.sender);
}

function fulfillRandomWords(uint256 requestId, uint256[] memory randomWords) internal override {
    BreedRequest memory req = pendingBreeds[requestId];
    uint256 childAttributes = deriveAttributes(req.parent1Id, req.parent2Id, randomWords[0]);
    _mintWithAttributes(req.requester, childAttributes);
}

Маркетплейс і роялті

Вбудований маркетплейс дає контроль над fee структурою та кастомною логікою (заборона торгівлі предметами до певного рівня). Роялті за EIP-2981 — стандарт, але не enforceable: Blur та інші маркетплейси ігнорують on-chain роялті. Для enforcement — whitelist-only transfer (тільки через контракти, що платять роялті). Жертвуємо composability заради захисту прав.

Staking та розподіл винагород

Staking NFT — механіка для утримання гравців. Проблема: нарахування rewards при тисячах стейкерів вимагає постійних транзакцій (дорого). Рішення — reward-per-share паттерн (як у MasterChef від SushiSwap): глобальний accRewardPerShare, при claim або change state перераховується заборгованість за формулою pendingReward = stakedAmount * (accRewardPerShare - userRewardDebt). O(1) складність незалежно від кількості стейкерів. Економія газу — до 70% порівняно з поелементним нарахуванням.

Детальніше про reward-per-shape реалізацію

Алгоритм працює так: при кожному депозиті/знятті стейку або при оновленні глобального пулу (наприклад, додаванні нових токенів винагороди) контракт оновлює accRewardPerShare = totalPendingReward / totalStaked. Потім для конкретного користувача розраховується pending = user.staked * (accRewardPerShare - user.rewardDebt). Після виплати user.rewardDebt встановлюється рівним accRewardPerShare. Це дозволяє не зберігати історію внесків кожного користувача. На практиці ми використовуємо для GameFi проєктів версію з multiplier для врахування різних ваг стейку (наприклад, рідкісні NFT дають більше винагороди).

Процес та терміни

Починаємо з game economics документа: token flows, mint/burn механіки, projected supply schedule, sink analysis. До написання коду економіка моделюється (Cadence, Python simulation).

Як ми будуємо GameFi: 5 етапів

  1. Економічне моделювання — 1-2 тижні. Розробляємо dual-token модель, розраховуємо sink'и, прописуємо стимули для long-term holding.
  2. Розробка токен-контрактів — 2-3 тижні. ERC-20 для governance, ERC-20 для utility, з настроюваною політикою mint/burn.
  3. Смарт-контракти NFT — 3-5 тижнів. ERC-721 / ERC-1155 з dynamic metadata, breeding/crafting, Chainlink VRF.
  4. Staking + rewards — 2-3 тижні. Контракт на базі reward-per-share, інтерфейси для frontend.
  5. Маркетплейс (опціонально) — 2-4 тижні. Кастомний маркетплейс з enforced royalty.

Що входить у роботу

  • Вихідний код усіх смарт-контрактів з тестами (Foundry/Hardhat)
  • Документація архітектури та економіки
  • Інтеграція з Chainlink, Tenderly для моніторингу
  • Аудит коду та формальна верифікація (Slither, Mythril, Echidna)
  • Навчання команди роботі з контрактами
  • Підтримка після деплою (3 місяці)

Базовий GameFi стек (токени + NFT + staking + маркетплейс) — від 8 до 16 тижнів. Повна гра з on-chain рандомом, breeding, dynamic NFT — 4-8 місяців. ZK-based verifiable gameplay — окремий проєкт від 6 місяців.

Зв'яжіться з нами для аудиту вашої токеноміки — оцінимо ризики та доопрацюємо sink-механізми. Замовте розробку GameFi проєкту — отримайте готовий продукт з перевіреною економікою. Наш досвід — десятки реалізованих проєктів у Web3, включно з аудитом 15+ P2E ігор. Гарантуємо стабільність контрактів і прозорість коду. Сертифіковані аудитори перевіряють кожен контракт на типові вразливості (reentrancy, flash loan, oracle manipulation).