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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 Спойлер Show Spoiler Hide 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
 Спойлер Show Spoiler Hide 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
 Спойлер Show Spoiler Hide Spoiler
 00:54 Апострофы
01:13 Фигурные скобки
02:07 Многострочный текст
04:18 Зачем текст помещается в кавычки, апострофы или фигурные скобки
05:57 Как выводить на экран кавычки, апострофы и фигурные скобки
08:05 Экранирование кавычек и апострофов
10:38 Outro
Урок 3. Действия
 Спойлер Show Spoiler Hide 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. Переходы
 Спойлер Show Spoiler Hide 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
Без номера. Программки-помощники
 Спойлер Show Spoiler Hide Spoiler
 00:27 Trizbort trizbort.com
03:40 Рисуем карту локаций в программе Trizbort
13:25 Программа MS Visio
18:00 Outro
Урок 5. Предметы
 Спойлер Show Spoiler Hide Spoiler
 01:02 ADDOBJ — оператор добавления предмета в окно предметов
03:50 Действие поднятия предмета
06:18 DELOBJ — оператор удаления предмета из окна предметов
06:50 Действие сброса предмета
09:09 Предметы кончились, но мы продолжаем выбрасывать. Что будет?
11:09 KILLOBJ — оператор очистки окна предметов
13:58 Outro
14:00 Памятки
Урок 6. Формы записи
 Спойлер Show Spoiler Hide Spoiler
 00:44 Порядок выполнения кода игры. Как работает плеер
04:33 Две и больше команд в одной строке кода
08:00 Два однострочных действи в одной строке кода
12:55 Порядок воспроизведения плеером нескольких вложенных друг в друга действий
22:16 Предостережение в заключение
23:33 Outro
Урок 7. Операции и выражения
 Спойлер Show Spoiler Hide 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. ПодВыражения
 Спойлер Show Spoiler Hide Spoiler
 00:17 Выражения
00:30 Значения выражений
01:10 Как плеер выполняет команду, вычисляет значение выражения
02:45 Числа в константах
02:57 Подвыражения (Вложенные выражения)
06:30 Сложное выражение с подвыражениями
08:50 Тонкости при работе с вложенными выражениями.
11:22 Домашнее задание
11:50 Outro
Урок 9. Переменные
 Спойлер Show Spoiler Hide 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
 Спойлер Show Spoiler Hide Spoiler
 01:34 Оператор условия IF
05:41 Многострочная форма записи оператора условия
09:25 Действие по условию
11:54 Ключевое слово ELSE — код, который выполняется, если условия не срабатывают.
17:35 проверяем, как работает код
24:22 Условие в действии
28:45 Outro
Урок 10. Конструкция условий. Часть 2
 Спойлер Show Spoiler Hide Spoiler
 00:18 Проектируем перемещение по локации с помощью конструкций условий
05:12 Ключевое слово ELSEIF — иначе если. Если не сработало первое условие, проверяем второе
06:10 и т.д.
11:49 Гуляем по подъезду
16:15 Outro
Урок 11. Операторы, функции, аргументы
 Спойлер Show Spoiler Hide 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. Интерфейс и системные переменные
 Спойлер Show Spoiler Hide 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
 Спойлер Show Spoiler Hide 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 Тег <br> — перевод строки
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 Домашнее задание

Изменено: aleksversus
16.Июл.19 11:35:08
Aleks Versus
воздвигатель башни
useravatar
Offline
1492 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Хмм как идея вот штука для облегчения записи перехода или обработки локации с помощью html. Кидать лучше в onNewLoc

 Спойлер Show Spoiler Hide Spoiler
 

Код:


!{ Форматы ссылок:
((текст)) - при клике перейти (gt) на локацию с названием "текст"
((текст||)) - при клике обработать (gs) локацию с названием "текст"
((текст|локация)) - при клике перейти (gt) на указанную локацию, текущее описание заменяется новым
((текст||локация)) - при клике обработать (gs) указанную локацию, новое описание добавляется к текущему
((текст|||строка кода)) - при клике выполнить строку кода
((текст|локация|строка кода)) - то же, что и ((текст|локация)), но перед переходом выполнить строку кода
((текст||локация|строка кода)) - то же, что и ((текст||локация)), но перед обработкой выполнить строку кода
}
$text = $maintxt
$regex = '\(\(([^\)\|]+)(\|{0,3})([^\)\|]*)(\|?)([^\)]*)\)\)'
:loop
position = strpos($text, $regex)
if position:
    $words = strfind($text, $regex, 1)
    $firstDee = strfind($text, $regex, 2)
    $location = strfind($text, $regex, 3)
    $secondDee = strfind($text, $regex, 4)
    $stringCode = strfind($text, $regex, 5)
    if $location = "" and $stringCode = "":
        if $firstDee <> "":
            $link = '<a href="exec: gs ''<<$words>>'' "><<$words>></a>'
        else
            $link = '<a href="exec: gt ''<<$words>>'' "><<$words>></a>'
        end
    elseif $stringCode <> "" or $location <> "":
        if len($firstDee) = 1:
            $link = '<a href=''exec: dynamic "<<$stringCode>>" & gt ''<<$location>>'' "><<$words>></a>'
        elseif len($firstDee) = 2:
            $link = '<a href=''exec: dynamic "<<$stringCode>>" & gs ''<<$location>>'' "><<$words>></a>'
        else
            $stringCode = $location
            $link = '<a href=''exec: dynamic "<<$stringCode>>" ''><<$words>></a>'
        end
    end
    $text = replace($text, strfind($text, $regex), $link)
    jump 'loop'
