Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #26
08.09.2011 10:43

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Столкнулся с явлением перехода количества в качество: регулярность возникновения некоторых проблем перевела их из категории исключений в категорию "нереализованного общего подхода". Пришлось кое-что переписать, в том числе и модуль контейнеров. И параллельно нашлось, над чем подумать…

В общем, у меня у любого объекта (локация, персонаж, предмет) может быть произвольное число контейнеров. Само-собой, объекты можно размещать в контейнерах (локации нельзя, но это искусственное ограничение). Так вот, если запихнуть игрока в контейнер какого-либо предмета, то что тогда выводить в качестве описания "локации"? Самое простое — ограничить размещение персонажей только контейнерами локаций — в этом случае можно просто выводить соответствующий вариант описания (у варианта описания прописать условие, что оно выводится, только если персонаж находится в таком-то контейнере)…

Неактивен

0    0    #27
11.09.2011 00:07

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Хм… Иногда моя работа над Адским Движком™ напоминает мне это:

http://comicsia.ru/i/7e/ad-32429.png

Неактивен

0    0    #28
11.09.2011 18:06

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

fireton написал:

Не, ну ты сам того добился. smile
Делал бы себе игру и движок молча... Теперь терпи. smile

Да я как-то не жалуюсь. Даже наоборот.

Неактивен

0    0    #29
13.09.2011 20:55

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Хм… Сколько останется, если из "Бесконечности" вычесть "Всё что есть"?

Неактивен

0    0    #30
14.09.2011 10:19

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Раз у нас такие лингвистические шутники водятся, то я, пожалуй, переименую константу "ЧЛ" ("ЧисЛо"), обозначающую числовой тип аргумента, в "ЧС".

Неактивен

0    0    #31
17.09.2011 14:27

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

В правильном ролике "Алфавит по хардкору", глаз зацепился за кадр с буквой Q, из чего родилось настроение логотипа для Адского движка:

https://ifiction.ru/i/qsp-az-logo.png

Неактивен

0    0    #32
10.10.2011 21:48

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

А между тем работа, хоть и медленно, но идёт.

Кстати, сегодня ввиду плохого самочувствия и настроения пришла мысль, как сделать синтаксис команд Адского движка ещё кошмарнее:

Например, команда добавления действия с объектом:

Код:

GS 'УстановитьДействие', <Объект>, <Название пункта меню>, <Иконка>, <Условие>, <Обработчик>, <Модуль>

Её можно записать так (текущий работающий вариант):

Код:

GS 'УстановитьДействие', 'Портсигар', 'Осмотреть/Осмотреть портсигар', 'осмотреть', '', '', {
    GS 'ОписаниеНаЭкран', 'Портсигар'
}

а если порядок аргументов забыли (как я сегодня), то можно ведь сделать и так:

Код:

GS 'УстановитьДействие', $ПС + '
    Объект: Портсигар
    ПунктМеню: Осмотреть
    Действие: Осмотреть портсигар
    Иконка: осмотреть
    Модуль: "
        GS 'ОписаниеНаЭкран', 'Портсигар'
    "
'

$ПС в данном случае — это просто системный префикс, чтобы отловить такой вот изврат.

Что это добавляет кроме монументальности? Хороший вопрос!.. Наверное, в основном возможность произвольного расположения параметров и пропуска ненужных. Кроме того легче добавлять множество различных параметров, которые вроде как особо не нужны, но если их указать, то в некоторых случаях они могут изрядно сократить код.

Для альтернативно одарённых: советовать мне переходить на INSTEAD не надо.

Неактивен

0    0    #33
03.11.2011 15:08

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

В своё время мою идею маскировать ссылки на объекты в тексте (делая их тем же цветом, что и текст) подвергли критике, хотя были и те, кто эту идею поддержал.

Однако, добавление в описание объектов только для антуража делает текст слишком "пёстрым". Так может для подобных объектов добавить свойство "Не выделять ссылку", при установке которого ссылка на этот объект и будет маскироваться под обычный текст?

P.S. Хотя со временем, идея маскировать ссылки мне кажется всё более привлекательной.

Неактивен

