RU

Видеоуроки по QSP

Aleks Versus Moderator 28.05.2018 07:07 24 comments 14383 views

Наконец я подготовил первую серию видеоуроков по QSP.

Это заняло почти полтора года, и многие из вас уже освоили всё, что я здесь рассказываю, но надеюсь эти видеоуроки помогут новичкам, которые постоянно появляются в нашем сообществе.

Пару слов в оправдание, зачем это нужно.

Во-первых, я позавидовал instead`у, где такие уроки есть.
Во-вторых, некоторые люди лучше учатся и легче усваивают материал, когда этот материал наглядно демонстрируется, а не просто записан в книжке.
Ну и в-третьих, я постарался выстроить уроки по принципу “от простого к сложному” и попутно всё ОЧЕНЬ подробно объяснить, чего, на мой взгляд, пока что нет ни в справке, ни в имеющихся учебниках. (К сожалению, из-за этого уроки получились затянутыми и занудными, но придётся потерпеть)

На этом я конечно не остановлюсь и буду продолжать пилить уроки, теперь уже с некоторой периодичностью. Ещё пять-шесть уроков будут посвящены основам, затем начнём повторять и разбирать разные плюшки из темы “Как сделать?” и документации.

По ходу я постараюсь запиливать видеоинструкции на сложные темы (парочка таких уже есть).

Вопросы и критика приветствуются. Нудный голос, тяжкие вздохи и убогий звук исправить будет сложно, но чем чёрт не шутит.

Добро пожаловать на мой канал.

Урок 0. Вводный

Spoiler

1:29 Что нам понадобится для написания игр:
2:05 Quest Soft Player 5.7.0 — плеер
3:41 Quest Generator 4.0.0 Beta — редактор
6:30 Настраиваем редактор для работы
8:54 outro

Урок 1. Вывод текста. Часть 1

Spoiler

0:39 Создаём локацию
2:19 Выводим текст в окно основного описания *p
4:36 Команда *pl. Вывод текста и с последующим переводом каретки на новую строку.
7:00 Команда *nl. Перевод каретки на новую строку с последующим выводом текста.
8:07 Очищаем окно основного описания. Команда *clr *clear
9:24 Выводим текст в окно дополнительного описания pl p nl
9:50 Очищаем окно дополнительного описания clr clear
11:33 упрощённая форма команды *pl
12:42 outro
13:03 Памятка

Урок 2. Вывод текста. Часть 2

Spoiler

00:54 Апострофы
01:13 Фигурные скобки
02:07 Многострочный текст
04:18 Зачем текст помещается в кавычки, апострофы или фигурные скобки
05:57 Как выводить на экран кавычки, апострофы и фигурные скобки
08:05 Экранирование кавычек и апострофов
10:38 Outro

Урок 3. Действия

Spoiler

02:27 Наше первое действие, оператор ACT, однострочная форма записи
05:01 Как это работает. Порядок выполнения кода
06:31 Многострочная форма записи ACT
09:31 Порядок выполнения кода
12:13 Распространённая ошибка начинающих авторов при написании действий
20:03 CLA — оператор для очистки окна действий
25:58 Комбинируем команды в действиях
27:18 DELACT — оператор, удаляющий действие по названию
30:37 Outro

Урок 4. Переходы

Spoiler

00:24 Что такое локация, и чем является локация в QSP
01:01 Пишем титульный лист. Локации-страницы
02:03 Страница об авторе
03:00 Страница информации об игре
03:36 GOTO — оператор перехода на новую локацию
04:08 Порядок выполнения кода
05:45 Действие перехода
12:06 Типы локаций по использованию в разных играх
12:53 Порядок выполнения кода в игре, на локациях. Как работает плеер
15:46 Пишем локации-комнаты, наполняем игру содержимым
27:19 Проверяем работоспособность локаций и действий переходов, которые мы написали
31:25 Outro

Без номера. Программки-помощники

Spoiler

00:27 Trizbort trizbort.com
03:40 Рисуем карту локаций в программе Trizbort
13:25 Программа MS Visio
18:00 Outro

Урок 5. Предметы

Spoiler

01:02 ADDOBJ — оператор добавления предмета в окно предметов
03:50 Действие поднятия предмета
06:18 DELOBJ — оператор удаления предмета из окна предметов
06:50 Действие сброса предмета
09:09 Предметы кончились, но мы продолжаем выбрасывать. Что будет?
11:09 KILLOBJ — оператор очистки окна предметов
13:58 Outro
14:00 Памятки

Урок 6. Формы записи

Spoiler

00:44 Порядок выполнения кода игры. Как работает плеер
04:33 Две и больше команд в одной строке кода
08:00 Два однострочных действи в одной строке кода
12:55 Порядок воспроизведения плеером нескольких вложенных друг в друга действий
22:16 Предостережение в заключение
23:33 Outro

Урок 7. Операции и выражения

Spoiler

00:26 Порядок выполнения команд. Как работает плеер. Закрепление
01:32 Операторы и значения
03:59 Типы значений: текстовые и числовые
06:29 Выражения
09:26 Операция сложения
10:32 Конкатенация через амперсанд (Склейка строк операцией &)
13:22 Конкатенация через плюс (Склейка строк операцией +)
14:03 Плюсуем число к строке
16:05 Операция вычитания
17:38 Операции умножения и деления
19:51 Операция MOD — вычисление остатка от деления
21:23 Порядок выполнения операций в выражении
24:58 Операции сравнения. Если выражение ложно, в результат выдаётся 0, Если выражение правдиво, в результат выдаётся -1
28:40 Операция отрицания NO
31:23 Унарный минус
32:00 Операция (или функция) OBJ. проверяет наличие предмета. 0 — предмета нет, -1 — предмет есть.
33:46 Логическое И и логическое ИЛИ (AND и OR)
36:22 Outro

Урок 8. ПодВыражения

Spoiler

00:17 Выражения
00:30 Значения выражений
01:10 Как плеер выполняет команду, вычисляет значение выражения
02:45 Числа в константах
02:57 Подвыражения (Вложенные выражения)
06:30 Сложное выражение с подвыражениями
08:50 Тонкости при работе с вложенными выражениями.
11:22 Домашнее задание
11:50 Outro

Урок 9. Переменные

Spoiler

00:18 Проверяем домашнее задание
01:48 Знакомимся с переменными
02:44 Имена переменных
03:21 Различия в именах текстовых и числовых переменных
03:36 Присваиваем переменным значения
12:50 что будет, если записать переменную без оператора
14:30 Лирическое отступление
15:07 Важный момент. Инициализация (объявление) переменных
16:12 Применяем наши новые знания
22:50 Ограничения на использование переменных
25:11 Outro

Урок 10. Конструкции условий. Часть 1

Spoiler

01:34 Оператор условия IF
05:41 Многострочная форма записи оператора условия
09:25 Действие по условию
11:54 Ключевое слово ELSE — код, который выполняется, если условия не срабатывают.
17:35 проверяем, как работает код
24:22 Условие в действии
28:45 Outro

Урок 10. Конструкция условий. Часть 2

Spoiler

00:18 Проектируем перемещение по локации с помощью конструкций условий
05:12 Ключевое слово ELSEIF — иначе если. Если не сработало первое условие, проверяем второе
06:10 и т.д.
11:49 Гуляем по подъезду
16:15 Outro

Урок 11. Операторы, функции, аргументы

Spoiler

00:24 Операторы
01:17 Понятие аргумента
02:00 ADDOBJ — оператор, которому можно передавать два аргумента
04:12 Функции
04:32 RND — возвращает значение от 1 до 1000
06:30 $curloc — возвращает название текущей локации
08:22 $selobj — возвращает название выделенного предмета
10:33 RAND — возвращает случайное число в указанных пределах
12:52 Порядок вычисления выражения с функциями
16:24 Два аргумента к функции RAND
18:41 MAX — функция, которая выбирает наибольшее значение из перечисленных (функция, которой можно передать более двух аргументов)
20:53 MIN — функция, которая выбирает наименьшее значение из перечисленных
22:14 Информация для закрепления
23:23 Outro

Урок 12. Интерфейс и системные переменные

Spoiler

01:19 Меняем настройки плеера
07:56 Включаем/отключаем окна из кода игры
08:36 SHOWOBJS — оператор управления окном предметов
09:31 SHOWACTS — оператор управления окном действий
09:54 SHOWSTAT — оператор управления окном дополнительного описания
10:06 SHOWINPUT — оператор управления полем ввода
10:26 Настраиваем игру, используя операторы управления окнами
12:47 Системные переменные
13:17 bcolor — цвет фона игры
15:07 RGB — функция, вычисляющая числовой код цвета по составляющим, которые передаются в аргументах
17:16 Опыт по получению цветовых составляющих нужного цвета
18:58 fcolor — цвет шрифта игры
19:56 fsize — размер шрифта
20:56 $fname — шрифт, семейство шрифта
22:11 оформляем нашу игру вырвиглазными цветами
27:03 $backimage — фоновый рисунок в окне основного описания
34:00 Outro
34:55 Post-Scriptum

Урок 13. HTML

Spoiler

часть 1
00:35 Что такое HTML
01:24 Создаём первый HTML-документ
03:25 Форматируем HTML-документ с помощью тегов
03:58 Открывающий тег <i> — курсив
05:01 Закрывающий тег </i>
06:25 Как ведёт себя тот же текст в QSP
07:25 Включаем режим обработки HTML. Системная переменная USEHTML
10:50 Справочники по HTML
12:05 Теги <b> и </b> — жирное начертание
12:39 Комбинирование тегов
13:20 Правильно закрывайте теги!!!
14:52 Теги <center> и </center> — центрирование по горизонтали
15:45 Теги <div> и </div> — выделяем текст в блок
16:10 Атрибут align — выравнивание текста по горизонтали
19:25 Тег
— перевод строки
21:09 Тег <hr> — горизонтальная линия
21:54 Теги заголовков <h1> и </h1> … <h6> и </h6>
24:26 Теги <font> и </font> — меняем внешний вид текста
25:20 Атрибут color — меняем цвет текста
28:17 Атрибут size — меняем размер текста
32:40 Атрибут face — меняем шрифт части текста
34:33 Теги <span> и </span> — меняем внешний вид текста
35:21 Атрибут style — задаём набор свойств для стилизации
35:37 Свойство color — задаём цвет текста
35:59 Свойство font-size — задаём размер шрифта
36:15 Свойство font-weight — задаём жирность шрифта
38:39 Outro

часть 2
01:11 Тег <img> — вставка изображения в текст
01:40 Атрибут src — путь к файлу изображения
03:28 Вставляем изображение в название действия
04:45 Атрибут width — задаёт ширину картинки
06:27 Таблицы:
06:43 Теги <table> и </table> — содержимое таблицы
07:50 Структуры таблицы: <tr> и </tr> — строка, <td> и </td> — ячейки таблицы
09:29 Атрибут border — толщина границ таблицы
11:08 Атрибут width — ширина ячеек таблицы
13:23 Пишем сложную таблицу
16:05 Атрибут align — выравнивание текста по горизонтали внутри ячейки
18:39 Атрибут colspan — растягиваем ячейку на ширину нескольких столбцов
20:05 Атрибут valign — выравнивание текста по вертикали
20:40 Типичная ошибка новичка: паразитные переводы строк после таблицы
23:44 Гиперссылки
24:45 Теги <a> и </a> — гиперссылка
25:26 Атрибут href — адрес страницы, на которую надо перейти
26:40 Расширенные возможности гиперссылок в QSP. Ключевое слово EXEC
28:38 Решаем проблему с нехваткой кавычек (экранирование)
33:10 Типичная ошибка новичка: преждевременное раскрытие подвыражений
37:54 Ссылаемся на код действий из ссылок
42:15 Домашнее задание

Edited at 06.01.2020 10:17 (6 years ago)
Aleks Versus Moderator 04.07.2019 11:10 (6 years ago)

oleksandrigo,
спасибо. Надеюсь и следующий будет полезен. Правда он получился очень длинным и пока смонтировано только 25 минут из 70-80.

Aleks Versus Moderator 10.07.2019 11:27 (6 years ago)

Урок 21. Пользовательские служебные локации. Процедуры (GOSUB) и Функции (FUNC). Переменная RESULT, массивы ARGS

Spoiler

Часть 1. GOSUB
00:14 Классификация служебных локаций
00:57 Служебные локации: локации-пункты меню
01:10 Работа плеера со служебными локациями на примере меню
01:51 Общая схема работы плеера со служебными локациями
02:16 Оператор GOSUB
03:05 Упрощаем код с помощью GOSUB
08:11 Вспоминаем Операторы, Функции и Аргументы
08:26 Сколько аргументов можно передавать оператору GOSUB
08:54 Зачем нужны остальные девять аргументов
09:02 Используем аргументы при вызове локации с помощью GOSUB
09:50 Где искать значения переданных аргументов
11:47 Повторяем для закрепления, как работает
12:41 Упрощаем терминологию. Как и что называть.
13:20 Переписываем сброс книг для закрепления
14:08 Замечательное свойство массива args[]
14:53 Свойства массива args[], как массива
15:31 Используем ячейки массива args[] в качестве локальных переменных
24:05 Что будет с args[], если из одной подпрограммы вызвать другую
31:52 Почему массив args[] ведёт себя так странно?
32:43 Блоки кода и массивЫ args[]
33:41 Работа плеера — блоки кода
37:01 Рекурсия
37:47 Пишем рекурсивную процедуру
39:26 Пытаемся предсказать результат рекурсивной процедуры
47:50 Проверяем предсказание
48:36 Дисклеймер о работе плеера
49:28 Суммируем знания
50:12 Передача аргументов на локацию с оператором GOTO
Часть 2. FUNC
00:21 Вступление. Операторы - локации-процедуры, Функции – локации-функции
00:43 Функция FUNC
00:58 Пишем аналог функции возведения в степень
09:25 Как работать с локацией-функцией. Вызов через FUNC
11:01 Куда вписать результат? Переменная RESULT
12:25 Запускаем и проверяем
13:48 Упрощаем терминологию. Как и что называть. Снова.
14:25 Тестируем нашу функцию
15:52 Неверный результат!!! Ограничения QSP
17:27 Ограничения на число аргументов
17:53 Интересное поведение RESULT
21:44 Оператор EXIT. Прерываем выполнение блока кода
23:03 Заключение
23:38 Группа в VK
23:50 Обещания
24:11 Outro, анонс уроков
24:30 Агитка QSPCOMPO
24:41 Поддержите развитие платформы

P.S.: Уберу видео из сообщений — страница виснет при загрузке. Оставлю таймлинки.

Aleks Versus Moderator 27.09.2019 06:05 (6 years ago)

Урок 22. Динамическое создание кода. Dynamic и Dyneval

Spoiler

00:36 Оператор DYNAMIC
03:59 Помещаем код в переменную.
05:31 Типичная ошибка новичка. Вместо значения переменной указывается её имя
06:55 Применяем на практике возможность помещать код в переменную.
14:41 Динамически генерируемый код. Пишем простой пример
23:55 Действия на локации “подъезд”. Что с ними не так?
25:10 Пример неправильной генерации действий. Типичная ошибка новичка.
28:12 Исправляем неверную генерацию действий, используя DYNAMIC
30:50 Исправляем генерацию действий на локации “подъезд”
33:18 фигурные скобки и оператор DYNAMIC
35:09 аргументы к оператору DYNAMIC
36:02 Функция DYNEVAL — краткое описание
36:40 Пишем аналог функции возведения в степень, используя DYNEVAL
39:46 Заключение
40:12 Домашнее задание
40:42 Outro

Aleks Versus Moderator 07.11.2019 16:04 (6 years ago)

Урок 23. Регулярные выражения
Налетайте

Spoiler

00:00 intro
00:14 введение
00:42 Определение. Регулярное выражение.
01:06 Простые регулярки на примере поиска слов по маске
02:32 Символы и метасимволы
03:30 Составляем простые регулярки и смотрим на примере текста, каким его частям они соответствуют
04:40 Метасимвол . (точка) — любой символ
07:12 Квантификаторы
08:43 Квантификатор  — число вхождений в пределах от n до m
09:43 Метасимвол \w — буква, цифра или символ подчёркивания
11:21 Метасимвол \b — граница слова
12:42 Квантификатор * — 0 или более вхождений
15:10 Фукции QSP для работы с регулярными выражениями
15:15 ARRCOMP — поиск в массиве элемента, соответствующего
17:51 Объявление собственного класса символов — метасимволы []
18:55 Задаём ряд символов при объявлении класса с омощью пределов [A-Za-z]
20:20 Квантификатор + — одно или более вхождений
21:57 Регулярное выражение внутри регулярного выражения — группировка, метасимволы ()
25:08 STRCOMP — возвращает -1, если текст соответствует регулярному выражению, и возвращает 0, если не соответствует.
26:23 Метасимвол | — указываем альтернативные варианты
27:00 Квантификатор ? — одно или ноль вхождений
30:58 $STRFIND — возвращает подстроку, соответствующую шаблону
34:55 Кое-что о метасимволе . (точка)
36:27 Жадная выборка. Жадный квантификатор
37:15 Ленивый квантификатор
38:30 Знак отрицания при объявлении класса [^]
39:51 Нравственное поучение по поводу регэкспов
40:29 STRPOS — возвращает номер символа, с которого начинается вхождение подстроки
41:54 Конец урока. О чём не рассказал в этом уроке.
44:04 Outro

Aleks Versus Moderator 06.01.2020 10:09 (6 years ago)

Урок 24. Диалоговое окно с полем ввода, строка ввода, usercom, отладчик

Spoiler

00:00 Intro
00:18 Окно ввода. Функция $input
01:03 Делаем сейф с паролем
07:33 Тонкости использования $input
09:10 Совет по геймдизайну. О сейфах и паролях
10:00 Взаимодействие игрока с игрой с помощью окна ввода. Сколько предметов хотим поднять?
15:20 Поле ввода. $usercom
18:35 Пробуем вводить команды в строку ввода
19:30 Локация-обработчик строки ввода. $usercom
21:50 Функция $user_text
23:25 Создаём простейшую команду для строки ввода: телепорт.
32:47 Отладчик
33:44 Разграничиваем режимы работы командной строки: для игрока и для разработчика
35:22 Создаём возможность выполнение любой строки кода QSP в режиме разработчика
39:18 Пишем команду, которая будет выводить содержимое массива на экран
43:43 Пишем команду для отслеживания состояния некоторых переменных
49:04 Расширяем синтаксис команды — простой парсинг
01:00:05 Микроотладчик
01:01:11 Необычное использование строки ввода. Реализация WASD от ejikplains
01:01:45 Outro
Упомянутые игры:
15:02 “I”, автор: Mioirel
16:30 “Волшебный экзамен”, автор: Larson
17:06 “Великая пустота 9”, коллектив авторов
17:35 “Dark-Net” (demo), автор: Svartberg
Сопутствующие функции и операторы:
11:30 isnum
12:00 val
15:42 showinput
16:05 cmdclear
24:47 instr
25:39 $replace
26:58 $trim
27:22 loc

Aleks Versus Moderator 18.01.2020 12:36 (6 years ago)

Урок 25. Заключительная часть серии “Для новичков”

Spoiler

00:00 Вступление
01:10 Преформатирование
05:50 Перенос длинных строк кода
09:40 Комментарии кода QSP
14:20 Комментарии HTML-кода
15:10 Гиперссылки без подчёркивания
15:54 Работа в нескольких окнах в QGen
16:30 Работа с папками. Файл проекта
17:30 Инкремент и декремент
19:34 Первая и последняя ячейки массива
24:03 Операторы SET и LET
24:40 Подключаемые файлы: модули и библиотеки
28:15 Поиск ошибок. Анализатор кода
32:42 Работа с сохранениями
34:20 Ограничения QSP
41:01 Как сделать аналог булевого типа? true и false
43:26 Заключение
45:18 Outro

Понимаю что прошу наверное нечто невероятное, но вот у меня какая мысль появилась: можно ли сделать так чтобы пока играешь в игру, у тебя есть возможность переписывать текст? То есть например если я хочу перевести игру с русского на английский то было бы удобнее напрямую в самой игре изменять элементы содержащие текст.

Впрочем если это невозможно то у меня более важный вопрос: в игре очень много страниц, локаций и так далее. Чтобы затестить работает ли игра без багов после нескольких изменений в коде мне приходиться открывать игру заново и доходить до того момента в игре где я изменил код. Может быть есть что то вроде предварительного просмотра в QGen? Чтобы открывалась сразу локация которую я выбрал

Yamiko,
Через плеер нельзя изменить файл игры.
Через отладчик можно пробовать работу кода прямо в игре.
http://wiki.qsp.su/help:debugger

А зачем доходить до момента, сейв нельзя использовать?

Aleks Versus Moderator 07.02.2020 09:25 (6 years ago)

Yamiko,
именно в предпоследнем уроке я давал ответ на “более важный вопрос”. Там мы даже пишем собственный отладчик под собственные нужды. ;)

Log in or Register to post comments.