end
*clr
$text

пример

Код:


*p 'В класе сидят ученики. Один из них ((Кунын|||gt ""Dialog1"", ""Kunin"")), который вам до сих пор должен полтинник.'
*pl
*nl 'Пара '
if provBaba = 0:
    *p '((девчёнок|||gt ""Dialog1"", ""Baba"")) хихикающих как гиены.'
elseif quest_progres['Влюбленность!'] = 1:
    *p '((девчёнок|||gt ""Dialog1"", ""Baba"")).'
else
    *p 'девчёнок, то и дело посматривают на вас.'
end
*nl
*nl 'Ваш классный руководитель ((Анигелина Семёновна|||gt ""Dialog1"", ""U4ilka"")).'
*nl
*nl 'И стандартный ((школьный задира|||gt ""Dialog1"", ""Zadira"")).'

Здесь надо было передавать аргумент поэтому так записывал. А можно было бы ((текст|локация)) если не нужны аргументы при передаче.

oleksandrigo
ТвореЦ
useravatar
Offline
102 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

oleksandrigo,
я делаю в своих играх нечто подобное, да. Правда синтаксис несколько отличается.

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

Код:

[page=366]делаете шаг вперёд[/page]


на земле лежит[obj]яблоко|спелое яблоко[/obj].

Поэтому, да, я планирую урок, который покажет, как облегчать себе работу и делать динамическую обработку текста локации, но я склоняюсь к более простому примеру. Сделать что-то вроде типографа Олегуса только полегче.

Aleks Versus
воздвигатель башни
useravatar
Offline
1492 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

прост оставлю тут + и пойду)))
Умеешь объяснять))) несмотря на тот факт, что, казалось бы, уже кучу всего знаю, но некоторые моменты были новы.
...
з.ы. Вспоможительные, плиз на вспомогательные, если только это не особенность

ejikplains
useravatar
Offline
50 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

ejikplains написал(а):

з.ы. Вспоможительные, плиз на вспомогательные, если только это не особенность

Слово "вспомогательные" не совсем то, но ок, исправил.)

Изменено: aleksversus
08.Дек.18 08:38:55
Aleks Versus
воздвигатель башни
useravatar
Offline
1492 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Aleks Versus,
А таймлайн какой-то можно будет прикладывать?
Ролики долгие и нужное найти непросто

Последний из Гаяр
Неуклюжий хранитель
useravatar
Offline
61 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Последний из Гаяр,
отличная мысль. Почему-то она мне в голову не приходила. Попозже сделаю.

Aleks Versus
воздвигатель башни
useravatar
Offline
1492 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Ого, Алекс крутой! А я только сейчас эту тему увидела.

Ajenta
демиург
useravatar
Offline
1364 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Ajenta,
спасибо smile

Aleks Versus
воздвигатель башни
useravatar
Offline
1492 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Урок 14. Массивы

 Спойлер Show Spoiler Hide Spoiler
 Часть 1
00:28 Проверка ДЗ. п.1. Действие по условию
04:25 Проверка ДЗ. п.1. Описание по условию
06:30 Типичная ошибка новичка при использовании goto в действии
09:40 Оператор wait
13:33 Проверка ДЗ. п.2. Текст с гиперссылкой
15:25 Системная переменная lcolor — изменяем цвет всех гиперссылок в игре
16:15 Проверка ДЗ. п.3. Описание с использованием html-тегов
16:39 Проверка ДЗ. п.п.4,5,6,7. Создаём три предмета для покупки у торговца
24:12 Что такое массивы и в чём их отличие от переменных
26:22 Удобство массивов по сравнению с переменными
27:30 Вводим переменные для возможности сброса книг на любой локации
39:21 Заменям переменные на массивы.
46:36 Outro
Часть 2
01:30 размер массива, функция arrsize
05:25 массив размером в одну ячейку
06:01 поиск индекса по значению в массиве, функция arrpos
09:36 Уничтожение ячеекмассива, оператор killvar
11:36 Поиск наибольшего и наименьшего значений в массивах, функции max и min
12:55 Копирование массивов, оператор copyarr
17:10 Текстовые индексы. Правим код
18:06 Текстовые индексы. Что делает плеер
23:00 Текстовые индексы. $curloc
30:18 Outro

Aleks Versus
воздвигатель башни
useravatar
Offline
1492 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
974
Всего опросов:
14
Всего сообщений:
16790585
Сообщений на этой неделе:
7
Пользователи форума:
 
Всего пользователей:
2369
Последним зарегистрировался:
genger