Движок, для создания текстовых квестов, и CYOA игр. Представляет из себя програму, в которой, в графическом режиме можно создавать все элементы квестов (текстовые и графические), размещать их на нужных страницах, навешивать на них события, и собирать проект, в готовую игру.
Разработка идёт медленно, так как занимаюсь этим, в свободное от работы время, которого у меня не очень много =(.
- [0.0.0] Принято решение создать программу, создан набросок окна. Описано тезисно, какой примерно должна быть программа.
- [0.0.1] Создана примерная структура сцен.
- [0.0.2] Создана примерная структура анимаций, слегка переделана структуру сцен, реализована возможность добавления картинок, состоящих из нескольких слоёв, с последующим выводом, в результирующее изображение.
- [0.0.3] Скорость склеивания картинок в слои признана неудоволетворительной. Оптимизировал алгоритм. Увеличил скорость обработки 3 слоёв с разрешением 1920x1080, с 13 секунд, до 0,4. Появилась мысль создать полноценный движок.
- [0.0.4] Проведена оптимизация алгоритма, за счёт распараллеливания. Итоговый результат - 0,3 секунды. Появилась идея ускорения рассчётов, при помощи GPU.
- [0.0.5] Переделан алгоритм, с учётом того, что задний план у нас всегда непрозрачный (либо фон, либо заливка цветом). После множества неудачных попыток, алгоритм для рассчётов наложения слоёв был запущен на GPU, при помощи библиотеки Cloo. Максимальный полученный результат для 2 слоёв с разрешением 1920x1080, накладываемых на фон - 0,1 секунда. Это даёт нам примерно 10 FPS, при диком потреблении оперативной памяти (в районе 2 гигабайт). Принято решение, о прекращении попыток написать свой движок, и использовать OpenGl, для рендеринга слоёв.
- [0.0.6] После перерыва в разработке, вызванного работой над основным проектом, детали данного были переосмыслены. В частности, было принято решение, отказа от текущего пути, как ведущего к застою проекта. В связи с этим, будет реализована одна из старых идей, идущая из старых наработок автора и размышлений над проектами, при ознакомлении с которыми и было принято решение о создании текущего. Таким образом, для вывода графики данный проект будет генерировать html-страницы, которые будут отображаться во встроенном в проигрыватель браузере. Весь контент будет загружаться из файлов ресурсов, и встраиваться в автоматически генерируемую страницу. Это позволит создавать небольшые (в отличие от аналогов) страницы, которые будут быстро загружаться, и позволят модифицировать контент 'на лету'. Например - подгружая конкретную локализацию (рассматривается также возможность автоматического перевода через сервисы, в случае отсутствия нужных файлов локализации).
- [0.0.7] После кошмарного завала по работе, автор таки смог вернуться к данной разработке. В основную концепцию проекта было добавлено небольшое изменение. Теперь, программа-проигрыватель будет не просто открывать html-страницы во встроенном браузере, а иметь хоть и урезанный но функционал веб-сервера. Таким образом, при запуске проигрывателя, игры можно будет запускать в обычном браузере, просто перейдя по ссылке. Автор ещё не решил, как конкретно это будет - стоит ли вообще оставлять задумку, с отображением игр внутри программы, или даже сделать проигрыватель, как некий аналог площадки распространения игр, где будет доступна вся библиотека, с возможностью прямой загрузки. Кроме изменения концепции, была написана основа веб-сервера, переделаны уже написанные файлы стилей, под формирование css-таблиц, кроме того, написано несколько новых классов стилей.
- [0.0.8] С такой загруженностью на работе, я не завершу этот проект никогда >.<. Но, я буду стараться и выкраивать время... Так, возвращаясь к сабжу - в этом обновлении я немного прправил и дополнил систему стилей (которую начал делать в прошлой версии), продумал систему триггеров и действий к ним привязанных, и начал её реализовывать. Осталось доделать систему триггеров и объединить систему формирования скриптов и файлов стилей в один класс, который будет возвращать оные серверу, который, в свою очередь, будет передавать уже готовые файлы в браузер. Плюс - допилить систему формирования html-файла, который всё это будет запрашивать у сервера. Плюс - отдельная система формирования имён css-классов, функций и идентификаторов объектов. Всё это в планах на следующую версию.
- [0.0.9] А кроме работы, я умудрился ещё и заболеть... И, на так долго ожидаемых выходных я не любовно пилил программу, а валялся на кровати с температурой =.=... Ну, мне вроде как полегчало, и я смог уделить несколько часов проекту. Доделал и объединил системы стилей, скриптов и триггеров; сделал систему подключения триггеров к элементам, по списку подключенных триггеров в элементе; внёс некоторые правки в подключение стилей; и, наконец, начал заниматься серверной частью, которая должна будет собирать файлы воедино, и выдавать браузеру. План на следующую версию - реализовать систему загрузки/сохранения информации об игре. Ну и, возможно, реализовать выдачу страниц.