QSP-плеер: вопросы и предложения
Этим сообщением открывается тема вопросов и предложений касающихся QSP-плеера.
Есть предложение/просьба, не совсем по плееру, а скорее по QSP ядру.
Если это возможно: организовать API по “хот-свапу” кода конкретных локаций без перезагрузки QSP файла целиком.
Мои познания по ядру QSP - ничтожны, но как я понимаю, мы вгружаем QSP файл целиком на старте (а не стримим его, т.е. не последовательно читаем его с диска), тем самым даже обновив .qsp файл (или .qsps/.qsp в случае с qSpider) - Нам всё ровно нужно его заново “загружать” в QSP чтоб получить обновлённый код.
Так вот, если это возможно: Было-бы хорошо по API отправлять ядру запрос на замену кода конкретной загруженной #локации
Но опять-же, это “хотелки” и я не уверен что это возможно легко организовать, т.к. я совершенно не разбираюсь во внутренних системах QSP движка.
Интересное предложение. Теоретически это возможно, но скорее всего в таком случае будет несколько вызовов для замены базового описания, базовых действий и кода локации.
Если честно, я совершенно не понимаю как оно там всё обрабатывается.
Но я видел, что txt2gam обрабатывает код для этих блоков отдельно (когда с исходниками txt2gam ковырялся).
Тем не менее, я никогда не встречал использование “Базового описания” и “Базовых действий” в реальных проектах, обычно все ограничиваются только “Кодом локации”.
Но в любом случае - это было-бы супер-полезная функция для разработчиков (по крайней мере мне этого крайне не хватает), практически все современные движки поддерживают хотсвап в том или ином виде, а QSP в виду своей спицифики - это орагинизовать невозможно не изменяя ядро.
Есть предложение/пожелание по плееру. (И одновременно вопрос)
Есть ли в перспективе планы переводить классический плеера н webView2?
Т.е. чтоб была поддержка современных форматов (webm/webp, mp4 итд) и поддержка CSS?
Вот чего критически нехватает классическому плееру - так это поддержки CSS, и да, я понимаю что есть альтернативы в которых это есть…
Т.е. есть qQsp и есть qSpider, но qQsp уже 6+ лет не получал никаких обновлений и проблем у него куча, да и собирать его - тот-ещё квест (на легаси QT5).
Ситуация с qSpider намного лучше, у него много разных функций и фич, тем не менее, в qSpider страдает производительность, т.к. реакт = боль.
Хотелось-бы иметь максимально нейтральную альтернативу, только c “базовым” функционалом и чтоб работало всё быстро.
Т.е. классический плеер с базовой поддержкой CSS и современных видео/графических форматов - был-бы идеальной альтернативой.
А вопрос вот в чём - сложно было-бы такое провернуть? И есть-ли подобное в планах?
В планах есть и это не очень сложно. Не знаю, когда доберусь до плеера.
Byte,
Я поковырял этот вопрос, удалось прикрутить “wxwebview” и оно вроде-как даже работает.
Но есть проблемы с локальными файлами, как я понял, там надо кастомный протокол делать чтоб плеер мог читать локальные файлы.
В общем посмотрим что из этого выйдет.
*UPD: Провал. Нехватает фундаментальных знаний C++, wxWebView и прочего с этим связанного. LLMы тоже особо не вывозят этот вопрос, т.к. тема узкоспециализированная и “вариантов” решаения куча, только ни один из них не сработал. (Т.е. с созданием и обработкой кастомных протоколов)
В общем, буду надется что в конечном итоге у вас до этого дойдут руки.
String мало где применяется в отличие от Strength.
STR - можно переименовать на пример в strn?
Когда в игре создаешь базовые характеристики STR(Strength), DEX(Dexterity), CON(Constitution), INT(Intelligence) и т.д., использовать STR становиться не удобно.
Tom Run:
String мало где применяется в отличие от Strength.
STR - можно переименовать на пример в strn?
Когда в игре создаешь базовые характеристики STR(Strength), DEX(Dexterity), CON(Constitution), INT(Intelligence) и т.д., использовать STR становиться не удобно.
Всегда стараюсь пользоваться полным названием. Только встроенные функции сокращены, то, что делаю сам - только полное. Это у меня еще со времен “Турбо Паскаля” и “Турбо СИ” пошло. Начинаешь сокращать и в больших проектах начинаешь путаться. Только для каких-то локальных переменных - отработал и выбросил. Иногда сокращаю если создаю “расширения” для стандартных процедур. )))
Когда-то я хотел создать такие сокращенные параметры, но STR был занят, форума тогда не видел, а со временем забыл про него.
Делать или не делать решать не нам =), но мне показалось это будет + для начинающих разработчиков.
Ведь большая часть игр использует STR_, CON_, MEN_.., и как в них можно запутаться.
Проблема только в том что на новом плеере перестанут работать старые игры, поэтому и вводить такое изменения можно только в кардинальных апдейтах.
Tom Run:
Когда в игре создаешь базовые характеристики STR(Strength), DEX(Dexterity), CON(Constitution), INT(Intelligence) и т.д., использовать STR становиться не удобно.
Что-то я не пойму, что это значит - “использовать STR становится неудобно”? Приведи пример. Или само ключевое слово вызывает у тебя ассоциации не со строками?
^ Ааа. Тебе нужна переменная с именем Str, и поэтому ты предлагаешь переименовать ключевое слово? :/
Aleks Versus, ага, при виде STR, я всегда ассоциирую ее со статами персонажа, а не со строкой. Под себя я могу переименовать ее, но думаю это может портить впечатление у новичков например, когда создаешь игру в 1 рас обычно пишешь что-то типо такого:
Weapon=400
Armor=300
STR_=45
DEX=35
CON=40
Attack=STR_+Weapon
Defense=CON+Armor
Speed=DEX*3
Evasion=DEX+100
HP=(CON+Defense)/2
Грубо накидал, но все же портит картинку. Эта идея у меня созрела из-за оператора iif, до сех пор не понял зачем он нужен когда есть простой if у которого нет ограничений. Я уже скорость их работы замерял - одинаковая, вот и задумался что где-то есть лишние операторы, а где-то банально STR нельзя использовать на ровне с другими сокращениями (не красиво).
В общем завис с оптимизацией и боролся за каждый пробел, хотя на деле скорость работы кода самолет=), ну уже стала, раньше время тормозило, использовать циклы для подсчета времени удобно и понятно, но все же оказалось не лучшей идеей. Написал предложение, но потом понял что это же все игры перестанут корректно работать где применялся srt…
(так то еще бы и - loc освободить, было бы шикарно =))
Tom Run,
iif это не оператор, это функция. Но по функциональности это то же самое, что тернарный “оператор”:
$evenodd = $iif(x mod 2 = 0, 'even', 'odd')
evenodd = 'even' if x%2 == 0 else 'odd'
let evenodd = x%2 == 0 ? 'even' : 'odd'
Зачем нужен? Ну вот пример выше. Позволяет сокращать запись. Наиболее распространён в случаях форматирования времени:
$time = $iif(len($str(hour))>1, $str(hour), '0<<hour>>') + ':' + $iif(len($str(minute))>1, $str(minute), '0<<minute>>')
Кстати, я привык сокращать minute до min, не переименовать ли нам функцию min в mini, так и понятней, и пользуются ею не часто? :P
Лично я наоборот с паскаля, где была функция Str(), и питона, где str - это и класс и метод и тип, привык к str, и считаю это отличным и самым удобным названием.
Если тебя устроит, str можно использовать как переменную таким образом:
%str = [99]
%str
! так же loc
$loc = '19'
$loc
%loc = [123]
%loc
Хотя, я бы не рекомендовал так делать, а действительно взял STRN как сокращение для твоей переменной.
Aleks Versus, я уже пишу вместо минут просто - m, вместо loc - l, и т.д.
Сокращать так до конца, и не нужны эти str =)
$time=iif(h>9,'<<h>>:','0<<h>>:')+iif(m>9,m,'0<<m>>')
Хотя по факту хоть через динамик или gs вызывать, на скорость не влияет.
Я уже привык вроде к этим занятым переменным, хотя иногда и пытаюсь в loc добавить что-то свое, хорошо что есть подсветка синтаксиса.
Как вариант:
Есть же act - оператор и его же можно использовать как $act - переменную, можно же по идеи оставить $str и освободить str?
Что только в голову не лезет, а бы игру не делать =)
Там еще в новой справке 5.9.4 какойто набор символов вылезает когда поиском пользуешься, в окне - Выберете раздел.
По моему мнению (опять хотелки) очень не хватает “точечной” подгрузки локаций. Например INCLIB “ИмяФайла” “ИмяЛокации”, с обработкой регулярных выражений.
А также точечной выгрузки локаций FREELIB “ИмяФайла” или FREELIB “ИмяЛокации” с обработкой регулярных выражений. Это позволит оптимизировать код и сократить объем занимаемой памяти путем выгрузки “отработанных” локаций.
Tom Run:
Там еще в новой справке 5.9.4 какойто набор символов вылезает когда поиском пользуешься, в окне - Выберете раздел.
похоже проблема в кодировке страниц. Эх, придётся все страницы в cp1251 переводить.
Вполне себе:
Например INCLIB “ИмяФайла” “ИмяЛокации”, с обработкой регулярных выражений.
А также точечной выгрузки локаций FREELIB “ИмяФайла” или FREELIB “ИмяЛокации” с обработкой регулярных выражений.
О. Хорошее предложение. Это очень удобно было бы.