sashikknox

sashikknox 

C/C++ programmer, love Aurora OS

75subscribers

87posts

goals2
$842.57 of $4 308 raised
Поддержать портирование игрового движка Godot 4 для ОС Аврора с экспортом проекта в RPM файл, совместимый с RuStore.
$237.44 of $7 179 raised
just donate if you want =) Портирование игр и игровых движков: Prey 2006, Doom 3, GZDoom, Xash3D, RE3, VCMI, Super Tux Kart, Love2D games, Godot 4...

Разбираемся с движком Luanti

Как я уже писал в Телеграме, Luanti построен на движке Irrlicht — точнее, на собственной модифицированной копии. Irrlicht использует SDL2 в качестве бэкенда.
Примерно такие пункты нужно решить для завершения адаптации:
1. Обработка событий (event loop)
Пока событие доходит до Luanti, оно проходит два слоя абстракций: Wayland → SDL2 (SDL_Event) → Irrlicht (irrlicht event) → Luanti (через event receiver). При этом теряется часть возможностей, доступных напрямую от SDL2:
   - Irrlicht не знает о событиях поворота экрана — придётся дописывать
   - Нет доступа к нативному Wayland surface, чтобы передать buffer transform композитору — придётся сделать API и пробросить через все слои абстракций до SDL2.
   - Нет доступа к реальному размеру окна: Irrlicht кеширует размер в своей переменной и отдаёт её значение. Это тоже придётся пробросить от SDL2 до Luanti.
2. Поворот буфера рендера в ландшафтный режим
Здесь уже разобрался. Дополнительный слой абстракции над SDL2, который даёт Irrlicht, даже помог — удалось найти удачную точку для настройки рендер-буфера.
3. Оптимизированные настройки для мобильного устройства
Нужно выставить настройки по умолчанию, чтобы интерфейс на смартфоне не был слишком мелким и был адаптирован к сенсорному экрану. Скейлинг HUD, включение тач-управления, настройки графики для оптимизации — дальность прорисовки, постобработка и т.д.
4. Включение LuaJIT в сборку
Это несложное, просто запишу, чтобы не забыть. В том демо-видео я использовал обычный интерпретатор Lua, а с LuaJIT загрузка уровня и обработка логики будут куда шустрее.
5. Масштабирование 3D-рендеринга
В игре уже есть настройка разрешения 3D, чтобы снизить нагрузку на GPU. Нашёл нужное место в коде — сделаю так, чтобы на Авроре игра сразу запускалась с уменьшенным разрешением.
6. Более качественная поддержка геймпадов
В версии 5.14 события от геймпада обрабатываются через «устаревшее» SDL Joystick API, и это работает не очень — не все геймпады распознаются адекватно. Буду дописывать поддержку SDL Gamepad API. Если геймпад всё равно не распознается — будет фолбэк на старое API.
7. Поддержка экранной клавиатуры
Вот тут сложная часть — придётся с нуля реализовать и дописать кучу D-Bus API для работы с клавиатурой.
8. Поддержка отключения засыпания экрана
Это буду делать, когда будет готов геймпад, потому что фича нужна именно когда играешь, не касаясь экрана.
Вообще смотрю на список — длинный получился, но минимальный необходимый функционал сделаю кончено, без него в релиз уйти не получится.
P.S. В приложенном видео я эксперементирую с онлайн библиотекой модов и игр на Luanti, загружал разное, что то заработало, что то нет =) Запустил какую то рандомную игру, так и не разобрался как в нее играть, видимо надо было читать описание. =)
Так же создал сбор донатов на Luanti, для тех кому хочется поблагодарить финансово  🤑 Я потрачу донаты с умом 🍺
Интересное устройство...
Subscription levels4

Donate Extra Light

$1.43 per month
All subscriptions do not open nothing special for subscribers, it just easy way to donate monthly.
RU:
Все подписчики не получают никакого особенного контента, или каких то
закрытых постов. Это просто удобный способ сделать ежемесячные
пожертвования.

Donate Light

$2.16 per month
All subscriptions do not open nothing special for subscribers, it just easy way to donate monthly.
RU: Все подписчики не получают никакого особенного контента, или каких то закрытых постов. Это просто удобный способ сделать ежемесячные пожертвования.

Donate Medium

$4.4 per month
All subscriptions do not open nothing special for subscribers, it just easy way to donate monthly.
RU:
Все подписчики не получают никакого особенного контента, или каких то
закрытых постов. Это просто удобный способ сделать ежемесячные
пожертвования.

Donate Like a Man!

$8.7 per month
All subscriptions do not open nothing special for subscribers, it just easy way to donate monthly.
RU:
Все подписчики не получают никакого особенного контента, или каких то
закрытых постов. Это просто удобный способ сделать ежемесячные
пожертвования.
Go up