Пятница, 10 Мая 2024, 20:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » JordanCpp [12]
Результаты поиска
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 | Тема: Разработка движка (детальное описание для новичков) [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
Форум игроделов » Записи участника » JordanCpp [12]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг