Оглавление¶
В разработке
Проект находится на ранних стадиях разработки. Пока могут встречаться и полностью пустые статьи, и ссылки, ведущие в никуда.
Введение. Русскоязычное руководство по ZScript¶
Добро пожаловать!
- О языке ZScript. В том числе возможности и ограничения языка/движка — что на нём можно реализовать, а чего нельзя.
- Редактор и работа с проектом
- О проекте русскоязычного руководства по ZScript
- Полезные ссылки
Также где-то здесь будет "Быстрый старт" — ответ на вопрос, с какой статьи начать, если знаешь Decorate, или если знаешь C++/C#/Java/(другой C-подобный ООП-язык), или если всё в новинку.
Создание первого мода¶
"Первые шаги".
-
Простой декоративный актор. Синтаксис объявления.
- [Примечание разработчикам: базовая информация о синтаксисе объявления нового класса
Actor, о блоках "Default {}" и "States {}".]
- [Примечание разработчикам: базовая информация о синтаксисе объявления нового класса
-
Синтаксис, семантика, ошибки и комментарии.
- [Примечание разработчикам: понятийное деление, пара слов об ошибках в обоих вариантах, использование комментариев.]
-
Простой актор-противник. Стейты.
- [Примечание разработчикам: стейты и вызовы. Здесь — подробнее о стейтах, кодпоинтерах, переходах по ним, и отсылках на Decorate.]
-
Улучшенное поведение актора-противника. Функции.
- [Примечание разработчикам: введение методов. Немного о функциях/методах, параметрах, алгоритмике, переменных, типах данных, ветвлении, а также о логических операциях.]
-
Простой обработчик событий. Алгоритмы.
- [Примечание разработчикам: демонстрация того, что алгоритмы могут быть применены и вне акторов.]
Синтаксис и семантика¶
Возможно, этот раздел будет перенесён в конец как "Приложение A", так как здесь больше представлена просто документация общей направленности. Оставляю вопрос для обсуждения.
-
- Переменные
- Основные типы данных
- Ветвление и циклы (позже будут объединены)
- Методы
- Константы и перечисления
- Массивы и встроенные структуры данных
- Строки (позже будут куда-нибудь перенесены)
- Модификаторы переменных и методов
Класс Actor (актор)¶
Актор многогранен.
- Свойства актора. Блок Default
- Стейты и отношения, задаваемые константами
SUF_*? - Основные методы класса Actor
- Собственные методы и анонимные функции
- Особенности переходов между стейтами
- Отладка и лайфхаки
- Частые задачи при работе с акторами
Основные подклассы актора¶
Документация по подклассам, их особенности и расширения относительно актора.
Концепции игрового движка и языка¶
Всё, что ZScript-ориентированные движки семейства *ZDoom умеют обрабатывать.
- Связь с другими языками (ACS, Decorate, DeHackEd)
- Базовые классы и типы данных движка
- Класс
Object(базовый класс) - Класс
Thinker - Другие встроенные типы данных
- Возможно, "Базовые классы и типы данных движка" имеет смысл вынести в отдельный раздел, по аналогии с "Основными подклассами актора".
- Класс
- Работа с CVar
- Обработчики событий
- Мультиплеер и демо-файлы
- Глобальные переменные
- Геометрия уровней
- Особенности 3D-пространства движка, в том числе разбиение пространства и описание node builder.
- Движущиеся поверхности и эффекты секторов
- Глобальный поиск и
TagIterator - Полиобъекты
- И т. д.
- Пользовательский интерфейс
- Разработка меню
- Работа с произвольными файлами
Применение известных практик программирования к ZScript¶
Общий опыт программирования применительно к языку ZScript.
- Некоторые полезные алгоритмы и структуры данных. Алгоритмы и структуры данных, которые могут пригодиться при разработке. К таким структурам данных могут относится связные списки, кольцевой буфер, деревья, собственная реализация хэш-таблицы и т. д.; также здесь будет немного об алгоритмах вроде сортировки, и о временной/ёмкостной сложности.
- Система логирования для больших проектов, пример двух-трёх реализаций разной степени сложности с их плюсами и минусами.
- Оптимизация кода. Здесь же будет Микрооптимизация критических участков со ссылкой на JIT-компиляцию и на то, что обычно нужны не микрооптимизации, а правильная архитектура.
- Проверка эффективности кода. Бенчмарки
- Автопроверка корректности кода. Покрытие и тестбенчи
Внутреннее устройство движков семейства *ZDoom¶
Довольно глубокое погружение в устройство движка.
- Виртуальная машина GZDoom и JIT-компиляция кода
- Как на самом деле работает стейт-машина
- Как работает мультиплеер. Управляемая рассинхронизация
Ошибки¶
«А-а-а-а! Оно сломалось!»
Примеры¶
- Utils
- Функция для проверки модов
- Функция проверки модов (через class type)
- [Функция для получения угла направления на игрока]((Примеры/utils/funkciya-dlya-polucheniya-ugla-napravleniya-na-igroka.md)