Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 12.11.2013, 00:20   #1
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Clear Engine (Понятный движок)

Молодцом! Много попыток, таки выйдет что-то.

Только сразу вопрос: почему XML?
Это же ужасно тяжеловесный формат, и читаемость в нём для 3д формата ну вообще не нужно.
Даже JSON и то лучше был бы, или ещё лучше - BSON.
Но XML - это весьма в прошлом тем более для такого типа данных..

Давай больше скринов и видео!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (12.11.2013)
Старый 12.11.2013, 01:34   #3
jimon
 
Сообщений: n/a
Ответ: Clear Engine (Понятный движок)

вроде неплохо как для первого движка, правда довольно наивный подход к архитектуре

Хочу из движка сделать что нибудь легковесное и простое, подобного, бесплатного ничего не нашел...
попробуй выбросить наследование на данном этапе вообще, вместо ILoader + CJpegLoader сделать просто ImageLoader который уже сам поймет что это за изображение и как его загружать

интерфейс INode в принципе вроде-как компонентно-ориентированый, зачем ему тогда быть интерфейсом ? просто сделай его Node и пили туда компоненты в стиле mesh, sprite, sound, script и тд

IScene ? IMesh ? ISkeleton ?? ITexture ??? и что у тебя будет CScene, CFastScene, CVeryFastScene ?! легковесное и простое оно не про ооп головного мозга, оно про YAGNI

Миниатюры
Нажмите на изображение для увеличения
Название: ae716e3c55eff053fcb24d323cdbf1b6.png
Просмотров: 1509
Размер:	139.2 Кб
ID:	19879  
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо за это полезное сообщение:
moka (12.11.2013), Mr_F_ (12.11.2013), Taugeshtu (12.11.2013), ІГРОГРАЙКО (14.11.2013)
Старый 12.11.2013, 07:10   #4
HolyDel
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Пример синтаксиса:
Точка вкода в приложение не main, а main_ce(), т.к. в разных системах в разных местах точка входа, например в андроид там нужно входит уже после инициализации приложения. Далее:
// подсовываем драйвер рендера и размер окна (размер окна игнорится на мобилках)
auto core Ce::createCore(Ce::createDriver(), glm::vec2(800480));
// создаем сценку
auto scene core->createScene();
// настраиваем параметры
scene->setPerspective(45core->windowSize().core->windowSize().y1.0100.0);
// точка обзора (может быть INode, тогда этот view matrix игнорится и берется из INode, это как бы дефолтный обзор)
scene->setViewMatrix(glm::lookAt(glm::vec3(00, -5), glm::vec3(000), glm::vec3(010)));
// загружаем аним модельку
std::shared_ptr<Ce::INodenode2 core->loadNode("dwarf.xml");
node2->setParent(scene->rootNode()); // можно scene->rootNode()->addNode(node2);
node2->setPosition(glm::vec3(0, -0.50));
node2->setScale(glm::vec3(0.030.030.03));
node2->setAnimation(0300true10);
// свет, светом может быть любая нода, что самое крутое можно модельку заставить быть источником света
auto light core->createPreparedNode(Ce::E_PN_CUBE);
Ce::SLightInfo lightInfo;
lightInfo.ambient glm::vec4(0.00.00.01.0);
lightInfo.diffuse glm::vec4(1.0);
light->enableLighting(lightInfo);
light->setParent(scene->rootNode());
light->setPosition(glm::vec3(00, -2));
light->setScale(glm::vec3(0.10.10.1));
core->start(); 
Код на pastebin

запилил нормал мапы из коробки, достаточно просто назначить текстуру нормалей на объект

Это конечно самый простой пример. Более сложный во вложении.
Подумал, надо в вершину запихать тангенсы и бинормали, чтобы нормал мапы быстрее считать, не нравится мне их производительность на мобилках.
https://bitbucket.org/pozitiffcat/clear_engine

оффтоп: блин когда запилят подсветку синтаксиса для c++
Вложения
Тип файла: zip main.cpp.zip (1.6 Кб, 757 просмотров)

Последний раз редактировалось pozitiffcat, 12.11.2013 в 10:59.
(Offline)
 
Ответить с цитированием
Старый 12.11.2013, 12:25   #8
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)

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

Встроенное освещение
как много источников света обрабатываешь?

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

Есть конвертер ms3d
кто юзает мс3д вообще? тебе нужна лёгкость использования - давай из major 3д пакетов экспорт, достаточно из FBX хотя бы.

scene->setViewMatrix
ну это движок же, всё таки нужна какая-то реализация камеры имхо, которой трансформ задаётся как обычной ноде, а не так. и получается камеру нельзя запарентить?

----
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 мегабайт.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ARA (12.11.2013), Taugeshtu (12.11.2013)
Старый 12.11.2013, 12:59   #9
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

проще байтики писать, чем громоздкий хмл. и грузить байтики проще.
xml проще руками поменять, например имя текстуры, а так да, байтики лучше.
как много источников света обрабатываешь?
из коробки один источник, но в шейдер заносятся бесконечное кол-во при рендере сцены, можно запилить потом чтоб ограничивал и включал только те, что рядом как в Огре
к тому же либы на всё это есть
хочу помаксимуму избавится от зависимостей, оставив лишь жизненно необходимые. (так же потом можно выпилить glm, но хз оправдано ли это)
кто юзает мс3д вообще? тебе нужна лёгкость использования - давай из major 3д пакетов экспорт, достаточно из FBX хотя бы.
ну я этим еще не занимался, естественно надо же )))
ну это движок же, всё таки нужна какая-то реализация камеры имхо
там можно задать ноду в качестве камеры

Насчет не по теме. Ну этому кому как удобней, мне больше нравится без using namespace...

подобную многобуквенную хрень нередко вижу в чужом коде, а потом хвалятся что у них движок весит 5 мегабайт.
я этим хвалиться не собираюсь, моя цель это легковесность.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (12.11.2013)
Старый 12.11.2013, 13:10   #10
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)

xml проще руками поменять, например имя текстуры, а так да, байтики лучше.
ну вертексы руками менять точно никто не будет, наверное есть смысл тогда разделить описание материалов и геометрию.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
moka (13.11.2013), Reizel (12.11.2013), Taugeshtu (12.11.2013)
Старый 12.11.2013, 13:55   #11
jimon
 
Сообщений: n/a
Ответ: Clear Engine (Понятный движок)

ну дык, 2007 год, я после этого еще 6 лет движки писал, и понял что не в ооп счастье мудрость она такая
 
Ответить с цитированием
Старый 12.11.2013, 13:56   #12
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от Mr_F_ Посмотреть сообщение
ну вертексы руками менять точно никто не будет, наверное есть смысл тогда разделить описание материалов и геометрию.
Ну это потом запилится, пока так. Естественно я об этом подумал
(Offline)
 
Ответить с цитированием
Старый 12.11.2013, 13:58   #13
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от jimon Посмотреть сообщение
ну дык, 2007 год, я после этого еще 6 лет движки писал, и понял что не в ооп счастье мудрость она такая
я разделил на интерфейсы, что бы скрыть реализацию, пилить pimpl не хочется, как то мне это костыльновато видится, да и pimp больше подходит для скрытия реализации объектов создаваемых на стеке. имхо
(Offline)
 
Ответить с цитированием
Старый 12.11.2013, 14:11   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Clear Engine (Понятный движок)

ну дык, 2007 год, я после этого еще 6 лет движки писал, и понял что не в ооп счастье мудрость она такая
и к чему пришел щас?
я пока не нашел более удобный способ разделения интерфейсов и реализации.
(Offline)
 
Ответить с цитированием
Старый 12.11.2013, 14:22   #15
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от HolyDel Посмотреть сообщение
и к чему пришел щас?
я пока не нашел более удобный способ разделения интерфейсов и реализации.
ну он имеет ввиду что для движков это лишнее. На опыте я понял что все таки лучше отделять интерфейс, иначе потом каша в коде получается
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:41.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com