DOPAMINE Библиотека для QSP Classic 5.7.0

DOPAMINE Библиотека для QSP Classic 5.7.0

https://i.ibb.co/wLp8D1g/logo-forum.png



 Спойлер Show Spoiler Hide Spoiler
 

    Доброго времени суток!


    Как обычно, я напоминаю, что не умер и всё еще стараюсь привнести немного вдохновения. Мои творческие изыскания привели меня к реализации множества различных механик для тех или иных проектов. За столь долгое время разработки, у меня (как и у многих) собрался большой багаж с различными наработками. Я готов поделиться ими с окружающими, чтобы они набивали меньше шишек, а также тратили меньше времени на реализацию своих амбиций. Всегда лучше воспользоваться готовым решением которое работает, нежели писать с нуля самому.


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


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

    Хорошо, прочь длинные вступления! Сегодня я хотел бы анонсировать выход своих трудов на более широкий круг общественности. На данный момент есть несколько редакций библиотеки, однако доступной, в ближайшее время, будет только одна.


https://i.ibb.co/DtL30Jb/Dopamine.png

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

https://i.ibb.co/Rpq2tzm/Dopamine-Sakura.png

Дата выхода: 06.06.22
- упрощенная версия библиотеки состоящая только из основных функций и модулей. При помощи DOPAMINE SAKURA всего за несколько минут можно настроить первоначальную загрузку проекта с необходимыми базовыми функциями сохранения и загрузки состояния, а так же настроить систему хранения объектов в массивах. А так-же удобные генераторы объектов, поиски по переменным и массивам и тд.

https://i.ibb.co/F5f5RVz/Dopamine-Neon.png

Дата выхода: 22.11.22
- это уже тяжёлая артиллерия. Полная версия библиотеки со всеми включенными функциями и модулями. Помимо функций DOPAMINE SAKURA, представляет сборник функций, направленных на различные механики, от самостоятельного инвентаря, до реализации боевой системы. Данная библиотека рекомендуется пользователям, уже знакомым с облегченной версией.




В состав Sakura входит не очень большой список модулей. Какие то из них точно смогут помочь в разработке проекта. Среди модулей можно выделить следующие:



 Спойлер Show Spoiler Hide Spoiler
 

МЕНЕДЖЕР ОБНОВЛЕНИЙ

Менеджер обновлений ещё одна важная вещь, которая позволяет работать библиотеки так как задумано. Без участия UPDATEIT не могут обойтись большинство модулей, рассчитанных на работу с библиотекой. Библиотека каждый определенный (для каждого модуля свой) промежуток времени, как правило пакетами, активирует функции обновления для модулей и заставляет их выполнять свои функции. Это бесконечный процесс загрузки и обновления данных, который необходим библиотеке как воздух. По сути, менеджер обновлений выступает в качестве обёртки над служебной локацией COUNTER.

МЕНЕДЖЕР ЛОКАЦИЙ

Менеджер локаций является связующим звеном, между независимыми модулями. Он хранит, обрабатывает и передаёт данные полученные с модулей. Это позволяет упростить работу сторонних подключаемых модулей, а так же упрощает обращение к функциям многих модулей, благодаря подготовленным спецификациям работы. Если хотите, PIGEONI можно назвать артериями библиотеки, без которого всё представленное далее не сможет работать так как задумано.

Менеджер предоставляет несколько основных функций, которые созвучны с названием:

$PIGEONI / $PACKAGE - функция-прослойка для GOTO и GOSUB, с помощью которых можно переходить по необходимым локациям. Если менеджер не обнаружит локацию в своих списках, он переключится на локацию “по-умолчанию”, которую вы сможете настроить самостоятельно, по своему желанию.

$PIGEONI.ADD / $PACKAGE.ADD - добавляет данные для обработки и хранения менеджеру. После чего любые совместимые с библиотекой модули, смогут обработать полученную информацию.

$PIGEONI.GET / $PACKAGE.GET - аналогично $PIGIONI.ADD, однако вместо передачи позволяет получать необходимые данные с переменных и массивов

МЕНЕДЖЕР ДАННЫХ

Менеджер данных выступает в роли общего хранилища проекта. Он хранит и обрабатывает внутри себя всю полученную информацию. И если PIGEONI можно было сравнить с артериями библиотеки, то BOX можно сравнить с большим упорядоченным складом, на котором все объекты хранятся на своих полочках. Менеджер крайне полезен, если вы планируете хранить множество данных в массивах. Он использует маркерную систему, с поддержкой хэширования ключей, благодаря чему появляется возможность хранить множество информации в компактном виде, а так же быстро получать к ней доступ.

МЕНЕДЖЕР СЕССИЙ

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

ГЕНЕРАТОР УНИКАЛЬНЫХ КЛЮЧЕЙ

