Скриптинг: Torque и Unity


...

Юрий "yurembo" Язев


Скриптинг – классная вещь, касательно игровых движков, позволяет, не залезая «под капот», реализовать геймплей на высоком уровне с помощью удобного языка.

В движках семейства Torque роль скриптового языка играет Torque Script. Коротко, это интерпретируемый C-подобный язык с динамической типизацией. Можно провести параллель сравнения с JavaScript.

Torque Script – компонент движка, он представляет полностью автономную машину, он самодостаточен, имеются все модули для работы. То есть он самостоятельно, не обращаясь к внешним средствам, проверяет и компилирует переданный ему код с высокоуровневого языка в бинарный байт-код и сохраняет его в dso-файлах. У него есть свой набор команд, подобный набору ассемблерного языка. В этих бинарных файлах сохраняется оптимизированная программа на Торковском ассемблере.

На следующем проходе движок Torque, являясь интерпретатором, читает dso-файлы и с минимальной обработкой передает их на выполнение центральному процессору (более подробно в книге «Волшебство момента вращения»).

...

С Торком все более или менее понятно. А как у нас обстоят дела со скриптингом в Unity? В этом движке скриптовый код пишется на C# или JS. В бинарный код он транслируется с помощью компиляторов среды Mono. JS ровно, как C# языки компилируемые средой Mono. Таким образом, получается, что все объекты Unity: примитивы, источники света, эффекты, etc. составляют всего лишь супер сет классов для Mono.

Так как, Mono кросс-платформенная среда, на выходе компиляции можно получить бинарник, который будет работать под управлением любой поддерживаемой операционной системы: Windows, macOS, Linux, iOS, Android, Windows Phone, etc.

Учитывая, что Mono свободная и открытая, решение скриптинга и компиляции приложения в движке Unity очень элегантно.