Xtreme3D

Старый форум движка Xtreme3D. Регистрация закрыта навсегда, новый форум по ссылке

Вы не вошли.

#1 Анонсы » Новый форум » 2025-02-12 22:55:11

Gecko
Ответов: 0

FluxBB не поддерживается уже несколько лет, поэтому я решил мигрировать на новый форумный движок (MyBB). Переходим на новый форум по адресу https://xtreme3d.ru/forums/. Все аккаунты, темы и сообщения перенесены, регистрироваться заново не надо (может, только пароль поменять на всякий случай).

Старый пока продолжает работать, но регистрацию на нем я отключил, ибо задрали спамеры.

#2 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2025-02-06 18:48:23

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

van88268 пишет:

по рылся в новом глсцене и увидел там фаилы  → Packagex/GLArena ....
Очень интересно для чего может знаешь гекко ? ) smile

Что такое GLArena не знаю) В новой сцене вообще бардак какой-то, совместили базовую версию с каким-то форком, теперь почему-то параллельно два набора юнитов (GLS и GXS) hmm
Но у меня в любом случае собственный форк всегда был с дополнениями для X3D, плюс там много застарелых багов, которые я у себя сейчас правлю.

#3 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2024-08-01 19:19:21

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

  • Функция Update теперь называется EngineUpdate

  • Функция TrisRendered удалена

  • Функция ViewerRenderEx удалена

  • Изменился смысл функции EngineSetMaxLights. Теперь она задает максимальное количество источников света, которые учитываются основной системой освещения и системой LightFX. По умолчанию это количество равно 8 (максимум для основной системы освещения). Если вы хотите использовать больше источников света для системы LightFX, нужно использовать эту функцию

  • Функция ViewerGetPickedObjectsList теперь работает с объектами-списками PickList, которые нужно создавать вручную

  • Функция ViewerRenderToFilePNG удалена - сохранение в PNG теперь поддерживается в ViewerRenderToFile

  • Функция CameraZoomAll теперь требует указания Viewer во втором параметре

  • Функция SpriteNoZWrite удалена, используйте вместо нее MaterialSetDepthWrite

  • Функция MaterialCullFrontFaces удалена

  • Функция MaterialSetZWrite теперь MaterialSetDepthWrite

  • Переделана система TextureEx у материалов. Удалены функции MaterialLoadTextureEx, MaterialSetTextureEx, MaterialSetTextureExFromLibrary, MaterialGenTextureEx, MaterialEnableTextureEx

  • Удалены функции ObjectGetCollisionPosition, ObjectGetCollisionNormal - вместо них теперь EngineGetLastRaycastPosition, EngineGetLastRaycastNormal, которые делают то же самое

  • Функции Polygon удалены

  • Функции TTFontSetEncoding, TTFontLoadCodePage удалены. Все строки в движке принимаются только в UTF-8.

  • Для поддержки TTF пришлось добавить в движок SDL+SDL_ttf, т.к. я не нашел рабочий биндинг Freetype к свежим версиям Delphi. Весь Гитхаб перерыл, нету sad

  • Функции TextRead, TextConvertANSIToUTF8 удалены

  • Функция OdeAddCone удалена

  • Переделана система FBO. Удалены функции FBOSetViewer, FBORenderObject, FBORenderObjectEx, FBOSetOverrideMaterial, FBOSetColorTextureFormat. FBO теперь лучше интегрирован в граф сцены

  • Переделаны тени ShadowMap. Удалены функции ShadowMapSetCaster, ShadowMapSetProjectionSize, ShadowMapSetZScale, ShadowMapSetZClippingPlanes, ShadowMapRender. Добавлен новый объект ShadowCamera

  • Функция PtrToReal теперь называется PointerToReal


В исходнике есть пример, рассчитанный на GM рантайм 2024.4.1.201 или новее.

#4 Re: Вопросы и ответы » Problem with MaterialCreate (Solved) » 2023-07-07 16:43:10

It is a bug in the GML binding which was fixed in version 3.9.1. The library actually has only 2 arguments: name and file path. The third can be safely removed from the scripts (init_material and MaterialCreate).

#5 Re: Вопросы и ответы » Вопрос о PBR, использующийся в некоторых демонстрациях возможностей дв » 2023-04-29 09:34:48

Разница не в том, металлический объект или нет. Эти две модели по сути одно и то же, просто они выносят в текстуры разные компоненты формулы освещенности. Насколько я понимаю, модель metallic+roughness придумана для того, чтобы соблюдался закон сохранения энергии (diffuse + specular < 1.0), то есть, грубо говоря,