0    0    #34
03.11.2011 23:38

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Ну так я с этой идеи — максимально маскировать ссылки — и начинал, потому как основная цель была в достижении как раз того эффекта, который ты описываешь. Так что потестирую, пожалуй, ещё. Или выведу маскировку ссылок в настройки — типа как уровень сложности.

Неактивен

0    0    #35
04.11.2011 11:31

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

WladySpb написал:

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

Я думал насчёт пиксельхантинга. В принципе сравнение тут не особо корректное — изменение курсора над ссылкой и ограниченный размер текста делают процесс не столь утомительным. Зато потенциально возможна как раз та отдача, о которой упоминал gloomy.

Неактивен

0    0    #36
04.11.2011 11:47

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Oreolek написал:

Во-вторых, на планшетах и телефонах такого события, как наведение курсора мыши, вообще не существует.
В-третьих, в чём должен заключаться сам процесс игры? Вот вывалилось на игрока два экрана текста. Либо он внимательно прочитает, пролистает, затем проверит мышкой каждое слово, затем начнёт думать, либо просто внимательно прочитает и начнёт думать. Зачем мешать ему думать над игрой, заставляя проверять каждое слово на двойное дно?

Насчёт планшетов и телефонов — резонно.

А зачем вываливать на игрока два экрана текста в самом игровом процессе (т.е. не во вступлении или текстовых вставках, а именно в описании локаций, объектов и т.п.)? Это пагубная привычка.

Неактивен

0    0    #37
12.03.2012 14:37

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Что-то совсем забросил тему, хотя работа некоторое время назад возобновилась.

Поскольку текст у меня идёт сплошняком (textflow — модное слово!), добавил автоматический вывод на экран маркера, который помечает с какого места появился новый текст для игрока. Выглядит это примерно так:
https://ifiction.ru/i/scr/qsp_scr_text_001.png
Вот та чёткая пунктирная линия — и есть чёткий такой маркер. Само собой, при появлении новой порции текста старый маркер исчезает.
Пока проверяю на себе — очень удобно.

Неактивен

0    0    #38
12.03.2012 14:51

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Да, и пришлось обломаться с порционным выводом текста. То есть была задумка добавить в функцию вывода текста:

Код:

…ТекстНаЭкран, 'Привет мир!'

тег "<-далее->", чтобы команда:

Код:

…ТекстНаЭкран, 'Привет мир!<-далее->Я всех ненавижу!'

выводила сначала "Привет мир!", а потом (после нажатия на пробел или маленькую ссылочку "продолжить") — "Я всех ненавижу!". Это позволило бы нагнетать атмосферу и выводить неожиданные обороты. Драматическая пауза на заданное время — это выход, но я не люблю решения с фиксированными паузами (и недолюбливаю людей, которые этим приёмом злоупотребляют). Поэтому отложил это до лучших времён.

P.S. Почему не получилось? Потому что в QSP-Classic невозможно остановить выполнение кода в отдельной точке (если это не input или msg, конечно же), подождать действия игрока, а потом продолжить далее.

Неактивен

0    0    #39
28.03.2012 21:47

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Наткнулся на несколько головоломных моментов:

1. Ссылки на некоторые объекты хотелось бы иметь активными всегда, а не только когда объект находится в известных игроку "контейнерах". Известные контейнеры — это содержимое текущей локации и осмотренные игроком объекты в ней. Так, например, упоминание в описании каких-нибудь объектов или персонажей, которых рядом с игроком как бы и нет. В этом случае можно для объекта указать спец. режим обработки ссылок — т.е. ссылка активна всегда, когда объект в доступных контейнерах или когда при нажатии на него формируется меню.

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

2. Что делать с ссылками на локации. Сейчас они у меня активны всегда, однако во время игры сразу же наткнулся на проблему "локация в нескольких переходах".
Вариант — активна всегда локация, в которой находится игрок, плюс автору добавляется возможность указывать перечень локаций, откуда будет доступна та или иная локация. А можно и не заморачиваться, а пойти по пункту 1 и локациям добавить автоматическое присвоение признака "ссылки активны всегда" — а уж за наличие пунктов в меню пусть отвечает автор.

