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

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

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

Ответ
 
Опции темы
Старый 24.10.2014, 10:39   #1
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Melissa Project

Всем привет! Готовлюсь к релизу беты библиотечки (движка), для создания игр под Android.
Кратко опишу, что на данный момент есть:
  • Билд система. Это приложение, которое собирает проект в двух режимах, это релиз - на устройство, и симулятор, для просмотра на компе. Билд система на фход принимает билд-файл, простой xml с заполнеными полями (планируется гуй). Пока, что полноценно работает под Linux (я виндой уже 5 лет не пользуюсь), на винде, только симулятор.
  • Движок состоит только из файлов подключений и динамических библиотек. Из этого следует, что вам не нужно мучится со сборкой проекта и скачивать зависимости, все уже готово.
  • Для сборки вам достаточно накодить все в main.cpp и выполнить сборщик.
  • Свой формат сцены, в котором объекты находятся как отдельные Entity. Это значит, что вы можете в движке их использовать, например для установки физики по префиксу имени.
  • Экспортер сцены для Blender.
  • Скелетная анимация.
  • Текстуры Png, Jpeg.
  • Light Mapping
  • Normal Mapping
  • Попиксельное освещение
  • Тени от направленного источника
  • Физика Bullet, встроеная в движок
  • 2Д рисуемое на трехмерную плоскость и экран
  • Пост обработка (композитинг)
  • Система частиц

Это, то, что я пока помню.
Для работы на винде, нужен будет компилятор MinGW (TDM).
На линуксе и так все понятно, gcc установленный в системе.

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

Чем это лучше Ogre3D. Огр крутой, мощный движок, но вы пробовали его собрать?
Чем это лучше Unity, ничем, легковесней.

Вобщем цель движка, писать простенькие игры легко и быстро, без хорошего знания c++, систем сборки и
платформы Android. Это почти так же легко как писать скрипт!

Для релиза пока мешает отсутствие на винде сборки под андроид,
обработка нормалей при направленном освещении, спекуляры,
немного оптимизации и регресс тестирование.

Пример тестового приложения:
#include "m3iRoot.h"
#include "m3iLight.h"
#include "m3iScene.h"
#include "m3iCamera.h"
#include "m3iRootApplication.h"

class Test : public m3iRootApplication
{
public:
    void initialize(m3iSystem *system, m3iRoot *root)
    {
        m3iLight *getRoot()->getScene() = s->createLight();
        l->setPosition(glm::vec3(0, 5, 0));
        l->setDiffuseColor(glm::vec4(0.4, 0.5, 0.6, 1.0));

        getRoot()->getScene()->getCamera()->setPosition(glm::vec3(-3, 7, -3));
        getRoot()->getScene()->getCamera()->setEuler(glm::vec3(50, 40, 0));

        getRoot()->getScene()->loadModelSets("lm.m3json");
    }

    std::string loadingScreenFilename() const { return "loading.png"; }
    void render(double dt) { }
};

m3iRootApplication *createRootApplication() { return new Test; }
Как видите, тут нем void main(), вместо этого реализуется класс с интерфейсом m3iRootApplication, и метод createRootApplication, который вызовет движок при создании.

Ставьте "Спасибо" если вам интересен данный проект.

З.Ы. на этом движке была сделана игра https://play.google.com/store/apps/d...alcdevelop.las
Миниатюры
Нажмите на изображение для увеличения
Название: снимок1.png
Просмотров: 335
Размер:	552.2 Кб
ID:	21070  
(Offline)
 
Ответить с цитированием
Эти 12 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
DStalk (24.10.2014), HolyDel (25.10.2014), Igor (24.10.2014), KCEPOKC (16.11.2014), L-ee-X (18.11.2014), LLI.T.A.L.K.E.R. (26.10.2014), mr.DIMAS (24.10.2014), Nerd (24.10.2014), pax (05.11.2014), Samodelkin (24.10.2014), St_AnGer (24.10.2014), Жека (28.10.2014)
Старый 24.10.2014, 12:07   #2
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,217
Написано 436 полезных сообщений
(для 784 пользователей)
Ответ: Melissa Project

Жду исходников) Если честно, для меня они интереснее самого движка. В частности, реализация теней от тел, как на картинке, и постобработка. И ещё - насколько сильно проседает производительность при попиксельном освещении вместо повершинного?
При повершинном мой телефон вполне адекватно рисовал порядка 2-10к полигонов.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 24.10.2014, 12:14   #3
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

На картинке лайтмапа. Сорцы прикрепил, если интересно. Самое интересное место "Render/m3cRender.cpp"
PS. там медия не актуальная если, что. Сорцы последние.
Вложения
Тип файла: zip melissa.tar.gz.zip (6.45 Мб, 137 просмотров)
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
Igor (24.10.2014), Samodelkin (24.10.2014), St_AnGer (24.10.2014)
Старый 24.10.2014, 12:18   #4
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 977
Написано 388 полезных сообщений
(для 630 пользователей)
Ответ: Melissa Project

Сообщение от pozitiffcat Посмотреть сообщение
Как видите, тут нем void main(), вместо этого реализуется класс с интерфейсом m3iRootApplication, и метод createRootApplication, который вызовет движок при создании.
Делаю у себя подобным образом, удобно тем что базовый класс уже может иметь определённый функционал, и тем что его интерфейс задает некоторую структуру и ритм показывающую как лучше создавать приложение.

Если я правильно понимаю initialize и render это переопределённые методы базового класса, просто не видно из контекста, я бы использовал слово override -- оно предотвратит ошибку неправильного переопределения и просто более читабельно выглядит, не нужно подглядывать в базовый класс чтобы смотреть что у него виртуальное.

Ещё вот я делаю так:
int main( int, const char*[] ) {
    engine eng;
    application app;
    eng.launch( app );
    return 0;
}
То есть созданием/удалением и движка и приложения занимается сама среда, а не кто-то из этих двух объектов.
А также не требуется использовать указатели -- ссылки более безопасный вариант.
К тому же можно сделать вот так и не беспокоиться об утечке памяти, в случае непредвиденных выбросов.
int main( int, const char*[] ) try {
    engine eng;
    application app;
    eng.launch( app );
    return 0;
} catch ( const myExcept& ex ) {
    // Обрабатывает myExcept.
} catch ( ... ) {
    // Обрабатываем любое другое исключение.
}
(Offline)
 
Ответить с цитированием
Старый 24.10.2014, 12:22   #5
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Сообщение от Samodelkin Посмотреть сообщение
Если я правильно понимаю initialize и render это переопределённые методы базового класса
Нет базового класса, есть интерфейс, который используется системой.
Как ты можешь заметить, у меня нет main, это дает нам плюс, в плане кроссплатформенности
(Offline)
 
Ответить с цитированием
Старый 24.10.2014, 12:29   #6
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 977
Написано 388 полезных сообщений
(для 630 пользователей)
Ответ: Melissa Project

Сообщение от pozitiffcat Посмотреть сообщение
Нет базового класса, есть интерфейс, который используется системой.
Раз наследуешь значит есть базовый класс, в С++ нет интерфейсов.
Переопределение pure virtual тоже переопределение, и тоже можно применять ключевое слово override.
Ну в общем ок понятно.
Посмотрю исходники, может без main и лучше.
(Offline)
 
Ответить с цитированием
Старый 24.10.2014, 12:42   #7
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Сообщение от Samodelkin Посмотреть сообщение
Раз наследуешь значит есть базовый класс, в С++ нет интерфейсов.
Переопределение pure virtual тоже переопределение, и тоже можно применять ключевое слово override.
Ну в общем ок понятно.
Посмотрю исходники, может без main и лучше.
Я работаю в терминологии ООП, а не С++ конкретно =), m3c это класс, m3s структура, m3i интерфейс
(Offline)
 
