forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Melissa Project (http://forum.boolean.name/showthread.php?t=19483)

pozitiffcat 24.10.2014 14:39

Melissa Project
 
Вложений: 1
Всем привет! Готовлюсь к релизу беты библиотечки (движка), для создания игр под 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

Igor 24.10.2014 16:07

Ответ: Melissa Project
 
Жду исходников) Если честно, для меня они интереснее самого движка. В частности, реализация теней от тел, как на картинке, и постобработка. И ещё - насколько сильно проседает производительность при попиксельном освещении вместо повершинного?
При повершинном мой телефон вполне адекватно рисовал порядка 2-10к полигонов.

pozitiffcat 24.10.2014 16:14

Ответ: Melissa Project
 
Вложений: 1
На картинке лайтмапа. Сорцы прикрепил, если интересно. Самое интересное место "Render/m3cRender.cpp"
PS. там медия не актуальная если, что. Сорцы последние.

Samodelkin 24.10.2014 16:18

Ответ: Melissa Project
 
Цитата:

Сообщение от pozitiffcat (Сообщение 288476)
Как видите, тут нем 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 ( ... ) {
    // Обрабатываем любое другое исключение.
}


pozitiffcat 24.10.2014 16:22

Ответ: Melissa Project
 
Цитата:

Сообщение от Samodelkin (Сообщение 288483)
Если я правильно понимаю initialize и render это переопределённые методы базового класса

Нет базового класса, есть интерфейс, который используется системой.
Как ты можешь заметить, у меня нет main, это дает нам плюс, в плане кроссплатформенности

Samodelkin 24.10.2014 16:29

Ответ: Melissa Project
 
Цитата:

Сообщение от pozitiffcat (Сообщение 288484)
Нет базового класса, есть интерфейс, который используется системой.

Раз наследуешь значит есть базовый класс, в С++ нет интерфейсов.
Переопределение pure virtual тоже переопределение, и тоже можно применять ключевое слово override.
Ну в общем ок понятно.
Посмотрю исходники, может без main и лучше.

pozitiffcat 24.10.2014 16:42

Ответ: Melissa Project
 
Цитата:

Сообщение от Samodelkin (Сообщение 288485)
Раз наследуешь значит есть базовый класс, в С++ нет интерфейсов.
Переопределение pure virtual тоже переопределение, и тоже можно применять ключевое слово override.
Ну в общем ок понятно.
Посмотрю исходники, может без main и лучше.

Я работаю в терминологии ООП, а не С++ конкретно =), m3c это класс, m3s структура, m3i интерфейс

pozitiffcat 11.11.2014 19:06

Ответ: Melissa Project
 
Наконец-то дошли руки собрать движок под виндой.
Я выкладываю ссылку на сборку и на видео.
Позже я сделаю сайт, куда буду постить уроки, статьи. Там же
будет форум и багтрекер.
Билд
Часть 1 видео
Часть 2 видео

Жека 13.11.2014 08:07

Ответ: Melissa Project
 
pozitiffcat, ты говоришь, что при компиляции каталог с билдом чистится, и потом создаётся под андроид или винду. может лучше сделать разделение на каталоги-таргеты, отдельные папки win, android и т.п., чтобы единожды сделанная версия лежала спокойно там, не затиралась.
и также библиотечки, которые нужно копировать в папку с виндовым проектом, можно копировать туда автоматически, ну или добавить галочку в гуи_билдер "включить исполняемые библиотеки" (или как-то так).

pozitiffcat 13.11.2014 14:12

Ответ: Melissa Project
 
Цитата:

Сообщение от Жека (Сообщение 289252)
pozitiffcat, ты говоришь, что при компиляции каталог с билдом чистится, и потом создаётся под андроид или винду. может лучше сделать разделение на каталоги-таргеты, отдельные папки win, android и т.п., чтобы единожды сделанная версия лежала спокойно там, не затиралась.
и также библиотечки, которые нужно копировать в папку с виндовым проектом, можно копировать туда автоматически, ну или добавить галочку в гуи_билдер "включить исполняемые библиотеки" (или как-то так).

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

pozitiffcat 13.11.2014 21:11

Ответ: Melissa Project
 
Зафункционировал сайт, пока без баг трекера и форума.
Там будут появляться статьи.
http://melissa-project.org

Arton 13.11.2014 22:21

Ответ: Melissa Project
 
Цитата:

Сообщение от pozitiffcat (Сообщение 289275)
Зафункционировал сайт, пока без баг трекера и форума.
Там будут появляться статьи.
http://melissa-project.org

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

pozitiffcat 13.11.2014 22:53

Ответ: Melissa Project
 
Цитата:

Сообщение от Arton (Сообщение 289279)

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


Я купил домен. Хост бесплатный. У меня рекламу только 1 раз показал и все.

KCEPOKC 16.11.2014 19:44

Ответ: Melissa Project
 
Круто! ябпокодил
А движок позиционирует себя как абсолютно некоммерческий? Или я что-то недопрочел?

pozitiffcat 16.11.2014 19:46

Ответ: Melissa Project
 
Цитата:

Сообщение от KCEPOKC (Сообщение 289373)
Круто! А движок позиционирует себя как абсолютно некоммерческий? Или я что-то недопрочел?

Никак не позиционирует, используйте как хотите. ;)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot