Glibus
Upgrade your Garry's Mod project
Install / Use
/learn @pocketssss/GlibusREADME
Glibus - Advanced Optimization Library for Garry's Mod
📦 Установка
- Скопируйте папку
Glibusв ваш аддон или gamemode - Библиотеки загрузятся автоматически через
autorun - Настройте конфигурацию через
GlibusConfig
⚙️ Конфигурация
Базовая настройка
-- Установить лимит памяти
GlibusConfig.Set("memory.limit_kb", 1024)
-- Включить дистанционное отсечение
GlibusConfig.Set("entities.distance_culling", true)
-- Настроить сжатие сети
GlibusConfig.Set("networking.compression_enabled", true)
Пресеты производительности
-- Максимальная производительность
GlibusConfig.ApplyPreset("performance")
-- Максимальное качество
GlibusConfig.ApplyPreset("quality")
-- Сбалансированный режим
GlibusConfig.ApplyPreset("balanced")
🔧 API Документация
Управление памятью
-- Получить/вернуть объекты из пула
local vec = MemoryManager.getVector(0, 0, 0)
MemoryManager.returnVector(vec)
-- Принудительная очистка
MemoryManager.cleanup()
-- Статистика
local stats = MemoryManager.stats()
Рендеринг
-- Оптимизированное рисование
render.DrawRect(x, y, w, h, color)
render.DrawCircle(x, y, radius, segments, color)
-- Батчинг операций
render.QueueRect(x, y, w, h, color)
render.FlushBatch()
-- Кэшированные материалы
local mat = render.GetMaterial("path/to/material")
Физика
-- Оптимизированные трейсы
local trace = physics.TraceLine(start, endpos, filter)
-- Поиск энтити в радиусе
local entities = physics.FindEntitiesInSphere(center, radius)
-- Батчинг физических операций
physics.QueuePhysicsUpdate(ent, pos, ang, vel, angvel)
physics.FlushPhysicsBatch()
Сетевое взаимодействие
-- Отправка оптимизированных сообщений
Networking.Send("MessageName", data, targets, reliable)
-- Получение сообщений
Networking.Receive("MessageName", function(data, ply)
-- Обработка данных
end)
-- Батчинг сообщений
local batch = Networking.StartBatch(target)
Networking.AddToBatch(batch, "Message1", data1)
Networking.SendBatch(batch, target)
Управление энтити
-- Регистрация энтити
EntityManager.Register(ent, EntityManager.CATEGORIES.NORMAL)
-- Проверка видимости
if EntityManager.IsVisible(ent) then
-- Рендерить энтити
end
-- Получение LOD уровня
local lod = EntityManager.GetLOD(ent)
База данных
-- Выполнение запросов с кэшированием
local result = Database.Query("SELECT * FROM table WHERE id = ?", {id})
-- Батчинг операций
Database.AddToBatch("INSERT INTO table VALUES (?, ?)", {val1, val2})
Database.FlushBatch()
-- Транзакции
local results = Database.Transaction({
{query = "INSERT INTO table1 VALUES (?)", params = {value1}},
{query = "UPDATE table2 SET field = ?", params = {value2}}
})
📈 Мониторинг производительности
Консольные команды
glibus_performance_report - Показать отчет о производительности
glibus_performance_export - Экспортировать данные производительности
glibus_config_get <path> - Получить значение конфигурации
glibus_config_set <path> <val> - Установить значение конфигурации
glibus_config_preset <name> - Применить пресет конфигурации
Профилирование кода
-- Начать профилирование
PerformanceMonitor.StartProfile("MyFunction")
-- Ваш код здесь
-- Завершить профилирование
local result = PerformanceMonitor.EndProfile("MyFunction")
print("Время выполнения:", result.duration)
Получение статистики
-- Статистика производительности
local stats = PerformanceMonitor.GetStats()
print("Текущий FPS:", stats.fps.current)
print("Использование памяти:", stats.memory.current)
-- Последние алерты
local alerts = PerformanceMonitor.GetAlerts(10)
🎯 Рекомендации по оптимизации
Для разработчиков
- Используйте пулы объектов для часто создаваемых Vector/Angle
- Кэшируйте материалы вместо создания новых
- Батчите операции рендеринга и физики
- Ограничивайте дистанцию обновления энтити
- Используйте LOD для дальних объектов
🤝 Вклад в проект
- Fork репозитория
- Создайте feature branch
- Внесите изменения
- Добавьте тесты
- Создайте Pull Request
🆘 Поддержка
Если у вас возникли проблемы:
- Проверьте консоль на ошибки
- Используйте
glibus_performance_report - Экспортируйте данные производительности
- Создайте issue с подробным описанием
Related Skills
node-connect
350.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
