Написание скриптов на языке Lua

Dual Universe позволяет игрокам оптимизировать или автоматизировать определённые части конструкции, по средствам написания скриптов на языке Lua. На одном из самых простых, для обучении, языков программирования. Каждый элемент в Dual Universe имеет свой собственный набор значений и функций. Например, двигатель может менять тягу, сенсоры способны обнаруживать другие объекты, а двери могут открываться и закрываться, соответственно. Каждое значение этих элементов может быть потенциально использовано в написание программ. Опять же, можно задать двигателю на сколько и когда изменять тягу, так как тяга зависит от конкретного программного значения. Точно так же, дверь может быть открыта или закрыта в зависимости от её программного значения. Программные взаимодействия между всеми элементами конструкции управляются программой из Модуля Распределения Процессов (МРП), являющегося частью Ядра конструкции.

## Модуль Распределения Процессов

Игрок может использовать МРП для установки автоматического поведения или реакции конструкции, которае будет реагировать на пред-установленные условия. Игроки также могут добавлять свои программы в МРП, у каждого МРП есть набор «слотов» куда можно «встроить» элементы, что позволяет программе использовать эти «встроенные» элементы. Каждый МРП имеет несколько обработчиков событий, каждый из которых имеет свой собственный фильтр, который позволяет игроку настраивать условия для активации МРП. Когда условия фильтра выполняются для обработчика событий, запускается соответствующая программа. Скрипт может использовать или определять значения привязанные к любому из элементов, который в свою очередь присоединён к МРП.
Например: Игрок может подсоединить МРП к закрытой двери и ряду сенсоров, установив при этом условие в фильтре, что дверь должна открыться, в случаи срабатывания сенсоров.

## Работа программ в мультиплеере

Скрипты запускаются с компьютера их владельца, но при этом, их текст синхронизируется со всеми другими игроками в пределах рендера, то есть, работа программы может быть замечена и/или запущена, даже если игрок запускающий её находится вне радиуса визуального контакта с запускаемой программой. Действия программы синхронизируются для всех игроков сервера. Даже не смотря на то, что скрипты запускаются на компьютере клиента, всё же, несколько игроков могут запустить ряд различных скриптов, созданных одним человеком (и таким образом, они запустятся на компьютере того человека), и все эти игроки смогут увидеть работу скрипта и его эффект. Единственное исключение здесь в том, что не может быть двух игроков, контролирующих один и тот же элемент одновременно. Игрок имеющий права (по средствам RDMS) на использование скриптов будет иметь доступ к внутри-игровому редактору скриптов, и сможет редактировать их.

## Внутри-игровой редактор

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

## Ограничения

В написание скриптов были реализованный определённые ограничения. Как гарантия того, что ряд аспектов игры не обесценится со стороны игроков.

* Скрипты будут запускаться только если игрок находится на достаточном расстояние от Ядра
* Запрограммированное вооружение будет значительнее не эффективнее, в сравнении с обычным вооружением (например, этого можно достигнуть путём ограничения действий в секунду, доступных скрипту).
* Добычу ресурсов нельзя будет запрограммировать в никакой степени; она может осуществляться, только по средствам использования игроком Наноформера.

## Примечание

В будущем эта статья будет представлять из себя более комплексное руководство по написанию скриптов на Lua. А пока, когда много чего ещё не известно, это просто сводка.

## Дополнительные источники

1. DevBlog: Lua Script and Distributed Processing Units (09/18/2015)

## Ссылки

1. ↑ В оригинале Distributed Processing Unit (DPU)
2. ↑ В оригинале handlers
3. ↑ Dual Universe YouTube Channel, "Dual Universe DevDiary Updates - July 2017 | Pre-Alpha Video", Timestamp: 0:48 - 1:56. https://www.youtube.com/watch?v=4Vrf50dZrv4. 07/31/2017.