+ Ответить в теме
Показано с 1 по 26 из 26
  1. #1
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231

    GameAbstract Framework - ИгроваяАбстракция (для новой DS и не только)

    Это игровой фреймворк для быстрой разработки 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. По абстракциям фреймворка уже сейчас можно понять каким образом будут создавать игры в новой версии DevelStudio.


    Минимальное ДЕМО (исходник псевдо игры максимум на 100 строчек кода), прилагается.
    Вложения

  2. Пользователь сказал cпасибо:

    flocker (28.05.2011)

  3. #2
    Devel а когда можно будет увидеть демо сего чуда ? Очень интересно, я сейчас как раз занимаюсь разработкой игры типа Огейм php+Delphi клиент, былобы неплохо поробовать создать некое подобие экшена на вашем движке !

  4. #3
    Модератор Аватар для ily2811
    Регистрация
    11.04.2010
    Адрес
    Новороссийск
    Сообщений
    438
    Вау) вот это будет супер, побыстрее хотелось бы попользоваться) присутствие поддержки физики меня манит)
    :/
    Код:
    #!/bin/bash
    Tr="Hello World!"
    echo $Tr

  5. #4
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Цитата Сообщение от Acid-UA Посмотреть сообщение
    Devel а когда можно будет увидеть демо сего чуда ? Очень интересно, я сейчас как раз занимаюсь разработкой игры типа Огейм php+Delphi клиент, былобы неплохо поробовать создать некое подобие экшена на вашем движке !

    Движок никак не ограничен, это может быть и стратегия с видом сверху, и аркада с видом сбоку, или РПГ с изометрией. Физический движок нужен больше в аркадных играх, по возможностям он практически такой же как Box2D.

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

    http://code.google.com/p/game-abstra...zengl_test.dpr


    Я закончил по сути разработку Orion и поэтому приступил к разработке Игрового фреймворка (он делается намного быстрее и легче чем язык). Далее последует интеграция Ориона с Фреймворком. После этого можно будет вручную (без среды) уже делать игры (кстати, кому-то так нравится больше). А дальше начнется разработка прототипа Игровой ДС. Принцип разработки Программ может стать немного другим, но сначала появится версия для Игр.

  6. #5
    вот я и имел ввиду демо самого фреймворка, ведь - эта игра как-то была написана ?

  7. #6
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Цитата Сообщение от Acid-UA Посмотреть сообщение
    вот я и имел ввиду демо самого фреймворка, ведь - эта игра как-то была написана ?
    Демонстрация возможностей? Производительности или чего?

  8. #7

    GameAbstract Framework - ИгроваяАбстракция (для новой DS и не только)

    Будут ли добавлены возможности работы с анимацией.

  9. #8
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Цитата Сообщение от вова77 Посмотреть сообщение
    Будут ли добавлены возможности работы с анимацией.
    Анимационные спрайты имеются, организуются путем разбивки изображения на кадры. Также возможность задавать скорость анимации, цикличность. Можно воспроизводить кадры вручную. События для анимации тоже имеются.

  10. #9
    объясните что такое игровой фреймвморк ? Что он собой представляет ? Исходник который вы предоставили на чем написан на делфи ?

    После этого можно будет вручную (без среды) уже делать игры (кстати, кому-то так нравится больше).
    Без какой среды ? Покажите хоть скриншоты, очень интересно ?

    А дальше начнется разработка прототипа Игровой ДС.
    А среда и игровая Дс - это разные вещи, во общем я совсем запутался!
    Последний раз редактировалось Acid-UA; 19.05.2011 в 22:36.

  11. #10
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Игровой Фреймворк это набор абстракций (классов, менеджеров), только все это можно использовать без какой-либо среды, просто брать фреймворк и вручную писать игры прямо на паскале. Можно назвать это и движком. Игровая ДС это таже самая среда (develstudio), адаптированная под создание игр. Скриншоты пока бесполезно показывать, смысл игрового фреймворка не в визуальной красивой части, а в динамичности, удобстве разработки и т.д.

    В итоге, возьмется этот Игровой Фреймворк, Язык Орион как основа для новой DS (в плане игр). Т.е. на уровне кода, что вы будете сейчас писать игры на фреймворке, что потом (в среде на orion), код будет практически одинаков по логике.

  12. 2 пользователя(ей) сказали cпасибо:

    Acid-UA (20.05.2011), InterNETchik (05.06.2011)

  13. #11
    Опытный Аватар для Inlife
    Регистрация
    15.08.2010
    Адрес
    Kyiv, Ukraine
    Сообщений
    338
    а когда примерно будет готова новая студия ?
    PHP код:
    ####

    if (== 4
    {
        print 
    "Yes...i am genius!!";
    }

    #### 
    http://community.develstudio.ru/image.php?u=493&type=sigpic&dateline=1318757018

  14. #12
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Сделал новую демку, уже продвинулся с интеграцией Ориона в игровой движок, 50% логики новой демки уже написано на скриптах, которые можно глянуть в папке /scripts/test.ori


    Исходник того скрипта test.ori
    PHP код:
    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(OnInitfunc($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(OnCreatefunc($self){
            
    $self->rand(0,800);
            
    $self->rand(0,600);
            
    $self->reg();
        });
        
        
    // регистрируем взрыв
        
    @explode->addEvent(OnCreatefunc($self){ 
            
    $self->reg() 
        });
        
       
    // конец анимации - уничтожаем объект взрыва
        
    @explode->addEvent(OnAnimationEndfunc($self){
            
    $self->free();
        });
    }); 
    (Пробел стрелять, стрелки - управление игроком).
    Вложения

  15. #13
    Мастер Аватар для kazer_xxx
    Регистрация
    08.01.2011
    Адрес
    Копейск
    Сообщений
    1,148
    Класс)) Очень интересно Когда можно будет опробовать?
    Как хочу быть красненьким и с надписью "Админ"

  16. #14
    мда на самом деле язык очень похож на php

  17. #15
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Цитата Сообщение от Acid-UA Посмотреть сообщение
    мда на самом деле язык очень похож на php
    Не понял? Я просто использовал вместо global символ @ для глобальных переменных, и укороченное func для анонимных функций (хотя можно писать и function). А анонимные функции есть в php 5.3.

    Я не понял, что не так?

    Если глянуть GameAbstract.ori, то там можно обнаружить еще пару фич, которых нет в php, но которые очень удобны.

  18. #16
    Вы не поняли, это не сарказм, просто я так выражаюсь, мне написание понравилось, просто нужно привыкнуть !

  19. #17
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Цитата Сообщение от Acid-UA Посмотреть сообщение
    Вы не поняли, это не сарказм, просто я так выражаюсь, мне написание понравилось, просто нужно привыкнуть !
    Да я писал такой код на орионе, что наверно пхп-ник будет в ауте после того как его увидит. Очень много новых фич, которые очень удобны и их хочется использовать, что делает код не очень похожим на пхп-ный.

    Код:
    &bullet_vs_wall
    


    Тут мы получаем ссылку на именованную функцию. В языке активно используются анонимные функции (т.е. без названия), особенно для событий.
    Т.е. раньше в DS для пхп надо было постоянно передавать название функции или метода, которые бы вызывались через eval, но это очень криво и сказывается на скорости событий. В орионе достаточно достать ссылку на функцию или метод, или прямо так - создать сразу анонимную функцию (как у меня там в test.ori).


    Для примера:
    В GameAbstract доступ к свойству объекта ->X через Орион происходит у меня за 0.5 сек в цикле на 1млн итераций, а в DS доступ к полю ->X через пхп и "длинную интеграцию" с ГУИ происходит за 500 сек. (Т.е. в 100 раз медленнее). (В GameMaker 8.1 тоже мерил 0.9 сек).

    В играх это бы было очень ощутимо, но это не от того что пхп такой медленный, просто интегрировать его сложно, из-за чего страдает производительность.

  20. 3 пользователя(ей) сказали cпасибо:

    Acid-UA (25.05.2011), intval (27.05.2011), Kiro (25.05.2011)

  21. #18
    Интересно будет пощупать. Хоть pascal и php знаю неплохо, но всё же выберу orion. Отдельное спасибо за его поддержку.

  22. #19
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Цитата Сообщение от intval Посмотреть сообщение
    Интересно будет пощупать. Хоть pascal и php знаю неплохо, но всё же выберу orion. Отдельное спасибо за его поддержку.
    Для того чтобы написать игру на GameAbstract будет достаточно знания хотя бы одного из языков - orion или pascal. Но ставка делается больше на первый. Orion это смесь php и некоторых других языков.

  23. #20
    Цитата Сообщение от Devel Посмотреть сообщение
    Для того чтобы написать игру на GameAbstract будет достаточно знания хотя бы одного из языков - orion или pascal. Но ставка делается больше на первый. Orion это смесь php и некоторых других языков.
    Я понял. Я к тому, что будет интересней писать на вашем Orion нежели на буржуйском паскале

  24. #21
    Главный Разработчик Аватар для Devel
    Регистрация
    11.03.2010
    Сообщений
    1,231
    Балуюсь с изометрией, вот что получается, в движок будут встроен функционал для работы с изометрией (особенно удобно для различных стратегий, рпг, tycoon игр).

    Тут мы можем расставлять стадион по карте кликнув на стадион слевой стороны (т.е. клонировать стадионы по карте). Размер изометрической клетки 32 на 32.
    Вложения

  25. #22
    Опытный Аватар для pilip
    Регистрация
    14.12.2010
    Адрес
    Центр Сибири
    Сообщений
    370
    просто копировал и вылезло
    Миниатюры Нажмите на изображение для увеличения
Название: Безымянный..JPG
Просмотров: 74
Размер:	112.2 Кб
ID:	631  

  26. #23
    Пользователь Аватар для sterwart
    Регистрация
    01.03.2011
    Адрес
    Windows 2003
    Сообщений
    192
    был бы движок с физикой,я бы такое запилил!!!

  27. #24
    Радуга! Аватар для haker
    Регистрация
    11.03.2010
    Адрес
    Россия 38
    Сообщений
    1,741
    Цитата Сообщение от sterwart Посмотреть сообщение
    был бы движок с физикой,я бы такое запилил!!!
    там все есть и физика тоже
    АдМиНы и МоДеРы среди нас!! Так что будьте вежливы, а то можете получить бан
    http://system-x-files.ru/ - мой блог
    Заказ работ для DevelStudio.

  28. #25
    Радуга! Аватар для haker
    Регистрация
    11.03.2010
    Адрес
    Россия 38
    Сообщений
    1,741
    Цитата Сообщение от sterwart Посмотреть сообщение
    был бы движок с физикой,я бы такое запилил!!!
    там все есть и физика тоже
    АдМиНы и МоДеРы среди нас!! Так что будьте вежливы, а то можете получить бан
    http://system-x-files.ru/ - мой блог
    Заказ работ для DevelStudio.

  29. #26
    Опытный Аватар для Virviil
    Регистрация
    15.03.2010
    Адрес
    Минск
    Сообщений
    406
    Вообще то физику можно самому запилить, так что это не проблема.

    Честно говоря, с движком лично мне ещё ничего не понятно, а вот орион - норм язык.
    Скачал компилер, пошпилил - в принципе отличие от пхп не оч большое, но разные фичи доставляют)))

Ваши права

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