Понедельник, 25 Ноября 2024, 13:10

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 7 из 8
  • «
  • 1
  • 2
  • 5
  • 6
  • 7
  • 8
  • »
AlloDraw engine
BOOMДата: Пятница, 22 Января 2010, 12:58 | Сообщение # 1
I am the creator of ADE
Сейчас нет на сайте
Проект закрыт на неопределённый срок





AlloDraw 2D engine


Платформа: Windows NT 32bit (2000, XP, Vista, 7)
Пространство: базовое 2D. Система позволяет реализовать 3D.
Используется API: WinAPI, VCL, DirectX
Используются библиотеки: LUA, PNG, FMI, Squall
Описание: модульный движок для создания экономических симуляторов, игр, похожих на SimSity, SitiesXL.
Лицензия: Бесплатная.
Предоставление исходного кода: на усмотрение автора.

И так, сегодня я продолжаю развитие проекта AlloDraw engine, который уже строиться более двух лет. Наверное, самый долгострой, который есть на gcup.ru. Но не об этом. В развитии этого проекта я вложил много сил. Камнем преткновения в развитии стал сценарный движок. В результате я решил перестроить систему, используя LUA, что, соответственно, дало свой результат.

ADE через два года.
ADE прошёл жестокую «мутацию», которая привела проект от GOS, до AlloDraw. Вначале, это должна была быть простая игра, которая походила бы на простой компьютерный симулятор. Но, решение пришло о развитии полноценного движка, чем я и занялся. Далее, движок приобрёл некоторые способности, и в конце концов, основное направление движка стало: экономические симуляторы.

На этом, развитие данной идеи не завершено. Последнее обновление идеи ADE привело к пересмотру всей структуры движка, где и потребовался мощный сценарный движок. А я, как «мега-пупер-программер», решил написать свой сценарный движок, но оказалось, что для меня это не подъёмная задача. То есть как, я создаю свой сценарный движок, но он не имеет нужных характеристик, которые нужны именно для ADE. По этой причине, признав свои ошибки, я решил перейти на LUA, что, повторяюсь, дало свой результат.

И вот, теперь можно представить структуру ADE. Это модульный движок, где сам головной файл представлен в виде менеджера, запускающего необходимые модули. Вся основная функциональность движка распределена в модулях. Таким образом, движок способен работать в расширенном режиме, позволяя создавать игры разного направления, и в разном пространстве.

Конечно, я не гений, что бы сразу создавать 3D модули к ADE, поэтому останавливаюсь на простенькой 2D графики с анимацией.

Проведённая работа:
1. Наконец был сформирован формат FMI, создан редактор FMI для ADE.
2. Разработана концепция карт.
3. Так же, реализованы некоторые системные вещи.



Будущие работы:
1. По динамичному плану и работам двух лет создаётся единый план-проект ADE. (публикация плана – конец января, начало февраля 2012 года).
2. Разрабатывается API и интерфейс модулей. Это вообще, сложный вопрос, но решаемый.

Что обдумывается:
Возможно, что ADE обзаведётся и конструктором игр. Но, без программирования – не назвать, так как он будет требовать знания LUA.

Высказывайте своё мнение, и предлагайте свои идеи по поводу ADE...


______________________________
Я вернулся, и это чудо.
______________________________


Сообщение отредактировал BOOM - Суббота, 30 Сентября 2017, 06:10
DevelДата: Суббота, 20 Ноября 2010, 19:17 | Сообщение # 121
частый гость
Сейчас нет на сайте
Вот ты меня не внимательно прочел, как надо увеличить скорость стека. Постоянно делать New делать не надо и Delete.

Глянь:

Code
function TPHPStack.pushFast(): PStackValue;
begin
    Inc(StackLen);

    if RealStackLen < StackLen then
    begin
       SetLength(FStack, StackLen);
       inc(RealStackLen);
       new(FStack[StackLen-1]);
    end;
       Result := FStack[StackLen-1];

    Result^.isHashValue := false;
end;

