Библиотека для упрощения разработки игровой логики на Java. Библиотека является леговесной и не привязана к каким-либо имеющимся движкам, что позволяет использовать её с различными другими фреймворками (например, LibGDX). Библиотека состоит из нескольких модулей облегчающих работу с различными задачами. Список модулей:
- BeanContainer. Полностью самостоятельно разработанный DI-контейнер, схожий по использованию со Spring. Является центаральным модулем, так как через него осуществляется доступ к остальным модулям. Имеет три ключевых отличия от спринг. Первое: запуск контейнера может происходить из любой точки программы с возможностью предварительно кастомизировать его содержимое и некоторые стратегии поведения. Это позволяет запускать больше одного контейнера в разных модулях программы. Второе: контейнер имеет модульную структору, разделяя бины на отдельные контексты, которые можно выстраивать в иерархию, используя бины одного контекста для инициализации другого. Модульная структура позволяет на лету загружать и выгружать отдельные контексты, освобождая память от ненужных бинов. Третье: полностью кастомизируемый цикл инициализации контейнера. Можно самостоятельно объявлять различные фазы инициализации, подстаривая работу контейнера под нужды конкретного проекта.
- EventQueue. Абстрация очереди сообщений (Events). Предоставляет механизм объявления отдельных очередей сообщений, их обработку и распределение входящих сообщений по очередям. Каждая из озвученных частей может быть кастомизирована под конкретные нужды. Главный компонент этого модуля: Dispatcher. Через него происходит вся работа с публикацией сообщений. Обработка полученных сообщений может происходить по вызову метода у Dispatcher и/или ассинхронно по мере поступления сообщений (если были зарегистрированы асинхронные очереди сообщений) и/или иной кастомной логике (например, моментально при поступлении сообщения в очередь синхронно с публикацией сообщения).
- JsonConverter. Необязательный модуль. Может быть загружен в контекст добавлением аннотации @EnableJsonConverter или @EnableJsonConverterWithStandardTools к конфигурации DI-контейера. Предоставляет средства для работы с JSON в проекте аналогичные возможности библиотке GSON. Ключевым отличем данного модуля от бибилиотеки является возможность предварительной предобработки JSON перед его конвертацией в Java-объект. Например, библиотека позволяет загружать все поля одного JSON-объекта в другой JSON-объект аналогично "наследованию" в ООП языках. Также позволяет кастомизировать операции предобработки JSON под нужны конечного проекта.
- TaskScheduler. Необязательный модуль. Может быть загружен в контекст добавлением аннотации @EnableTaskScheduler к конфигурации DI-контейера. Предоставляет механизм планировщика задач, позволяя добалять задачи в отдельные очереди, а затем выполняя все задачи из очереди в нужный момент.
Пока что библиотека не размещена в maven-репозитории, из-за чего требуется локальный билд библиотеки с помощью maven и размещение в локальном репозитории или в целевом проекте.
Инструкция для сборки:
- Открыть терминал в корневой директории проекта
mvn package- В директории
targetбудет лежать два артефакта.jengine-<current version>-jar-with-dependencies.jar- целевой артефакт для использования