Ф'ючерси
Сотні безстрокових контрактів
TradFi
Золото
Одна платформа для світових активів
Опціони
Hot
Торгівля ванільними опціонами європейського зразка
Єдиний рахунок
Максимізуйте ефективність вашого капіталу
Демо торгівля
Вступ до ф'ючерсної торгівлі
Підготуйтеся до ф’ючерсної торгівлі
Ф'ючерсні події
Заробляйте, беручи участь в подіях
Демо торгівля
Використовуйте віртуальні кошти для безризикової торгівлі
Запуск
CandyDrop
Збирайте цукерки, щоб заробити аірдропи
Launchpool
Швидкий стейкінг, заробляйте нові токени
HODLer Airdrop
Утримуйте GT і отримуйте масові аірдропи безкоштовно
Launchpad
Будьте першими в наступному великому проекту токенів
Alpha Поінти
Ончейн-торгівля та аірдропи
Ф'ючерсні бали
Заробляйте фʼючерсні бали та отримуйте аірдроп-винагороди
Інвестиції
Simple Earn
Заробляйте відсотки за допомогою неактивних токенів
Автоінвестування
Автоматичне інвестування на регулярній основі
Подвійні інвестиції
Прибуток від волатильності ринку
Soft Staking
Earn rewards with flexible staking
Криптопозика
0 Fees
Заставте одну криптовалюту, щоб позичити іншу
Центр кредитування
Єдиний центр кредитування
Центр багатства VIP
Преміальні плани зростання капіталу
Управління приватним капіталом
Розподіл преміальних активів
Квантовий фонд
Квантові стратегії найвищого рівня
Стейкінг
Стейкайте криптовалюту, щоб заробляти на продуктах PoS
Розумне кредитне плече
Кредитне плече без ліквідації
Випуск GUSD
Мінтинг GUSD для прибутку RWA
BOLT: модульна інфраструктура, повноланцюговий ігровий движок ECS на базі Solana
Посилання на відео:
Спікери: Андреа, Габріеле, співзасновник Magicblock
НАЗВА: ФРЕЙМВОРК ДЛЯ ОНЧЕЙН-ІГОР
Передмова перекладача: "BOLT - це повноланцюговий ігровий рушій, розроблений командою Magicblock для екосистеми Solana. Ця стаття складена з презентацій двох засновників Magicblock на заході Breakpoint 2023. "
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-460fbe4248-dd1a6f-cd5cc0)
Всім привіт, це останній виступ перед Хелловіном, і я сподіваюся, що зміст промови буде цікавий кожному. Мене звати Андреа, і я моя співзасновниця Габріеле. Сьогодні ми представимо новий ігровий фреймворк (движок) з повним ланцюгом.
01. Навіщо потрібна повноланцюжкова гра?
Я почну з основ, тому потурбуюся про створення повноланцюгової гри як зі станом, так і з логікою в ланцюжку, і розберуся з усіма складнощами, які з цим пов’язані. Проста причина полягає в тому, щоб отримати функції, яких немає в традиційній ігровій інфраструктурі.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-1ced4083dc-dd1a6f-cd5cc0.webp)
Перша особливість – інклюзивні модифікації. Це означає, що всі гравці та розробники можуть налаштувати будь-який компонент у грі, включаючи впровадження плагінів або модів, починаючи з розширеного клієнта. Навіть логіка гри, що лежить в основі, може бути розширена за допомогою смарт-контрактів. По суті, це новий режим, де кожна гра за замовчуванням є новою платформою, і ви можете стати Content Powerhouse, незалежно від того, наскільки маленька ваша команда.
Друга характеристика – наполегливість. Автономні світи і той факт, що ці віртуальні враження можуть існувати вічно, спричинили багато наслідків. Оскільки жодні сервери не можуть бути піддані цензурі або закриті, ці можливості фактично вносять абсолютно нове значення. Ігри стали платформою для гравців, щоб грати, спілкуватися та вести глобальну торгівлю, яка є більш універсальною, ніж традиційні ігрові платформи.
Останньою особливістю є відкрита економіка. Ігри можуть скористатися перевагами відкритої глобальної безперешкодної платіжної системи блокчейну, особливо мікроплатежів у нашій екосистемі, і повторно використовувати існуючу ончейн-інфраструктуру, таку як DEX або NFT-маркетплейси.
02. Існуючі рішення
Поточна проблема омнічейн-ігор полягає в тому, що досвід розробки дуже поганий, і ми дивимося на рішення на ринку і виявляємо, що є деякі фреймворки розробки, які намагаються спростити роботу розробника.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-15520fe29d-dd1a6f-cd5cc0.webp)
Деякі з них дуже цікаві тим, що вони намагаються виконувати ітерації на доказових сесіях, де ви можете виконувати обчислення поза мережею та доводити цілісність обчислень ончейн. Або запровадити середовище виконання, кероване подіями, яке більше підходить для ігрових рушіїв блокчейну, а не середовище виконання на основі циклу.
Але всі ці фреймворки вимагають компромісів між продуктивністю та компонуванням, щоб досягти вищої продуктивності та вищого TPS. Як правило, ви або створюєте ізоляцію, або вводите інше середовище виконання з шардами.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-1ec0e17899-dd1a6f-cd5cc0.webp)
Але нас не влаштовує такий компроміс. Ми запитали себе, а що, якби існувала структура, яка могла б підтримувати TPS, яка нам потрібна? Коли ваша гра успішна, вам не доведеться жертвувати їхнім користувацьким досвідом, навіть з мільйонами гравців, тому що газових воєн не станеться. А фреймворк не вимагає шардингу та фрагментації, тому ви можете використовувати доказову ігрову сесію або навіть імітувати плин часу, не сплачуючи комісію gas. Немає необхідності фрагментувати систему або використовувати рівень 3 взагалі.
03. Повноланцюговий движок розробки ігор на Solana: BOLT
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-efed012ae0-dd1a6f-cd5cc0.webp)
Ось чому ми раді представити BOLT, високопродуктивний, компонований фреймворк для розробки ігор з повним ланцюгом, заснований на SVM.
BOLT є модульним і компонованим, що дозволяє йому використовувати всю існуючу інфраструктуру на Solana. Він працює з нашими існуючими ончейн-об’єктами, такими як ончейн-ідентичність, безгазовий API, ключ сеансу, а також з існуючим фреймворком розробки Anchor і всіма існуючими програмами на Solana. Обидва можуть масштабуватися на вищий порядок завдяки Ephemeral Rollups, тобто ігровим сесіям, які відкриваються та закриваються відповідно до вимог користувача та масштабуються за потреби.
BOLT є блискавично швидким, і ми можемо досягти такого ж рівня продуктивності, як і традиційний ігровий рушій, перш ніж використовувати ці спеціальні середовища виконання для прискорення певних операцій.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-064d862c99-dd1a6f-cd5cc0.webp)
Це панорамний дисплей рами BOLT. Очевидно, що він створений для Solana, але він може використовувати його на будь-якій SVM-сумісній платформі, наприклад, SVM-сумісному Layer 2. BOLT переслідує дві основні цілі: компонування та масштабованість.
Система ECS (Entity Component) — це один із способів, за допомогою якого ми спрощуємо використання ончейн-компонентів. Інша – це Ephemeral Rollup, про яку ми коротко згадували раніше, і я зараз занурюся в обидві ці технології.
BOLT був інтегрований з найбільш часто використовуваними застарілими ігровими движками, такими як Unity, які часто служать інтерфейсом для ігор. Звичайно, сюди також входять інші улюблені ігрові рушії з відкритим вихідним кодом, такі як Godot і Phaser. Ми навіть працюємо з оновленим ігровим клієнтом Turbo, який зосереджений на покращенні досвіду для інді-розробників і сприянні швидкому створенню ігор. У майбутньому партнерів може бути більше.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-7fb8076e3d-dd1a6f-cd5cc0.webp)
Я почну з цього і продовжу пояснювати, навіщо нам потрібна система компонентів сутностей ECS. Відповідь проста, тому що він дозволяє максимально компонувати, а це означає, що ми можемо створювати і повторно використовувати готові компоненти.
Як випливає з назви, ECS побудована з трьох основних елементів: сутностей, які, по суті, є ідентифікаторами, які реєструються в окремому екземплярі ігрового світу; component, який визначає структуру даних, тому це, по суті, дані, пов’язані з сутністю; Нарешті, є system(), який є логікою, яка маніпулює компонентами, пов’язаними з сутністю.
Перевага такої архітектури полягає в тому, що всі системи та компоненти є багаторазовими. Вони можуть бути опубліковані в загальнодоступному реєстрі, і розробники можуть легко вносити, створювати, виявляти та інтегрувати будь-який тип компонентів, тому вам більше не потрібно писати жодного рядка коду з нуля, але ви можете повторно використовувати всі існуючі компоненти та зрештою вносити в них свій внесок. Наприклад, ми можемо мати сіткову структуру даних (наприклад, лабіринт або поле бою), рухому систему або систему доказу з нульовим розголошенням для туману війни.
04.Практика програмування ECS двигуна BOLT
ТЕПЕР Я ПЕРЕЙДУ НА СВОЮ IDE І ПОКАЖУ ВАМ ПРОСТИЙ ПРИКЛАД ГРИ З ВИКОРИСТАННЯМ ДВИЖКА BOLT ECS.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-fa4967b64d-dd1a6f-cd5cc0.webp)
Ми визначимо кілька сутностей, компонент розташування та дві системи, які маніпулюватимуть і змінюватимуть дані для цього компонента розташування. Отже, першою точкою входу є взаємодія зі Всесвітньою програмою. Світова програма є частиною фреймворку BOLT і розкриває деякі вилучення, які дозволяють зареєструвати новий Світовий екземпляр.
Ви можете додавати сутності до вашого World Instance, і ви можете реєструвати компоненти з об’єктами, які ви щойно визначили, які, по суті, визначені програмою-компонентом. Програма-компонент містить дві директиви, перша з яких - ініціалізація, створення та виділення місця для зберігання рядків даних, які будуть використовуватися у вашому компоненті. У цьому простому прикладі ми визначаємо компонент розташування, і якщо ми подивимося на контекст директиви ініціалізації, ми побачимо, що у нас є дані компонента, а дані компонентів просто визначають структуру з координатами XYZ, яка може зберігати, наприклад, місцезнаходження гравця.
Зараз, друга директива, мабуть, найцікавіша, це точка входу, яка дозволяє нам виконувати будь-яку логіку. Він прийматиме наші компоненти та довільні системи як вхідні дані та виконуватиме логіку, визначену всередині системи, виконуючи в різних місцях програмування. Тепер, якщо ви подивитеся на рядок 15, у нас є наш виклик CPI (Common Programming Interface), який буде виконувати внутрішньо визначену логіку через CPI. Він виконає всі обчислення, визначені системою, а потім повернеться до нашого місця розташування, де програма-компонент отримає та поверне їх назад у наші дані.
Тепер давайте спробуємо поглянути на контекст нашої функції apply, де ми можемо побачити, що у нас в основному є лише два облікові записи. Перший - це обліковий запис, який містить дані наших компонентів, а другий - системна програма. В результаті системна програма тепер є інтерфейсом, а не окремою програмою. Таким чином, будь-яка програма, яка дотримується нашого системного інтерфейсу BOLT, може бути виконана через цей додаток.
05. Значення системи ЕКС
По суті, це змінює те, як ви розробляєте логіку вашої гри, і перевертає традиційні процеси з ніг на голову. Раніше, якщо ви хотіли створити або інкапсулювати якусь логіку у своїй програмі, ви зазвичай спочатку додавали функції, кожна з яких була директивою в програмі, а потім, врешті-решт, в якийсь момент, ви блокували ігрову програму, яку ви розробляли.
З моделлю ECS, однак, ми можемо замість цього мати незмінну програму з самого початку, а потім, за допомогою цього проксі-механізму, ми можемо додати систему, створену власними силами або ким-небудь, так що ми можемо мати гру, яка може працювати вічно, є масштабованою, і будь-хто може дійсно змінити логіку гри.
Вони можуть розгорнути нові системи, які працюватимуть на цих компонентах. Тепер інтерфейс також дозволяє виконувати деякі перевірки, тому ми можемо розробити ігрову механіку, яка дозволить без дозволу додавати нові системи, які можуть змінювати дані компонентів.
Або ми можемо налаштувати інтерфейс, щоб перевірити, чи дозволяє система виконання компонента. Наприклад, ви можете розробити систему управління, в якій, якщо хтось пропонує нову логіку, і ця логіка затверджена, то всі гравці можуть використовувати цю логіку в грі.
Це може навіть призвести до розгалуження у світі гри (Світовий контракт). У світі ви володієте системою польотів. А в іншому світі, якщо система не буде затверджена, можуть бути інші правила, і кожен все одно зможе зробити свій внесок у свою версію світу.
Тепер давайте розглянемо, як побудувати систему, яка може модифікувати цей компонент. Система, по суті, є просто програмою на Solana, яка визначає інструкцію виконання, яку ми викликаємо з програми-компонента в CPI (Common Programming Interface). Тут він інкапсулює просто дуже просту логіку, в якій він отримує вхідний напрямок, обчислює дельту, а потім змінює положення X і Y компонента.
Отже, давайте подивимося на іншу систему, яка може бути розгорнута кимось іншим, навіть після того, як ми випустимо гру. Ось ще один приклад системи, яка реалізує ute. Тут позиція Z збільшується на 1, тому хтось намагається додати флангову систему, яка може бути інтерфейсом з іншим шаром поверх вашої гри.
Отже, ідея зараз полягає в тому, що всі ці системи, всі ці компоненти дійсно компонуються, користувачі гри більше не є простими користувачами, гра стала відкритою, масштабованою та постійною платформою. Тому я спробую виконати модульні тести, які я підготував у цьому прикладі, і я збираюся використовувати BOLT CLI, який побудований на основі Anchor, фреймворку смарт-контрактів для Solana, тому, якщо ви вже знайомі з Solana, вам не потрібно вивчати нічого нового.
Тепер ви можете розробляти програми на Solana, просто розробляти програми, тестувати програми, тому тут я запускаю bolt build і bolt test, і тут я розгортаю нашу програму, а потім я роблю тест типу, який я підготував тут.
Отже, тут тест надсилає транзакцію для ініціалізації нового світу. Ми реєструємо кілька об’єктів, прикріплюємо до деяких з них компонент локації, а потім, можливо, найцікавіше те, що ми робимо тут деякі системи. Отже, тут ми викликаємо функцію apply, а потім використовуємо одну з цих систем. Отже, ось лише система за замовчуванням.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-a04221599c-dd1a6f-cd5cc0.webp)
Тут ми називаємо простий хід, а потім ми летимо сюди. Ну а тепер, якщо ми подивимося на логи тесту, то в першій угоді тут ми використовуємо рухому систему з висхідним напрямком, збільшуючи позицію Y на 1. У другій транзакції ми використовуємо ту саму систему, щоб рухатися вправо, а потім, нарешті, виконуємо систему польоту, яка робить протилежне, збільшуючи нашу позицію Z на 1. Це лише простий приклад, але він пропонує дуже потужну механіку, яка дозволяє будь-кому розвивати, розширювати та потенційно робити вашу гру цікавою.
06.Ефемерний ролап
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-a31b7413eb-dd1a6f-cd5cc0.webp)
Тепер, коли ми повернемося до слайда, я збираюся описати другий цікавий аспект фреймворку BOLT, який є нашим рішенням для масштабованості, яке ми називаємо Ephemeral Rollup.
Прийнято вважати, що Solana вже дуже швидка і дешева, і що в даний час вона генерує блок кожні 400 мілісекунд і може обробляти тисячі транзакцій, тому вона фактично готова до створення повноцінної гри. Однак, якщо у вас є старий логічний ланцюжок для мультиплеєра, оновлення локацій буде відбуватися занадто повільно.
Таким чином, ми можемо побудувати короткочасний шар прискорення, який повністю сумісний з часом роботи Solana. Використовуваний час необов’язковий, він може служити реальним прискоренням тієї чи іншої операції, при цьому більша частина логіки все одно виконується на головному ланцюжку, тому він спирається на ту особливість, що весь стан на Solana зберігається в обліковому записі.
Як правило, у вас буде ігрова програма, яка визначає логіку, а потім весь стан буде зберігатися в цьому обліковому записі, тому ми можемо делегувати деякі з цих облікових записів цьому ефемерному шару, який використовує рушій BOLT.
У цьому прикладі є два авторизовані облікові записи, які зберігають місцезнаходження гравця, і провайдер активно прослуховує запити на делегування та ініціалізацію. Він збирається розпочати новий час виконання за потреби, який є швидким, настроюваним, може не мати газових транзакцій або тиків, і дозволяє нам дійсно здійснювати транзакції нижче 50 мс і, можливо, масштабуватися, маючи кілька виділених часів виконання.
Інша цікава частина полягає в тому, що всю цю складність можна абстрагувати від користувача. У нас є маршрутизатор RPC, який по суті схожий на традиційний маршрутизатор RPC. Клієнт RPC може безпосередньо взаємодіяти з RPC для надсилання транзакцій. Оскільки в Solana всі транзакції попередньо оголошені для всіх змінних і читабельних облікових записів, маршрутизатори RPC можуть, по суті, направляти транзакції, запити даних і отримання даних на правильний рівень.
Потім у якийсь момент Ефемерний шар (як випливає з його назви) буде закрито, і всі стани будуть врегульовані на базовому рівні Solana, за що відповідає секвенсор, який відстежує всі облікові записи.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-cdc6dbc789-dd1a6f-cd5cc0.webp)
Інший погляд на цей механізм полягає в тому, що у нас є два рівні, і вони виконують транзакції паралельно. У нас є делеговані облікові записи, які дозволяють нам оновлюватися з меншою затримкою, не використовуючи пропускну здатність основного ланцюга. А ще у нас є інші акаунти, які не делегуються, а виконуються в основному ланцюжку.
Зараз дуже цікаво те, що програми, інструменти, фреймворки та інфраструктура знаходяться в основному ланцюжку. Вам не потрібно розгортати програму в Rollup, хоча це поширене явище в багатьох інших архітектурах. Все знаходиться на одному рівні, все можна компонувати, і, як ми вже згадували, це спеціалізоване середовище виконання також розширюється і може бути дійсно налаштовано.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-782d54d32b-dd1a6f-cd5cc0.webp)
Тепер це відкриває абсолютно нову категорію ігор, які він будує на блокчейні та мають низьку затримку. Так само, як і з традиційним багатокористувацьким сервером, але все ще здатний поєднуватися з усім, що доступно в екосистемі рівня 1.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-1d8bb470f2-dd1a6f-cd5cc0.webp)
Ви отримуєте доступ до існуючої ліквідності, можете надсилати повідомлення через протоколи, карбувати NFT, використовувати абстракції акаунтів, сесійні ключі, таблиці лідерів та єдину екосистему, всі збагачують одну екосистему.
! [BOLT: модульна інфраструктура, повноланцюговий ігровий рушій ECS на базі Solana] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-10882a485a-dd1a6f-cd5cc0)
Велике спасибі за увагу. Ви можете зареєструватися для отримання раннього доступу до нашого фреймворку за допомогою QR-кодів і перевірити репозиторій. Ви вже можете знайти надійну документацію та офіційні документи, які детально описують структуру, яку ми щойно представили. Дуже тобі дякую.