Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Всё, что касается программирования на старых языках или для старых систем

Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение JordanCpp » 20 ноя 2023, 11:38

Тема перекочевала с дружественного сайта old-games.ru

Приветствую!

Пишу фреймоврк для разработки софта или игр. Идею взял из библиотеки SDL, но пишу на С++.
Главная идея это кроссплатформенность, производительность и поддержка старых и новых систем.

На данный момент фреймворк работает начиная с Windows 95 и Debian Linux 3.

Идея зародилась после написания статьи. Если критикуешь, предлагай, а предлагая делай.
В софте все всрато и становится еще всратее

Сатья о фреймворке на хабре. Немного устарела.

Сам проект. Лицензия boost. На гитхабе есть примеры и скриншоты.
GitHub - JordanCpp/Lib-LDL

Особенности проекта.

Поддержка старых систем 25+ лет.
Модульный дизайн.
Динамическая загрузка рендера при запуске приложения.
Весь код написан на С++ 98, для поддержки большего числа компиляторов и систем. Но разработчик, может использоать любой стандарт языка, хоть С++ 23. Ограничение есть лишь у меня как у разработчика фреймворка.
Высокоуровневый ООП API. Есть возможнось заюзать свои кастомные аллокаторы.
Поддержка старого железа 25+ лет.
Производительность.
Минимальная внешняя зависимость.
Проект собирается следующими компиляторами.
Windows: Visual C++ 6.0 и выше вплоть по MSVC 2022 (На нём под Windows и разрабатываю), OpenWatcom v2
Linux: gcc начиная с версии 3 и выше.

В проекте есть тесты, но пока нет документации.

Что сделано:
1. Статическая и динамическая линковка фреймворка.
2. Реазизована поддержка 2D API.
3. Реализована поддержка звука
4. Рендер OpenGL 1.2, OpenGL 3.3, Sowfware рендер.
5. Загрузка графических форматов png,bmp, tga, jpeg и т.д
6. Загрузка звуковых форматов mp3,wav, ogg, и т.д

Мои желания по общей архитектуре:
1. На сколько возможно, делать api и внутренний код простым.
2. Максимальная производительность.
3. Упростить работу с аллокаторами памяти.
4. Создавать библиотеку общего назначения(графичесйи интерфей, звук и т.д)
5. Сделать аналог Qt но на минималках.

Выступил на конференции по С++ 2023 с темой: Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году

Видео по правилам конференции пока недоступно. Но доступны слайды.

Мне нравится не только юзать старые железки, но и под них программировать.
Ещё доп информация:
Я как раз этого и добиваюсь. Сейчас движок используя только API фреймворка, собирается и работает идентично на windows и linux. Чем больше я буду обеспечивать поддержку других систем, тем больше проектов на LDL будут на них одинаково работать. Просто нужно будет перекомпилировать под систему, не переписывая код.

Есть проблемы которые невозможно решить.

1. Это поддержка кодировки в системе.
К примеру берем windows 95 она не поддерживает unicode. Есть такой вариант. Windows 95 c поддержкой русской и английской локали будет работать с английским и русским юникодом без специальных знаков если конвертировать данную строку в acsii строки, согласно локали. Но если это будет другая локаль к примеру unicode на греческом языке, данную строку невозможно конвертировать в acsii. В итоге мы можем работать с юикодом в системе, но только если она совпадает с локалью. Это актуально для функционала который получает и отправляет текстовые данные в систему. Удалить файл по имени, переименовать, выбор файла и т.д Если для таких целей использовать только английский, то проблем нет.

Фреймворк поддерживает freetype и может выводить на экран любой юникод, так как текст это просто изображение.

2. Тема многопоточного кода.
Такой код не будет работать на старых операционных системах. Если требуется обеспечить работу начиная с windows 95, только одно ядро.

3. Функционал которого нет в старых ОС, поддержка мультитач, дополнительное управление дисплеем, DPI и т.д Для обеспечения возможности сборки фреймворка для старых систем, будут реализованы заглушки, которые ничего не делают. Пример это поддержка прокрутки колесиком мыши. Его можно задействовать в коде, но на Windows 95 работать не будет.

Если писать под современные операционные системы, ограниений нет.


На своём фреймворке начал проект по реализации движка игры Arcanum.

Изображение
Последний раз редактировалось JordanCpp 20 ноя 2023, 11:38, всего редактировалось 1 раз.
JordanCpp
Новичок
 
Сообщения: 4
Зарегистрирован: 20 ноя 2023, 11:32

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение longhorn_gnu » 20 ноя 2023, 14:12

Привет, Джёрдан. Я потерял пароль от old-games'а. Так что напишу тебе тут. Могу ли я протестировать это на Visual C++ 6 и как оно там собирается?
JordanCpp писал(а):На своём фреймворке начал проект по реализации движка игры Arcanum.