P.S. Чтобы никто заново не возбуждался — под автором я всё ещё подразумеваю себя, хоть и говорю отвлечённо.

Неактивен

0    0    #40
28.03.2012 22:10

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Да, и поскольку всякие действия, описания, упоминания и т.п. содержат модуль условия их использования, и этот модуль зачастую состоит из одной строчки типа:

Код:

{°Результат=IIF(©Параметр='Встать',Использовать,Пропускать)}

то добавил возможность использования сокращённой формы:

Код:

{if:©Параметр='Встать'}

Так и короче пишется, и не нужно помнить, какая константа ("Использовать", "Пропускать" и т.п.) для данной конструкции означает использование, а какая — пропуск.

Неактивен

0    0    #41
29.03.2012 07:44

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Nex написал:

Фигасе, значки градуса и копирайта?! Как их набирать?

Клавиатурная раскладка Ильи Бирмана: http://ilyabirman.ru/projects/typography-layout/

Nex написал:

2. Что делать с ссылками на локации.

См. классику INSTEAD.

Как насчёт развернуть свою мысль, чтобы было ясно, что же ты имеешь в виду?
Так, у меня на экране может одновременно находится описание нескольких локаций (textflow), а также описания предметов и действий с упоминаниями тех или иных объектов, ссылки на которые автоматически гасятся, если объекты недоступны. Я не припомню, чтобы кто-нибудь говорил про такое в контексте INSTEAD.

Неактивен

0    0    #42
29.03.2012 16:48

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Olegus t.Gl. написал:

Так, у меня на экране может одновременно находится описание нескольких локаций (textflow), а также описания предметов и действий с упоминаниями тех или иных объектов, ссылки на которые автоматически гасятся, если объекты недоступны. Я не припомню, чтобы кто-нибудь говорил про такое в контексте INSTEAD.

Nex написал:

В классических играх INSTEAD уже давно решили эту проблему. Можно взять того же "Квантового Кота", посмотреть, как это реализовано, и сделать так же.

В "Квантовом коте" на экране присутствует только результат последнего действия (после нажатия на ссылку) и текущее описание локации (подобный вариант я разбирал тут). Поэтому говорить, что там "давно решили эту проблему", неправильно — там этой проблемы просто не существует. А предложение "можно взять и сделать так же" — это типа как советовать желающему научиться кататься на лыжах сесть на санки. А что? ведь там "уже давно решили проблему" устойчивости…

Неактивен

0    0    #43
29.03.2012 20:18

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Nex написал:

При чем тут то, что находится на экране? Постановка вопроса такая:

Что делать с ссылками на локации. Сейчас они у меня активны всегда, однако во время игры сразу же наткнулся на проблему "локация в нескольких переходах".
Вариант — активна всегда локация, в которой находится игрок, плюс автору добавляется возможность указывать перечень локаций, откуда будет доступна та или иная локация. А можно и не заморачиваться, а пойти по пункту 1 и локациям добавить автоматическое присвоение признака "ссылки активны всегда" — а уж за наличие пунктов в меню пусть отвечает автор.

Вот на это я и дал ответ. То, что ты там подразумевал не то, о чем в итоге написал - твои проблемы.

Даже если отбросить тот факт, что ты участвовал в обсуждении разрабатываемого мной интерфейса (с теми же мыслями впрочем), вместе с просьбой развернуть мысль я напомнил о его (интерфейса) особенностях, хотя эту часть ты, судя по ответу, проигнорировал. Тебе интересно раз от раза давать однотипные советы, даже если тебе говорят, что они не подходят? Не очень полезное времяпрепровождение, право…

Неактивен

0    0    #44
29.03.2012 20:37

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Nex написал:

Это был не совет, а ответ на вопрос. То, что мой ответ показался тебе неприемлемым, не моя забота.

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

Неактивен

0    0    #45
31.03.2012 13:00

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Посмотрел код "Адского движка" на выходе (т.е. включаемый в "состав" игры). Понял, как важно не потерять исходники исходников…

Пример кода (редактор EmEditor), с которым я и работаю:
https://ifiction.ru/i/scr/qsp_scr_code_002.png