specular = baseColor * metallic
diffuse = baseColor * (1 - metallic)

Roughness же - это просто 1-gloss.

Я сторонник metallic+roughness модели, во всех своих шейдерах использую ее) Если хранить сразу specular и diffuse, то есть вероятность, что получится "нефизичная" комбинация, где совокупная отраженная энергия больше падающей, а это уже не PBR wink. Для сохранения энергии нужно делать дополнительные телодвижения: текстуры должны быть взаимосвязанными - чем больше gloss, тем ярче specular (и, соответственно, тусклее diffuse). У metallic+roughness такой связи между текстурами нет, что довольно удобно.

Также разница в экономии по весу:

Specular+gloss - 24-bit (diffuse) + 24-bit (specular) + 8-bit (gloss)
Metallic+roughness - 24-bit (baseColor) + 8-bit (metallic) + 8-bit (roughness)

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

В общем случае, если текстуры создавались под рендер specular+gloss, то их уже не сконвертировать в metallic+roughness, и нужно переписывать рендер. А вот обратный процесс возможен.

#6 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2023-02-14 10:33:56

Проклятый Порох пишет:

Баг нашёл давно, но чёт решил ток щас написать. При включении демки, которая идёт с альфой, экран х3д на секунду появляется, а затем исчезает. Вот как это выглядит - https://www.youtube.com/watch?v=UXoBvNRYZQc. Возможно ли это исправить, и если да, то как?

Пока сложно сказать, сейчас потестил на обновленном gms - все работает, как и раньше. Теоретически, какие-то функции (например, те же шейдеры из x3d 3.x) могут с некоторыми видеокартами плохо работать, либо могут быть баги в GLScene 2.

JunkerKun пишет:

А есть сподвижки с биндингом к С++?

Биндиги будут по готовности самого движка, после релиза 4.0.

#7 Re: Программирование и геймдев » Про новомодный bbmod... » 2023-01-15 09:16:45

Не знал об этом движке раньше. К сожалению, демка из коробки не запустилась, выдает ошибку "Variable <unknown_object>.show_debug_message_ext(101506, -2147483648) not set before reading it."
Судя по скринам, выглядит довольно интересно - как я понял, он написан на чистом GML, без библиотек? Если так, то это имхо минус, т.к. встроенное 3D в ГМ всегда будет ограниченным, и там нет особых перспектив для развития.

#8 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2023-01-11 17:02:11

Привет форумчанам, всех с наступившим Новым годом!
На праздниках было время заняться этим проектом - и вот, выпускаю, как и обещал, первую альфа-версию Xtreme3D v4 для 64-битного GameMaker Studio 2:

Релиз на GitHub

Реализована вся функциональность из v3, кроме следующей:

  • Система TextureEx для материалов

  • Система освещения LightFX

  • Теневые карты ShadowMap

  • Объекты HUDShape

  • Объекты шрифтов TTFont

  • Поддержка индивидуальной анимации для объектов ActorProxy

  • Линейные волны для объектов Water

  • Некоторые дополнительные функции Viewer

  • Некоторые дополнительные функции спрайтов

  • Некоторые дополнительные функции DCE и ODE

  • Загрузчики форматов ASE, DXS, FBX, MTS, Х

  • Физический движок Kraft.

#9 Re: В процессе разработки » Obsession » 2023-01-08 11:25:11

По описанию - очень интересно! Подписался на группу вк, буду следить, желаю успеха!

#10 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2022-11-13 19:34:42

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

кстати, твой движок на D, больше графический движок, или прям игровой ?

Пока больше графический, в основном коде только рендер, а все остальное (физика, GUI) подключается в виде расширений.

#11 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2022-11-01 20:04:31

Ой, нет, рано я обрадовался - GLScene оказалась забагованная( Только сделал врапперы Freeform и Actor, как оказалось, что анимированные (и некоторые статичные) форматы при загрузке дают Access Violation. Видимо эти загрузчики никто толком не тестировал все эти годы, и там вкрались регрессионные ошибки. Придется пока отложить этот проект в долгий ящик. Жаль, конечно. Я думал, если вторую версию выпустили, то есть какая-никакая стабильность, а у них там конь не валялся)

#12 Re: Разработка движка » Xtreme3D 4.0 64-bit » 2022-10-31 11:20:31