Генератор позволяет удобно и быстро генерировать уникальные ключи для различных нужд. Он так же хранит все сгенерированые ключи в специальных массивах, для удобства поиска и взаимодействия. Функции генератора предоставляют расширений функционал по генерации ключей. Он может генерировать как системные, так и пользовательские ключи. Конструктор функции достаточно гибкий и позволит сгенерировать разные последовательности.

ГЕНЕРАТОР СЛУЧАЙНЫХ ЗНАЧЕНИЙ

Данный генератор является прослойкой для функции rand. Генератор гарантирует выпадение случайного значения, в указанном промежутке, основываясь на значениях прошлых бросков. Это увеличивает шанс случайного значения путём сортировки условий. Так же генератор позволяет указать условие броска, условия можно указывать друг за другом, последовательность не важна. Стоит отметить, что генератор работает не только с числовыми значениями, но и состроковыми, а так же с различными массивами.

ПРОЧЕЕ

Сюда можно внести как генератор таблиц, который позволит вам быстро сверстать необходимую таблицу. Он работает отдельно от библиотеки и выводит готовый код, который можно вставить в свой проект. Так же имеется генератор ссылок, цветовые шаблоны и тд.



Документация для каждого модуля будет прикреплена к релизной версии библиотеки. Там я постарался максимально доступно и просто объяснить как работу так и возможности применения модулей.

В качестве примера реализации:
 Спойлер Show Spoiler Hide Spoiler
 

https://i.ibb.co/f0fCYqK/Dopamine-Test-UI.png
Библиотека позволяет быстро реализовывать базовые потребности квестовых игр

Так ведется разработка взаимодействия с проектом уже внутри запущенного и собранного проекта. В этом может помочь админ панель, которая появится в версии Neon:
 Спойлер Show Spoiler Hide Spoiler
 

https://i.ibb.co/TTS2JX4/Admin-Panel.png
Сперва это может показаться ненужным. Но это полезное решение для долго поддерживаемых и обновляемых проектов, имеющих систему сохранения.

Я прекрасно понимаю, что данная затея уже заведомо провальная и практически никто не будет пользоваться возможностями библиотеки. Однако, я убежден, что именно такие действия необходимы для развития нашего сообщества. Люди должны видеть как и чем живет QSP. И мне очень важно донести понимание о возможностях движка, помимо оконных решений.



Всегда с вами, Svartberg.

Изменено: Svartberg
28.Мар.22 15:00:40
Svartberg
Geek
useravatar
Offline
291 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Это очень круто. Прям очень. yikes  Жду релиза.  smile

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Что-ж, как обычно всё идет не по плану. В связи с некоторыми обстоятельствами мне придётся отложить релиз тестовой версии Сакуры, на пару месяцев (хотя бы по тому что, я ещё не предоставил её для тестеров). К сожалению, на данный момент, я лишился последнего источника дохода и теперь приходится в срочном порядке бегать и искать новую работу. Времени на свои увлечения почти не остается. Однако, к назначенной нужно что-то да и отправить, чтобы совсем не расстраивать народ.
И этом чем то будет вполне полезная и нужная многим вещь: Конструктор таблиц.
Он относительно удобен и позволит быстро сгенерировать код для последующей работы и вставки в свой проект. Больше вам не придется самостоятельно писать тонны кода и каждый раз проверять, работает это или нет.

 Спойлер Show Spoiler Hide Spoiler
 
https://i.ibb.co/pfv8KCx/1.pnghttps://i.ibb.co/jMvktgy/2.pnghttps://i.ibb.co/HNDsQCW/3.pnghttps://i.ibb.co/gvWHXLb/4.png

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Происходит какая-то чёрная магия, не иначе smile
Вот что творит упорство в своей идеи и наличие эстетически верного вкуса.

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Что-ж, пришло время для промежуточных новостей, связанных с конструктором таблиц.
Конструктор почти готов к использованию, осталось лишь подключить сохранения, а так же подготовить функционал для взаимодействия с таблицей, по типу объединения ячеек и тд.
На данный момент конструктор уже может генерировать обычную таблицу, а так же мастер-ключ для хранения информации.
Как обычно, я не успеваю сделать то, что наметил. Однако, готов поделиться исходниками того, что есть на данный момент.
Предупреждаю заранее, что это не рабочая версия. Здесь есть лишь часть кода, над которым ведётся работа. Уверен, найдётся несколько человек, желающих покопаться в коде.

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Из последних новостей:

У меня появилось немного времени. Закончил работу над составлением Мастер-ключа, для компактного сохранения информации и передачи данных другим пользователям. Мастер-ключ представляет собой 20-значные блоки с зашифрованными данными, с позицией 1 чар на 85 значений.

(Более подробно о работе Мастер ключа, ниже)

 Спойлер Show Spoiler Hide Spoiler
 
Для сохранения большого объема однотипной информации, был создан небольшой конвертор. Он переводит информацию таблиц в специализированные блоки. Каждый блок определяет 3 типа данных: таблица, строка, ячейка.

