Результаты поиска
| |
JordanCpp | Дата: Понедельник, 25 Декабря 2023, 13:01 | Сообщение # 1 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата DmitriyIM ( ) еужели я дожил до этого дня, когда где-то могу прочитать такие строки? Не нашёл смайлик со слезами счастья для выражения эмоций, переделал грустный...
Рад, что нахожу всё больше единомышленников.
Цитата DmitriyIM ( ) Да, только веб сам по себе не существует, его реализуют программисты (если их так можно назвать), которые погрязли в абстракциях (в прочем, это касается не только веба), которые они готовы плодить тоннами, лишь бы только решить задачи из ТЗ...
Я сам фулл стек разработчик и понимаю о чем вы говорите. Я даже не представляю, что нужно сделать с вебом, что бы оно всё залетало как десктоп приложения.
Цитата DmitriyIM ( ) А их поделкам нужна ещё одна порция оперативки и процессор поновей, и может быть тогда их код даст результат, а не просто подвесит систему, как в предыдущий раз
Как раз данный проект и задумывался как создание базовой библиотеки. Небольшая, но функциональная и оптимизированная библиотека.Добавлено (23 Февраля 2024, 08:20) --------------------------------------------- Стало доступно видео доклада о библиотеке. Внимательно смотрите слайды, они доставляют:)
Сообщение отредактировал JordanCpp - Понедельник, 25 Декабря 2023, 13:02 |
|
| |
JordanCpp | Дата: Воскресенье, 24 Декабря 2023, 08:30 | Сообщение # 2 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата Abel399 ( ) я правильно понимаю, что графический API выбирается на этапе компиляции и нельзя сменить в рантайме? Или эта проблема уже исправлена?
Да ситуация исправлена. Теперь есть возможность выбрать рендер при запуске приложения.
Цитата Abel399 ( ) Btw проект интересный, добавил в копилку для копания в праздники. Надеюсь, у вас получится добиться задуманного (✿◡‿◡)
Спасибо за отзыв.
|
|
| |
JordanCpp | Дата: Суббота, 25 Ноября 2023, 21:36 | Сообщение # 3 | Тема: BADCOIQ [C++] |
был не раз
Сейчас нет на сайте
| Интересный проект. Я создаю, что то похожее но пока без абстракций над 3D. Посмотрел ваш dx11 рендер, хотел бы с изменениями утащить в свой проект.
Фреймворк LDLДобавлено (25 Ноября 2023, 21:37) --------------------------------------------- Для начала добавить простое 2D api для разных рендеров. Сейчас реализовано для opengl 1.2 и 3.3 Добавлено (08 Декабря 2023, 11:03) --------------------------------------------- BADCOIQ, Продолжение будет?
|
|
| |
JordanCpp | Дата: Суббота, 25 Ноября 2023, 21:31 | Сообщение # 4 | Тема: ArcanumWorld |
был не раз
Сейчас нет на сайте
| Спасибо за отзыв. Сам надеюсь на себя, что хватит запала и времени. Я конечно надеюсь на стороннюю помощь заинтересованных программистов. Конечно понимаю специфику фреймворка и старости/нужности самой игры Arcanum. Но пока фана хватает, буду продолжать.
|
|
| |
JordanCpp | Дата: Четверг, 23 Ноября 2023, 12:50 | Сообщение # 5 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата GC-Vic ( ) Сложно будет потянуть такой проект - этой весьма академическая задача, написать аналог SDL. Я это осознаю. И немало сделано. Что готово. События и работа с окном ОС. Api для 2D графики. Воспроизведение звука. Api для работы с ttf текстом. Интегрирован opengl 1.0-4.6 и его загрузчик.
Осталось доделать для первого выпуска. Поточное воспроизведение звука. Доделать вывод ttf текста. Интегрировать сеть, буду делать на основе enet.
А возможно для первой версии ограничиться только минимальным функционалом графики. Остальное доделать в следующей версии.
Для фреймворка я храню все зависимости в проекте, это freetype, std_image, и header only библиотеки для чтения звуковых форматов, портировал библиотеку glu. Всё в исходниках.Добавлено (02 Декабря 2023, 09:27) --------------------------------------------- Опубликовал новость на Хабре о первом выпуске библиотеки LDL. Возможно это привлечёт новых разработчиков и будет содействовать известности библиотеки. Добавлено (19 Декабря 2023, 12:52) --------------------------------------------- Сделал некоторые обновления, последующие обновления буду делать в новогодние праздники. И ещё раз предлагаю всем желающим присоединиться к проекту.
Добавил базовую поддержку 3dfx Glide Добавил поддержку сборки для Borland C++ 6.0 и выше. Добавляю поддержку d3d11
Теперь общий список поддерживаемых компиляторов. И библиотека не просто собирается, но и корректно работает. Код очень портабелен и уверен соберется и на других компиляторах. 1. GCC 3 и выше 2. MinGW 3 и выше 3. OpenWatcom V2 и выше 4. Visual C++ 6.0 и выше 5. Borland C++ 6.0 и выше
Как всё это работает: Библиотека поддерживает 2D API под капотом в зависимости от выбранного рендера это API работает на OpenGL, Directx и теперь Glide. Но так же есть доступ к нативному программированию графических API напрямую, OpenGL, DirectX. Glide. К примеру можно написать игру на Glide и запускать как на нативном железе, так и используя врапперы. Для разработки и тестирования интеграции с Glide я использую dgVoodoo.
Можно используя Glide создать игру и воспользоваться библиотекой LDL для управлениями окнами и событиями ОС. Работать будет на Windows, Linux + на нативном железе. Вполне не плохо. Linux версия немного отстаёт от Windows, до нового года подтяну.
Заинтересовался портированием под Android. Пока гуглю информацию, настраиваю Android студию. Добавлено (19 Декабря 2023, 13:28) --------------------------------------------- Пример кода на Glide. Заливаем экран зелёным цветом.
Код #include <LDL/Core/RuntimeError.hpp> #include <LDL/Graphics/Window.hpp> #include <LDL/Graphics/Render.hpp> #include <LDL/Enums/RenderMode.hpp> #include <LDL/APIs/Glide/GlideLoader.hpp>
#include <iostream>
using namespace LDL::Glide; using namespace LDL::Graphics; using namespace LDL::Events; using namespace LDL::Enums; using namespace LDL::Core; using namespace LDL::Math;
int main() { try { GlideLoader glideLoader; RenderContext renderContext(RenderMode::Glide); Window window(&renderContext, Vec2u(0, 0), Vec2u(800, 600), "01_Glide_Line");
Event report; FxU32 handle = (FxU32)window.NativeHandle();
grGlideInit(); grSstSelect(0);
FxBool result = grSstWinOpen(handle, GR_RESOLUTION_800x600, GR_REFRESH_60Hz, GR_COLORFORMAT_RGBA, GR_ORIGIN_UPPER_LEFT, 2, 1);
if (!result) throw RuntimeError("grSstWinOpen failed");
grVertexLayout(GR_PARAM_XY, 0, GR_PARAM_ENABLE); grColorCombine(GR_COMBINE_FUNCTION_LOCAL, GR_COMBINE_FACTOR_NONE, GR_COMBINE_LOCAL_CONSTANT, GR_COMBINE_OTHER_NONE, FXFALSE);
Color screenColor(34, 177, 76);
while (window.Running()) { grBufferClear(screenColor.toInt(), 0, 0);
while (window.GetEvent(report)) { if (report.Type == IsQuit) { window.StopEvent(); } }
grBufferSwap(1);
window.PollEvents(); }
grGlideShutdown(); } catch (const RuntimeError& error) { std::cout << error.what() << '\n'; }
return 0; }
Сообщение отредактировал JordanCpp - Четверг, 23 Ноября 2023, 12:51 |
|
| |
JordanCpp | Дата: Среда, 22 Ноября 2023, 16:49 | Сообщение # 6 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата qomyqo ( ) Не сказать что это большая проблема. При цене серверного процессора в 300 рублей и серверной ОЗУ 32гб за 2000 рублей на Алиэкспресс. Сам факт того, что миллиарды инструкций исполняются напрасно, грея проц и увеличивая энтропию, огорчает. Или возможно, у меня просто проф деформация от 4-ых лет высоконагруженного веба на С++.
|
|
| |
JordanCpp | Дата: Среда, 22 Ноября 2023, 14:03 | Сообщение # 7 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата Storm54 ( ) Круто, но большой вопрос: зачем поддерживать старые системы? У меня у самого стоит в кладовке старый пенек 97 года с Windows 98 SE и даже до сих пор прекрасно работает, но какой от него реальный толк помимо ностальгии?
Моё желание, мне нравится ковыраяться со старым железом, а теперь ещё и программировать под него:) И нас таких не так уж и мало: www.old-games.ru, Железные призраки прошлого, Старый дос.
Цитата Storm54 ( ) Индустрия сформировалась таким образом, что намного дешевле, приятнее и быстрее обновить железо, нежели ковыряться в старом хламе. И это хорошо! Хорошо, что мы не бегаем по барахолкам, помойкам и прочим злополучным местам в поисках железа, как это было раньше. Это замечательно, но в то же время и породила другой момент, связанный с быстрым устареванием, тормозящими играми, программами, с высокими требованиями не пропорциональные функционалу софта или игры.(Я в презентации в первом сообщении, как раз рассматривал данный вопрос).
Что тот функционал требующий минимум времени на старых ПК и до сих пор являющийся константной сложностью. Пример десктопного GUI, сейчас реализуется по аналогии: нужен комбайн, а что бы его использовать требуется ещё и кран:)
Цитата Storm54 ( ) Вопрос производительности никак не связан со "старостью" системы и решается иным образом - пишите мерж реквесты в существующие библиотеки, чтобы оптимизировать медленные компоненты. Но, если мы возьмем Core технологии, например SQL СУБД, графические API и т.п, то там и так все очень сильно оптимизированно, особенно в последних версиях, того же DirectX 12/Vulkan API, например. Что Вы там будете оптимизировать - непонятно. Мелкие либы и фреймворки - уже другой вопрос, они могут в угоду производительности давать фундаментальные преимуществе в виде разных абстракций. Всё верно. Старое железо может показать, где и какой неоптимальный вызов присутсвует в коде. Какой функционал занимает много времени ЦПУ. К примеру когда тестируешь фреймворк на Pentium 166 mhz, открываются просто бездны тормозящего кода, а так как я позиционирую фреймворк как кроссплатформенную прослойку, она должна быть максимально тонкой и работать быстро. Чисто практичный подход. А если не тормозит на Pentium 166, тестируем на Pentium 75 mhz и далее по аналогии.
Добавлено (22 Ноября 2023, 14:24) --------------------------------------------- В коде нет ни одной строчки на ассемблере, но используются контейнеры STL, namespace, исключения. И всё это непотребство работает на Windws 95 с соответствующим железом. Я стараюсь писать простой и понятный и модульный код. Без жесткого хардкода. Присутствуют тесты.
Сообщение отредактировал JordanCpp - Среда, 22 Ноября 2023, 14:25 |
|
| |
JordanCpp | Дата: Среда, 22 Ноября 2023, 11:16 | Сообщение # 8 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата lvovand ( ) Xfce уже даже не та легонькая система, что ранее летала на любом старичке Что только подтверждает правило.
Добавлено (22 Ноября 2023, 11:25) --------------------------------------------- Странная ситуация, что графическое окружение требует те же ресурсы, что и игра Far Cry 1-2. В игре мне понятно, в ней миллионы треугольников в секунду на экране рисуются.
Сообщение отредактировал JordanCpp - Среда, 22 Ноября 2023, 11:25 |
|
| |
JordanCpp | Дата: Среда, 22 Ноября 2023, 11:02 | Сообщение # 9 | Тема: ArcanumWorld |
был не раз
Сейчас нет на сайте
| Приветствую!
Сссылка на репозиторий Lib-LDL/ArcanumWorld at master · JordanCpp/Lib-LDL
Данный проект является тестовым полигоном к проекту по реализации фреймворка LDL. На нём я тестирую API фреймворка, удобство разработки, реализую недостающий функционал. И конечно же реализую свободный и открытый движок моей любимой игры.
Движок совместим с ресурсами игры. Умеет читать графику art и работать с архивами игры dat. Проект на начальном этапе. Доступен только вывод простой карты. Карту можно перемещать клавишами w,a,s,d.
Я не стремлюсь к реализации 1 к 1. То есть, игра будет использовать графику, звуки и архивы игры. Но скриптовая система будет конвертирована в С++ код. Скрипты для игры будут разрабатываться на С++. Я понимаю, что это спорный момент, но для меня как разработчика, убирает большое количество работы с интеграцией интерпритируемых языков, стыковкой с движком, тестированием и другими мелкими проблемами, которые следует решить.
Ещё реазличия, это использование текстовых, человекочитаемых файлов для описания карт, характеристик монстров и юнитов. На данный момент мне не известен формат карт игры. Но в будущем думаю, получится конвертировать оригинальные карты в текстовый формат xml, который поддерживает движок.
На данны момент закладываю базис движка. В итоге хочу получить движок позволяющий пройти оригинальную игру + позволяющий делать моды к игре.
Так как движок разрабатывается на фреймворке LDL, собирается и работает на всех версиях windows + linux.
Сделал сборку совместимую c windows 95 и выше, код не переписывал под конктретную версию windows, фреймворк довольно хорошо абстрагирует нижележащую систему. Под linux выявил проблему несоответсвия путей между двумя система. Доработаю этот момент.
Сссылка на архив. Распакуйте в любой каталог и запустите ArcanumWorld.exe По умолчанию, в движке включен рендер OpenGL 1.2 ArcanumWorld.zip
По мере развития проекта, буду выносить общий код во фреймворк, к примеру работу с тайловой картой, анимацией и т.д Что бы можно было использовать код повторно. Некий общий мини 2D движок, который облегчит перенос старых или создание новых 2D игр. Как реализую поддержку ttf шрифтов во фреймворке, в игре появится поддержка unicode текса, сразу для всех систем. Не нужно создавать битмамы растровых шрифтов ограниченных кодировкой ascii. Полноценнная локализация игры будет работать и на windows 95.
Так же в движке есть зачатки простого GUI. Он в будущем так же будет перенесен во фреймворк. Главное отработать код и концепцию в игре и сделать его универсальным. Проект некий полигон для тестов и разработки. Но это ни в коей мере не невилирует его ценность как открытой альтернативой движка для игры Arcanum.
И так же я получаю опыт и знания по разработки 2D игр, так как в проф деятельности занимаюсь бэкенд разработкой.
Добавлено (22 Ноября 2023, 11:11) --------------------------------------------- Как собирать под Linux. 1. git clone https://github.com/JordanCpp/Lib-LDL.git 2. cmake . 3. make 4. cd Lib-LDL/Ports/ArcanumWorld/ 5. ./ArcanumWorld
Сообщение отредактировал JordanCpp - Среда, 22 Ноября 2023, 11:03 |
|
| |
JordanCpp | Дата: Среда, 22 Ноября 2023, 10:18 | Сообщение # 10 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Цитата lvovand ( ) Но чтобы установить, нужно уже памяти побольше, ну и процессор поновее, а вместе с ним и материнку надо обновить, ну и места на диске надо побольше заодно. А если бы все и на старом работало, то резона обновлять железо поубавилось бы Я согласен с вами. Мой проект поддерживает в том числе и очень старое железо и это его главная фича. Но если не брать системы 20+ лет, задача становится ещё проще по поддержке. Десятилетний ПК это современность, но уже на нём современные Windows и дефолтные Linux дистры уже начинают подлагивать и эта ситуация искусственная, библиотеки пожирнели, на старый код навесили ещё абстракций, запилили новые фичи не потратив время на их оптимизацию и т.д И конечно всё это зависит от экономики, если дешевле чик чик и в продакшн, так будет.
Начав работу над фреймворком, у меня был скепсис, я думал, что это не реально сделать один универсальный API для всех систем, но с каждой новой строчкой кода, после портирования под Linux очень старых годов к примеру тот же debian 3, я начал понимать, что оказывается это возможно. На практике проверил идею и она подтвердиась.
Мне ещё нравится тестировать производительность фреймворка на старом железе, сразу видны проблемы производительности.
Добавлено (22 Ноября 2023, 10:22) --------------------------------------------- Я понимаю, что фреймворком под Windows 95 и старые версии Linux будут использовать пару человек в мире, один из которых я:) Но лучше когда есть такая возможность, чем ёё отсутствие. И поддержка всего этого зоопарка не так сложна, я не пишу движок, фреймворк лишь тонкая кроссплатформенная прослойка.
Очень важный момент, что API единое для всех новых и старых систем, не требуется как то иначе разрабатывать проект, что бы он завелся на большинстве старых систем и железяк.
Добавлено (22 Ноября 2023, 10:26) --------------------------------------------- Я удивляюсь, как может тормозить графический интерфейс KDE, Gnome при аппаратном ускорении. Но у него получается:)
Добавлено (22 Ноября 2023, 10:48) --------------------------------------------- И ещё один из моментов, у меня появился козырь в рукаве. Не просто рассуждение, что современный софт тормозит, а непосредственное практическое утверждение. Но я не первопроходец, те же кастомные дистры Linux запускающиеся и работающие на Pentium 2. Конечно я понимаю, что если сделать быструю ОС, программу, софт, игру, всё будет зависеть от браузера, современный веб всё равно отъест гигабайты данных и время ЦПУ.
Сообщение отредактировал JordanCpp - Среда, 22 Ноября 2023, 10:49 |
|
| |
JordanCpp | Дата: Среда, 22 Ноября 2023, 07:41 | Сообщение # 11 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Спасибо за отзыв.
Вы же понимаете, что я писал статьи с долей иронии и сарказма. Конечно многие вещи я гиперболизировал, но это больше подчеркивает явную проблему между всё растущими требованиями софта к железу. Я сам фулл стек разработчик, понимаю, вижу как я или используемые мной библиотеки во многом неоптимальны и т.д
Данным проектом я ещё хочу доказать, что не так уж и много требуется усилий для поддержки старого железа и обеспечения достаточной производительности. К примеру поддержка OpenGL 1.2 занимает 1000 строк, OpenGL 3.3 примерно столько же + код шейдеров, а взамен дает совместимость с десятилетиями железа.
Цитата Kxarog ( ) Допустим мы доживём до завершения вашего проекта, как вы(и остальные) думаете каковы шансы что это изменит ситуацию? Те же инди разрабы(и не только инди) слезут с того же юнити? Я не пилю игровой движок, делаю именно фреймворк как кроссплатформенную базу, для простой 2D графики, управлениями событиями ос. SDL но на С++ и с поддержкой в том числе и старых систем. Так же фреймворк инициализирует для разработчика, OpenGL от 1.0 по 4.6
Сообщение отредактировал JordanCpp - Среда, 22 Ноября 2023, 07:43 |
|
| |
JordanCpp | Дата: Вторник, 21 Ноября 2023, 08:42 | Сообщение # 12 | Тема: Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой стар |
был не раз
Сейчас нет на сайте
| Тема перекочевала с дружественного сайта gamedev.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. Создавать библиотеку общего назначения(графичесйи интерфей, звук и т.д)
Выступил на конференции по С++ 2023 с темой: Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году
Видео по правилам конференции пока недоступно. Но доступны слайды.
Буду рад, советам, критике и предложениям.
Сообщение отредактировал JordanCpp - Вторник, 21 Ноября 2023, 08:49 |
|
| |
|