Предисловие переводчика: «BOLT — это полноцепочечный игровой движок, разработанный командой Magicblock для экосистемы Solana. Эта статья составлена из презентаций двух основателей Magicblock на мероприятии Breakpoint 2023. "
Всем привет, это последнее выступление перед Хэллоуином, и я надеюсь, что содержание выступления будет интересно всем. Меня зовут Андреа, и я являюсь соучредителем Габриэле. Сегодня мы представим новый полноцепочечный игровой фреймворк (движок).
01.Зачем нужна фуллчейн-игра
Я собираюсь начать с основ, поэтому потрудитесь создать полноцепочечную игру с состоянием и логикой в цепочке и разобраться со всеми сложностями, которые с этим связаны. По той простой причине, что мы хотим получить функции, которых нет в традиционной игровой инфраструктуре.
Первая функция — это моды без разрешения. Это означает, что все игроки и разработчики могут настраивать любой компонент в игре, в том числе внедрять плагины или моды, начиная с продвинутого клиента. Даже логика, лежащая в основе игры, может быть расширена с помощью смарт-контрактов. По сути, это новый режим, в котором каждая игра по умолчанию является новой платформой, и вы можете стать источником контента, независимо от того, насколько мала ваша команда.
Вторая характеристика – постоянство. Автономные миры и тот факт, что эти виртуальные впечатления могут существовать вечно, вызвали множество последствий. Поскольку никакие серверы не могут быть подвергнуты цензуре или отключены, эти возможности на самом деле привносят совершенно новый смысл. Игры стали платформой для игроков, чтобы играть, общаться и вести глобальную торговлю, которая более универсальна, чем традиционные игровые платформы.
Последняя особенность – открытая экономика. Игры могут использовать преимущества открытой глобальной платежной системы блокчейна, особенно микроплатежей в нашей экосистеме, и повторно использовать существующую инфраструктуру блокчейна, такую как DEX или торговые площадки NFT.
02.Существующее решение
Текущая проблема омничейн-игр заключается в том, что опыт разработки очень плохой, и мы смотрим на решения на рынке и обнаруживаем, что есть некоторые фреймворки разработки, которые пытаются упростить работу разработчика.
Некоторые из них очень интересны тем, что они пытаются повторять доказуемые сессии, где вы можете выполнять вычисления вне сети и доказывать целостность вычислений в сети. Или внедрить управляемую событиями среду выполнения, которая больше подходит для игровых движков на блокчейне, а не среду выполнения на основе циклов.
Но все эти фреймворки требуют компромисса между производительностью и компонуемостью для достижения более высокой производительности и более высокого TPS. Как правило, вы либо создаете изоляцию, либо вводите другую среду выполнения с сегментами.
Но нас не устраивает такой компромисс. Мы спросили себя, а что, если бы существовала структура, которая могла бы поддерживать необходимый нам TPS? Когда ваша игра успешна, вам не нужно жертвовать их пользовательским опытом, даже с миллионами игроков, потому что газовых войн не будет. Кроме того, фреймворк не требует шардинга и фрагментации, поэтому вы можете использовать доказуемые игровые сессии и даже имитировать течение времени, не платя комиссию за газ. Нет необходимости фрагментировать систему или использовать уровень 3 вообще.
03.Движок для разработки полноцепочечных игр на Solana: BOLT
Вот почему мы рады представить BOLT, высокопроизводительный, компонуемый, полноцепочечный фреймворк для разработки игр на основе SVM.
BOLT является модульным и компонуемым, что позволяет ему использовать всю существующую инфраструктуру на Solana. Он работает с нашими существующими ончейн-средствами, такими как ончейн-идентификация, безгазовый API, сессионный ключ, а также с существующей платформой разработки Anchor и всеми существующими программами на Solana. Оба могут масштабироваться на более высокий порядок благодаря эфемерным сверткам, которые представляют собой игровые сеансы, которые открываются и закрываются по требованию пользователя и масштабируются по мере необходимости.
BOLT работает молниеносно, и мы можем достичь того же уровня производительности, что и традиционный игровой движок, прежде чем использовать эти выделенные среды выполнения для ускорения определенных операций.
Это панорамный дисплей рамы BOLT. Очевидно, что он создан для Solana, но он может использовать его на любой SVM-совместимой платформе, например, SVM-совместимой Layer 2. BOLT преследует две основные цели: компонуемость и масштабируемость.
Система ECS (Entity Component) — это один из способов, с помощью которого мы упрощаем использование ончейн-компонентов. Другой — эфемерный роллап, о котором мы уже упоминали ранее, и сейчас я расскажу об обеих этих технологиях.
BOLT был интегрирован с наиболее часто используемыми устаревшими игровыми движками, такими как Unity, которые часто служат в качестве фронтенда игр. Конечно, это также включает в себя другие любимые игровые движки с открытым исходным кодом, такие как Godot и Phaser. Мы даже работаем над обновленным игровым клиентом Turbo, который направлен на улучшение опыта для инди-разработчиков и содействие быстрому созданию игр. Возможно, в будущем партнеров станет больше.
Я начну с этого и объясню, зачем нам нужна система компонентов сущностей ECS. Ответ прост, потому что он допускает максимальную компонуемость, а это значит, что мы можем создавать и повторно использовать готовые компоненты.
Как следует из названия, ECS состоит из трех основных элементов: сущностей, которые, по сути, являются идентификаторами, зарегистрированными в отдельном экземпляре игрового мира, компонентов, которые определяют структуру данных таким образом, что они в основном являются данными, связанными с сущностью, и, наконец, системы, которая представляет собой логику, которая манипулирует компонентами, прикрепленными к сущности.
Преимущество такой архитектуры заключается в том, что все системы и компоненты являются многоразовыми. Они могут быть опубликованы в общедоступном реестре, и разработчики могут легко добавлять, создавать, обнаруживать и интегрировать компоненты любого типа, так что вам больше не нужно писать ни одной строчки кода с нуля, а вы можете повторно использовать все существующие компоненты и в конечном итоге вносить в них свой вклад. Например, у нас может быть сетчатая структура данных (например, лабиринт или поле битвы), движущаяся система или система доказательства с нулевым разглашением для тумана войны.
04.Практика программирования ECS двигателя BOLT
(Примечание переводчика: эта часть рекомендуется разработчикам для просмотра оригинального видео, не разработчики могут пропустить эту часть)
ТЕПЕРЬ Я ПЕРЕЙДУ В СВОЮ IDE И ПОКАЖУ ВАМ ПРОСТОЙ ПРИМЕР ИГРЫ С ИСПОЛЬЗОВАНИЕМ ДВИЖКА BOLT ECS.
Мы определим несколько сущностей, компонент местоположения и две системы, которые будут манипулировать данными и изменять данные для этого компонента местоположения. Итак, первая точка входа – это взаимодействие с Всемирной Программой. Программа World является частью фреймворка BOLT и предоставляет некоторые извлечения, которые позволяют регистрировать новые экземпляры мира.
Вы можете добавлять сущности в свой экземпляр World Instance, и вы можете регистрировать компоненты с помощью только что определенных сущностей, которые, по сути, определены программой-компонентом. Программа-компонент содержит две директивы, первая из которых инициализирует, создает и выделяет пространство для хранения строк данных, которые будут использоваться в вашем компоненте. В этом простом примере мы определяем компонент location, и если мы посмотрим на контекст директивы инициализации, мы увидим, что у нас есть данные компонента, а данные компонента просто определяют структуру с координатами XYZ, которая может хранить, например, местоположение игрока.
Вторая директива, наверное, самая интересная, это точка входа, которая позволяет нам выполнять любую логику. Он будет принимать наши компоненты и произвольные системы в качестве входных данных и выполнять логику, определенную внутри системы, выполняя ее в разных местах программирования. Теперь, если вы посмотрите на строку 15, у нас есть вызов CPI (Common Programming Interface), который будет выполнять внутреннюю логику через CPI. Он выполнит все вычисления, определенные системой, а затем вернется к нам, где программа-компонент извлечет и установит их обратно в наши данные.
Теперь давайте попробуем взглянуть на контекст нашей функции apply, где мы видим, что у нас есть только две учетные записи. Первый – это учетная запись, которая содержит данные наших компонентов, а второй – системная программа. В результате системная программа теперь является интерфейсом, а не отдельной программой. Таким образом, любая программа, которая придерживается нашего системного интерфейса BOLT, может быть запущена через это приложение.
05.Значение системы ECS
По сути, это меняет то, как вы проектируете логику вашей игры, и переворачивает традиционные процессы с ног на голову. Раньше, если вы хотели создать или инкапсулировать какую-либо логику в свою программу, вы обычно сначала добавляли функции, каждая из которых была директивой в программе, а затем, в конечном счете, в какой-то момент вы блокировали разрабатываемую игровую программу.
Однако с моделью ECS мы можем иметь неизменяемую программу с самого начала, а затем с помощью этого прокси-механизма мы можем добавить систему, созданную собственными силами или кем угодно, чтобы у нас была игра, которая может работать вечно, является масштабируемой, и каждый может действительно изменить логику игры.
Они могут развертывать новые системы, которые будут работать на этих компонентах. Теперь интерфейс также позволяет выполнять некоторые проверки, так что мы можем разработать игровую механику, которая позволяет без разрешения добавлять новые системы, которые могут изменять данные компонентов.
Или мы можем настроить интерфейс, чтобы проверить, разрешает ли система выполнение компонента. Например, вы можете спроектировать систему управления, в которой, если кто-то предлагает новую логику, и эта логика одобряется, то все игроки могут использовать эту логику в игре.
Это может даже привести к развилке в игровом мире (Мировому контракту). В мире вы владеете системой полета. А в другом мире, если система не будет утверждена, могут быть другие правила, и каждый все равно сможет внести свой вклад в свою версию мира.
Теперь давайте рассмотрим, как построить систему, которая может модифицировать этот компонент. Система, по сути, представляет собой просто программу на Solana, которая определяет инструкцию выполнения, а инструкция выполнения — это инструкция, которую мы вызываем из программы-компонента в CPI (Common Programming Interface). Здесь он просто инкапсулирует очень простую логику, в которой он получает входное направление, вычисляет дельту, а затем изменяет положения X и Y компонента.
Итак, давайте посмотрим на другую систему, которая может быть развернута кем-то другим, даже после того, как мы выпустим игру. Вот еще один пример системы, реализующей ute. Здесь позиция Z увеличена на 1, поэтому кто-то пытается добавить систему флангов, которая может быть интерфейсом с другим слоем поверх вашей игры.
Итак, идея сейчас заключается в том, что все эти системы, все эти компоненты действительно компонуемы, пользователи игры больше не являются простыми пользователями, игра стала открытой, масштабируемой и устойчивой платформой. Поэтому я попытаюсь выполнить модульные тесты, которые я подготовил в этом примере, и буду использовать BOLT CLI, который построен на основе Anchor, фреймворка смарт-контрактов для Solana, поэтому, если вы уже знакомы с Solana, вам не нужно изучать что-то новое.
Теперь вы можете разрабатывать программы на Solana, просто разрабатывать программы, тестировать программы, так что здесь я запускаю bolt build и bolt test, а здесь я развертываю нашу программу, а затем я провожу типовой тест, который я подготовил здесь.
Итак, здесь тест отправляет транзакцию для инициализации нового мира. Мы регистрируем несколько объектов, к некоторым из них прикрепляем компоненты определения местоположения, а затем, возможно, самое интересное — это создание некоторых систем. Итак, здесь мы вызываем функцию apply, а затем используем одну из этих систем. Итак, вот просто система по умолчанию.
Здесь мы называем простой ход, а затем мы делаем ход здесь. Ну а теперь, если мы посмотрим на логи теста, то в первой сделке здесь мы используем скользящую систему с направлением вверх, увеличивая позицию Y на 1. Во второй транзакции мы используем ту же систему для перемещения вправо, а затем, наконец, мы выполняем систему полета, которая делает обратное, увеличивая нашу позицию по оси Z на 1. Это всего лишь простой пример, но он предлагает очень мощную механику, которая позволяет любому развиваться, расширяться и потенциально сделать вашу игру увлекательной.
06.Эфемерный роллап
Теперь, когда мы вернемся к слайду, я опишу второй интересный аспект фреймворка BOLT, который представляет собой наше решение для масштабируемости, которое мы называем эфемерным накопителем.
Обычно считается, что Solana уже очень быстрая и дешевая, и что в настоящее время она генерирует блок каждые 400 миллисекунд и может обрабатывать тысячи транзакций, поэтому она действительно готова к созданию полносетевой игры. Однако, если у вас старая логическая цепочка для мультиплеера, обновление локаций будет слишком медленным.
Таким образом, мы можем построить краткосрочный слой ускорения, который полностью совместим со временем выполнения Solana. Используемое время не является обязательным, он может служить реальным ускорением той или иной операции, при этом большая часть логики по-прежнему выполняется на основной цепочке, поэтому он полагается на особенность, что все состояние на Solana хранится в аккаунте.
Обычно у вас есть игровая программа, которая определяет логику, а затем все состояния будут храниться в этой учетной записи, так что мы можем делегировать некоторые из этих учетных записей этому эфемерному слою, использующему движок BOLT.
В этом примере есть две авторизованные учетные записи, которые хранят местоположение игрока, и поставщик активно прослушивает запросы на делегирование и запросы. Он собирается начать новую среду выполнения по мере необходимости, которая является быстрой, настраиваемой, может не иметь транзакций газа или тиков, и позволяет нам действительно делать транзакции менее 50 мс и, возможно, масштабироваться за счет наличия нескольких выделенных сред выполнения.
Другая интересная часть заключается в том, что вся эта сложность может быть абстрагирована от пользователя. У нас есть маршрутизатор RPC, который по сути похож на традиционный маршрутизатор RPC. Клиент RPC может напрямую взаимодействовать с RPC для отправки транзакций. Поскольку в Solana все транзакции предварительно объявлены для всех изменяемых и читаемых учетных записей, маршрутизаторы RPC могут, по сути, направлять транзакции, запросы данных и извлечение на нужный уровень.
Затем в какой-то момент эфемерный слой (как следует из его названия) будет закрыт и все состояния будут урегулированы в базовом слое Solana, за который отвечает секвенсор, который отслеживает все аккаунты.
Другой способ взглянуть на этот механизм заключается в том, что у нас есть два уровня, и они выполняют транзакции параллельно. У нас есть делегированные учетные записи, которые позволяют нам обновляться с меньшей задержкой, не используя пропускную способность основной цепочки. А еще у нас есть другие аккаунты, которые не делегируются, а исполняются на основной цепочке.
Очень интересно то, что программы, инструменты, фреймворки и инфраструктура находятся в основной цепочке. Вам не нужно развертывать программу в Rollup, хотя это распространено во многих других архитектурах. Все находится на одном уровне, все компонуемо, и, как мы уже упоминали, эта специализированная среда выполнения также расширяема и может быть действительно настроена.
Теперь это открывает совершенно новую категорию игр, которые он строит на блокчейне и имеют низкую задержку. Точно так же, как и на традиционном многопользовательском сервере, но при этом он может сочетаться со всем, что доступно в экосистеме уровня 1.
Вы получаете доступ к существующей ликвидности, можете отправлять сообщения через протоколы, чеканить NFT, использовать абстракции аккаунтов, ключи сессий, таблицы лидеров и единую экосистему, все обогащают одну и ту же экосистему.
Большое спасибо за внимание. Вы можете зарегистрироваться для получения раннего доступа к нашему фреймворку с помощью QR-кодов и ознакомиться с репозиторием. Вы уже можете найти надежную документацию и технические документы, в которых подробно описывается фреймворк, который мы только что представили. Огромное спасибо.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
BOLT: полноцепочечный игровой движок ECS на базе Solana
Ссылки на видео:
Спикеры: Андреа, Габриэле, соучредитель Magicblock
演讲标题:ФРЕЙМВОРК ДЛЯ ОНЧЕЙН-ИГР
Предисловие переводчика: «BOLT — это полноцепочечный игровой движок, разработанный командой Magicblock для экосистемы Solana. Эта статья составлена из презентаций двух основателей Magicblock на мероприятии Breakpoint 2023. "
Всем привет, это последнее выступление перед Хэллоуином, и я надеюсь, что содержание выступления будет интересно всем. Меня зовут Андреа, и я являюсь соучредителем Габриэле. Сегодня мы представим новый полноцепочечный игровой фреймворк (движок).
01.Зачем нужна фуллчейн-игра
Я собираюсь начать с основ, поэтому потрудитесь создать полноцепочечную игру с состоянием и логикой в цепочке и разобраться со всеми сложностями, которые с этим связаны. По той простой причине, что мы хотим получить функции, которых нет в традиционной игровой инфраструктуре.
Первая функция — это моды без разрешения. Это означает, что все игроки и разработчики могут настраивать любой компонент в игре, в том числе внедрять плагины или моды, начиная с продвинутого клиента. Даже логика, лежащая в основе игры, может быть расширена с помощью смарт-контрактов. По сути, это новый режим, в котором каждая игра по умолчанию является новой платформой, и вы можете стать источником контента, независимо от того, насколько мала ваша команда.
Вторая характеристика – постоянство. Автономные миры и тот факт, что эти виртуальные впечатления могут существовать вечно, вызвали множество последствий. Поскольку никакие серверы не могут быть подвергнуты цензуре или отключены, эти возможности на самом деле привносят совершенно новый смысл. Игры стали платформой для игроков, чтобы играть, общаться и вести глобальную торговлю, которая более универсальна, чем традиционные игровые платформы.
Последняя особенность – открытая экономика. Игры могут использовать преимущества открытой глобальной платежной системы блокчейна, особенно микроплатежей в нашей экосистеме, и повторно использовать существующую инфраструктуру блокчейна, такую как DEX или торговые площадки NFT.
02.Существующее решение
Текущая проблема омничейн-игр заключается в том, что опыт разработки очень плохой, и мы смотрим на решения на рынке и обнаруживаем, что есть некоторые фреймворки разработки, которые пытаются упростить работу разработчика.
Некоторые из них очень интересны тем, что они пытаются повторять доказуемые сессии, где вы можете выполнять вычисления вне сети и доказывать целостность вычислений в сети. Или внедрить управляемую событиями среду выполнения, которая больше подходит для игровых движков на блокчейне, а не среду выполнения на основе циклов.
Но все эти фреймворки требуют компромисса между производительностью и компонуемостью для достижения более высокой производительности и более высокого TPS. Как правило, вы либо создаете изоляцию, либо вводите другую среду выполнения с сегментами.
Но нас не устраивает такой компромисс. Мы спросили себя, а что, если бы существовала структура, которая могла бы поддерживать необходимый нам TPS? Когда ваша игра успешна, вам не нужно жертвовать их пользовательским опытом, даже с миллионами игроков, потому что газовых войн не будет. Кроме того, фреймворк не требует шардинга и фрагментации, поэтому вы можете использовать доказуемые игровые сессии и даже имитировать течение времени, не платя комиссию за газ. Нет необходимости фрагментировать систему или использовать уровень 3 вообще.
03.Движок для разработки полноцепочечных игр на Solana: BOLT
Вот почему мы рады представить BOLT, высокопроизводительный, компонуемый, полноцепочечный фреймворк для разработки игр на основе SVM.
BOLT является модульным и компонуемым, что позволяет ему использовать всю существующую инфраструктуру на Solana. Он работает с нашими существующими ончейн-средствами, такими как ончейн-идентификация, безгазовый API, сессионный ключ, а также с существующей платформой разработки Anchor и всеми существующими программами на Solana. Оба могут масштабироваться на более высокий порядок благодаря эфемерным сверткам, которые представляют собой игровые сеансы, которые открываются и закрываются по требованию пользователя и масштабируются по мере необходимости.
BOLT работает молниеносно, и мы можем достичь того же уровня производительности, что и традиционный игровой движок, прежде чем использовать эти выделенные среды выполнения для ускорения определенных операций.
Это панорамный дисплей рамы BOLT. Очевидно, что он создан для Solana, но он может использовать его на любой SVM-совместимой платформе, например, SVM-совместимой Layer 2. BOLT преследует две основные цели: компонуемость и масштабируемость.
Система ECS (Entity Component) — это один из способов, с помощью которого мы упрощаем использование ончейн-компонентов. Другой — эфемерный роллап, о котором мы уже упоминали ранее, и сейчас я расскажу об обеих этих технологиях.
BOLT был интегрирован с наиболее часто используемыми устаревшими игровыми движками, такими как Unity, которые часто служат в качестве фронтенда игр. Конечно, это также включает в себя другие любимые игровые движки с открытым исходным кодом, такие как Godot и Phaser. Мы даже работаем над обновленным игровым клиентом Turbo, который направлен на улучшение опыта для инди-разработчиков и содействие быстрому созданию игр. Возможно, в будущем партнеров станет больше.
Я начну с этого и объясню, зачем нам нужна система компонентов сущностей ECS. Ответ прост, потому что он допускает максимальную компонуемость, а это значит, что мы можем создавать и повторно использовать готовые компоненты.
Как следует из названия, ECS состоит из трех основных элементов: сущностей, которые, по сути, являются идентификаторами, зарегистрированными в отдельном экземпляре игрового мира, компонентов, которые определяют структуру данных таким образом, что они в основном являются данными, связанными с сущностью, и, наконец, системы, которая представляет собой логику, которая манипулирует компонентами, прикрепленными к сущности.
Преимущество такой архитектуры заключается в том, что все системы и компоненты являются многоразовыми. Они могут быть опубликованы в общедоступном реестре, и разработчики могут легко добавлять, создавать, обнаруживать и интегрировать компоненты любого типа, так что вам больше не нужно писать ни одной строчки кода с нуля, а вы можете повторно использовать все существующие компоненты и в конечном итоге вносить в них свой вклад. Например, у нас может быть сетчатая структура данных (например, лабиринт или поле битвы), движущаяся система или система доказательства с нулевым разглашением для тумана войны.
04.Практика программирования ECS двигателя BOLT
(Примечание переводчика: эта часть рекомендуется разработчикам для просмотра оригинального видео, не разработчики могут пропустить эту часть)
ТЕПЕРЬ Я ПЕРЕЙДУ В СВОЮ IDE И ПОКАЖУ ВАМ ПРОСТОЙ ПРИМЕР ИГРЫ С ИСПОЛЬЗОВАНИЕМ ДВИЖКА BOLT ECS.
Мы определим несколько сущностей, компонент местоположения и две системы, которые будут манипулировать данными и изменять данные для этого компонента местоположения. Итак, первая точка входа – это взаимодействие с Всемирной Программой. Программа World является частью фреймворка BOLT и предоставляет некоторые извлечения, которые позволяют регистрировать новые экземпляры мира.
Вы можете добавлять сущности в свой экземпляр World Instance, и вы можете регистрировать компоненты с помощью только что определенных сущностей, которые, по сути, определены программой-компонентом. Программа-компонент содержит две директивы, первая из которых инициализирует, создает и выделяет пространство для хранения строк данных, которые будут использоваться в вашем компоненте. В этом простом примере мы определяем компонент location, и если мы посмотрим на контекст директивы инициализации, мы увидим, что у нас есть данные компонента, а данные компонента просто определяют структуру с координатами XYZ, которая может хранить, например, местоположение игрока.
Вторая директива, наверное, самая интересная, это точка входа, которая позволяет нам выполнять любую логику. Он будет принимать наши компоненты и произвольные системы в качестве входных данных и выполнять логику, определенную внутри системы, выполняя ее в разных местах программирования. Теперь, если вы посмотрите на строку 15, у нас есть вызов CPI (Common Programming Interface), который будет выполнять внутреннюю логику через CPI. Он выполнит все вычисления, определенные системой, а затем вернется к нам, где программа-компонент извлечет и установит их обратно в наши данные.
Теперь давайте попробуем взглянуть на контекст нашей функции apply, где мы видим, что у нас есть только две учетные записи. Первый – это учетная запись, которая содержит данные наших компонентов, а второй – системная программа. В результате системная программа теперь является интерфейсом, а не отдельной программой. Таким образом, любая программа, которая придерживается нашего системного интерфейса BOLT, может быть запущена через это приложение.
05.Значение системы ECS
По сути, это меняет то, как вы проектируете логику вашей игры, и переворачивает традиционные процессы с ног на голову. Раньше, если вы хотели создать или инкапсулировать какую-либо логику в свою программу, вы обычно сначала добавляли функции, каждая из которых была директивой в программе, а затем, в конечном счете, в какой-то момент вы блокировали разрабатываемую игровую программу.
Однако с моделью ECS мы можем иметь неизменяемую программу с самого начала, а затем с помощью этого прокси-механизма мы можем добавить систему, созданную собственными силами или кем угодно, чтобы у нас была игра, которая может работать вечно, является масштабируемой, и каждый может действительно изменить логику игры.
Они могут развертывать новые системы, которые будут работать на этих компонентах. Теперь интерфейс также позволяет выполнять некоторые проверки, так что мы можем разработать игровую механику, которая позволяет без разрешения добавлять новые системы, которые могут изменять данные компонентов.
Или мы можем настроить интерфейс, чтобы проверить, разрешает ли система выполнение компонента. Например, вы можете спроектировать систему управления, в которой, если кто-то предлагает новую логику, и эта логика одобряется, то все игроки могут использовать эту логику в игре.
Это может даже привести к развилке в игровом мире (Мировому контракту). В мире вы владеете системой полета. А в другом мире, если система не будет утверждена, могут быть другие правила, и каждый все равно сможет внести свой вклад в свою версию мира.
Теперь давайте рассмотрим, как построить систему, которая может модифицировать этот компонент. Система, по сути, представляет собой просто программу на Solana, которая определяет инструкцию выполнения, а инструкция выполнения — это инструкция, которую мы вызываем из программы-компонента в CPI (Common Programming Interface). Здесь он просто инкапсулирует очень простую логику, в которой он получает входное направление, вычисляет дельту, а затем изменяет положения X и Y компонента.
Итак, давайте посмотрим на другую систему, которая может быть развернута кем-то другим, даже после того, как мы выпустим игру. Вот еще один пример системы, реализующей ute. Здесь позиция Z увеличена на 1, поэтому кто-то пытается добавить систему флангов, которая может быть интерфейсом с другим слоем поверх вашей игры.
Итак, идея сейчас заключается в том, что все эти системы, все эти компоненты действительно компонуемы, пользователи игры больше не являются простыми пользователями, игра стала открытой, масштабируемой и устойчивой платформой. Поэтому я попытаюсь выполнить модульные тесты, которые я подготовил в этом примере, и буду использовать BOLT CLI, который построен на основе Anchor, фреймворка смарт-контрактов для Solana, поэтому, если вы уже знакомы с Solana, вам не нужно изучать что-то новое.
Теперь вы можете разрабатывать программы на Solana, просто разрабатывать программы, тестировать программы, так что здесь я запускаю bolt build и bolt test, а здесь я развертываю нашу программу, а затем я провожу типовой тест, который я подготовил здесь.
Итак, здесь тест отправляет транзакцию для инициализации нового мира. Мы регистрируем несколько объектов, к некоторым из них прикрепляем компоненты определения местоположения, а затем, возможно, самое интересное — это создание некоторых систем. Итак, здесь мы вызываем функцию apply, а затем используем одну из этих систем. Итак, вот просто система по умолчанию.
Здесь мы называем простой ход, а затем мы делаем ход здесь. Ну а теперь, если мы посмотрим на логи теста, то в первой сделке здесь мы используем скользящую систему с направлением вверх, увеличивая позицию Y на 1. Во второй транзакции мы используем ту же систему для перемещения вправо, а затем, наконец, мы выполняем систему полета, которая делает обратное, увеличивая нашу позицию по оси Z на 1. Это всего лишь простой пример, но он предлагает очень мощную механику, которая позволяет любому развиваться, расширяться и потенциально сделать вашу игру увлекательной.
06.Эфемерный роллап
Теперь, когда мы вернемся к слайду, я опишу второй интересный аспект фреймворка BOLT, который представляет собой наше решение для масштабируемости, которое мы называем эфемерным накопителем.
Обычно считается, что Solana уже очень быстрая и дешевая, и что в настоящее время она генерирует блок каждые 400 миллисекунд и может обрабатывать тысячи транзакций, поэтому она действительно готова к созданию полносетевой игры. Однако, если у вас старая логическая цепочка для мультиплеера, обновление локаций будет слишком медленным.
Таким образом, мы можем построить краткосрочный слой ускорения, который полностью совместим со временем выполнения Solana. Используемое время не является обязательным, он может служить реальным ускорением той или иной операции, при этом большая часть логики по-прежнему выполняется на основной цепочке, поэтому он полагается на особенность, что все состояние на Solana хранится в аккаунте.
Обычно у вас есть игровая программа, которая определяет логику, а затем все состояния будут храниться в этой учетной записи, так что мы можем делегировать некоторые из этих учетных записей этому эфемерному слою, использующему движок BOLT.
В этом примере есть две авторизованные учетные записи, которые хранят местоположение игрока, и поставщик активно прослушивает запросы на делегирование и запросы. Он собирается начать новую среду выполнения по мере необходимости, которая является быстрой, настраиваемой, может не иметь транзакций газа или тиков, и позволяет нам действительно делать транзакции менее 50 мс и, возможно, масштабироваться за счет наличия нескольких выделенных сред выполнения.
Другая интересная часть заключается в том, что вся эта сложность может быть абстрагирована от пользователя. У нас есть маршрутизатор RPC, который по сути похож на традиционный маршрутизатор RPC. Клиент RPC может напрямую взаимодействовать с RPC для отправки транзакций. Поскольку в Solana все транзакции предварительно объявлены для всех изменяемых и читаемых учетных записей, маршрутизаторы RPC могут, по сути, направлять транзакции, запросы данных и извлечение на нужный уровень.
Затем в какой-то момент эфемерный слой (как следует из его названия) будет закрыт и все состояния будут урегулированы в базовом слое Solana, за который отвечает секвенсор, который отслеживает все аккаунты.
Другой способ взглянуть на этот механизм заключается в том, что у нас есть два уровня, и они выполняют транзакции параллельно. У нас есть делегированные учетные записи, которые позволяют нам обновляться с меньшей задержкой, не используя пропускную способность основной цепочки. А еще у нас есть другие аккаунты, которые не делегируются, а исполняются на основной цепочке.
Очень интересно то, что программы, инструменты, фреймворки и инфраструктура находятся в основной цепочке. Вам не нужно развертывать программу в Rollup, хотя это распространено во многих других архитектурах. Все находится на одном уровне, все компонуемо, и, как мы уже упоминали, эта специализированная среда выполнения также расширяема и может быть действительно настроена.
Теперь это открывает совершенно новую категорию игр, которые он строит на блокчейне и имеют низкую задержку. Точно так же, как и на традиционном многопользовательском сервере, но при этом он может сочетаться со всем, что доступно в экосистеме уровня 1.
Вы получаете доступ к существующей ликвидности, можете отправлять сообщения через протоколы, чеканить NFT, использовать абстракции аккаунтов, ключи сессий, таблицы лидеров и единую экосистему, все обогащают одну и ту же экосистему.
Большое спасибо за внимание. Вы можете зарегистрироваться для получения раннего доступа к нашему фреймворку с помощью QR-кодов и ознакомиться с репозиторием. Вы уже можете найти надежную документацию и технические документы, в которых подробно описывается фреймворк, который мы только что представили. Огромное спасибо.