Проєктування Web3-гри
Середня транзакція в ончейн-грі коштує $0.01 на Polygon, але якщо розмістити всю логіку on-chain, гра стане неіграбельною через затримки в 15 секунд на блок. Правильна архітектура Web3-гри — це чітка межа між тим, що має бути on-chain, і тим, що має залишатися off-chain. Без цього гра або неіграбельна, або блокчейн-частина декоративна. Наш досвід 10+ років у блокчейн-розробці дозволяє створювати рішення, які працюють в реальному продакшені. 95% геймплею має бути off-chain, щоб забезпечити чуйність. Оцініть свій проєкт — отримайте консультацію розробника.
Чому ігри потребують блокчейну?
Блокчейн додає trustless ownership і прозору економіку. Гравці дійсно володіють своїми активами, можуть торгувати ними поза грою, брати участь в управлінні проєктом. Але просто додати блокчейн у гру — погана ідея. Важливо правильно розділити on-chain та off-chain логіку. Оцінимо ваш проєкт — зв'яжіться з нами для консультації.
Як розділити on-chain та off-chain?
Ось чіткі критерії:
- Має бути on-chain: Ownership активів (NFT персонажі, предмети, землі); фінансові операції (купівля, продаж, стейкінг, нагороди); критичні результати, що впливають на економіку (перемога в турнірі, рідкісний дроп); governance рішення (DAO).
- Має бути off-chain: Ігрова механіка в реальному часі; позиції гравців, зіткнення, фізика; більшість gameplay подій; соціальні функції (чат, гільдії); аналітика та логування.
Хороша модель: ігровий сервер — джерело правди для gameplay, блокчейн — джерело правди для ownership та економіки. Синхронізація відбувається в певних checkpoint.
Архітектура: сервери, контракти, клієнт
Ігровий бекенд
Game Client (Unity/Unreal/Web)
↓
Game Server (authoritative)
└── Game State DB (Redis для real-time, PostgreSQL для persistence)
↓ (при значущих подіях)
Blockchain Sync Service
↓
Smart Contracts (Assets, Economy, Rewards)
↓
The Graph (індексування для UI/лідерборди)
Authoritative server model — клієнт ніколи не приймає фінальних рішень. Клієнт відправляє input, сервер верифікує та застосовує. Це запобігає чітінгу без будь-якого блокчейну. Authoritative server model ефективніша за клієнтський anti-cheat в 100 разів, оскільки клієнт не контролює результат.
Blockchain Sync Service — окремий сервіс, який слухає ігрові події та транслює значущі з них в on-chain транзакції. Працює асинхронно, не блокує gameplay.
NFT активи: стандарти та метадані
Згідно ERC-1155 (EIP-1155), мультитокен стандарт дозволяє керувати декількома типами NFT в одному контракті. Ми використовуємо комбінацію ERC-721 для унікальних предметів та ERC-1155 для stackable items. Метадані: on-chain (maximum permanence, дорого), IPFS (компроміс) або централізований сервер (швидко, дешево, але залежить від нас).
contract GameItem is ERC1155 {
struct ItemType {
string name;
uint8 rarity; // 1=Common, 2=Rare, 3=Epic, 4=Legendary
uint16 baseAttack;
uint16 baseDefense;
bool tradeable;
}
mapping(uint256 => ItemType) public itemTypes;
mapping(uint256 => uint256) public itemMaxSupply;
mapping(uint256 => uint256) public itemCurrentSupply;
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
function mintItem(
address to,
uint256 itemTypeId,
uint256 amount,
bytes memory data
) external onlyRole(MINTER_ROLE) {
require(
itemCurrentSupply[itemTypeId] + amount <= itemMaxSupply[itemTypeId],
"Max supply exceeded"
);
itemCurrentSupply[itemTypeId] += amount;
_mint(to, itemTypeId, amount, data);
}
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal override {
for (uint i = 0; i < ids.length; i++) {
if (from != address(0) && to != address(0)) {
require(itemTypes[ids[i]].tradeable, "Item is soulbound");
}
}
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
}
}
Ігровий токен: tokenomics
Більшість провальних GameFi проєктів провалилися через погану tokenomics, а не гру. Основні помилки: інфляційна спіраль (токен видається без достатнього sink'у — приклад Axie Infinity), спроба двохтокенної моделі без правильного пега. Правильний підхід — балансувати emission та sink. Типові помилки в токеноміці: безкінечна емісія без механізмів спалювання (burn) — інфляція вбиває економіку; двохтокенна модель без стабільного пега (наприклад, governance token з фіксованою ціною) — веде до колапсу; відсутність sink-механізмів — гравці не знають, на що витрачати токени, окрім як продати. Правильний підхід: кожен емітований токен повинен мати заплановане застосування (crafting, сплата комісій, підвищення рівнів).
contract GameEconomy {
function claimDailyReward(
address player,
uint256 amount,
uint256 nonce,
bytes memory serverSignature
) external {
bytes32 message = keccak256(abi.encodePacked(player, amount, nonce));
require(
ECDSA.recover(message.toEthSignedMessageHash(), serverSignature) == GAME_SERVER,
"Invalid server signature"
);
require(!usedNonces[nonce], "Nonce already used");
usedNonces[nonce] = true;
require(dailyClaimed[player][today()] + amount <= MAX_DAILY_REWARD, "Daily limit");
dailyClaimed[player][today()] += amount;
gameToken.mint(player, amount);
}
function craftItem(uint256 recipeId) external {
Recipe memory recipe = recipes[recipeId];
gameToken.burnFrom(msg.sender, recipe.tokenCost);
// mint NFT предмет
}
}
Game Server Signature Pattern
Критичний паттерн для Web3-ігор: ігровий сервер є довіреним джерелом правди, його рішення верифікуються on-chain через підпис. Користувач не може сам викликати claimReward — він отримує підписаний сервером ваучер. Це запобігає фабрикації, подвійній витраті та чітінгу.
// Game Server side (Node.js)
import { ethers } from "ethers";
const serverWallet = new ethers.Wallet(process.env.SERVER_PRIVATE_KEY);
async function generateRewardVoucher(
playerAddress: string,
rewardAmount: bigint,
gameSessionId: string
): Promise<{ nonce: string; signature: string; amount: string }> {
const nonce = ethers.hexlify(ethers.randomBytes(32));
const message = ethers.solidityPackedKeccak256(
["address", "uint256", "bytes32"],
[playerAddress, rewardAmount, nonce]
);
const signature = await serverWallet.signMessage(ethers.getBytes(message));
return { nonce, signature, amount: rewardAmount.toString() };
}
Anti-cheat на рівні блокчейну
On-chain верифікація через commit-reveal для випадковості: гравець комітить hash(seed) до гри, після гри розкриває seed, блокчейн верифікує random = hash(seed, block.hash). Chainlink VRF v2 для on-chain randomness (дропи, матчмейкінг).
import { VRFConsumerBaseV2 } from "@chainlink/contracts/src/v0.8/VRFConsumerBaseV2.sol";
contract LootBox is VRFConsumerBaseV2 {
mapping(uint256 => address) public requestToPlayer;
function openLootBox() external returns (uint256 requestId) {
requestId = vrfCoordinator.requestRandomWords(
keyHash, subscriptionId, 3, 100_000, 3
);
requestToPlayer[requestId] = msg.sender;
}
function fulfillRandomWords(uint256 requestId, uint256[] memory words) internal override {
address player = requestToPlayer[requestId];
uint256 itemTier = words[0] % 1000;
_mintReward(player, itemTier);
}
}
Технічний стек для Web3-ігор
Game Engine: Unity (WebGL + native mobile) або Phaser 3 (browser-first). Web3 інтеграція: Nethereum для EVM, Solana.Unity-SDK для Solana. Бекенд: Go або Node.js для game server, окремий TypeScript сервіс для blockchain interactions. Індексування: The Graph для лідербордів та історії, своя PostgreSQL для аналітики. Мережі: Polygon PoS або Arbitrum Nova для частих транзакцій, Ethereum mainnet для цінних активів. Економія на газі ~90% при використанні L2, що робить on-chain зберігання на L2 дешевше за L1 в 100 разів.
| Мережа | TPS | Вартість транзакції | Фіналізація | Підходить для |
|---|---|---|---|---|
| Polygon PoS | 7000 | $0.01 | 2-3 хв | Frequent microtransactions |
| Arbitrum Nova | 40000 | $0.001 | 5-10 хв | High-throughput game actions |
| Ethereum L1 | 15 | $5-50 | ~13 сек | High-value assets, governance |
| Solana | 50000 | $0.0001 | 400 мс | Real-time gameplay |
Покроковий процес роботи над GameFi-проєктом
- Проєктування токеноміки та геймдизайн (4-6 тижнів).
- Розробка смарт-контрактів (ERC-1155, маркетплейс, стейкінг) (4-8 тижнів).
- Створення authoritative game server на Go або Node.js (4-8 тижнів).
- Інтеграція клієнта (Unity/Phaser) з Web3 (6-12 тижнів).
- Аудит смарт-контрактів та тестнет (4-6 тижнів).
- Запуск в mainnet та моніторинг (2 тижні).
Як запобігти чітінгу через блокчейн?
- Використовуйте authoritative server model: сервер приймає рішення, клієнт лише відправляє input.
- Застосовуйте commit-reveal для випадкових подій — це не дозволяє гравцям передбачати результат.
- Підписуйте кожну економічну дію сервером (server signature pattern).
Що входить в роботу?
У вартість проєкту входить: повна документація (архітектура, специфікації, API), вихідний код смарт-контрактів та ігрового сервера, аудит безпеки, деплой в mainnet, навчання команди замовника, технічна підтримка після запуску. Гарантуємо коректну роботу смарт-контрактів та ігрового сервера. Оцінимо ваш проєкт — зв'яжіться з нами.
Команда має сертифікати, 10+ років досвіду у блокчейн-розробці, включаючи P2E проєкти та NFT для ігор. Забезпечуємо прозорий процес та аудит. Зв'яжіться з нами для обговорення вашого GameFi-проєкту.







