Перейти к содержанию

Язык ZScript

Что может и чего не может ZScript

ZScript может:

  • Задавать поведение акторов (объектов игры), в том числе очень сложное;
  • Полностью заменять DeHackEd и Decorate, практически полностью — заменять ACS;
  • Поддерживать мультиплеер;
  • Работать с геометрией уровней и пользовательским интерфейсом;
  • В некотором роде научить программированию;
  • Позволить написать всё, что позволяется в пределах одного игрового движка, вплоть до собственной нейросети, операционной системы или виртуальной машины. Работать будет очень медленно, потому что движок под такое не приспособлен, но всё же будет.

ZScript не может:

  • Выходить в Интернет;
  • Подгружать файлы из произвольных мест компьютера;
  • Создавать изображения, звуки и другие ресурсы "на лету";
  • Управлять многопоточностью и GPU.

Технически является сырым программным интерфейсом (API) к движку и позволяет почти всё, что может сам движок.

История появления ZScript

Началом истории ZScript можно считать 20 июля 1999, когда сообщество игроков узнало о планах создателя порта ZDoom Randy Heit на включение в порт, которому тогда было чуть больше года, универсального скриптового языка DoomScript, позволивший бы компенсировать недостатки ACS и расширить возможности для создания игровых модификаций. Эта идея послужила мощным толчком к развитию порта, в частности, благодаря ней появился и постепенно обрёл свой нынешний облик язык Decorate. Однако несмотря на обилие возможностей, привнесённых в Decorate за это время, он так и остался языком, основная задача которого — описание анимаций и некоторых внутриигровых взаимодействий; доступ к другим данным, например, геометрии уровня или различным меню, с его помощью получить невозможно. Тем не менее, через многие годы мечты многих разработчиков об удобном универсальном языке наконец воплотились в виде ZScript, о котором дальше и пойдёт речь.

Как язык он появился ещё в версии ZDoom 2.9.1. Тогда он представлял из себя Decorate-подобный набор функций с чуть более расширенными возможностями. Graf Zahl (разработчик GZDoom) подхватил идею и развил её, сильно приблизив и синтаксис, и семантику скрипта к Unreal Engine Script.