Skip to content

TheDoctorTimeLord/JEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Библиотека для упрощения разработки игровой логики на Java. Библиотека является леговесной и не привязана к каким-либо имеющимся движкам, что позволяет использовать её с различными другими фреймворками (например, LibGDX). Библиотека состоит из нескольких модулей облегчающих работу с различными задачами. Список модулей:

  1. BeanContainer. Полностью самостоятельно разработанный DI-контейнер, схожий по использованию со Spring. Является центаральным модулем, так как через него осуществляется доступ к остальным модулям. Имеет три ключевых отличия от спринг. Первое: запуск контейнера может происходить из любой точки программы с возможностью предварительно кастомизировать его содержимое и некоторые стратегии поведения. Это позволяет запускать больше одного контейнера в разных модулях программы. Второе: контейнер имеет модульную структору, разделяя бины на отдельные контексты, которые можно выстраивать в иерархию, используя бины одного контекста для инициализации другого. Модульная структура позволяет на лету загружать и выгружать отдельные контексты, освобождая память от ненужных бинов. Третье: полностью кастомизируемый цикл инициализации контейнера. Можно самостоятельно объявлять различные фазы инициализации, подстаривая работу контейнера под нужды конкретного проекта.
  2. EventQueue. Абстрация очереди сообщений (Events). Предоставляет механизм объявления отдельных очередей сообщений, их обработку и распределение входящих сообщений по очередям. Каждая из озвученных частей может быть кастомизирована под конкретные нужды. Главный компонент этого модуля: Dispatcher. Через него происходит вся работа с публикацией сообщений. Обработка полученных сообщений может происходить по вызову метода у Dispatcher и/или ассинхронно по мере поступления сообщений (если были зарегистрированы асинхронные очереди сообщений) и/или иной кастомной логике (например, моментально при поступлении сообщения в очередь синхронно с публикацией сообщения).
  3. JsonConverter. Необязательный модуль. Может быть загружен в контекст добавлением аннотации @EnableJsonConverter или @EnableJsonConverterWithStandardTools к конфигурации DI-контейера. Предоставляет средства для работы с JSON в проекте аналогичные возможности библиотке GSON. Ключевым отличем данного модуля от бибилиотеки является возможность предварительной предобработки JSON перед его конвертацией в Java-объект. Например, библиотека позволяет загружать все поля одного JSON-объекта в другой JSON-объект аналогично "наследованию" в ООП языках. Также позволяет кастомизировать операции предобработки JSON под нужны конечного проекта.
  4. TaskScheduler. Необязательный модуль. Может быть загружен в контекст добавлением аннотации @EnableTaskScheduler к конфигурации DI-контейера. Предоставляет механизм планировщика задач, позволяя добалять задачи в отдельные очереди, а затем выполняя все задачи из очереди в нужный момент.

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

Инструкция для сборки:

  1. Открыть терминал в корневой директории проекта
  2. mvn package
  3. В директории target будет лежать два артефакта. jengine-<current version>-jar-with-dependencies.jar - целевой артефакт для использования

About

Java engine for game logic

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages