Язык ZScript¶
Что может и чего не может ZScript¶
На время разработки — тезисно.
Может:
- Задавать поведение акторов (объектов игры), в том числе очень сложное;
- Полностью заменять DeHackEd и Decorate, практически полностью — заменять ACS;
- Поддерживать мультиплеер;
- Работать с геометрией уровней и пользовательским интерфейсом;
- В некотором роде научить программированию;
- Позволить написать всё, что позволяется в пределах одного игрового движка, вплоть до собственной нейросети, операционной системы или виртуальной машины. Работать будет медленно, но будет.
Не может:
- Выходить в Интернет;
- Подгружать файлы из произвольных мест компьютера;
- Создавать изображения, звуки и другие ресурсы "на лету";
- Управлять многопоточностью и GPU.
История появления ZScript¶
Началом истории ZScript можно считать 20 июля 1999, когда сообщество игроков узнало о планах создателя порта ZDoom Randy Heit на включение в порт, которому тогда было чуть больше года, универсального скриптового языка DoomScript, позволивший бы компенсировать недостатки ACS и расширить возможности для создания игровых модификаций. Эта идея послужила мощным толчком к развитию порта, в частности, благодаря ней появился и постепенно обрёл свой нынешний облик язык Decorate. Однако несмотря на обилие возможностей, привнесённых в Decorate за это время, он так и остался языком, основная задача которого — описание анимаций и некоторых внутриигровых взаимодействий; доступ к другим данным, например, геометрии уровня или различным меню, с его помощью получить невозможно. Тем не менее, через многие годы мечты многих разработчиков об удобном универсальном языке наконец воплотились в виде ZScript, о котором дальше и пойдёт речь.
Как язык он появился ещё в версии ZDoom 2.9.1. Тогда он представлял из себя Decorate-подобный набор функций с чуть более расширенными возможностями. Graf Zahl (разработчик GZDoom) подхватил идею и развил её, сильно приблизив и синтаксис, и семантику скрипта к Unreal Engine Script.
Технически является сырым программным интерфейсом (API) к движку и позволяет почти всё, что может сам движок.