Большая часть блока состоит из конвертированных значений типа: 1 char на 85 значений. Это не относится к определениям ширины таблицы или ячейки, а так же hex-кода цвета. Поскольку перевести их в более компактный формат, не представляется возможным.

В качестве примера, можно рассмотреть таблицу 3 на 3:

Код:

<table border = 1 width = 100%>

    <tr>
        <td align = left><<$ddt.table_box['1:1']>></td>
        <td align = center valign=bottom><<$ddt.table_box['2:1']>></td>
        <td align = left><<$ddt.table_box['3:1']>></td>
    </tr>
    <tr>
        <td align = left><<$ddt.table_box['1:2']>></td>
        <td align = left width=60%><<$ddt.table_box['2:2']>></td>
        <td align = left><<$ddt.table_box['3:2']>></td>
    </tr>
    <tr align = center>
        <td><<$ddt.table_box['1:2']>></td>
        <td><<$ddt.table_box['2:2']>></td>
        <td color=#a19a9a><<$ddt.table_box['3:2']>></td>
    </tr>
</table>

Как можно заметить, некоторые части имеют отличные от других значения. Чтобы не сохранять всю информацию таблицы, Мастер-ключ фиксирует только отличные значения. Это значит, что шаблонные параметры (заданные редактором) он пропускает, поскольку вся информации о построении шаблонной таблицы уже есть в заголовке Мастер-ключа.

Мастер-ключ же генерируется в два этапа. Первым этапом идёт составление блоков для каждого значения.

У представленной таблицы идут следующие блоки:

0T22000k0100 R00k D000k0000 D00130000 D002k0000 R01k D010k0000 D011k00601 D012k0000 R02a D020k0000 D021k0000 D022k0000#a19a9a

Это слепок всей таблицы. Можно заметить, что у ячеек и строк есть схожие параметры. Их можно убрать из итоговой сборки, поскольку шаблонная информация и так сгенерируется при распаковке.

Здесь можно обратить внимание так же на первый блок. Первым блоком всегда идёт общая информация о таблице. Она маркируется символом "T", сразу после указания id таблицы (в сохранённом проекте может быть несколько таблиц). Далее идёт общая информация о таблице: кол-во ячеек, ширина таблицы и тд. После этого блока идёт информация о всех ячейках и строках. Информации может быть довольно много.

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

У представленной таблицы идёт следующие блоки:

0T22000k0100 D00130000 D011k00601 R02a D022k0000#a19a9a

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

После второго этапа, ключ предстает в следующем формате:

-0T22000k0100D0013000 -0D011k00601R02aD022k -0000#a19a9a

Готово! Мастер-ключ сгенерировался и теперь занимает в разы меньше места. Его удобно копировать и так же удобно хранить в самой программе.

Я так же планирую составить отдельный модуль для распоковки данных, который вы сможете подключить к своему проекту. Останется только лишь скопировать этот мастер ключ в конвертор, в вашем проекте и всё. Таблица будет работать.

Таже имеется обычный формат копирования уже полностью сгенерированой таблице.

Осталось дописать распаковщик Мастер-ключа. Это должно занять меньше времени. Ещё осталось много работы над составлением таблицы-конструктора и возможностей взаимодействия с ней.

Из основных возможностей конструктора можно выделить две три функции:
- Вкладки для работы с разными таблицами;
- Объединение ячеек таблицы;
- Настройка каждой ячейки, строки и самой таблицы.

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

Стоит учитывать, что конструктор не позволит вам редактировать переменные в ячейках. Он лишь генерирует их и предоставляет удобный доступ для взаимодействия после копирования таблицы.

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Хоть времени на свои увлечения устается не так много, я продолжаю упорно трудиться и реализовывать части функционала библиотеки, паралельно составляя документацию к ней. Документация составляется в pdf формате, поэтому вы всегда сможете скопировать необходимые участки кода из примеров.

Немного скринов:

 Спойлер Show Spoiler Hide Spoiler
 
https://i.ibb.co/R3TJx0s/info4.png
https://i.ibb.co/fqW7B23/BOOKLOGO.pnghttps://i.ibb.co/qMcyF3X/BOOKLOGO2.png
https://i.ibb.co/jwwBG7b/BOOKprimer.png

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Через @ ведь можно функции вызывать только в 5.8.0. Ты уже на другую версию библиотеки переориентировался?

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

Re: DOPAMINE Библиотека для QSP Classic 5.7.0

Aleks Versus, я знаю. Сейчас я пилю для 5.7, попутно подстраивая к 5.8. Чуть больше работы, но потом ненужно будет переводить готовый.

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

Информация

Статистика форума:
 
Всего тем:
1013
Всего опросов:
14
Всего сообщений:
16790944
Сообщений на этой неделе:
7
Пользователи форума:
 
Всего пользователей:
2613
Последним зарегистрировался:
noexky