Agzam4

aka Агзам
Mindustry Плагин + Веб админка
админка
Плагин для Mindustry со встроенным веб-сервером, Telegram-ботом и системой прав. Требует не более 1 ГБ ОЗУ (linux + mindustry + плагин)
JavaReactTypeScriptSQLiteREST APITelegram APIGradleJava APT
Annotation processor для генерации TypeScript Api и HTTP клиента Java-кода
Архитектурные решения и оптимизация памяти

Архитектура и цели

Проект представляет собой платформу, объединяющую игровой сервер, веб-панель и Telegram-бота. Java-ядро перехватывает внутриигровые события и выступает фундаментом для экосистемы субплагинов. Фронтенд на React и Telegram-бот предоставляют интерфейсы для удаленного мониторинга и администрирования всей системы

Самописный веб-фреймворк (с Dependency Injection)

Легковесная система на базе встроенного com.sun.httpserver, с автоматической генерацией TS типов, методов, хуков и самого бека

Легковесная ORM

Микроскопическая рефлексивная система управления бдшкой

2D Pixel Physics Engine
симуляция
Движок для попиксельной физики материалов на Java
Java
Бесконечный мир на базе динамической сетки (без жесткого ограничения размеров карты)
Terraria Flying Islands Generator
скриншот сгенерированной карты
Генератор миров, состоящих из летающих островов для Terraria на JavaScript. Процедурная генерация биомов, подземелий, пирамид, храмов, деревьев и прочих структур
JavaScriptПроцедурная генерация
Без библиотек
как устроено / почему так

Генерация

Процесс запускается в Web Worker, чтобы не блокировать UI поток браузера. Рельеф формируется на основе различных шумов, после чего заполняется структурами, в конце все собирается в готовый бинарный файл мира и скачивается

Формат файла

Пришлось адоптировать BinaryWriter из C# на JS

Проблемки

Были жалобы на невозможность генерации со слабых мобильных устройств