http://code.google.com/p/orionphp/source/browse/trunk/uStack.pas

Code

// удаление последнего значения из стека
procedure TPHPStack.discard();
begin
      //discardVal(FSTack[StackLen-1]);
      Dec(StackLen);
      //SetLength(FStack, StackLen);
end;


Сообщение отредактировал Devel - Суббота, 20 Ноября 2010, 19:17
BOOMДата: Воскресенье, 21 Ноября 2010, 04:09 | Сообщение # 122
I am the creator of ADE
Сейчас нет на сайте
Quote (Devel)
Вот ты меня не внимательно прочел

Нет, прочитал всё нормально. Но сложность заключается в том, что постоянно сверху читать, писать и удалять система не будет. Значит необходимо разработать более гибкую систему (что то похожее на таблицу), а это потеря скорости, и больший объём в памяти. Помимо этого C++ не поддерживает динамические массивы, и поэтому, в базисе я использую stl классы vector и map, немного поиздевавшись, конечно:

Code
template<class IDKey, class PObject> class pmap
{
protected:
     map<IDKey, int> _map_object;
public:

     typedef map<IDKey, int>::iterator           _iterator;

     pmap(){/**/};
     ~pmap(){/**/};

     _iterator Begin() { return _map_object.begin(); }
     _iterator End() { return _map_object.end(); }

     PObject *ReadIteratorSecond(_iterator &value){
         return (PObject *) value->second;
     }

     IDKey ReadIteratorFirst( _iterator &value){
         return value->first;
     }

     void CreateClearObject(IDKey ID){
         PObject *obj = new PObject();
         _map_object[ID] = (int) obj;
     }

     void FreeObject(IDKey ID){
         if(_map_object.count(ID) == 1){
             PObject *obj = (PObject *)_map_object[ID];
             delete obj;
         }
     }

     void Clear(){
         PObject *obj;
         _iterator it = _map_object.begin();
         while(it != _map_object.end()){
             obj = (PObject *)it->second;
             delete obj;
             it++;
         }
         _map_object.clear();
     }

     unsigned int Size() { return _map_object.size(); }

     PObject *operator[] (IDKey ID){
         PObject *obj = NULL;
         if(_map_object.count(ID) == 1){
             obj = (PObject *)_map_object[ID];
         }
         return obj;
     }
};

К тому же я использую более сложные структуры, на пример эта структура ключ-имя:

Code
struct _PairKey
{
     TypeID      _KeyID;
     lpString    _KeyName;

     _PairKey &operator=(const _PairKey &vl){
         _KeyID = vl._KeyID;
         _KeyName = vl._KeyName;
         return *this;
     }
     bool operator == (_PairKey &vl) { return _KeyID   == vl._KeyID;  }
     bool operator != (_PairKey &vl) { return _KeyID   != vl._KeyID;  }
     bool operator >  (_PairKey &vl) { return _KeyID   >  vl._KeyID;  }
     bool operator >= (_PairKey &vl) { return _KeyID   >= vl._KeyID;  }
     bool operator <  (_PairKey &vl) { return _KeyID   <  vl._KeyID;  }
     bool operator <= (_PairKey &vl) { return _KeyID   <= vl._KeyID;  }
     bool IfKeyName   (_PairKey &vl) { return _KeyName == vl._KeyName;}
     bool IfNotKeyName(_PairKey &vl) { return _KeyName != vl._KeyName;}

     _PairKey() {/**/}
     _PairKey(TypeID id, lpString nn){ _KeyID = id; _KeyName = nn; }
     ~_PairKey(){};
};

Где lpString есть AnsiString, либо WideString, всё зависит от выбранной кодировки. Объект из такой структуры лучше создавать динамичным, в противном случае скорость упала бы во много раз...


Я, как выше уточнял, попробовал переписать функции и скорость работы увеличилась. На 1 000 000 объектов, при чтении с помощью каретки, время с 0,3 сек (300 мс) упала, примерно, на 0,1 сек.

