LINUX.ORG.RU
ФорумTalks

Пишу «принципиально новый» (:D) 3D графический движок

 , , , ,


1

3

Что из себя будет представлять: библиотека на C++ для работы с real-time 3D графикой. Часть будущего игрового движка, который пока только в мечтах (вероятнее всего будет состоять из 3D графического движка, движка позиционного звука, движка физики, движка скриптов и фасада над этим всем).

Основная архитектурная задумка: есть parent-child дерево объектов, состояние которых не зависит от используемого api рендеринга (OpenGL 3.3 Core, OpenGL 4.5+ Core, Vulkan, DirectX, ...) или операционной системы. Узел 'A' является дочерним по отношению к узлу 'B', если без узла 'B' узел 'A' не имеет смысла (например инстанс меша без сцены). Некоторые типы узлов могут менять своё состояние в зависимости от родительских или дочерних узлов, которые при могут не быть непосредственными parent/child конкретного узла. По этому дереву «модели» строятся деревья «контроллеров» — в основном рендеры, но можно и что-нибудь ещё туда прикрутить (мутаторы от пользовательского ввода, например).

Уже есть: «основа» движка — меши; шейдеры; (квази)статичные 2д текстуры (aka картинки, меняться могут, но редко); 2д текстуры, в которые выполняется внеэкранный рендеринг; OpenGL 4.5+ Core (требует ARB_bindless_texture) рендер; плагин со статичной геометрией; плагин для загрузки сцен с помощью библиотеки libassimp.

Запланировано: поддержка арматуры/скелетной анимации; модели освещения; Vulkan рендер.

Ядро движка: https://gitlab.com/KawaiiGraphics/Kawaii3D

OpenGL рендер: https://gitlab.com/KawaiiGraphics/Misaka3D

Assimp плагин: https://gitlab.com/KawaiiGraphics/KawaiiAssimp

Плагин со статичной геометрией: https://gitlab.com/KawaiiGraphics/KawaiiFigures3D

Сэмплы: https://gitlab.com/KawaiiGraphics/Kawaii3D-Samples

Скриптики для простой компиляции и запуска самлов, без необходимости ставить что-либо из моего софта в систему: https://gitlab.com/KawaiiGraphics/KawaiiEnvironment

Зависимости: Qt5, glm, libassimp (только для плагина KawaiiAssimp, https://github.com/assimp/assimp), sib_utils (https://gitlab.com/VadikLeshy/sib_utils).

Гну/Линукс при том, что это, вероятно, единственная ОС, где сие поделие работает как надо. В дальнейшем я добавлю полноценную поддержку, и форточек, и бздей, но сейчас хотя бы под линухом завезти всё, что запланировано.

upd: Сделал рефакторинг — теперь связи с родительскими (возможно не нпрямую) узлами, влияющими на поведение вычисляются в самом движке, а не в рендерах. Запустил одну из демок на Raven Ridge (вторая всё так же вызывает на нём GPU hang из-за фреймбуффера).

Скриншоты: AMD Raven Ridge: 1, 2.

AMD Radeon R7 M440: 1, 2, 3.

upd2: Решены некоторые проблемы со сборкой при использовании скриптов из репозитория KawaiiEnvironment.

★★★★★

Последнее исправление: robus (всего исправлений: 5)

Ответ на: комментарий от robus

И если все же захочешь пробовать для графики поиспользовать раст рекомендую брать gfx-rs сейчас он от вулкано минимально различается и главный разработчик русскоговорящий и можно спокойно позадавать вопросов в гиттере

playX ★★
()
Ответ на: комментарий от playX

Спасибо, учту. Но я не планирую в ближайшее время реинжинерить/переписывать Kawaii3D. На данном этапе архитектура не ограничивает, скорее наоборот — я ещё не полностью раскрыл её потенциал.

robus ★★★★★
() автор топика

И накой нам ещё один движок на цпп? Их и так уже куча, на любой дурной вкус.

Зы. Правильный 3Д движок называется castle_game_engine и не требует для сборки ни распоследних кутей, ни супернового гцц и либца. Но нужно ведь изготовить очередное хрен-скомпиляешь нечто, чтобы протестить и пристроить к делу все новые либы, что нипихали в систему при обновлении, чтобы протестить их для шапки.

Napilnik ★★★★★
()
Ответ на: комментарий от Deleted

А пользователи, которые нос воротят от определённых туллкитов и языков программирования - пусть идут к доктору.

Вот когда ты сам захочешь собрать такое изделие в своей системе, заранее запасись чем-то успокаивающим, чтобы не раздолбать аппаратную часть от радости.

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

чтобы протестить их для шапки

На RHEL не соберётся — слишком старые Qt и компилятор :D

Правильный 3Д движок называется castle_game_engine и не требует для сборки ни распоследних кутей, ни супернового гцц и либца.

Зато требует для сборки разложившийся fpc. Хуже того, использующие его приложение тоже должно быть на паскале.

We have many graphic features (shadows, mirrors, screen effects...) and support many data formats for game assets (X3D, VRML, Collada, Spine...). We have a nice scene manager, with many optional components (like instant creatures with simple walking and attacking intelligence).

За 12 тысяч коммитов и 3 года 8 человек сделали _это_. Отличный пример для подражания, почему бы и нет.

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

Вот когда ты сам захочешь собрать такое изделие в своей системе, заранее запасись чем-то успокаивающим, чтобы не раздолбать аппаратную часть от радости.
https://gitlab.com/KawaiiGraphics/KawaiiEnvironment

Клонируешь. Запускаешь download-and-build.sh. Остальные 2 скрипта — это запускаторы самплов. Их нужно ранить из директории где они лежат. Запустить 1 скрипт это _чудовищно_ сложно, ага.

robus ★★★★★
() автор топика
Ответ на: комментарий от robus

На RHEL не соберётся — слишком старые Qt и компилятор :D

Зато там новые либцы и глиб2 - есть вероятность что заработает уже где-то собранное через флатпак. А твои новые кути и компиляторы, которые ты тестировал и популяризировал, через несколько лет дозреют и попадут в шапку - спасибо что потрудился, вот тебе пламенное спасибо.

Зато требует для сборки разложившийся fpc.

fpc живее всех живых. Его новая 3.0.4 версия может быть собрана как на старых линуксах, так и на новых, в последнем случае соберётся и будет создавать бинарники уже нового формата - твои прогрессивные плюсы так умеют? Да новый gcc просто не вкорячишь на не новый линукс - этот монстрозомби разваливается на ходу и требует переносить его на новое место вместе с куском склепа где он захоронен. Ну как после такого проги собранные на новых плюсах могут не фрагментировать экосистему;)

Хуже того, использующие его приложение тоже должно быть на паскале.

Ах какой ужас: оно не требует кутей, новых ядер, постоянно нового окружения, 32Гб озу для сборки - ни какого прогресса. Я понимаю, когда за плюсы хорошо платят, тогда есть какой-то смысл погружаться в эту боль, но ради фана...

Napilnik ★★★★★
()
Ответ на: комментарий от playX

зачем на приниципиально старом ЯП пилить?))

А в расте что то принципиально новое появилось?

linuhs_user
()
Ответ на: комментарий от robus

Клонируешь. Запускаешь download-and-build.sh. Остальные 2 скрипта — это запускаторы самплов. Их нужно ранить из директории где они лежат. Запустить 1 скрипт это _чудовищно_ сложно, ага.

yum list qt5-qtbase
Загружены модули: langpacks, presto, refresh-packagekit
Repository fedora is listed more than once in the configuration
Repository fedora-source is listed more than once in the configuration
Установленные пакеты
qt5-qtbase.x86_64                     5.0.2-2
$ gcc --version
gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)
Copyright (C) 2012 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая 
коммерческую ценность и применимость для каких-либо целей.

Точно соберётся;)

Napilnik ★★★★★
()

Ужос конечно.) Этот стиль, это расположение исходников (я бы отделил графическую часть итд). Но если редактор и скриптоязык прикрутить то может и неплохо будет.

linuhs_user
()
Ответ на: комментарий от ozz_is_here

А может кто-нибудь объяснить пожалуйста насчет шейдеров: вот есть разные API (OpenGL, Vulkan, DX). Как я понимаю, разработчики не пишут несколько имплементаций (если я правильно понимаю это слово) шейдеров под разные API. Получается, что они пишут какой-то один язык, который транслируется в нативные форматы шейдеров?

По разному. Кто-то пишет один шейдер на препроцессоре (SMAA например), кто-то пишет под каждую платформу, всякие анрилы использую генераторы.

Stil ★★★★★
()
Ответ на: комментарий от linuhs_user

Этот стиль, это расположение исходников (я бы отделил графическую часть итд)

Чем именно не нравится стиль? Графическую часть? Имеются ввиду классы для непосредственной работы с OpenGL в Misaka3D?

Но если редактор и скриптоязык прикрутить то может и неплохо будет.

Редактор имеется ввиду сцен? Скриптоязык в планах — пока выбираю между Lua, JS и python3.

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

всю жысть канпеляю, в том числе и с помощью qmake, и никаких особенных проблем со сборкой кутесофта не замечаю. А вот доморощенные, с нуля написанные, трушные велосипеды, вотетада... батхёрт ещё тот. Кумейковский фвйл распарсить легче, чем даже симейковскую вавилонскую башню. Кути (гипотетически) берут на себя также и другие рутинные задачи. Вот вспомни gl-117, писали с нуля. изобретали велосипед во всём, в итоге сдулись. Если автор использует ту среду и туллкит, который понимает, разве это плохо?

Ты на лазарусе сваял какую-то вендокакашку, что, она лучше стала от того, что не использует кути и житыки и эсдыелы? Я, как конечный пользователь, должен не замечать технологии. Я оцениваю по конечному результату. И только это правильно. Иначе, ван рейх.

Deleted
()
Ответ на: комментарий от Napilnik

Зато там новые либцы и глиб2 - есть вероятность что заработает уже где-то собранное через флатпак.
флатпак

Латентный вендузятник что ли?

А твои новые кути и компиляторы, которые ты тестировал и популяризировал, через несколько лет

Протухнут и в нормальных дистрах будут заменены на новые версии.

fpc живее всех живых. Его новая 3.0.4 версия может быть собрана как на старых линуксах, так и на новых

Верно. Он _живее_ всех живых, но сам к живым не относится. Разлагающийся гиперактивный зомби без обобщенного программирования, фишек из функциональщины (лямбды, семейства функций) и вменяемого параллелизма.

в последнем случае соберётся и будет создавать бинарники уже нового формата - твои прогрессивные плюсы так умеют?

При этом весом бинарники будут больше, чем весь мой движок вместе с его сэмплами. Что «нового», что «старого» формата.

Да новый gcc просто не вкорячишь на не новый линукс - этот монстрозомби разваливается на ходу и требует переносить его на новое место вместе с куском склепа где он захоронен. Ну как после такого проги собранные на новых плюсах могут не фрагментировать экосистему;)

Сдался тебе этот gcc. Изрядно подпротухший пятый кланг, вроде бы способен собрать KawaiiEnvironment целиком.

Ах какой ужас: оно не требует кутей, новых ядер, постоянно нового окружения, 32Гб озу для сборки - ни какого прогресса.

Ни какого автодополнения, раскраски кода, и производительности (Логика паскаля — «OpenGL 4.5 Core? Vulkan? Зачем, когда есть окаменелые glBegin-ы? И вот тебе ещё GC в нагрузку!»).

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

qt5-qtbase.x86_64 5.0.2-2

Жесть. Древнее, чем штабильность. Ладно на работе, но иметь такой копролит дома.. Извращуга!

robus ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Ты на лазарусе сваял какую-то вендокакашку

Они её в восьмером ваяли!

robus ★★★★★
() автор топика
Ответ на: комментарий от robus

Чем именно не нравится стиль?

Ну это больше к плюсам, хотя тащить Qt, ну низнаю..

Графическую часть?

Ну сделать Core/Video/Audio/Physics/World и туда все распихать, а то все в одной папке пока что. Ну папки есть, только мне кажется нужно еще поделить на куски)

Редактор имеется ввиду сцен?

Де, а насчет языка, мне кажется JavaScript подходящим, сишный в отличие от lua и не переусложненный как питон.

linuhs_user
()
Последнее исправление: linuhs_user (всего исправлений: 1)

Было бы очень здорово, если бы ты выложил видеодемонстрацию работы движка, а так же его фичи по сравнению с id Tech 3 и 4, например.

Ибо 3-D движков на opensource лицензиях уже довольно много, два из них я даже упомянул. Но все равно молодец, что пишешь что-то под GPLv3.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от linuhs_user

Ну это больше к плюсам, хотя тащить Qt, ну низнаю..

Т.е. листингов с кодом в «ужасном стиле» не будет?

Ну сделать Core/Video/Audio/Physics/World и туда все распихать, а то все в одной папке пока что. Ну папки есть, только мне кажется нужно еще поделить на куски)

Сейчас есть только Core и Video. Audio/Physics/World будут не просто отдельными папками, а отдельными проектами, лежащими в отдельных репах.

robus ★★★★★
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Было бы очень здорово, если бы ты выложил видеодемонстрацию работы движка, а так же его фичи по сравнению с id Tech 3 и 4, например.

Будь движок готов к применению в играх (даже самых тривиальных), я принёс бы его в Develop. Что-то играбельное принесу уже в News.

Но все равно молодец, что пишешь что-то под GPLv3.

Одно время поднимал здесь тему лицензий. Никто не смог внятно по полочкам разложить, чем MIT лицензия (которую очень часто берут для движков) лучше была бы в данном случае. А GPLv3 — вариант «по-умолчанию» :)

robus ★★★★★
() автор топика
Ответ на: комментарий от robus

Ну вот например, мне от этого становиться плохо:
https://gitlab.com/KawaiiGraphics/Kawaii3D/blob/master/Source/Geometry/Kawaii...

Вообще мне кажется это больше проблема языка, вот Forth в этом неплох.)

Сейчас есть только Core и Video. Audio/Physics/World будут не просто отдельными папками, а отдельными проектами, лежащими в отдельных репах.

Ну так а почему в ядре material, geometry в одной папке source? Мне кажется так быть недолжно, что у тебя вообще есть ядро движка?

linuhs_user
()

robusБ я думаю что тебе надо не графику пилить, много ты один не напилишь, а даже если и напилишь, то особой нужды в этом не будет, всё равно красота игры создаётся художниками и дизайнерами уровней.

Ты вот что можешь сделать, явно раздели движок и игру, пусть там подобно тому как плеер открывает файл с музыкой или фильмом, так же и твой движок открывает игру, ну пусть только представленную не одним файлом, а каталогом.
А то ведь надоела ситуация когда игра и её движок связаны в монолит, который усовершенствовать или перенести на другую ось нельзя.

Пусть на стороне движка будет сам графический движок, API взаимодействия персонажей или пердметов, компилятор шейдеров.
А на стороне игры скрипты поведения персонажей, текстуры, модели, шейдеры в исходном коде, ну и что там ещё может быть полезного.

Движок будет ставится как обычное Linux приложение, по нормальному пакетным менеджером, а не как сейчас, мимо него и игра будет запускаться выбором содержащей её папки.

torvn77 ★★★★★
()
Ответ на: комментарий от robus

GitLab

Какая-то мутная коммерческая контора, которая абсолютно ничего для OpenSource сообщества не сделала, в отличие от Microsoft, чей вклад в развитие Linux-ядра и opensource окружения сложно переоценить.

anonymoos ★★★★★
()
Ответ на: комментарий от Deleted

Ты на лазарусе сваял какую-то вендокакашку, что, она лучше стала от того, что не использует кути и житыки и эсдыелы?

У тебя может и какашка, а у меня кроссплатформенный ништяк, в который сейчас гамаюсь, но пока не доделаю до конца - тебе всё равно не покажу. Раз не хотите тестить технодемки, значит любите глюки, мне то что, в релизе всё протестится:)))))) И да, без кутей она круче - не надо трахаться со внешими либами, второе гтк в линуксе наше всё. Как выйдет четвёртый, тогда наверно третий станет наше всё. А зачем мне в проекте именно c++17 - я пока не в курсе, может просветишь?

Я, как конечный пользователь, должен не замечать технологии. Я оцениваю по конечному результату.

Когда не установить и не скомпилять, результат отменный.

Napilnik ★★★★★
()
Ответ на: комментарий от robus

флатпак

Латентный вендузятник что ли?

А в линуксах многие программы по другому разве работают, не тащат за собой гигов 12 зависимостей?

Протухнут и в нормальных дистрах будут заменены на новые версии.

Новые = нестабильные. Судьба пользоваться недоделанным и ломать как только починится.

Верно. Он _живее_ всех живых, но сам к живым не относится. Разлагающийся гиперактивный зомби без обобщенного программирования, фишек из функциональщины (лямбды, семейства функций) и вменяемого параллелизма.

На гцц посмотри - вот уж зомби так зомби, не перетащить в систему кроме как в самосвале с компостом. Вы в плюсах уже сделали звиздец и ни одного нормального видеоредактора под линуксом - нам ваших дизайнерских изысков не надо.

При этом весом бинарники будут больше, чем весь мой движок вместе с его сэмплами. Что «нового», что «старого» формата.

Твой новый движок потянет гигабайты зависимостей, без них он набор хлама: и либц ему не тот, и линковщик понадобится особенный, и кути не тех версий, а потом может до дров видухи докопаться и как в одном коммерческом движке - ни одной демки без ААА потребностей. Вот кому говорить про вес бинарников, так не цэпэпэшникам пишущим на всём «не протухшем». У вас даже модулей импорта нормальных нет - всё гребёте как пылесосом из заголовков что в систему для теста положили, а потом вдруг зависимости выросли. Вот никогда не было и вдруг опять:)

Ни какого автодополнения, раскраски кода, и производительности

Автодополнение та ещё гадость, когда пихает в код не то что тебе надо. Есть эта штука, а раскраска имеется даже в консольном редакторе. Что до производительности, то зачем вдруг понадобились ССД если плюсы не тормозят? Вы компиляете на самых мощных компах, потому что компиляция тормозит, и просто не замечаете просадки производительности в приложениях пока не станет совсем весело.

Зачем, когда есть окаменелые glBegin-ы?

Ну не гадкие же скобочки использовать, которые только для коментов с директивами годятся. Люди скобочками обычно не разговаривают, это противоестественно.

Napilnik ★★★★★
()
Ответ на: комментарий от robus

Жесть. Древнее, чем штабильность. Ладно на работе, но иметь такой копролит дома.. Извращуга!

А что из новой кути делать, плов варить?

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

Когда не установить и не скомпилять, результат отменный.

Кути в этом проректе нужны хотябы для того, чтобы у туллкитофобов пердаки взрывались. Как тебе кути мешают собрать что? «Резать к чёртовой матери!»

Deleted
()
Ответ на: комментарий от Napilnik

У тебя может и какашка, а у меня кроссплатформенный ништяк, в который сейчас гамаюсь, но пока не доделаю до конца - тебе всё равно не покажу. Раз не хотите тестить технодемки, значит любите глюки, мне то что, в релизе всё протестится:)))))) И да, без кутей она круче - не надо трахаться со внешими либами, второе гтк в линуксе наше всё. Как выйдет четвёртый, тогда наверно третий станет наше всё. А зачем мне в проекте именно c++17 - я пока не в курсе, может просветишь?

Твоими же аргументами - «А!!! Что!!! Нахрена на Лазарусе!!! Как его теперь собрать? Я что, ради твоей гоноподелки должен целый лазарус ставить? Ради одной твоей проги? Офигел? Срочно переделывай на баше!!!»

Deleted
()
Ответ на: комментарий от torvn77

Я думаю что тебе надо не графику пилить, много ты один не напилишь, а даже если и напилишь, то особой нужды в этом не будет, всё равно красота игры создаётся художниками и дизайнерами уровней.

Предлагается пилить не только графический движок, а игровой движок, не ставя задачи отделить Video от Audio и от Physics в отдельные библиотеки. И это вроде-как должно ускорить разработку?

Ты вот что можешь сделать, явно раздели движок и игру, пусть там подобно тому как плеер открывает файл с музыкой или фильмом, так же и твой движок открывает игру, ну пусть только представленную не одним файлом, а каталогом.

Да. Идея в этом и состоит. Но это уже 2 приложения — редактор игр для дизайнеров и запускатель для игроков. Редактор должен быть максимально эргономичен и функционален. Запускатель не должен отпугивать потенциальных пользователей большим количеством управляющих элементов, а также выглядеть в стиле современных лаунчеров игр.

А то ведь надоела ситуация когда игра и её движок связаны в монолит, который усовершенствовать или перенести на другую ось нельзя.

Именно так. А ещё надоела ситуация, когда нельзя просто взять и подменить рендер и использовать OpenGL 3.3 Core, 4.5 Core или вообще Vulkan по своему усмотрению.

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

А что из новой кути делать, плов варить?

Писать пет-проджекты, очевидно же. Новые фичи, багфиксы, оптимизации — почему на них часто забивает ынтырпайз я примерно понял. Но «вольному программисту» не зачем ставить себе такие гротесктные ограничения.

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

У тебя может и какашка, а у меня кроссплатформенный ништяк, в который сейчас гамаюсь, но пока не доделаю до конца - тебе всё равно не покажу.

По любому говнокод рефакторить будешь, а сейчас пишешь «чтобы хотя бы работало и хотя бы на моей GPU+драйвер» :)

Раз не хотите тестить технодемки, значит любите глюки, мне то что, в релизе всё протестится:)

Это если сия поделка будет кому-то нужна. Будет ли она нужна, зависит от того, как вы (вас же там 8?) распиарите её. Так что выкладывай свою техно-демку.

А зачем мне в проекте именно c++17 - я пока не в курсе, может просветишь?

Так у тебя же лазарус? У меня в проекте c++17 ради лаконичности кода, constexpr if и ещё пары плюшек.

Когда не установить и не скомпилять, результат отменный.

Я не заставляю тебя сидеть на окаменевшем куске прото-динозавра. На актуальных дистрах оно соберётся (даже на стагнационном RHEL 6.1).

robus ★★★★★
() автор топика
Последнее исправление: robus (всего исправлений: 2)
Ответ на: комментарий от Napilnik

На гцц посмотри - вот уж зомби так зомби, не перетащить в систему кроме как в самосвале с компостом. Вы в плюсах уже сделали звиздец и ни одного нормального видеоредактора под линуксом - нам ваших дизайнерских изысков не надо.

gcc как раз живой — ему не пофиг, пахнет в доме хвоёй или гнилью и плесенью, установлен там японский унитаз с электроникой, или удобства в ближайшем лесу. Лазарусу уже очень давно всё равно. Он ведь даже воздухом не дышит — всё на «внутреннем ресурсе».

Вот кому говорить про вес бинарников, так не цэпэпэшникам пишущим на всём «не протухшем». У вас даже модулей импорта нормальных нет - всё гребёте как пылесосом из заголовков что в систему для теста положили, а потом вдруг зависимости выросли. Вот никогда не было и вдруг опять:)

Им дали forward declaration, они «жадными инклюдами» перемазываются. И компиляется по 30 лет потом, хотя _вся_ логика у этих говнокодеров в рантайме. Бесит уже, если честно.

glBegin
Ну не гадкие же скобочки использовать, которые только для коментов с директивами годятся. Люди скобочками обычно не разговаривают, это противоестественно.

//Путает способ передачи информации о вершинах в драйвер с операторными скобками

Мдэ.. Ну когда команда из 8 человек, то ты можешь взять на себя только пиар?

robus ★★★★★
() автор топика
Ответ на: комментарий от ozz_is_here

Почему не C#? :D

[sarcasm]Потому, что ненавижу ООП, очевидно же[/sacrasm] :D

robus ★★★★★
() автор топика
Ответ на: комментарий от anonymoos

А какие заметные bad-ы за GitLab-ом имеются? Они, в отличие от мелких не пытались похоронить OpenGL, когда тот был на 3 ветке. Не GitLab убил Gallium11, не GitLab занимается рэкетом на рынке андроидофонов.

robus ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Твоими же аргументами - «А!!! Что!!! Нахрена на Лазарусе!!! Как его теперь собрать?

Во первых, оно с большой вероятностью не требует пересборки, просто распаковываешь, засыпаешь недостающие либы, сверхновые не обязательно, и запускаешь. А если захочешь пересобрать, это технически возможно на x86* линуксе годов ~2007+. А то что написано на c++17, на линуксе не поддерживающем его компилятор хрен соберёшь, даже если захочешь. И кем-то собранное запустить маловероятно, потому что оно насосалось дурных зависимостей и без них не может, как наркоман без дозы. Ставь другую версию линукса, там и собирай! И в итоге мы имеем: пацаны, я собрал крутую программу, установите самую последнюю версию линукса и сможете её собрать или запустить!

Я что, ради твоей гоноподелки должен целый лазарус ставить? Ради одной твоей проги? Офигел? Срочно переделывай на баше!!!»

Я ради твоей говнопролграммы должен ставить ебунту 18? Да пошла твоя программа, вместе с авторами c++17_20_30...., куда Макар телят не гонял! //исправлено

Napilnik ★★★★★
()
Ответ на: комментарий от robus

Писать пет-проджекты, очевидно же. Новые фичи, багфиксы, оптимизации — почему на них часто забивает ынтырпайз я примерно понял. Но «вольному программисту» не зачем ставить себе такие гротесктные ограничения.

У вольного погромиста есть железо, которое просит вкусных дров, а те не в каждой версии линукса вкусные. В результате, если захочешь своих распрекрасных кутей последней версии, то сиди на говняных дровах или покупай новое железо, для которого другие дрова вкусные. с++ придуман для ынтырпраза, а не для вольных погромистов, и стандарты с фичами пишут тоже для ынтырпраза, а в линуксе почти всё сделано для ынтырпраза, посему выходит гремучая смесь, когда её используешь, где-нибудь да рванёт. Например, покойная десура выпустила обновление клиента - хрясь, у вас не тот линковщик, идите нафиг. Теперь стим обновлений накачал... И ведь они просто не умеют писать иначе. Я не против твоего движка, как хобби: делай сколько влезет, пока другие зарабатывают бабки и катают за них б.... дам в ресторан (плюсы ведь для этого нужны, наверно). Но на той же центоси последнюю версию тебе даже не протестят. А когда её протестят, ты уже сам не сможешь собрать в своём текущем линуксе то, что там запустили, потому что лет 5-10 прошло:)

Napilnik ★★★★★
()
Ответ на: комментарий от totik

зачем она вам нужна?

Движок использует систему 'Memento' из библиотеки sib_utils, которая использует рефлексию для восстановления деревьев объектов по снимкам (в снимках записано персистентное состояние и тип для каждого объекта; иерархия дерева Memento полностью повторяет иерархию исходного дерева объектов).

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

Во первых, оно с большой вероятностью не требует пересборки, просто распаковываешь, засыпаешь недостающие либы, сверхновые не обязательно, и запускаешь.

Мсье напильник — точно вендузятник. Даже не латентный.

засыпаешь недостающие либы

А если они и так есть в системе, изнасилованный лажарусом линковщик их не обнаружит, надо полагать?

Я ради твоей говнопрограммы должен ставить ебунту 18?

Никакого *бунту-специфичного кода в движке нет в помине. Ставить можешь любой актуальный линукс. Как вообще можно древним линуксом пользоваться? Там же даже драйверов нормальных нет!

robus ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

У вольного погромиста есть железо, которое просит вкусных дров, а те не в каждой версии линукса вкусные.

Как говаривал разраб Wayland композитора sway — «выбирайте железо для нужного софта, а не софт для завалявшегося железа».

robus ★★★★★
() автор топика

Удачи с этим, мб чего и получится в итоге.

Bfgeshka ★★★★★
()
Ответ на: комментарий от Napilnik

Что до производительности, то зачем вдруг понадобились ССД если плюсы не тормозят?

SSD понадобились, потому, что тормозит JS, C#, Pascal, на-чём-ещё-в-венде-придумали-софт-писать.

Вы компиляете на самых мощных компах, потому что компиляция тормозит, и просто не замечаете просадки производительности в приложениях пока не станет совсем весело.

По мнению лоровских аналитиков, так у меня железо дно-дном:

1 ноутбук с AMD A12 9700P и Radeon R7 440M; (основная машина)

1 ноутбук с неработающим экраном на Intel Core i7 3610QM и NVIDIA GT650M;

1 десктоп на AMD Ryzen 5 2400G, видео — только встроенная Vega (на нём я почти не пишу 3D графику, слишком старые драйвера для GPU — ох уж этот Raven Ridge: Linux 4.18 + LLVM7 + mesa 18.2 для него слишком старое).