Порт будет писаться в два этапа. На первом я перенесу только базовые функции-врапперы, основанные на встроенных классах GLScene, и, видимо, выпущу первую альфа-версию Xtreme3D 4. На втором будут реализованы аналоги тех возможностей, для которых пришлось добавлять новые классы и менять методы встроенных. По итогам второго этапа будет выпущена вторая альфа, на основе которой затем будет подготовлен релиз Xtreme3D 4.0.0. Также на II этапе будет подготовлен биндинг для Python 3.
Если все пройдет успешно, затем выйдет версия 4.1, в которой будут добавлены врапперы некоторых новых классов GLScene 2.

План I этапа:

Engine - изменения в некоторых функциях
Pak - без изменений
Viewer - без изменений, некоторые функции будут добавлены на II этапе
Dummycube - без изменений
Camera - изменения в некоторых функциях
Light - без изменений, система LightFX будет добавлена на II этапе
Font & Text - без изменений, но возможность поддержки Freetype будет рассмотрена на II этапе
Sprite - без изменений
Primitives - без изменений
Actor - без изменений
Freeform - без изменений
Terrain - без изменений
Object - без изменений
Polygon - удаляется
Material - без изменений, кроме системы TextureEx
Shaders - без изменений, поддержка теней и FBO в GLSL-шейдерах будет добавлена на II этапе
ThorFX - без изменений
FireFX - без изменений
Lensflare - без изменений
Skydome - без изменений
Water - без изменений
Blur - без изменений
Skybox - без изменений
Lines - без изменений
Tree - без изменений
Trail - без изменений
Shadowplane - без изменений
Shadowvolume - без изменений
Navigator - без изменений
DCE - без изменений, некоторые функции будут добавлены на II этапе
ODE - без изменений
FPSManager - без изменений
Mirror - без изменений
Partition - без изменений
Proxy & MultiProxy - без изменений
Grid - без изменений
MemoryViewer - без изменений
Movement - без изменений
ObjectHash - без изменений
Window - без изменений
Input - без изменений
Color - без изменений
Pipe - без изменений
Verlet - без изменений

#13 Разработка движка » Xtreme3D 4.0 64-bit » 2022-10-31 10:51:55

Gecko
Ответов: 14

Поторопился я хоронить Xtreme3D для GameMaker Studio! Мне стало так досадно, что движок теперь нельзя использовать в GMS, что я на днях поставил Delphi 10.4 со свежей GLScene и решил посмотреть, насколько реально обновить Xtreme3D. Обнаружил, что основную часть движка можно портировать без существенных переделок, так сказать, полуавтоматическим методом - заменяя отдельные служебные функции и изменившиеся части API. Я пока не уверен на 100%, что получится перенести все мои расширения и дополнительные классы, которых не было в оригинальной GLScene, но вероятнее всего их можно будет реализовать заново, либо как-то адаптировать. Во всяком случае, серьезных препятствий этому я теперь уже не вижу, и потому есть смысл попробовать.

Что это даст:

  • Возможность перехода на 64 бита и, следовательно, совместимость с современными версиями GameMaker Studio. Я уже портировал некоторые функции и проверил в GMS2 работоспособность 64-битной версии - она работает.

  • Доступ ко всем новым фичам GLScene 2.x (которые я пока детально не изучал - как только сделаю это, отпишусь)

  • Возможность писать на современном Delphi и полноценно использовать в движке сторонние библиотеки - в перспективе это поможет реализовать, например, поиск пути, поддержку видео и т.д.

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

Обновление от 01.11.22: продолжение работы над Xtreme3D 4 пока под вопросом из-за вскрывшихся проблем в коде GLScene.

Обновление от 20.11.22: проблемы решены обновлением GLScene, разработка продолжается.

Обновление от 11.01.23: вышел Xtreme3D 4.0.0 alpha1.

Обновление от 01.08.24: вышел Xtreme3D 4.0.0 alpha2.

Обновление от 06.02.25: вышел Xtreme3D 4.0.0 beta1.

#14 Re: Вопросы и ответы » проблема с функцией Mouselook и баги с экстентами карты » 2022-10-29 09:31:27

Ограничение камеры предлагаю делать так - ввести переменную camPitchAngle для хранения угла наклона и ограничить ее верхним и нижним пределами, например 70 и -70 градусов:

deltax = (mx - display_mouse_get_x()) / 8;
deltay = (my - display_mouse_get_y()) / 8;

camPitchAngle += deltay;
maxAngle = 70;
minAngle = -70;
if (camPitchAngle > maxAngle)
   camPitchAngle = maxAngle;
else if (camPitchAngle < minAngle)
   camPitchAngle = minAngle;

ObjectSetRotation(camera, -camPitchAngle, 0, 0);
ObjectRotate(camPos, 0, -deltax, 0);
display_mouse_set(mx, my);