Devel, мне просто надо оптимизировать код. Чем сейчас я и занимаюсь... А вообще, я думаю над тем, что бы реализовать выделение по группе объектов, примерно, как ты привёл первый пример.


______________________________
Я вернулся, и это чудо.
______________________________
BOOMДата: Понедельник, 13 Декабря 2010, 11:17 | Сообщение # 123
I am the creator of ADE
Сейчас нет на сайте
Проект заморожен до 1 февраля 2011 года.



* Вопросы по скрипту решены.

С будущим новым годом...


______________________________
Я вернулся, и это чудо.
______________________________
BOOMДата: Суббота, 08 Января 2011, 08:51 | Сообщение # 124
I am the creator of ADE
Сейчас нет на сайте
Хочу признаться, хотя я "заморозил проект", я всё равно продолжаю работу над ним, выкрадывая пару часов из напряжённого графика.
И так, могу сказать, платформа почти готова. Осталось решить несколько вопросов по LPS-3; API движка и ещё кое каких мелочей.

За год присутствия на сайте, движок менял названия и план развития проекта. Я уже не говорю о главных документах...
В середине 2010 года, я решил положить в основу движка модульную систему. В этот раз об этом, я не говорил, потому что рассматривал другие способы реализации проекта. Но модульная основа оказалась лучшей.

И так, по делу. Я выложил блок-схему, по которой развиваю AlloDraw (клик).
Так же, в этом документе есть заметка о дальнейшем развитии движка. Хотя этот замах для меня, пока - голубая мечта, но когда то, создание своего движка было для меня голубой мечтой. Но я шёл и почти пришёл к финишу.

По проекту:
Ниже я в цифрах опишу, что сделано:

  • LPS-3 50%
  • Input system 90%
  • Drawing 80%
  • Audio контроллер 90%
  • Модули 0%
  • Сборка платформы осуществиться после завершения LPS-3. (Предполагаю, учитывая темп развития, март - апрель).

    ______________________________
    Я вернулся, и это чудо.
    ______________________________
  • shnaketДата: Суббота, 08 Января 2011, 11:29 | Сообщение # 125
    частый гость
    Сейчас нет на сайте
    BOOM, если я правильно понял из блок-схемы, то основную связующую роль между компонентами движка будет играть LPS-3?

    DevelДата: Суббота, 08 Января 2011, 12:05 | Сообщение # 126
    частый гость
    Сейчас нет на сайте
    Что-то мне схема LPS-3 показалась слишком надуманной =) Я из нее ничего не понял, у схемы не понятно - где начало, а где конец.

    Сообщение отредактировал Devel - Суббота, 08 Января 2011, 12:05
    BOOMДата: Суббота, 08 Января 2011, 12:38 | Сообщение # 127
    I am the creator of ADE
    Сейчас нет на сайте
    Quote (shnaket)
    то основную связующую роль между компонентами движка будет играть LPS-3?

    Да. Общая связь будет осуществляться через LPS.
    Quote (Devel)
    Что-то мне схема LPS-3 показалась слишком надуманной =) Я из нее ничего не понял, у схемы не понятно - где начало, а где конец.

    Это образная схема, которая планирует работу. А не проектирует всю систему целиком.


    ______________________________
    Я вернулся, и это чудо.
    ______________________________


    Сообщение отредактировал BOOM - Суббота, 08 Января 2011, 12:39
    BOOMДата: Четверг, 10 Ноября 2011, 19:41 | Сообщение # 128
    I am the creator of ADE
    Сейчас нет на сайте
    Проект возобновится 1 декабря 2011 года.
    Прошу извинения, за то, что его закрывал, на то были причины.

    В ходе разработки происходят следующие перемены:
    1. Перетерпит жёсткие изменение план-проект, который будет выложен на общее обозрение в первом квартале 2012 года.
    2. Отказ от идеи "LPS" в пользу "LUA".
    3. AlloDraw будет иметь возможность поддерживать 3D графику (закладывается на базисе проекта, для дальнейшего его развития), в зависимости от разработки модулей. Но первоначальная версия движка будет такой же, как описано в первом посту, но учитывая изменения.

    *Пока все перемены на бумаге, но после запуска проекта x, над которым я сейчас интенсивно работаю, данные пункты, и не только они будут введены.

    Пока принимаются идеи о структуре AD. Всю информацию можно найти в этой теме.


    ______________________________
    Я вернулся, и это чудо.
    ______________________________
    BOOMДата: Четверг, 01 Декабря 2011, 09:32 | Сообщение # 129
    I am the creator of ADE
    Сейчас нет на сайте
    Проект восстановлен. Подробности в шапке темы...

    ______________________________
    Я вернулся, и это чудо.
    ______________________________


    Сообщение отредактировал BOOM - Четверг, 01 Декабря 2011, 09:33
    KillerbotДата: Четверг, 01 Декабря 2011, 20:16 | Сообщение # 130
    участник
    Сейчас нет на сайте
    BOOM, на чём пишешь движок?
    BOOMДата: Пятница, 02 Декабря 2011, 02:05 | Сообщение # 131
    I am the creator of ADE
    Сейчас нет на сайте
    Killerbot, движок пишется на C++'e. однако программировать сам движок будет просто и тем, кто работает даже с delphi и C#'ом. Весь прикол в модульности.

    ______________________________
    Я вернулся, и это чудо.
    ______________________________
    magikarДата: Суббота, 03 Декабря 2011, 22:01 | Сообщение # 132
    частый гость
    Сейчас нет на сайте
    Поставил +,молотчага!
    DusklyДата: Суббота, 03 Декабря 2011, 22:21 | Сообщение # 133
    Rush Games
    Сейчас нет на сайте
    BOOM, класс)


    Разрабатываеться:
    флеш игра для соц. Сетей (Бои друзей) - временное название!
    3д игра (пока без названия)
    BOOMДата: Воскресенье, 04 Декабря 2011, 14:22 | Сообщение # 134
    I am the creator of ADE
    Сейчас нет на сайте
    В апреле 2010 года, в базу GcUp.ru был добавлен компонент, разработанный мною, RFD. Сегодня было завершено обновление самого алгоритма RFD, переведя версию в 2.0.

    В RFD добавлено/разрабатывается:
  • Поддержка сжатия данных методом LZ, простейшей реализации.
  • Оптимизирован алгоритм анализа файла RFD.
  • Обновляется версия RFD Tool до 2.0

    Скриншот RFD Tool


    Работа идёт, скорее: декабрь-январь - выход парированной версии RFD2 на GM и другие платформы.

    ______________________________
    Я вернулся, и это чудо.
    ______________________________
  • BOOMДата: Среда, 28 Декабря 2011, 06:45 | Сообщение # 135
    I am the creator of ADE
    Сейчас нет на сайте
    По ADE работа кипит и завершён ещё один Tool.
    На этот раз, эта программа предназначена для редактирования файлов в формате ConSys (Configuration System), которые будут использоваться в ADE для хранения статичных данных.

    Алгоритм ConSys построен по принципу рекурсивного вложения объектов, таким образом, древовидная система ConSys может быть бесконечно (если иметь комп с бесконечной памятью).

    Скриншот тула:





    Так же, я предлагаю немного потыкать в программки, которые войдут в пакет ADE. Это:
  • FMIEditor - редактор анимации в формате FMI (Заточен под ADE, поддерживает только PNG для импорта);
  • RFDTool - редактор файлов в формате RFD (Resource File Data);
  • ConSysEditor - редактор файлов ConSys.

    ссылка на архив;
    Анимация FMI домика (что на скрине первого поста).

    Меня интересует следующее:
    1. На ваш взгляд, удобен ли интерфейс программ.
    2. Если возникнет ошибка, просьба, описать её здесь, приложив краткую информацию о системе и по возможности, скриншот ошибки.

    ______________________________
    Я вернулся, и это чудо.
    ______________________________


    Сообщение отредактировал BOOM - Среда, 28 Декабря 2011, 07:03
  • AGENTX001Дата: Среда, 28 Декабря 2011, 23:21 | Сообщение # 136
    почётный гцупер
    Сейчас нет на сайте
    BOOM, молодчага!) И просьба - если делаешь для делфи, проверяй на лазарусе!! Пожалуйста!)
    BOOMДата: Четверг, 29 Декабря 2011, 07:27 | Сообщение # 137
    I am the creator of ADE
    Сейчас нет на сайте
    AGENTX001, я пишу на С++'e, но буду в либы всё собирать, ведь движок с закрытым кодом...
    Это значит, что подгрузить либу (*.dll) к проекту в лазуре не составит труда, тем более я постараюсь API заголовки движка сделать для дельфина, но чуть позже...


    ______________________________
    Я вернулся, и это чудо.
    ______________________________
    AGENTX001Дата: Пятница, 30 Декабря 2011, 01:13 | Сообщение # 138
    почётный гцупер
    Сейчас нет на сайте
    BOOM, ну вот смотри, для дельфина есть ну просто мега популярный двиг - DGLE. Но он не работает под лазарусом... Несколько человек пытались портировать, безрезультатно. А вот из под лазаруса, на делфи пашет вообще всё, даже то, что работать не должно;)
    BOOMДата: Пятница, 30 Декабря 2011, 01:31 | Сообщение # 139
    I am the creator of ADE
    Сейчас нет на сайте
    AGENTX001, в общем так... Я перед собой ставлю задачу: собрать платформу, позволяющую реализовать игру практически на любом компиляторе, даже на ассемблере (если не лень smile ). А структура движка до безумия проста, на примере запуска:

    1. Вводятся конфигурации (окно, параметры 2D, 3D) в структуру (если необходимы, так как большинство данных являются необязательными, они хранятся в конфигурации), либо в виртуальный стек (в зависимости от реализации ade.dll, в зависимости от среды разработки);
    2. Создаётся callback - функция, возвращающая определённые сообщения, API дескрипторы окна и интерфейсы, либо DirectX, либо VCL, или без них.
    3. Назначается эта функция с помощью ade_onwindow.
    4. Вызывается функция инициализации окна и платформы ADE (ade_init), которых несколько, в зависимости от поставленных целей.
    5. Собираем exe - всё.

    Остальное всё прописывается двумя методами:
    1. Реализовываем модули, используя API (примеры будут для C++ (MinGW, Visual Studio), С++ Builder, Delphi, возможно, и C#).
    2. Реализовываем возможности по средствам LUA.

    Вот таким образом, на ADE можно будет собрать солянку из сторонних движков, выбирая только лучшее. В принципе, ADE - это платформа для творческой идеи (пока я развиваю 2D, но как выше я уже говорил, 3D тоже планируется (Я ведь не Билли, что бы писать невозможное smile )




    Я пока пишу периферию движка, то есть: системные компоненты для сохранения информации, запуска LUA, хранения ресурсов и так далее...
    Сейчас я отдыхаю (Новый год всё-таки), но после отдыха я буду собирать модуль LUA (шкуру либы) для ADE, и парировать ConSys, RFD-2 для GM (они ещё будут распространяться отдельно, то есть самостоятельно от ADE).

    ...И ещё...
    Тестовые модули для ADE будут заточены для экономических симуляторов, что-то вроде 2D SitiesXL, или SimCity, поэтому и определение движка такого. На самом деле, ADE будет позволять реализовывать игры разного характера.


    ______________________________
    Я вернулся, и это чудо.
    ______________________________


    Сообщение отредактировал BOOM - Пятница, 30 Декабря 2011, 01:52
    IvaKamДата: Среда, 19 Сентября 2012, 20:13 | Сообщение # 140
    был не раз
    Сейчас нет на сайте
    А где его скачать? Наверное это на С++ и BCB 6 написано, мне такой движок пригодился бы.
    • Страница 7 из 8
    • «
    • 1
    • 2
    • 5
    • 6
    • 7
    • 8
    • »
    Поиск:

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