Ответить с цитированием
Старый 11.11.2014, 16:06   #8
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Наконец-то дошли руки собрать движок под виндой.
Я выкладываю ссылку на сборку и на видео.
Позже я сделаю сайт, куда буду постить уроки, статьи. Там же
будет форум и багтрекер.
Билд
Часть 1 видео
Часть 2 видео
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Жека (13.11.2014)
Старый 13.11.2014, 05:07   #9
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,374
Написано 489 полезных сообщений
(для 882 пользователей)
Ответ: Melissa Project

pozitiffcat, ты говоришь, что при компиляции каталог с билдом чистится, и потом создаётся под андроид или винду. может лучше сделать разделение на каталоги-таргеты, отдельные папки win, android и т.п., чтобы единожды сделанная версия лежала спокойно там, не затиралась.
и также библиотечки, которые нужно копировать в папку с виндовым проектом, можно копировать туда автоматически, ну или добавить галочку в гуи_билдер "включить исполняемые библиотеки" (или как-то так).
(Offline)
 
Ответить с цитированием
Старый 13.11.2014, 11:12   #10
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Сообщение от Жека Посмотреть сообщение
pozitiffcat, ты говоришь, что при компиляции каталог с билдом чистится, и потом создаётся под андроид или винду. может лучше сделать разделение на каталоги-таргеты, отдельные папки win, android и т.п., чтобы единожды сделанная версия лежала спокойно там, не затиралась.
и также библиотечки, которые нужно копировать в папку с виндовым проектом, можно копировать туда автоматически, ну или добавить галочку в гуи_билдер "включить исполняемые библиотеки" (или как-то так).
Да, конечно же это надо сделать. Сейчас этот сборщик запилен "на коленке", в дальнейшем его надо бы переделать/доделать. Сейчас я пишу сайт на PHP, затем статьи начну выкладывать, потом запилить игру хочу кое-какую, потом буду дорабатывать сборщик, там в нем много неровностей. Так же нужно сделать отказоустойчивым экспортер из блендера.
(Offline)
 
Ответить с цитированием
Старый 13.11.2014, 18:11   #11
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Зафункционировал сайт, пока без баг трекера и форума.
Там будут появляться статьи.
http://melissa-project.org
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Жека (27.11.2014)
Старый 13.11.2014, 19:21   #12
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,546
Написано 1,996 полезных сообщений
(для 4,759 пользователей)
Ответ: Melissa Project

Сообщение от pozitiffcat Посмотреть сообщение
Зафункционировал сайт, пока без баг трекера и форума.
Там будут появляться статьи.
http://melissa-project.org
Э-э, судя по полному адресу ты купил хост? Тогда почему всплывающие окна, реклама, попытка перебросить на другой сайт?
У этого хостингера всё так плохо?
(Offline)
 
Ответить с цитированием
Старый 13.11.2014, 19:53   #13
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Сообщение от Arton Посмотреть сообщение

Э-э, судя по полному адресу ты купил хост? Тогда почему всплывающие окна, реклама, попытка перебросить на другой сайт?
У этого хостингера всё так плохо?

Я купил домен. Хост бесплатный. У меня рекламу только 1 раз показал и все.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (13.11.2014)
Старый 16.11.2014, 16:44   #14
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Рашка, ДС
Сообщений: 550
Написано 333 полезных сообщений
(для 1,222 пользователей)
Ответ: Melissa Project

Круто! ябпокодил
А движок позиционирует себя как абсолютно некоммерческий? Или я что-то недопрочел?
(Offline)
 
Ответить с цитированием
Старый 16.11.2014, 16:46   #15
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Melissa Project

Сообщение от KCEPOKC Посмотреть сообщение
Круто! А движок позиционирует себя как абсолютно некоммерческий? Или я что-то недопрочел?
Никак не позиционирует, используйте как хотите.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 10:32.


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