Clear Engine (Понятный движок)
Наконец-то получилась более или менее нормальная архитектура, без лишних заморочек.
Clear engine позиционирует себя, как легковесный, переносимый трехмерный движок для написания игр на языке c++. Прежде всего уделается внимание на легкое использование движка. Движок имеет мало зависимостей сторонних библиотек, и поэтому может быть легко перенесен на другие платформы. Для большего удобства, движок имеет собственный формат моделей в виде xml, что упрощает программисту написать конвертор в этот формат из любого другого. На данный момент компилируется под Windows, Linux, Mac OS X, iOS. В альфа стадии умеет: Шейдеры Jpeg Скелетная анимация Встроенные шейдеры Встроенное освещение Делегаты для работы с объектами Камеры Не начинал еще писать доку. Теоретически, уже что-то можно на нем делать. В планах сделать билд систему, что бы было очень легко компилировать под различные системы, бинарный формат данных модели. Загрузка TGA, думаю других более сложных форматов не будет, скорей всего будет написан свой формат. Есть конвертер ms3d в формат движка с анимациями, но я забыл включить его в архив, кому надо зареквестите (все рвно никто пробывать не будет). Шейдер для нормал мапов хочу включить из коробки.. ток надо бы оптимизировать.. на iphone4 3 кубика уже падает fps. Скелетка из 50ти костей в иерархии и 2к вершинами дает 20 фпс, если разместить из 10 штук одновременно (фрустума нет еще) Хочу из движка сделать что нибудь легковесное и простое, подобного, бесплатного ничего не нашел... На сайте есть скомпиленая демка для винды x64 P.S. есть такая мысль, что-то типа сотрудничества, вы пишите приложения, я пилю фичи, которые вы реквестите, конечно если они вписываются в концепцию движка... Посмотреть видео: Сайт движка: http://malcdevelop.org/ |
Ответ: Clear Engine (Понятный движок)
Молодцом! Много попыток, таки выйдет что-то.
Только сразу вопрос: почему XML? Это же ужасно тяжеловесный формат, и читаемость в нём для 3д формата ну вообще не нужно. Даже JSON и то лучше был бы, или ещё лучше - BSON. Но XML - это весьма в прошлом тем более для такого типа данных.. Давай больше скринов и видео! |
Ответ: Clear Engine (Понятный движок)
Вложений: 1
вроде неплохо как для первого движка, правда довольно наивный подход к архитектуре
Цитата:
интерфейс INode в принципе вроде-как компонентно-ориентированый, зачем ему тогда быть интерфейсом ? просто сделай его Node и пили туда компоненты в стиле mesh, sprite, sound, script и тд IScene ? IMesh ? ISkeleton ?? ITexture ??? и что у тебя будет CScene, CFastScene, CVeryFastScene ?! :crazy: легковесное и простое оно не про ооп головного мозга, оно про YAGNI |
Ответ: Clear Engine (Понятный движок)
пример синтаксиса в студию?
Цитата:
Цитата:
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
PS: насчет скринов, я хочу запилить няшную демо сценку в стиле HL2, правда моделер из мя никакой ))) и систему пост процессинга запилить надо для пущей няшности, пока что нечего показывать, разве что анимированного чувачка ))) Могу под ubuntu x64 собрать кому интересно, или вечером под мак ось, когда дома появлюсь... |
Ответ: Clear Engine (Понятный движок)
Вложений: 1
Пример синтаксиса:
Точка вкода в приложение не main, а main_ce(), т.к. в разных системах в разных местах точка входа, например в андроид там нужно входит уже после инициализации приложения. Далее: PHP код:
запилил нормал мапы из коробки, достаточно просто назначить текстуру нормалей на объект Это конечно самый простой пример. Более сложный во вложении. Подумал, надо в вершину запихать тангенсы и бинормали, чтобы нормал мапы быстрее считать, не нравится мне их производительность на мобилках. https://bitbucket.org/pozitiffcat/clear_engine оффтоп: блин когда запилят подсветку синтаксиса для c++ |
Ответ: Clear Engine (Понятный движок)
Цитата:
Цитата:
Цитата:
если у тебя модели в хмл, то давай уж и текстуры чтоб юзер грузил из своих громоздких неигровых форматов - тга, пнг, псд) к тому же либы на всё это есть (про псд не уверен, впрочем). Цитата:
Цитата:
---- Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
Цитата:
Цитата:
Цитата:
Код:
ну это движок же, всё таки нужна какая-то реализация камеры имхо Насчет не по теме. Ну этому кому как удобней, мне больше нравится без using namespace... Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
я пока не нашел более удобный способ разделения интерфейсов и реализации. |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
скажем если гейм\левел дизайнер не может взять ваш движок и вставить туда спрайт или скрипт сам - нафиг такой движок нужен 2) everything is data pipeline если движок сам не может себе автоматически конвертить контент быстро и удобно - нафиг надо, юнити умеет потому юнити и популярное 3) object as pure aggregation http://cowboyprogramming.com/2007/01...your-heirachy/ node ? component ? не нужно 4) SoA вы все еще пишите float x,y,z ? не нужно 5) хардкод техник рендер пайплайна, как в UE, CryEngine и прочих делать возможность впилить свое HBAO на уровне данных ? ой, а как вы его сделаете на мобилках ? рендер техники это code path forever 6) data flow programming, reactive programming для некоторых вещей наподобие пайплайна рендера и шейдеров императивные подходы не всегда решают однако 7) clear C11 only если подходить со стороны интерфейсов в data driven движке то ооп там не сильно надо, ибо это тупо плеер данных, как пример могу показать интерфейс моей библиотеки которая агрегирует разные социальные сдк под мобилки : https://github.com/Goortom/dd-publis...d_publishing.h, посмотрите насколько он чистый и простой, даже почти не нужна справка или например интерфейс библиотеки загрузки изобрежаний : http://pastebin.com/xbdcZPC8 (пока не в паблике), посмотрите насколько он простой, нужно добавить к нему всего две функции и вы получите сверх мощную либу которая умеет грузить данные напрямую через memory mapped files C11 это мощнейший язык, после того как перенесли потоки и атомарные операции в библиотеку мы почти полностью отвязались от POSIX, теперь стало возможно делать библиотеки без убер фреймворка, и писать их на чистом C11 и вообще 8) dual quaternions graph как показывает практика - скейл объектов это очень вырожденный случай, и скейл в самом дереве трансформов не нужен, потому можем отказаться от матриц вообще и сильно ускорить все вычисления 9) lua похоже что это единственный язык на котором возможно программировать именно игру, тяжелую логику можно выносить в нативные модули, но проще всего делать игру на луа, таким образом программист ничего не сломает, плюс в луа можно пилить всякие реактивные плюшки 10) heap ? malloc ? new ? тупо не нужно, вообще, просим страницы виртуальной памяти напрямую у ОС 11) everything is async, no callbacks если можно сделать без коллбеков - делаем без коллбеков ps. плюс еще куча мудрости, я так сходу и не вспомню =) |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
а с проверяющей "хренью" у тебя получается чистый lock-free код, ты обрабатываешь результаты асинхронных операций по мере возможности, и никаких тебе мьютексов в таком lock-free коде если ты встречаешь место где тебе нужно просто подождать - используешь await подобный паттерн, как в c# http://msdn.microsoft.com/en-us/libr.../hh156528.aspx |
Ответ: Clear Engine (Понятный движок)
jimon, я хз про что ты тут распинаешься, но помоему все эти убер фичи, которые умеет Unity не вписываются в концепцию моего движка, да даже если я и захочу что-то запилить, разве составит проблем внести новую абстракцию? Зачем же тогда умные книжки про ООП? Для того, что бы потом не столкнуться с проблемами. Как же Ogre3D, он очень сильно ООП и популярен.
Цитата:
|
Ответ: Clear Engine (Понятный движок)
предлагаешь геймдизайнеру ставить вижуал студию и писать код ?
|
Ответ: Clear Engine (Понятный движок)
Цитата:
и да dod нет смысла использовать. Ну с экономим 50% производительности, но это при условии, что мы заюзаем 100500 нод на сцене. На самом деле никто такого использовать не будет. Unity игры вообще вон на C# пишут с наследованиями и ничего норм работает. |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
движки разные бывают, какой бы ты не писал - это уже опыт и это хорошо =) |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Запилил работу с пост эффектами.
PHP код:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
и куда они рендерить будут, как отрендерить сколько-то пассов одними и потом заюзать в другом, как сделать даунсемпл в цепочку в 2 раза более маленьких текс до 1 пикселя (например, яркость экрана для хдр подсчитать), как дела с MSAA, где вообще выбираем РТ, ну и т. д.
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
Посмотри как асинхронность устроена в node.js на основе libuv. По сути это одна очередь функций, и задние потоки о которых пользователю платформой не нужно заботиться. Скейлиться во всех отношениях, никаких lock'ов и простоев в ожиданиях - когда будет готово, нам сообщят. |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
await (C#) == yield (ECMA6)
Но в 98% он не нужен, т.к. есть нормальная event-driven парадигма, и promises. |
Ответ: Clear Engine (Понятный движок)
никто случайно не сталкивался, что на айфоне glViewport нужно указывать двойного размера? Если задать параметры что приезжают в
Код:
CGRect screenBound = [[UIScreen mainScreen] bounds]; |
Ответ: Clear Engine (Понятный движок)
Цитата:
Цитата:
|
Ответ: Clear Engine (Понятный движок)
ЕМНИП там размеры интерфейса в виртуальных единицах. На ретине отношение виртуальных единиц к пикселям 1:2
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Узнавать у системы текущий скейл фактор, и его и устанавливать. Или домножать размеры буфера.
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
yield (C#) != yield (ECMA6) Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
а именно : c# Цитата:
Цитата:
они полностью одинаковы по функционалу и семантике использования вот по той ссылке что ты добавил чувак сделал супер либу которая с помощью yield повторяет функционал аналогичный await если я с помощью микроскопа забиваю гвоздь, то микроскоп можно назвать молотком, но от этого микроскоп микроскопом не перестает быть, так что никогда не путай утилитарную фунциональность, семантику и контекст :) |
Ответ: Clear Engine (Понятный движок)
Цитата:
http://blog.alexmaccaw.com/how-yield...transform-node Суть как раз использования генераторов в асинхронной модели - идентична вашему await в C#. |
Ответ: Clear Engine (Понятный движок)
хм.. похоже про сильные пост-эффекты на мобилках можно забыть. Код типа
Код:
for( i= -4 ;i < 4; i++) |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
так делай блюр с другим ядром, можно попробовать просто 5 выборок для начала, если мало будет то 9 : центральная и потом одна или две слева, справа, сверху и снизу
|
Ответ: Clear Engine (Понятный движок)
Цитата:
Добавил Render target, думаю простое использование... PHP код:
|
Ответ: Clear Engine (Понятный движок)
MRT незабудь
|
Ответ: Clear Engine (Понятный движок)
Пример использования MRT, на не поддерживаемом устройстве не будет работать MRT, и шейдер с gl_FragData[1] не скомпилируется, ну это и понятно. (libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: IShader compilation failed: ERROR: 0:6: Index 1 beyond bounds (size 1))
PHP код:
|
Ответ: Clear Engine (Понятный движок)
Вложений: 3
Начал пилить экспортер из блендера, умеет сохранять объекты, инфу по текстурам и нормал мапы, впринципе то что пока сделано в движке...
Зы, такой сильный спекуляр сделаю что бы можно было подрегулировать из блендера |
Ответ: Clear Engine (Понятный движок)
Мне кажется, или ты где то накосячил с форматом нормал мапы или ее текстурными координатами - немного не туда затенение отбрасывается ( помойму на 90 градусов повернуто ).
А так то здоровски все выглядит! |
Ответ: Clear Engine (Понятный движок)
tangent и binormal не расчитаны?
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
|
Ответ: Clear Engine (Понятный движок)
Источник света сверху? Тогда опять не так. Тангенты и бинормали должны быть расчитаны - без них вообще нельзя нормал мэп делать. Ну или по крайне мере тангенты нужно расчитать, а бинормали можно находу в шейдере. Еще я сталкивался с тем что у нормал мэп разные форматы бывают, иногда нужно местами менять координаты или инвертировать значения нормалей. Вобщем возьми нормал мэп с понятным рельефом и определи на глаз, правильно затенение работает или нет. Еще иногда косяки с повертексным освещением бывают если трисы очень большие по сравнения с расстоянием до источника света.
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Смотрится косячно. Возьми карту нормалей кирпичной стенки, затекстурь плоскость, поднеси источник света почти вплотную и понаблюдай за кирпичиками и скрин сюда.
Сталкивался с подобным некорректным отображением нормалмап в юнити, когда засовывал туда карты сгенереные с помощью CrazyBump. Проблема решилась установкой настройки Normal map y-axis: up в CrazyBump. |
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Ответ: Clear Engine (Понятный движок)
Цитата:
покажи на флипанутом кубе, затекстурь все стены одной и той же нормалкой и таскай там лайт повсюду. |
Ответ: Clear Engine (Понятный движок)
Цитата:
вот куб, что-то здесь не так http://rutube.ru/video/e7c98c126c668...9ebc1ed97240d/ |
Ответ: Clear Engine (Понятный движок)
да, выглядит сломано, отрисовывай в какой позиции находится лайт, шариком или спрайтом
|
Ответ: Clear Engine (Понятный движок)
Цитата:
|
Часовой пояс GMT +4, время: 09:24. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot