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

О проекте русскоязычного руководства по 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.