Красавчик! Написать целый фреймворк для своего движка!
JordanCpp писал(а):5. Сделать аналог Qt но на минималках.

:shock:
its end?
Аватара пользователя
longhorn_gnu
Мастер Даунгрейда
 
Сообщения: 774
Зарегистрирован: 05 июн 2023, 08:32
Откуда: telegram: @sdl_sdl_sdl_ps_dpl
Железо: deleted

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение JordanCpp » 20 ноя 2023, 15:29

longhorn_gnu писал(а): Так что напишу тебе тут. Могу ли я протестировать это на Visual C++ 6 и как оно там собирается?


Да можешь.

Установи Visual C++ 6 в стандартные пути.
Скачай исходники и в каталоге Win9x запусти VC6_All.bat - соберется фреймворк в виде dll и примеры из каталога Examples
JordanCpp
Новичок
 
Сообщения: 4
Зарегистрирован: 20 ноя 2023, 11:32

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение oldpcfan82 » 20 ноя 2023, 22:53

JordanCpp писал(а):Пишу фреймоврк для разработки софта или игр.

Круто!

JordanCpp писал(а):Сделать аналог Qt но на минималках.

Может вы мой проект продолжите? Я писал на современном Dev-C++ см. мой фреймворк и примеры:
https://cloud.mail.ru/public/YHAZ/sBVNHZ4QZ
https://cloud.mail.ru/public/UWRh/PfovNYdbx

Старый Dev-C++ найдёте тут - http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6080 или тут - https://www.bloodshed.net/, а новый тут - https://www.embarcadero.com/ru/free-tools/dev-cpp
Аватара пользователя
oldpcfan82
Мастер Даунгрейда
 
Сообщения: 676
Зарегистрирован: 01 окт 2023, 22:57

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение JordanCpp » 21 ноя 2023, 08:24

oldpcfan82 писал(а):
JordanCpp писал(а):Пишу фреймоврк для разработки софта или игр.

Круто!

JordanCpp писал(а):Сделать аналог Qt но на минималках.

Может вы мой проект продолжите? Я писал на современном Dev-C++ см. мой фреймворк и примеры:
https://cloud.mail.ru/public/YHAZ/sBVNHZ4QZ
https://cloud.mail.ru/public/UWRh/PfovNYdbx

Старый Dev-C++ найдёте тут - http://old-dos.ru/index.php?page=files&mode=files&do=show&id=6080 или тут - https://www.bloodshed.net/, а новый тут - https://www.embarcadero.com/ru/free-tools/dev-cpp


Не нашёл исходники в архиве. Демки посмотрел.
JordanCpp
Новичок
 
Сообщения: 4
Зарегистрирован: 20 ноя 2023, 11:32

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение oldpcfan82 » 21 ноя 2023, 19:21

JordanCpp писал(а):Не нашёл исходники в архиве. Демки посмотрел.

Вот исходники - https://cloud.mail.ru/public/37mv/yQfHvYMaj.
Аватара пользователя
oldpcfan82
Мастер Даунгрейда
 
Сообщения: 676
Зарегистрирован: 01 окт 2023, 22:57

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение JordanCpp » 21 ноя 2023, 19:54

oldpcfan82 писал(а):
JordanCpp писал(а):Не нашёл исходники в архиве. Демки посмотрел.

Вот исходники - https://cloud.mail.ru/public/37mv/yQfHvYMaj.


Посмотрел. Обертка над gui windows. Я выбрал другой подход. Рисовать примитивами все контролы, текст и т.д Это более универсально и полностью портабельно.
JordanCpp
Новичок
 
Сообщения: 4
Зарегистрирован: 20 ноя 2023, 11:32

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение iAPX286 » 02 май 2026, 14:42

Там похоже вышла версия 0.1 этой библиотеки
https://www.opennet.ru/opennews/art.shtml?num=65347
Выпуск примечателен переходом с использования языка C++98 на язык ANSI C (C89)
Последний раз редактировалось iAPX286 02 май 2026, 14:42, всего редактировалось 1 раз.
Аватара пользователя
iAPX286
Опытный даунгрейдер
 
Сообщения: 34
Зарегистрирован: 09 фев 2026, 01:59

Re: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Сообщение KPG » 02 май 2026, 22:30

iAPX286 писал(а):Там похоже вышла версия 0.1 этой библиотеки
C89

И, статья на Хабр https://habr.com/ru/news/1030614/
Последний раз редактировалось KPG 02 май 2026, 22:37, всего редактировалось 1 раз.
KPG
Мастер Даунгрейда
 
Сообщения: 514
Зарегистрирован: 21 окт 2015, 20:53


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2