
Скрипты, которые вы пишете в EyeAuras, на самом деле являются полноценными программами на C#. Перед выполнением платформа .NET должна сначала скомпилировать их в промежуточную форму (CIL, intermediate language).
По умолчанию скрипты хранятся в виде исходного кода вплоть до самого запуска. Только когда действие или узел выполняется впервые, скрипт компилируется и затем запускается. Именно так система работала почти 3 года.

Но во многих случаях это вызывает заметную задержку при первом вызове: неважно, рисует ли скрипт какой-то UI или это C# Action, который нажимает набор кнопок, — первый запуск всегда занимает ощутимо больше времени, чем все последующие. Для UX это не лучший вариант, и две новые функции должны помочь решить проблему.
Важно! На первом этапе эти изменения затрагивают только C# Action, но со временем появятся и во всех остальных местах, где можно использовать скрипты: в узлах BT, Overlays и т. д.
EyeAuras старается ускорить процесс компиляции, держа всё необходимое в памяти. В большинстве случаев это позволяет сократить время компиляции до десятков или сотен миллисекунд. Но иногда компиляция занимает гораздо дольше: некоторые зависимости слишком тяжёлые, чтобы постоянно держать их в готовом состоянии, поэтому их приходится загружать и выгружать по мере необходимости. Из-за этого время компиляции может вырасти до 2–5 секунд, а это уже хорошо заметно для пользователя.
Новая опция позволяет автоматически пытаться скомпилировать скрипт сразу при первой загрузке программой. Благодаря этому задержка не будет возникать в момент фактического выполнения скрипта.
После компиляции бинарную форму кода можно сохранить и использовать повторно при следующих запусках. Здесь возможны некоторые нюансы — например, скомпилированный код может перестать быть валидным после изменений во внутренней инфраструктуре EA. Но в большинстве случаев ранее скомпилированный код должен оставаться совместимым.
Эта опция позволяет EA сохранять не только исходный код вашего скрипта, но и его бинарную форму. В лучшем случае после перезапуска программы повторная компиляция вообще не понадобится — а значит, пользователь не увидит никакой задержки.

Один из следующих шагов в этом направлении — встроить обе эти возможности в механизм Packs. В идеале, когда вы публикуете Pack, сервер EA будет сам компилировать всё за вас и включать в итоговый пакет только бинарную версию кода (хотя, разумеется, при желании можно будет добавить и исходники — как это работает и сейчас). Это должно ещё сильнее улучшить общий пользовательский опыт.