Что касается форматов моделей: какой текст ошибки? Какие программы использовал? Если у модели есть текстуры, то чтобы они загрузились, нужно прописать путь к папке с текстурами через библиотеку материалов, иначе будет ошибка:

ffmatlib = MaterialLibraryCreate();
MaterialLibrarySetTexturePaths(ffmatlib, "data/model_folder");
ff = FreeformCreate("data/model_folder/model.b3d", ffmatlib, ffmatlib, global.scene);

#15 Re: Анонсы » Xtreme3D 3.9.1 для Game Maker Studio » 2022-09-12 13:21:55

На днях обнаружил, что, к сожалению, Xtreme3D 3.9.1 не работает с Game Maker Studio 2 версии 2022.800.0.161 и выше из-за полного перехода конструктора на 64-битную архитектуру. Движок доступен только в качестве 32-битной библиотеки. Так что можно считать, что история связки Xtreme3D + GM подошла к концу (что, впрочем, не отменяет возможность использовать его в других языках - только привязок маловато пока).

#16 Re: В процессе разработки » Xtreme3D Editor » 2022-08-22 19:19:00

FireRun пишет:

Да, сейчас я действительно пишу свой движок с нуля, много чего уже реализовано!

Очень интересно, список фич выглядит многообещающе) Генератор деревьев самописный или на основе чужой библиотеки?

Я кстати тоже начал присматриваться к ImGui, очень понравились некоторые возможности и архитектурные моменты - добавил его поддержку к себе в движок как альтернативу Nuklear.

В общем желаю удачи - больше движков хороших и разных)

#17 Re: Вопросы и ответы » Платформы для Xtreme3D » 2022-04-24 09:31:02

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

#18 Re: Вопросы и ответы » Платформы для Xtreme3D » 2022-04-19 18:26:04

Только Windows. В теории его, думаю, можно на Linux портировать, но я вряд ли этим буду заниматься когда-либо.

#19 Re: Вопросы и ответы » пример Xtreme3D для GMS2 » 2022-04-09 15:39:02

Выпустил новую версию с функцией PtrToReal. Теперь создавать вид надо так:

viewer = ViewerCreate(0, 0, window_get_width(), window_get_height(), PtrToReal(window_handle()));

Ссылка на релиз

#20 Re: Вопросы и ответы » пример Xtreme3D для GMS2 » 2022-04-09 10:04:49

Да, вижу эту ошибку. В последних версиях GMS убрали совместимость указателей с real - сделаю в движке функцию для этого. Скорее всего, на днях будет обновление.

#21 Re: Вопросы и ответы » Уничтожение объектов » 2022-03-23 10:00:04

Fps падает в отсутствие оптимизации покадровой нагрузки. Чем больше видимых объектов, тем больше расчетов матриц в Update и нагрузка на пайплайн для обработки примитивов (которые, возможно, в итоге вообще не будут отрисованы). Так что, по идее, нужно скрывать объекты, которые находятся за пределами экрана. Куллинг по пирамиде видимости - EngineSetCulling(vcObjectBased) или EngineSetCulling(vcHierarchical) - может в этом помочь, но не во всех случаях - например, если объекты находятся за стеной или горой, то они все равно считаются видимыми для куллинга.
В интерьерных сценах можно сделать систему порталов (т.е., показываем комнату, только если игрок в ней, или на экране виден дверной проем - и так же, рекурсивно, связанные с ней комнаты). В общем случае это будет вычислительно дешевле, чем обычный куллинг, который является брутфорс-алгоритмом - при использовании порталов мы вообще не проходим по заведомо невидимым комнатам и не проверяем их. Xtreme в принципе имеет все нужные для системы порталов инструменты, но у меня пока нет готовой реализации.
В уличных сценах можно для детализированных объектов сделать lod'ы и использовать мультипрокси, но это конечно немного усложняет логику игры, в зависимости от используемых компонентов.

Из-за того, что мало встроенных оптимизаций, GLScene/Xtreme3D - скорее для маленьких игр с ограниченным миром, чем для open world и тому подобного. Вообще библиотека, как я понимаю, изначально создавалась больше под научную визуализацию, да и игры в те времена были не такие большие.

#22 Re: В процессе разработки » Xtreme3D Editor » 2022-03-22 07:17:48

Я в создании этого редактора никак не участвовал (у меня была попытка создать свой редактор, но это был просто эксперимент). Как тут обстоят дела, я конечно точно не знаю, это надо спрашивать у FireRun'а - насколько я помню, он свой движок пишет.

#23 Re: Вопросы и ответы » Теневые карты » 2022-03-21 10:23:50

Вот о чем я говорю (CSM):

csm1.png csm2.png

В красной зоне один размер проекции (в данном случае 3), в зеленой больше (15), в синей еще больше (100). При этом размер теневых карт не меняется, но за счет того, что на разных расстояниях от камеры используются разные проекции, получается максимальный охват площади с плавным уменьшением детализации, которое в финальном рендере не бросается в глаза, т.к. большая проекция очень далеко.

Если использовать только одну карту, то мы бы видели тени, грубо говоря, только в красной зоне. Если эта зона не в поле зрения камеры, то теней вообще не будет видно. Я подозреваю, у тебя именно такая ситуация.

image.png

#24 Анонсы » Статус Xtreme3D, сайта и сообщества » 2022-03-21 09:36:15

Gecko
Ответов: 0

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

Что из себя представляет Xtreme3D, и есть ли у него будущее?
Это движок на основе GLScene 1.0, написанный на Delphi 7. К сожалению, его невозможно портировать на современные версии Delphi без серьезной адаптации кодовой базы. В 2022 году писать на Delphi 7, сами понимаете, то еще "удовольствие", поэтому сама возможность добавлять новые фичи или как-то серьезно переделывать старые ограничена спецификой устаревшего языка, недоступностью современных библиотек и т.д. Другое существенное ограничение - OpenGL 1.5. Старый графический API не позволяет использовать многие техники, которые являются стандартом на сегодняшний день, или по крайней мере не дает реализовать их эффективно/кроссплатформенно/с удобством для пользователя. Переписывать Xtreme3D на другие языки и под современный OpenGL я не буду, так как это бесперспективная трата ресурсов - когда-то я начинал делать свой движок по образцу Xtreme3D, это постепенно привело меня к созданию Dagon, над которым я и работаю сейчас, и это уже совсем другая история.

Каков статус проекта и моего участия в нем в 2022 году (и в дальнейшем)?
Xtreme3D - это legacy-проект в режиме базовой техподдержки. Исходники Xtreme3D 3.x открыты - любой может брать и делать на их основе все, что угодно. Я больше не занимаюсь разработкой новых возможностей для Xtreme3D, и скорее всего 3.9 является последней версией. Максимум, я могу исправлять какие-то очевидные баги, которые легко детектить, либо добавлять простые функции-врапперы, не требующие написания новых классов и какой-либо сложной новой логики. Я в обозримом будущем буду обеспечивать существование сайта https://xtreme3d.ru и, вероятно, буду появляться на форуме, чтобы по мере сил отвечать на вопросы.

В общем случае, я не рекомендую использовать Xtreme3D начинающим - он преимущественно для тех, кто уже с ним раньше работал и по каким-то причинам хочет продолжать (например, из ностальгии или ради создания ремейка старого проекта). Xtreme3D нельзя сравнивать с актуальными инструментами, такими как Unity и др. Проблемы совместимости Xtreme3D с Game Maker 8 (и Windows 10), как и вопросы удобства создания игр по современным стандартам на этой связке, сегодня уже не могут быть темой для серьезных дискуссий - учитывая огромный выбор альтернатив, бесплатных/недорогих движков и языков с хорошей поддержкой и кроссплатформенностью.

Сам я не являюсь активным пользователем Xtreme3D и Game Maker - давно ушел на язык D. Какого-то коммерческого интереса развивать этот проект у меня, естественно, нет. Я могу лишь минимально консультировать по вопросам API и архитектуры движка, но я не буду тратить свое свободное время на то, чтобы бесплатно обучать пользованию Xtreme3D с нуля/фиксить баги в чужих исходниках/писать код и примеры по запросу. Если кого-то не устраивает такое положение дел, и он не готов большую часть времени самостоятельно разбираться в Xtreme3D и дорабатывать его, мириться с ограничениями, специфической архитектурой и проблемами совместимости, то я советую перейти на Unity, Unreal Engine или любой другой современный движок.

Надеюсь на понимание.

Примечание от 12.02.2023: я все-таки принял решение сделать еще один рывок, чтобы портировать Xtreme3D на современный Delphi и актуальную версию GLScene. Это оказалось необходимо для обеспечения совместимости с 64-битным GameMaker: Studio 2. Но не факт, что эта версия будет во всем аналогична Xtreme3D 3.9, и я не могу гарантировать, что смогу полноценно заниматься ее поддержкой в дальнейшем.

#25 Re: В процессе разработки » Xtreme3D Editor » 2022-03-21 08:58:50

Воду свою не забудьте добавить!!!

Я сомневаюсь, что тут будет дальнейший прогресс.

Подвал доски

Под управлением FluxBB