Войти
ПрограммированиеФорумОбщее

Движок DGLE2 (Официальная тема, Новости)

Страницы: 1 2 37 8 Следующая »
#0
13:39, 14 апр. 2011

Новости

О движке

Изображение

Жанровая направленность: 2D/3D игры и приложения любого жанра и типа;
Платформа: Windows в стабильной версии (iOS, MacOS и Linux в тестовой версии);
Лицензия: LGPL (Бесплатный для коммерческого и не коммерческого использования);
Языки программирования: C++, C#, Delphi, (Lua в тестовой сборке редактора);
Открытый исходный код: предоставляется;
Мультиплеер: встроенная организация сети LAN и Интернет;
Рендер: OpenGL 1.x,2.x (OpenGL ES 2.0, OpenGL 4.1, D3D 9.0c, D3D 11 в последней тестовой версии);
Достоинства: актуальные технологии, простой в освоение, разрабатывается профессионалами, бесплатный, отечественное коммунити, уроки для начинающих;
Недостатки: находится в стадии Beta, не стабильный, сырой;
Разработчики движка: ООО "DeeProSoft"
Текущая версия: Beta 2 от 17.03.2011

Движок написан на C++, хедеры могут быть использованы с Visual C++, C++ Builder, С#, Delphi и FreePascal. А в принципе возможен порт на любой язык.
Движок никак не ограничивает разработчика, если не хватает функций движка можно использовать низкоуровневый инетрфейс системы рендеринга или даже спустится на уровен GAPI(OpenGL, D3D).
Движок имеет все основные компоненты необходимые для создания игры или приложения использующее трехмерную графику в реальном времени.

На движке реализовано несколько серьезных коммерческих проектов, таких как: FutureGIS и Atomfishing. C полным списком можно ознакомиться в галерее движка.

Можете скачать примеры игр на движке: 2D игра  Alienator и небольшая 3D игра TetRoX.

Подробнее можно прочитать в статье Философия проекта DGLE2.

Официальный сайт проекта DGLE2.
Скачать

Изображение

Цель прокта

Цель проекта разработать гибкую и расширяемую технологию для создания игр и графических приложений, которую мог бы использовать каждый пользователь вне зависимости от навыков. Несложные, но качественные игры должно быть возможно создавать при помощи редактора и Lua скриптов, но по настоящему всю мощь можно будет ощутить разрабатывая приложение на одном из любимых языков программирования(C++, Delphi, C# и т.д.).
Пользователи могут легко добавлять новые возможности, расширять список поддерживаемых форматов, реализовывать свои форматы, добавлять высокоуровневые абстракции, добавлять новые подсистемы и т.д. при помощи гибкой системы плагинов. В дальнейшем плагин может быть свободно распространен в сети для других пользователей.
А когда проект готов должно быть просто пересобрать его для другой платформы(Windows, Linux, MacOS и iOS) или разместить в интернете для просмотра в одном из поддерживаемых браузеров IE, Firefox, Chrome, Opera или Safari.

Концепция

Реализовано на данный момент

Скриншоты

Взяты из галереи движка.

Изображение Изображение ИзображениеИзображение
Изображение Изображение ИзображениеИзображение
Изображение Изображение ИзображениеИзображение
Изображение Изображение ИзображениеИзображение

#1
13:53, 14 апр. 2011

Респект и уважуха за ваш труд, комрад! :)

#2
13:56, 14 апр. 2011

Ну, с двойкой более-менее ясно. Но я так и не понял, что такое DGLE?

#3
14:02, 14 апр. 2011

2Ghost2
Исторически сложилось такое название. В 2006-м была первая версия Dron's OpenGL Engine, ее сокращали до DGLEngine а потом и просто до DGLE. Вторая версия уже не является лично моей разработкой, ее делает группа людей, но т.к. первая версия снискала некую популярность, то DGLE было решено оставить как брэнд.

#4
14:08, 14 апр. 2011

DRON
А где-то есть роадмап, список того что не реализовано, и что, допустим, не стоит использовать, ибо глючит?

#5
14:13, 14 апр. 2011

Necrys
В SDK есть планы до Beta3 "Docs\RoadMap.txt", но это больше для разработчиков. Все методы что есть в хэдерах можно использовать, dummy методов нету. API проверяется юнит тестами.

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

#6
14:26, 14 апр. 2011

Оооо... "конкурирующая фирма!" :)

Не ожидал, не ожидал. Ну что же, успехов! Расти и процветать.

>>Система материалов с поддержкой Paralax и Normal mapping'а. Основанная на генераторе шейдеров.
А можно посмотреть на этот генератор шедеров? Описание, скрины?

#7
15:01, 14 апр. 2011

Darthman
> А можно посмотреть на этот генератор шедеров? Описание, скрины?
Скачай SDK или исходники движка и смотри сколько хочешь. Например в примере из SDK "LowLevel3DScene".

#8
15:08, 14 апр. 2011

Смотрю сейчас.
1. Слишком сильна ориентация на Windows и COM. В чём практический смысл?
2. Сцепленность уже кажется слишком большой. Не вижу способа взять только рендер или только файловую систему. В чём реальный смысл E_ENGINE_SUBSYSTEM? Можно было оставить банальные интерфейсы и экспортируемые функции типа IRender2D *CreateRender()
3. Наличие enum ТипРесурса в ресурсной системе - значит у нас нет никакой ресурсной системы.
4. IResourceSystem скорее надо переименовать в IUberBloatedLoader. Как с помощью этого можно гарантировать что ресурс будет загружен 1 раз и не выгружен пока используется?
5. IRender2D - а если я захочу хитро трансформировать с кучей повортов и сменой масштаба? Не удобнее ли было бы передавать во все Render-функции матрицу трансформации?
6. Прямо в интерфейсе есть функции позволяюще выдрать ненужные подробности вроде id-а текстуры в OGL. А если я захочу портировать игру на холодильник где нет OGL/DX но есть прямой доступ к железу? Ведь любая домохозяйка решая что приготовить захочет поиграть на мониторе в двери холодильника!
7. IBitmapFont держит unicode? UTF-8 например, вдруг я захочу продать игру для холодильника в Китай?
8. IModel - оно вообще куда рисует при вызове Draw? Из интерфейса непонятно.
9. ISoundSample - если я дёрну Play - я как узнаю ISoundChannel?
10. IFileSystem - там есть способ скзать "записывать в папку пользователя"? Если да - то как оно будет жить с именем пользователя на китайском в OpenFile?
А так хорошая работа. Избавится от зависимости от Windows и COM, разобраться с подобными непонятками и будет ОК.

#9
15:45, 14 апр. 2011

zlos
> Слишком сильна ориентация на Windows и COM. В чём практический смысл?
Движок не привязан к COM. COM чисто номинальный, реализуется только в платформе Windows для поддержки языков Delphi и C#. COM можно выключить убрав при компиляции из хэдера дефайн DGLE2_USE_COM и ничего связанного с COM не будет.
> Сцепленность уже кажется слишком большой. Не вижу способа взять только рендер
> или только файловую систему. В чём реальный смысл E_ENGINE_SUBSYSTEM? Можно
> было оставить банальные интерфейсы и экспортируемые функции типа IRender2D
> *CreateRender()
Ну я так решил устроить архитектуру. Что есть основной интерфейс IEngineCore, который управляет остальными подсистемами. Это нужно и для того что бы была возможность использовать несколько потоков рендера. Тем более движок изначально не должен был позволять использовать какую=то одну подсистему в отрыве от всего. Ну и любую подсистему можно переопределить через плагины.
> Наличие enum ТипРесурса в ресурсной системе - значит у нас нет никакой
> ресурсной системы.
Ты не до конца понял устройство. Есть базовые типы, но могут быть кастомные типы ресурсов, по этому все расширяемо и ИМХО нормально сделано.
> IResourceSystem скорее надо переименовать в IUberBloatedLoader. Как с помощью
> этого можно гарантировать что ресурс будет загружен 1 раз и не выгружен пока
> используется?
Ну на счет имени - может быть, но это не принципиально мне кажется. В той версии, что ты смотрел не было еще подсчета ссылок на ресурсы и дополнительно методов типа GetResource(имеется в виду уже загруженный). А так на основе пути генерируется хэш, потом проверяется совпадение и если такой ресурс есть, то возвращается загруженный и ссылка инкрементируется, а у каждого ресурса есть метод Free, который декрементирует ссылку и когда счетчик = 0, то ресурс удаляется. Согласен, возможны ситуации, когда такой метод даст ошибку, но я еще работаю над этим в текущей Beta2 этого нет, только в Beta3, которая сейчас в разработке.
> IRender2D - а если я захочу хитро трансформировать с кучей повортов и сменой
> масштаба? Не удобнее ли было бы передавать во все Render-функции матрицу
> трансформации?
Для 2D я решил такого не делать, для 3D такое есть.
> Прямо в интерфейсе есть функции позволяюще выдрать ненужные подробности вроде
> id-а текстуры в OGL. А если я захочу портировать игру на холодильник где нет
> OGL/DX но есть прямой доступ к железу? Ведь любая домохозяйка решая что
> приготовить захочет поиграть на мониторе в двери холодильника!
Опять таки в Beta3 появился интерфейс низкоуровневого рендера, за которым уже скрывается OpenGL или D3D. Движок внутри использует именно этот интерфейс и пользователь тоже может получить к нему доступ. Если хочется обратиться напрямую к каким-то аппаратным возможностям, то ничего не мешает смешивать вызовы движка с вызовами некого нативного API холодильника или того-же OpenGL. Есть в SDK пример такого "Eng_And_GL".
> IBitmapFont держит unicode? UTF-8 например, вдруг я захочу продать игру для
> холодильника в Китай?
Пока юникода нет, но он обязательно будет.
> IModel - оно вообще куда рисует при вызове Draw? Из интерфейса непонятно.
Ну да он рендерит 3D модель, я посчитал что Draw3D будет выглядеть не красиво. Есть идеи, как переименовать или исправить эту ситуацию?
> ISoundSample - если я дёрну Play - я как узнаю ISoundChannel?
Ну тут я решил сделать так, если хочется просто запустить звук и не управлять им, то есть метод Play, по принципу вызвал и забыл. Если хочется управлять звуковым канало, то нужно вызвать PlayEx. По моему вполне нормальное решение.
> IFileSystem - там есть способ скзать "записывать в папку пользователя"? Если
> да - то как оно будет жить с именем пользователя на китайском в OpenFile?
Такого метода нет. И делать я его пока не планировал, смысла не вижу, может не прав.