Так что это как раз вы поставили каждому в команде 1080TI да RX580 и кричите «glBegin-ы не тормозят! 4.5 Core Profile ненужно!».

robus ★★★★★
() автор топика
Ответ на: комментарий от robus

По любому говнокод рефакторить будешь, а сейчас пишешь «чтобы хотя бы работало и хотя бы на моей GPU+драйвер» :)

Ты серьёзно думаешь что я с нуля набросал бы нечто такое за несколько недель? Ага, счас. Покуда сам не протестируешь, точно не будешь знать что всё работает, потому что в документациях чернуху писать не любят, а тебе с ней работать. Оттуда кусок скопипастим, отсюда, ещё откуда-то, а это копипастить не будем - слишком жирно для бесплатной версии. Как-то так, посему многое уже протестировано и пропатчено много раз.

Это если сия поделка будет кому-то нужна. Будет ли она нужна, зависит от того, как вы (вас же там 8?) распиарите её. Так что выкладывай свою техно-демку.

Нет, это срач из гамесов уже сюда перекинулся. Кюасар-Напильник-чегототам распиарил то, о чём пока молчать должен был - о 2Д невизульном движке визуальных новелл. Про эту штуку. По сути о шаблоне среднестатистической мышетыкательной казуалки, которая идёт в комплекте чтобы показать основные приёмы, которые эта штука тянет без доработки. Уже суббота, на этой неделе доделать явно не успею, за инвентарь ещё не брался, от него только пустой «ящик». А технодемки там были - хелловорды, которые только и умели что тестировать совместимость с системой, целиком ни разу не выкладывалось.

Так у тебя же лазарус?

Это со слов «Рабиновича, который симфонию перепел». На лазарусе только морда, которая лежит в соседнем каталоге и большую часть времени есть не просит, а почти всё остальное на чистом fpc.

На актуальных дистрах

...швабодные недодровишки, которые из маркетинговых потребностей не умеют регулировать контрстность картинки, из-за чего совместимость видухи с монитором портится. Не очень приятно, когда монитор светит как прожектор, а если подаваемое на него изображение не затемнять, то на этой модели это так.

Napilnik ★★★★★
()
Ответ на: комментарий от robus

gcc как раз живой — ему не пофиг, пахнет в доме хвоёй или гнилью и плесенью, установлен там японский унитаз с электроникой, или удобства в ближайшем лесу.

Ну и как мне поставить последнюю версию на федору 17;) Если он такой живой, то должен и на моём дистре показать свою живость.

//Путает способ передачи информации о вершинах в драйвер с операторными скобками

А как тут не путать, если голый опенгл ни разу не кодил, всегда использовал уже готовые прослойки.

Мдэ.. Ну когда команда из 8 человек, то ты можешь взять на себя только пиар?

Ты меня путаешь с другой командой. В моей команде 1 человек: и кодер и рисовальщик и прочее, прочее. Вот кого нет, так это программиста шейдеров:)))) Ты не поверишь, но любой норм движок содержит ещё кучу всякой хрени, которую ты до морковкиного заговения не успеешь нормально реализовать, если будешь ещё и в вершинах ковыряться.

Napilnik ★★★★★
()
Ответ на: комментарий от robus

Мсье напильник — точно вендузятник. Даже не латентный.

Сходи изучи матчасть. Посмотри на хитрый механизм импорта из внешних либ, который реализован в fpc - в Си и плюсах такого нет. Вы же напрямую из системных заголовков информацию в программу тянете, даже не помыв и не выдержав её в морозилке для убиения излишних живчиков.

А если они и так есть в системе, изнасилованный лажарусом линковщик их не обнаружит, надо полагать?

Линковщик ищет сами либы по определённому адресу, который прописан в бинарнике. Либы или есть или их нет. Если в дистре другие пути, ставь симлинк или извращайся с пусковым башскриптом. Чтобы изменить пути вбитые в бинарник, его надо пересобрать. Пока ты писал для шейдеров, упустил другую информацию, одному человеку тяжело думать за дивизию.

Как вообще можно древним линуксом пользоваться? Там же даже драйверов нормальных нет!

Только там они и есть, для радеона третьей серии:))))) Чего нет, так это дров для нормального рисовального планшета, но у меня то его и нет;)

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.