Платформы / жанры PC
Дата выхода: 7 сентября 2017 (Альфа)
Разработчик: Novaquark
Издатель / Издатель в России: Novaquark

УЛУЧШЕНИЯ И ИЗМЕНЕНИЯ LUA в Dual universe ЧАСТЬ 3

Admin16-10-2021, 18:48
Категория: Dual Universe новости
Издательский рейтинг
Игромания: 99
Stopgame: 98
Kanobu: 87
Котонавты: 84
Digital Spy: 88
Общий: 91
Lua - это настоящий язык программирования, который можно использовать в Dual Universe для придания динамики и интерактивности. Будь то управление кораблем, сделанным из вокселей, или добавление движения и функциональности конструкции (например, управление дверями), Lua присутствует везде.

Если вы не читали первые два дев-блога из этой серии, вот что вы пропустили: 

Часть 1: Последние изменения и дополнения, изменения, связанные со стыковкой, и устаревание кватернионов.
Часть 2: Изменения в API радара и дополнения в API транспондера.
В третьей части мы завершаем цикл Lua devblogs, рассматривая наиболее востребованные функции, обновление библиотеки базы данных, внутриигровой атлас и систему обработки событий. 

ДРУГИЕ ДОПОЛНЕНИЯ
По многочисленным просьбам мы добавили в Lua несколько незначительных функций, которые, по нашему мнению, будут хорошо сочетаться с другими изменениями.

<string> core.getConstructName() : Возвращает имя конструкции.
<int> core.getCurrentPlanetId() : Возвращает ID текущего близкого звездного тела.
<string> system.getPlayerName(<int> pid) : Возвращает имя данного игрока, если он находится в зоне видимости или транслируется транспондером.
<list> unit.getMasterPlayerOrgIds() : Возвращает список идентификаторов организаций, членом которых является игрок, выполняющий скрипт.
<string> system.getOrganizationName(<int> oid) : Возвращает название данной организации, если оно известно, например, транслируется ретранслятором.
<string> system.getOrganizationTag(<int> oid) : Возвращает тег данной организации, если он известен, например, транслируемый ретранслятором.
ОБНОВЛЕНИЕ БИБЛИОТЕКИ LUA ДЛЯ БАЗЫ ДАННЫХ
С учетом всех этих изменений и улучшений, казалось бы, самое время обновить библиотеку локальной базы данных и добавить некоторые другие, основанные на отзывах игроков.

Теперь вы найдете следующие функции:

<table> database.getPlayer(<int> pid) : Возвращает всю информацию о данном игроке, идентифицированном по его ID.
<table> database.getMasterPlayer(<table> unit) : Возвращает всю информацию об игроке, запускающем скрипт.
<table> database.getOrganization(<int> oid) : Возвращает всю информацию о данной организации, идентифицированной по ее ID.
<table> database.getConstruct(<int> cid) : Возвращает всю информацию о данной конструкции, идентифицированной по ее ID; для обнаружения конструкции требуется радар.
<table> database.getElement(<table> core,<int> uid) : Возвращает всю информацию о данном элементе, идентифицированном по его ID; требуется связанный блок ядра.
ДОПОЛНЕНИЕ К АТЛАСУ LUA
Разработчики Lua указали на необходимость создания внутриигрового атласа. С добавлением функции getCurrentPlanetId мы можем сделать его доступным уже сейчас.

Мы рады, что нам удалось придерживаться похожей структуры, с которой игроки уже знакомы, но с сертифицированными значениями и рефакторингом, особенно для аспектов локализации.

Текстовые поля для названия, описания, минералов и т.д. являются не строками, а таблицами. Это было сделано с целью предоставления простой информации на трех языках, которые мы сейчас поддерживаем: английском, французском и немецком.

С этой библиотекой атласа у вас будет следующая информация:

<int> id : идентификатор звездного тела.
<list> name : Название звездного тела.
<list> type: Тип звездного тела (планета или луна).
<list> biosphere : Биосфера звездного тела.
<list> обитаемость: Уровень обитаемости звездного тела.
<list> classification: Термическая классификация обитаемости планеты.
<list> description: Описание звездного тела.
<string> iconPath: Путь к изображению иконки звездного тела (т.е. для использования на экранах).
<bool> hasAtmosphere: Истина, если звездное тело имеет атмосферу.
<bool> isSanctuary: Истинно, если звездное тело является луной-убежищем.
<bool> isInSafeZone: True, если звездное тело находится в безопасной зоне.
<int> systemId: Идентификатор звездной системы, в которой находится звездное тело.
<int> positionInSystem: Ориентировочное положение звездного тела в звездной системе.
<список> спутников: Список идентификаторов спутников данного звездного тела.
<vec3> center: Положение центра звездного тела в мировых координатах.
<float> gravity: Гравитационное ускорение на номинальном радиусе звездного тела в м/с².
<float> radius: Номинальный радиус звездного тела.
<float> atmosphereThickness: Толщина атмосферы в метрах.
<float> atmosphereRadius: Радиус сферы атмосферы, измеренный от центра звездного тела.
<float> surfaceArea: Номинальная площадь поверхности звездного тела.
<float> surfaceAverageAltitude: Средняя высота на поверхности звездного тела.
<float> surfaceMaxAltitude: Максимальная высота на поверхности звездного тела.
<float> surfaceMinAltitude: Минимальная высота на поверхности звездного тела.
<float> GM: стандартный гравитационный параметр звездного тела.
<список> руд: Список руд, доступных на звездном теле.
<int> territories:  Количество территорий на поверхности звездного тела.

Пример использования:

local atlas = require('atlas') --Вы можете получить доступ к любому звездному телу по его id: atlas[system_id][stellar_body_id] local alioth = atlas[0][1]

ДОБАВЛЕНИЕ БИБЛИОТЕКИ LUA ДЛЯ ОБРАБОТКИ СОБЫТИЙ
Чтобы облегчить игрокам организацию и реализацию системы обработки событий, как для использования на экранах Lua, так и для различных настольных систем, мы добавили новую локальную библиотеку событий Lua. Это позволяет создавать события, связывать с ними действия, а также управлять этими событиями и их выбросами.

Вот краткая документация по этой библиотеке.

Событие
Описание: Событие содержит действия, которые должны быть вызваны его выбросом.

Свойства:

<table> actions: Таблицы действий, прикрепленных к событию.
event:emit(...): Испускает событие и вызывает присоединенные действия с заданными аргументами.
<bool, int> event:findAction(<string> id): Найти конкретное действие, связанное с данным событием, с заданным идентификатором. Функция может принимать действие в качестве аргумента, чтобы узнать, привязано ли действие к данному событию.
Аргументы:

<строка> id: ID действия.
Возвращает:

<bool> success: Истина, если найдено действие, привязанное к этому событию.
<bool> index: Индекс действия, найденного в таблице действий события.
<string> event:addAction(<any> call,<bool> enabled,<int> limit): Добавить действие к событию с заданными аргументами.
Аргументы:

<объект> call: Функция или поток, вызываемый при срабатывании события.
<bool> enabled: Булево значение, указывающее, включено действие или нет.
<int> limit: Количество раз, которое событие может вызвать это действие.
Возвращает:

<string> id: Идентификатор действия.
<nil> event:removeAction(<string> id): Удалить действие, связанное с событием с заданными аргументами. Функция может принимать в качестве аргумента объект действия.
Действие
Описание: Действие определяется вызываемым объектом, функцией или потоком.

Свойства:

<string> id: Это идентификатор, который может быть использован позже для ссылки на это действие.
<any> call: Вызывается при срабатывании события.
<bool> enabled: Это булево свойство указывает, включено ли действие или нет.
<int> limit: Это свойство представляет количество раз, когда события могут вызывать это действие.
<int> nbCall: Это свойство отслеживает, сколько раз события вызывали это действие.
<float> interval: Это свойство позволяет ограничить временной интервал между двумя вызовами.
<float> lastCall: Это свойство позволяет отслеживать время последнего вызова этого действия.
Пример использования библиотеки Atlas.

Пример использования библиотеки Event.

<BOOL> ARTICLE.ENDDEVBLOG().
Мы надеемся, что вам понравилась серия статей Lua devblog. Наша работа здесь закончена, но ваша - нет. Нашей основной мотивацией для блогов было собрать ваши отзывы, прежде чем, возможно, рассматривать дальнейшие изменения Lua и новые возможности, как для API, так и для добавления дополнительных библиотек.
Комментарии: (0)
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Купить Dual Universe
Dual Universe купить игру
В данном разделе можно приобрести/купить игру Dual Universe. Приобретайте...
6-10-2020, 15:30
Обновление игры (патчи)
Обновление Demeter в Dual Universe
Горные блоки - одна из ключевых особенностей, представленных в этом...
23-11-2021, 19:17
Dual Universe новости
ВНУТРЕННЯЯ ЧАСТЬ НОВАКВАРКА: ИЗДАНИЕ ДЕМЕТРА В DUAL UNIVERSE
Члены команды разработчиков Dual Universe объединились, чтобы рассказать о...
22-10-2021, 00:19
Dual Universe новости
Обновление "Селен" (0.26.17) В Dual Universe доступно
Сообщество создателей Dual Universe с удовольствием погрузится в последнее...
19-10-2021, 15:43
Новостной ресурс "Dual Universe" создан геймерами для геймеров, которые хотят постоянно быть в курсе самых свежих новостей игрового мира. Мы отбираем самые интересные новости об играх и сразу же публикуем их на сайте. Мы пишем новости игровой индустрии, анонсы, публикуем новые трейлеры и видео к предстоящим играм, следим за игровыми выставками и техническими новинками. Помимо информации о консольных играх, мы также пишем новости и статьи мобильных игр и онлайн-проектов. Будьте всегда в курсе последних новостей - следите за играми вместе с игровыми новостями и статьями от "Dual Univers.ru"!
Powered by Dual Universe. Все права защищены.
МЕТРИКА
up