Пятница, 22 Ноября 2024, 08:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
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
ThepikalДата: Вторник, 07 Июня 2011, 17:37 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Отлично)) неплохой двиг особенно порадовало что на Delphi biggrin biggrin

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 задачей, он без проблем справится. smile

Бросила девушка после того, как узнала, что я перешел с гм на Construct.
TLTДата: Вторник, 03 Января 2012, 23:03 | Сообщение # 8
Сейчас нет на сайте
Проект сдох?

Дао, выраженное словами, не есть истинное Дао.
МорриартеДата: Вторник, 03 Января 2012, 23:27 | Сообщение # 9
LINUX ФАНАТ
Сейчас нет на сайте
Автор темы последний раз входил:
Quote
Дата входа: Понедельник, 13.06.2011, 18:37
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг