GameAbstract Framework - ИгроваяАбстракция
| |
Devel | Дата: Вторник, 07 Июня 2011, 15:16 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Это игровой фреймворк для быстрой разработки 2-2,5D игр. Фреймворк основан на игровом движке ZenGL.
Основная концепция фреймворка это абстракции, достаточно высокие, чтобы избавиться от ручной отрисовки и другой рутины, которая существует в игровых движках. Высокая абстракция позволяет заниматься только логикой игры, а все остальное на себя берет GameAbstract. Само название - Игровая Абстракция - говорит об этом.
Прогресс: 65% - активная разработка Прошло времени с начала разработки: 21 день Платформы: Windows, Linux, MacOS (iPhone, iPad в перспективе, zengl поддерживает их). Рендер: OpenGL, DirectX (на выбор), OpenGL ES 1.X (для мобильных платформ).
Адрес проекта: http://code.google.com/p/game-abstract/ (там же есть svn и тестовый проект в папке test). Лицензия: Opensource, MIT Языки разработки: Pascal (Delphi/FreePascal), Orion (PHP-подобный скриптовой язык), возможность добавлять новые скриптовые языки.
Основные особенности: - Высокий уровень абстракции
- Физический движок (на основе chipmunk)
- Графический движок - ZenGL с поддержкой D3D или OpenGL рендера
- Звуковой движок - ZenGL (поддержка wav и ogg)
- Скриптовой движок - Orion (php подобный усовершенствованный язык). Поддержка планируется.
- Кроссплатформенность, движок общается только с API ZenGL
Основные абстракции движка: - Текстуры - изображения, картинки и т.д.
- Спрайты - графические объекты имеющие свойства - текстура, анимация (скорость, позиция и т.п.), фильтры для отрисовки, позицию, высоту и ширину
- Объекты - унаследованная абстракция от спрайта, имеющая физику и события (коллизии, мышки, анимации и т.д.)
- Слои - для графических элементов (объектов, спрайтов, текстов и т.д.). Объединяют в себе сразу несколько графических абстракций, имеют свойство ZIndex для контролирования порядка отрисовки. Также, каждая графическая абстракция имеет свойство ZIndex для контролирования порядка отрисовки внутри слоя.
- Комнаты - уровни со свойствами физики (гравитация, трение и т.п.), списком графических абстракций и объектов, списком событий.
- Камера - позволяет следить за любой графической абстракцией у которой есть свойство позиция. Слои могут игнорировать перемещение камеры (для этого есть свойство).
- Звук, звуковой плагин - абстракции позволяют проигрывать звуки и музыку, а плагины позволяют отделить звуковой движок от звуковой абстракции так, что можно с легкостью менять звуковые движки не меняя код игры для проигрывания звуков.
- Тексты, шрифты - абстракции позволяют легко отрисовывать текст. Абстракция текст является графической абстракцией.
- Менеджеры - менеджеры для текстур, объектов и т.д.
- Эталоны - элемент любого менеджера, который можно клонировать, который обычно не удаляется и не используется непосредственно в игре.
- Клоны - клонированные элементы от эталонов, обычно это объекты. Все клоны имеют те же самые события, что их эталоны. Клоны в отличии от эталонов, можно безопасно уничтожать в любое время.
- Форматы - типы данных для загрузки эталонных абстракций (объектов, текстур) в менеджеры. В фреймворк входит один из форматов - JSON, т.е. можно хранить и загружать эталоны со всеми их характеристиками (физика, позиция, анимация) в менеджеры через формат JSON. Также с помощью них можно осуществлять загрузку и догрузку уровней.
Это еще не все абстракции, будут еще некоторые.
Планы использования
Данный фреймворк будет использован для новой версии DevelStudio (где будет реализована поддержка игр), с поддержкой языка Orion.
====================================================== Добавлено (25.05.2011, 12:17)
Сделал новую демку, уже продвинулся с интеграцией Ориона в игровой движок, 50% логики новой демки уже написано на скриптах, которые можно глянуть в папке /scripts/test.ori. Это самая примитивная демка, пока для обкатывания и внедрения новых абстракций, событий и т.п.
Скачать демку: GameAbstract_Demo.zip (Пробел стрелять, стрелки - управление игроком).
Исходник того скрипта test.ori (язык Орион).
Code function bullet_vs_wall($sender, $other) { /* создаем взрыв */ $explode = @explode->create($sender->x,$sender->y); if ( !isset $other->state ) $other->state = 4; // увеличиваем урон стены и меняем кадр $other->state -= 1; $other->animStep += 1; if ($other->state < 1) $other->free(); // уничтожаем пулю $sender->free(); }
Game::event(OnInit, func($param) { // функция инициализации @bullet = obj('bullet'); @wall = obj('wall'); @player = obj('player'); @explode = obj('explode'); @bullet->addEvent(OnCollision, &bullet_vs_wall, @wall); //@bullet->addEvent(OnCollision, &bullet_vs_wall, @bullet); @wall->addEvent(OnCreate, func($self){ $self->x = rand(0,800); $self->y = rand(0,600); $self->reg(); }); // регистрируем взрыв @explode->addEvent(OnCreate, func($self){ $self->reg() }); // конец анимации - уничтожаем объект взрыва @explode->addEvent(OnAnimationEnd, func($self){ $self->free(); }); });
====== ====== ======= ========== ========= ============== ========== ========= ======== ========== ====== ========= ========== ========= ============ ===========
Добавлено (07.06.2011, 15:16) --------------------------------------------- Балуюсь с изометрией, вот что получается, в движок будут встроен функционал для работы с изометрией (особенно удобно для различных стратегий, рпг, tycoon игр).
Тут мы можем расставлять стадион по карте кликнув на стадион с левой стороны (т.е. клонировать стадионы по карте). Размер изометрической клетки 32 на 32.
IZometric_Test_game.zip
Сообщение отредактировал Devel - Вторник, 07 Июня 2011, 15:27 |
|
| | |
stalkerya | Дата: Пятница, 10 Июня 2011, 16:07 | Сообщение # 3 |
Пользователь Blender 2.5
Сейчас нет на сайте
| Quote (Devel) (iPhone, iPad в перспективе, zengl поддерживает их На android будет?
Бросила девушка после того, как узнала, что я перешел с гм на Construct.
|
|
| |
Devel | Дата: Пятница, 10 Июня 2011, 16:12 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Quote (stalkerya) На android будет?
Возможно к тому времени когда разработка будет закончена, ZenGL будет поддерживать Android официально, а вообще на андроиде тоже стоит OpenGL ES 1.x, так что проблем с поддержкой в перспективе не должно быть.
|
|
| |
stalkerya | Дата: Пятница, 10 Июня 2011, 16:13 | Сообщение # 5 |
Пользователь Blender 2.5
Сейчас нет на сайте
| Devel, А на arm6 версий будут работать?
Бросила девушка после того, как узнала, что я перешел с гм на Construct.
|
|
| |
Devel | Дата: Пятница, 10 Июня 2011, 16:46 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| FreePascal поддерживает ARM архитектуру, но не знаю насчет arm6 она вроде уже устаревшая.
|
|
| |
stalkerya | Дата: Пятница, 10 Июня 2011, 16:51 | Сообщение # 7 |
Пользователь Blender 2.5
Сейчас нет на сайте
| Devel, При разгоне 854MHz, он выдавал неплохие результаты. И мне кажется, он должен его поддерживать. А с 2D задачей, он без проблем справится.
Бросила девушка после того, как узнала, что я перешел с гм на Construct.
|
|
| |
TLT | Дата: Вторник, 03 Января 2012, 23:03 | Сообщение # 8 |
Сейчас на сайте
| Проект сдох?
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
Морриарте | Дата: Вторник, 03 Января 2012, 23:27 | Сообщение # 9 |
LINUX ФАНАТ
Сейчас нет на сайте
| Автор темы последний раз входил: Quote Дата входа: Понедельник, 13.06.2011, 18:37
|
|
| |
|