Получаемый в результате код (редактор QGen):
https://ifiction.ru/i/scr/qsp_scr_code_003.png

Неактивен

0    0    #46
31.03.2012 17:54

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Zeantar написал:

Обычная конструкция. Что ты хотел сказать этим?

Ровно то, что написал в первой же строчке: "Понял, как важно не потерять исходники исходников…" Восстанавливать верхний кусок кода из нижнего в случае утраты исходников исходников будет непросто. Равно как и пытаться понять реализованные алгоритмы по нижнему варианту кода.

P.S. Вообще-то тут не приветствуется стиль общения а-ля чат. И важно не только смотреть на картинки, но и читать, что пишут другие.

Неактивен

0    0    #47
31.03.2012 21:30

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Zeantar написал:

Приветствуется твой монолог, хочешь сказать?

В этой теме? Вполне возможно что и так, поскольку цель этой темы — ознакомить, а не разъяснить.
Однако, в любом случае приветствуется обсуждение, интересное обеим сторонам, что подразумевает внимательное чтение реплик друг друга. Если ты не понял что-то в этой довольно специфической теме форума — лучше перечитай (можно несколько раз) прежде чем задавать вопросы, ведь на них должно быть интересно отвечать.

Для обсуждения друг друга лучше всего подходит раздел "Изба". Здесь продолжать подобный оффтоп не нужно.

Неактивен

0    0    #48
05.04.2012 21:29

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

А между тем на Asus EeePC 901 первоапрельский трейлер заметно притормаживает. Замеры времени выполнения некоторых участков кода (через MSECSCOUNT) выявили кое-какие любопытные участки с серьёзным ухудшением времени обработки. Есть над чем подумать.

Неактивен

0    0    #49
21.04.2012 00:17

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Olegus t.Gl. написал:

Да, и пришлось обломаться с порционным выводом текста.

Код:

…ТекстНаЭкран, 'Привет мир!<-далее->Я всех ненавижу!'

P.S. Почему не получилось? Потому что в QSP-Classic невозможно остановить выполнение кода в отдельной точке (если это не input или msg, конечно же), подождать действия игрока, а потом продолжить далее.

Теперь получилось. Задействовал тот же подход, что и в диалогах (можно увидеть в трейлере): при выводе порций текста, все ссылки на экране гасятся, пока текст не будет выведен до конца.

Неактивен

0    0    #50
11.05.2012 23:06

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2904
Вебсайт

Re: Заметки по работе над "Адским движком" (фреймворком для QSP)

Хм… Наткнулся на некоторую проблему (не знаю пока, насколько серьёзную) с реализацией чекпоинтов. А именно — момент сохранения чекпоинта.

Как в своё время отмечал Байт, нужно помнить, что при сохранении состояния игры командой SAVEGAME сохраняется не точка кода, а лишь, грубо говоря, состояние переменных и содержимое экрана. То есть нельзя рассчитывать на то, что при восстановлении код продолжит выполнятся с того места, где вы вызвали SAVEGAME — у вас просто нарисуется экран и восстановятся переменные.

Таким образом вызывать SAVEGAME нужно в том месте кода, после которого гарантировано ничего выполняться уже не будет. А у меня с этим очень непросто, потому как игровой код (откуда и вызывается команда создания точки сохранения) обрамлён служебным кодом фреймворка.

Код:

1. Начало служебной функции
2. Заполнение вспомогательной информации
3. Запуск игрового кода
4. Вызов SAVEGAME
5. Окончание игрового кода
6. Чистка вспомогательной информации
7. Завершение служебной функции

И если потом загрузить такой чекпоинт (командой OPENGAME), то в нём будет присутствовать всякий мусор, поскольку чистки вспомогательной информации (п.6) и корректного завершения служебной функции (п.7) произведено не было и не будет, потому как у нас восстановится состояние игры в пункте 4 и никаких дополнительных действий произведено не будет.

Предусмотреть состав вспомогательной информации, чтобы как-то почистить её в локации-обработчике загрузки состояния игры ($ONGLOAD), невозможно. Так что есть над чем подумать.

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru