6.9 KiB
6.9 KiB
Лог Проектных Решений - Этап 3
Решение 1: Архитектура UI позиционирования
- Проблема: Ручное управление позициями тостов сложно и подвержено ошибкам
- Решение: Использовать Vertical Box container для автоматического стэкинга
- Обоснование: UE5 UI система лучше справляется с dynamic layout чем manual calculations
- Альтернативы: Manual positioning, Canvas Panel с абсолютными координатами
- Дата: 24.08.2025
Решение 2: Система типов сообщений
- Проблема: Нужна цветовая дифференциация для разных типов информации
- Решение: 6 семантических типов (Info, Success, Warning, Error, Debug, Test) с фиксированной цветовой схемой
- Обоснование:
- Достаточно типов для всех игровых сценариев
- Консистентная цветовая схема повышает UX
- Test type специально для отладочной информации
- Альтернативы: Произвольные цвета, больше типов, только текстовая дифференциация
- Дата: 24.08.2025
Решение 3: Стратегия управления лимитами
- Проблема: Неограниченное количество тостов может заполнить весь экран
- Решение: FIFO (First In, First Out) с лимитом MaxVisibleToasts = 5
- Обоснование:
- Старые сообщения менее актуальны
- 5 тостов - баланс между информативностью и UI clutter
- Простая и предсказуемая логика
- Альтернативы: Priority-based removal, LRU, настраиваемые приоритеты
- Дата: 24.08.2025
Решение 4: Duration handling для edge cases
- Проблема: Duration = 0 может означать "бесконечный" или "по умолчанию"
- Решение: Duration = 0 трактуется как DefaultDuration
- Обоснование:
- Бесконечные тосты могут засорить UI
- Более безопасное поведение по умолчанию
- Соответствует принципу "fail-safe"
- Альтернативы: Duration = 0 как бесконечный toast, генерация ошибки при нулевом значении
- Дата: 24.08.2025
Решение 5: Дублирование в консоль
- Проблема: Тосты исчезают, но иногда нужна persistent информация
- Решение: Опция AlsoLogToConsole для дублирования всех тостов в UE консоль
- Обоснование:
- Debugging удобнее с persistent логами
- Output Log можно сохранить в файл
- Опциональная функция не влияет на performance
- Альтернативы: Отдельная logging система, только для Error типов, file logging
- Дата: 24.08.2025
Решение 6: ID генерация и трекинг
- Проблема: Нужна возможность отслеживать конкретные тосты
- Решение: Простой инкрементальный ID генератор с возвратом ID из ShowToast()
- Обоснование:
- Простая и быстрая генерация ID
- Достаточно для игрового сценария (не distributed system)
- ID нужны для debugging и potential future features
- Альтернативы: GUID generation, hash-based ID, no tracking
- Дата: 24.08.2025
Решение 7: Обработка disabled состояния
- Проблема: При IsEnabled = false что делать с попытками создать toast?
- Решение: ShowToast() возвращает -1, но console logging все еще работает
- Обоснование:
- UI может быть отключен, но debugging information остается доступной
- Graceful degradation вместо silent failure
- Return value -1 указывает на проблему
- Альтернативы: Полное игнорирование, throw exception, queue до включения
- Дата: 24.08.2025
Решение 8: Тестовая архитектура
- Проблема: Нужно comprehensive тестирование всех аспектов системы
- Решение: 7 категорий автотестов покрывающих все major functions + edge cases
- Обоснование:
- Каждая категория тестирует отдельный аспект
- Edge cases предотвращают runtime failures
- Автоматический запуск при инициализации ловит regression bugs
- Альтернативы: Manual testing only, unit tests в отдельном framework, integration tests
- Дата: 24.08.2025
Решение 9: Performance over features trade-off
- Проблема: Анимации и rich content vs простота и производительность
- Решение: Stage 3 фокус на функциональности, анимации отложены до Stage 4+
- Обоснование:
- Стабильная база важнее visual polish
- Анимации добавляют complexity в тестировании
- Можно добавить позже без breaking changes
- Альтернативы: Immediate animation implementation, rich text support
- Дата: 24.08.2025
Решение 10: Integration с существующими системами
- Проблема: Toast система должна cooperate с Debug HUD без конфликтов
- Решение: Раздельное позиционирование (Debug HUD слева, Toasts справа)
- Обоснование:
- Нет overlap между системами
- Обе системы могут работать одновременно
- Консистентное поведение с UX точки зрения
- Альтернативы: Shared UI space, toast overlay поверх debug info, mutual exclusion
- Дата: 24.08.2025