|
12.11.2013, 00:20
|
#1
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
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/
|
(Offline)
|
|
Эти 12 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
|
4yBa4Ok (12.11.2013), ABTOMAT (12.11.2013), ARA (12.11.2013), Coks (10.01.2014), HolyDel (12.11.2013), impersonalis (12.11.2013), KCEPOKC (27.11.2013), L.D.M.T. (12.11.2013), pax (13.11.2013), Samodelkin (12.11.2013), SBJoker (12.11.2013), St_AnGer (12.11.2013)
|
12.11.2013, 01:16
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Молодцом! Много попыток, таки выйдет что-то.
Только сразу вопрос: почему XML?
Это же ужасно тяжеловесный формат, и читаемость в нём для 3д формата ну вообще не нужно.
Даже JSON и то лучше был бы, или ещё лучше - BSON.
Но XML - это весьма в прошлом тем более для такого типа данных..
Давай больше скринов и видео!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.11.2013, 01:34
|
#3
|
|
Ответ: Clear Engine (Понятный движок)
вроде неплохо как для первого движка, правда довольно наивный подход к архитектуре
Хочу из движка сделать что нибудь легковесное и простое, подобного, бесплатного ничего не нашел...
|
попробуй выбросить наследование на данном этапе вообще, вместо ILoader + CJpegLoader сделать просто ImageLoader который уже сам поймет что это за изображение и как его загружать
интерфейс INode в принципе вроде-как компонентно-ориентированый, зачем ему тогда быть интерфейсом ? просто сделай его Node и пили туда компоненты в стиле mesh, sprite, sound, script и тд
IScene ? IMesh ? ISkeleton ?? ITexture ??? и что у тебя будет CScene, CFastScene, CVeryFastScene ?! легковесное и простое оно не про ооп головного мозга, оно про YAGNI
|
|
|
Эти 4 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
12.11.2013, 07:10
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Clear Engine (Понятный движок)
пример синтаксиса в студию?
думаю других более сложных форматов не будет
|
dds, ktx, нативные мобильные форматы
попробуй выбросить наследование на данном этапе вообще, вместо ILoader + CJpegLoader сделать просто ImageLoader который уже сам поймет что это за изображение и как его загружать
|
да ну. как минимум CTgaLoader у него точно будет. А потом может и еще тыща форматов.
IScene ? IMesh ? ISkeleton ?? ITexture ??? и что у тебя будет CScene, CFastScene, CVeryFastScene ?!
|
http://forum.boolean.name/showpost.p...8&postcount=30
|
(Offline)
|
|
12.11.2013, 08:53
|
#5
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Сообщение от jimon
вроде неплохо как для первого движка, правда довольно наивный подход к архитектуре
попробуй выбросить наследование на данном этапе вообще, вместо ILoader + CJpegLoader сделать просто ImageLoader который уже сам поймет что это за изображение и как его загружать
интерфейс INode в принципе вроде-как компонентно-ориентированый, зачем ему тогда быть интерфейсом ? просто сделай его Node и пили туда компоненты в стиле mesh, sprite, sound, script и тд
IScene ? IMesh ? ISkeleton ?? ITexture ??? и что у тебя будет CScene, CFastScene, CVeryFastScene ?! легковесное и простое оно не про ооп головного мозга, оно про YAGNI
|
Далеко не первый движок, и я долго шел к этой архитектуре, и на мой взгляд она должна быть именно такой, я еще CCore хочу разделить не в компайл тайме, а сделать стратегии
|
(Offline)
|
|
12.11.2013, 08:54
|
#6
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Сообщение от moka
Молодцом! Много попыток, таки выйдет что-то.
Только сразу вопрос: почему XML?
Это же ужасно тяжеловесный формат, и читаемость в нём для 3д формата ну вообще не нужно.
Даже JSON и то лучше был бы, или ещё лучше - BSON.
Но XML - это весьма в прошлом тем более для такого типа данных..
Давай больше скринов и видео!
|
Иду по стопам Ogre3D так сказать )))
PS: насчет скринов, я хочу запилить няшную демо сценку в стиле HL2, правда моделер из мя никакой ))) и систему пост процессинга запилить надо для пущей няшности, пока что нечего показывать, разве что анимированного чувачка ))) Могу под ubuntu x64 собрать кому интересно, или вечером под мак ось, когда дома появлюсь...
|
(Offline)
|
|
12.11.2013, 09:07
|
#7
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Пример синтаксиса:
Точка вкода в приложение не main, а main_ce(), т.к. в разных системах в разных местах точка входа, например в андроид там нужно входит уже после инициализации приложения. Далее:
// подсовываем драйвер рендера и размер окна (размер окна игнорится на мобилках) auto core = Ce::createCore(Ce::createDriver(), glm::vec2(800, 480)); // создаем сценку auto scene = core->createScene(); // настраиваем параметры scene->setPerspective(45, core->windowSize().x / core->windowSize().y, 1.0, 100.0); // точка обзора (может быть INode, тогда этот view matrix игнорится и берется из INode, это как бы дефолтный обзор) scene->setViewMatrix(glm::lookAt(glm::vec3(0, 0, -5), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0))); // загружаем аним модельку std::shared_ptr<Ce::INode> node2 = core->loadNode("dwarf.xml"); node2->setParent(scene->rootNode()); // можно scene->rootNode()->addNode(node2); node2->setPosition(glm::vec3(0, -0.5, 0)); node2->setScale(glm::vec3(0.03, 0.03, 0.03)); node2->setAnimation(0, 300, true, 10); // свет, светом может быть любая нода, что самое крутое можно модельку заставить быть источником света auto light = core->createPreparedNode(Ce::E_PN_CUBE); Ce::SLightInfo lightInfo; lightInfo.ambient = glm::vec4(0.0, 0.0, 0.0, 1.0); lightInfo.diffuse = glm::vec4(1.0); light->enableLighting(lightInfo); light->setParent(scene->rootNode()); light->setPosition(glm::vec3(0, 0, -2)); light->setScale(glm::vec3(0.1, 0.1, 0.1)); core->start();
Код на pastebin
запилил нормал мапы из коробки, достаточно просто назначить текстуру нормалей на объект
Это конечно самый простой пример. Более сложный во вложении.
Подумал, надо в вершину запихать тангенсы и бинормали, чтобы нормал мапы быстрее считать, не нравится мне их производительность на мобилках.
https://bitbucket.org/pozitiffcat/clear_engine
оффтоп: блин когда запилят подсветку синтаксиса для c++
Последний раз редактировалось pozitiffcat, 12.11.2013 в 10:59.
|
(Offline)
|
|
12.11.2013, 12:25
|
#8
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Для большего удобства, движок имеет собственный формат моделей в виде xml, что упрощает программисту написать конвертор в этот формат из любого другого.
|
проще байтики писать, чем громоздкий хмл. и грузить байтики проще.
как много источников света обрабатываешь?
Загрузка TGA, думаю других более сложных форматов не будет, скорей всего будет написан свой формат.
|
это идёт наперекор лёгкости использования имхо.
если у тебя модели в хмл, то давай уж и текстуры чтоб юзер грузил из своих громоздких неигровых форматов - тга, пнг, псд)
к тому же либы на всё это есть (про псд не уверен, впрочем).
кто юзает мс3д вообще? тебе нужна лёгкость использования - давай из major 3д пакетов экспорт, достаточно из FBX хотя бы.
ну это движок же, всё таки нужна какая-то реализация камеры имхо, которой трансформ задаётся как обычной ноде, а не так. и получается камеру нельзя запарентить?
----
Ce::SLightInfo lightInfo;
glm::lookAt(glm::vec3(0, 0, -5), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0))
|
ну и не по теме, просто интересно, неужели я единственный человек, который не любит писать много букв и называет классы короткими словами типа "Light", делает using namespace чтобы не перебивать его 150 раз и делает функции, принимающие сразу цифорки без троекратных "glm::vec3"? подобную многобуквенную хрень нередко вижу в чужом коде, а потом хвалятся что у них движок весит 5 мегабайт.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
12.11.2013, 12:59
|
#9
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
проще байтики писать, чем громоздкий хмл. и грузить байтики проще.
|
xml проще руками поменять, например имя текстуры, а так да, байтики лучше.
как много источников света обрабатываешь?
|
из коробки один источник, но в шейдер заносятся бесконечное кол-во при рендере сцены, можно запилить потом чтоб ограничивал и включал только те, что рядом как в Огре
к тому же либы на всё это есть
|
хочу помаксимуму избавится от зависимостей, оставив лишь жизненно необходимые. (так же потом можно выпилить glm, но хз оправдано ли это)
кто юзает мс3д вообще? тебе нужна лёгкость использования - давай из major 3д пакетов экспорт, достаточно из FBX хотя бы.
|
ну я этим еще не занимался, естественно надо же )))
ну это движок же, всё таки нужна какая-то реализация камеры имхо
там можно задать ноду в качестве камеры
Насчет не по теме. Ну этому кому как удобней, мне больше нравится без using namespace...
подобную многобуквенную хрень нередко вижу в чужом коде, а потом хвалятся что у них движок весит 5 мегабайт.
|
я этим хвалиться не собираюсь, моя цель это легковесность.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.11.2013, 13:10
|
#10
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Clear Engine (Понятный движок)
xml проще руками поменять, например имя текстуры, а так да, байтики лучше.
|
ну вертексы руками менять точно никто не будет, наверное есть смысл тогда разделить описание материалов и геометрию.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
|
|
12.11.2013, 13:55
|
#11
|
|
Ответ: Clear Engine (Понятный движок)
Сообщение от HolyDel
|
ну дык, 2007 год, я после этого еще 6 лет движки писал, и понял что не в ооп счастье мудрость она такая
|
|
|
12.11.2013, 13:56
|
#12
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Сообщение от Mr_F_
ну вертексы руками менять точно никто не будет, наверное есть смысл тогда разделить описание материалов и геометрию.
|
Ну это потом запилится, пока так. Естественно я об этом подумал
|
(Offline)
|
|
12.11.2013, 13:58
|
#13
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Сообщение от jimon
ну дык, 2007 год, я после этого еще 6 лет движки писал, и понял что не в ооп счастье мудрость она такая
|
я разделил на интерфейсы, что бы скрыть реализацию, пилить pimpl не хочется, как то мне это костыльновато видится, да и pimp больше подходит для скрытия реализации объектов создаваемых на стеке. имхо
|
(Offline)
|
|
12.11.2013, 14:11
|
#14
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Clear Engine (Понятный движок)
ну дык, 2007 год, я после этого еще 6 лет движки писал, и понял что не в ооп счастье мудрость она такая
|
и к чему пришел щас?
я пока не нашел более удобный способ разделения интерфейсов и реализации.
|
(Offline)
|
|
12.11.2013, 14:22
|
#15
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Clear Engine (Понятный движок)
Сообщение от HolyDel
и к чему пришел щас?
я пока не нашел более удобный способ разделения интерфейсов и реализации.
|
ну он имеет ввиду что для движков это лишнее. На опыте я понял что все таки лучше отделять интерфейс, иначе потом каша в коде получается
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:59.
|