О проекте русскоязычного руководства по ZScript¶
Очевидно, что ZScript — нишевый и потому не самый известный язык. По нему написано не так много статей, притом большинство из которых только на английском языке.
Цель данного руководства — снижение порога входа в сферу разработки модификаций под движки семейства *ZDoom, поддерживающие ZScript — такие, как UZDoom, GZDoom, LZDoom, QZDoom, VkDoom и некоторые другие. Поэтому текущая структура, где то возможно и уместно, в первую очередь является руководством, а также краткой документацией с примерами использования и полезными советами.
В начале своего существования данный проект задумывался как сборник небольших статей по обмену опытом. Позже эта часть превратилась в раздел "Внутреннее устройство движка" и в статью "Специфические ошибки".
Глоссарий переводов терминов¶
Так как других достаточно полных статей о ZScript на русском языке ещё попросту не существует, некоторые термины, не встречающиеся в других языках программирования, авторы перевели либо в устоявшийся вариант (например, понятие стейта), либо так, как сочли наиболее точным и верным, если устоявшегося слова в среде русскоязычного моддинга Doom ещё нет.
Здесь собрана сводная таблица переведённых терминов, встречающихся в этом руководстве.
| Термин | Перевод | Контекст/комментарий |
|---|---|---|
| Actor | Актор | Устоявшееся название в русскоязычной среде моддинга. |
| Argument | Аргумент | Термин из программирования. |
| Array | Массив | Термин из программирования. |
| Child class | Дочерний класс/Подкласс | Термин из ООП. |
| Child | Ребёнок | Термин из программирования. |
| Class | Класс | Термин из ООП. |
| Codepointer | Кодпоинтер | Термин из темы стейтов, по сути функция. |
| Const | Константа | Термин из программирования. |
| CVar | Консольная переменная (или не переводится) | Устоявшееся название в русскоязычной среде моддинга. |
| Data type | Тип данных | Термин из программирования. |
| Debug | Отладка/Дебаг | Термин из программирования. |
| Delay | Задержка | Термин анимации стейтов и функция ACS. |
| Dereferencing | Переход по указателю/Разыменование | Термин из программирования. |
| Dynamic light | Динамический свет/Динлайт | Устоявшееся название в русскоязычной среде моддинга. |
| Flag | Флаг | Термин из программирования. |
| Float-point | Число с плавающей точкой | Термин из программирования. |
| Frame | Фрейм/Кадр | Термин анимации стейтов, устоявшееся название в русскоязычной среде моддинга. |
| Function | Функция | Термин из программирования. |
| Inheritance | Наследование | Термин из ООП. |
| Integer | Целочисленное | Термин из программирования. |
| Inventory | Инвентарь/Предмет инвентаря | Устоявшееся название в русскоязычной среде моддинга. |
| Keyword | Ключевое слово | Термин из программирования. |
| Linedef | Линия/Лайндеф | Термин из геометрии уровней, устоявшееся название в русскоязычной среде моддинга. |
| Loop | Зацикливание (или не переводится) | Анимация стейтов. |
| Method | Метод | Термин из ООП. |
| Named parameter | Именованный параметр | Термин из программирования. |
| NULL | Нулевой указатель (или не переводится) | Термин из программирования. |
| Object | Объект | Термин из ООП. Не переводится, если в контексте употребляется как название класса Object. |
| Offset | Смещение/Оффсет | Обычно термин из графики или стейтов. Устоявшееся название в русскоязычной среде моддинга. |
| Parameter | Параметр | Термин из программирования. |
| Parent class | Родительский класс | Термин из ООП. |
| Parent | Родитель | Термин из программирования. |
| Pointer | Указатель | Термин из программирования. |
| Preprocessor | Препроцессор | Термин из программирования. |
| Private | Приватный | Термин из ООП. |
| Property | Свойство актора | Устоявшееся название в русскоязычной среде моддинга. |
| Protected | Защищённый | Термин из ООП. |
| Public | Публичный | Термин из ООП. |
| Replace | Замена | Ключевое слово replaces в объявлении актора. |
| Rotation | Поворот/Ротация | Поворот спрайта, обычно в контексте восьми направлений. |
| Scope (Object scope) | Сфера влияния | Применяется к классу/методу, к его месту и возможностям внутри движка. Переведено по смыслу. |
| Scope (Variable) | Область видимости | Применяется к переменной, где она доступна (видна). Термин из программирования. |
| Sector | Сектор | Термин из геометрии уровней, устоявшееся название в русскоязычной среде моддинга. |
| Shader | Шейдер | Термин из компьютерной графики и математики. |
| Sidedef | Сторона/Сайддеф | Термин из геометрии уровней, устоявшееся название в русскоязычной среде моддинга. |
| State flow | Поток исполнения стейтов | Переведено по смыслу. |
| State label | Метка стейта (также — "Стейт") | Термин "Стейт" в данном случае некорректен, так как относится к другой сущности, но в русскоязычном моддинге он уже устоялся. |
| State sequence | Последовательность стейтов (также — "Стейт") | Термин "Стейт" в данном случае некорректен, так как относится к другой сущности, но в русскоязычном моддинге он уже устоялся. |
| State | Стейт | Устоявшееся название в русскоязычной среде моддинга. Не следует путать с меткой стейтов и последовательностью стейтов. |
| Static | Статический | Термин из программирования. |
| Statnum | Логическое множество / StatNum-множество | Термин классов Thinker/Actor. Переведено по смыслу. |
| Struct | Структура | Термин из программирования. |
| Tick | Такт/Тик | Устоявшееся название в русскоязычной среде моддинга. |
| Translation | Трансляция | Цветовая трансляция, устоявшееся название в русскоязычной среде моддинга. |
| Vector | Вектор | Термин из математики. В ZScript под "вектором" не имеется в виду динамический массив. |
| Vertex | Вершина/Вертекс | Термин из геометрии уровней, устоявшееся название в русскоязычной среде моддинга. |
| Zero-tick delay | Нулевая задержка | Устоявшееся название в русскоязычной среде моддинга. |
При работе над текстом просьба придерживаться такого же перевода, если другой вариант не обусловен более подходящим контекстом. Имена собственные (названия, никнеймы, идентификаторы) обычно имеет смысл не переводить.
Как присоединиться к проекту¶
Тема ZScript довольно обширная, и, если Вы хорошо знаете какой-либо раздел оттуда — Ваш вклад был бы ценен. Также можно переводить статьи с англоязычных ресурсов, если их лицензия разрешает переиспользование (обычно требуется указание ссылки-первоисточника и имени автора, но в случае сомнений лучше связаться с последним).
Проект создаётся под открытой лицензией. Поэтому есть несколько способов присоединиться:
- Сделать Pull Request в основной репозиторий, основная ветка —
master-readthedocs. - Приложить новую/расширенную/исправленную статью на любой из ресурсов, где изменение смогут увидеть разработчики проекта (например, в тему на iddqd.ru или создать Issue на GitHub). В этом случае авторство правки сможет быть указано только в разделе благодарностей и в описании коммита.
- Написать администрации с просьбой выдать write-доступ в основной репозиторий.
Политика использования нейросетей при написании руководства¶
Использование LLM без злоупотребления ими допустимо, однако ответственность за результат полностью лежит на живом авторе коммита/изменения. Другими словами, корректура текста обычно принимается без проблем, а вот сгенерированная статья может вызвать вопросы. Если Вы не абсолютно уверены в теме, которую описала нейросеть, лучше сначала посоветоваться.
Также см. "Заметку о нейросетях".
Основные правила переводов и копирования с других ресурсов¶
Базовые правила:
- Необходимо указывать первоисточник.
- Лицензионное соглашение должно соблюдаться. Как упоминалось выше, если лицензия первоисточника не разрешает копирование явно, следует связаться с автором и уточнить, можно ли это делать.
- Взятый текст не должен быть ухудшен. Если это невозможно (например, первоисточник использует возможности, недоступные этому проекту), лучше просто оставить ссылку.
Краткая хронология создания руководства¶
- Первое упоминание проекта, его идея, появилась примерно в конце 2019/начале 2020 года.
- 19 августа 2025 года руководство было впервые загружено на хостинг ReadTheDocs, с этого момента его можно было начать находить в поисковиках.
- Анонс первой альфа-версии состоялся 19 января 2026 года.
- Анонс первой публичной альфа-версии — 8 февраля 2026 года.
Вся история изменений находится в репозитории GitHub.