> А так хорошая работа.
Спасибо. И спасибо еще за дельный пост.

#10
15:52, 14 апр. 2011

По коду внутри, смотрю быстро:
1. Будет трудно добавит иные форматы звука, использование mp3 требует нехилых лицензионных отчислений, лучше свободный vorbis.
2. Зачем ресурсной системе занать про OGL? Теоретически загрузчик может знать про IRender и ITexture, говорить "Создай мне текстуру такого-то размера такого-то формата с такими-то данными, указатель вот".
3. Зачем звуковой подсистеме знать про форматы? Это не её дело, её дело играть выданные кем то ещё данные. Стриминга для музыки я не нашёл.
4. CBitmapFont прямо зависит от OGL. Зачем? Если мы можем создать текстуру и получить возможность писать в неё - можно спокойно рисовать туда буквы. А что там внутри текстуры не наше дело.
5. "Волшебные цифры" в коде, например в Mesh.cpp. Нехорошо. И оно рисует себя прямо OGL-командами, непонятно зачем нам вообще IRender3D. Разумеется сортировки по материалам нет.

#11
15:53, 14 апр. 2011

Что то у меня не получается качнуть исходники архивом.

#12
16:03, 14 апр. 2011

zlos
То что внутри сейчас, это все еще рабочий вариант. Все что ты сказал правильно и я планирую это все вычистить из кода к Beta3.
В коде движка вообще ни одного OpenGL вызова не должно остаться. Не забывай что это еще бета версия, когда некоторые вещи внутри, сокрытые от пользователя, делаются по принципу что бы работало, а затем приводятся в должный вид.

PlayerDark
> Что то у меня не получается качнуть исходники архивом.
SVN сервер медленный нужно подождать либо TortoiseSVN тебе в помощь :-) .

#13
20:11, 14 апр. 2011

Спасибо за движок :) Жаль что для Лазаруса только простейший пример. Ладно, буде смотреть те, что для Дельфи, вроде всё почти такое же должно быть.

#14
20:42, 14 апр. 2011

DRON
> Такого метода нет. И делать я его пока не планировал, смысла не вижу, может не
> прав.
Смысл есть, требования Microsoft. Игра не может писать в свою папку, может не быть прав. Писать надо в папку пользователя. Если имя содержит весёлые символы - могут быть проблемы без юникода внутри. Снаружи без проблем можно оставить char*. Сделать типа интерфейс ISaveGame умеющий писать и читать в нужное место.

Страницы: 1 2 37 8 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.