Пятница, 22 Ноября 2024, 04:31

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Результаты поиска
DevelДата: Воскресенье, 12 Июня 2011, 13:29 | Сообщение # 1 | Тема: Urbanization - экономическая стратегия
частый гость
Сейчас нет на сайте
Пока никто не нужен, если будут нужны я отпишусь в этой теме.
DevelДата: Пятница, 10 Июня 2011, 16:46 | Сообщение # 2 | Тема: GameAbstract Framework - ИгроваяАбстракция
частый гость
Сейчас нет на сайте
FreePascal поддерживает ARM архитектуру, но не знаю насчет arm6 она вроде уже устаревшая.
DevelДата: Пятница, 10 Июня 2011, 16:39 | Сообщение # 3 | Тема: Urbanization - экономическая стратегия
частый гость
Сейчас нет на сайте
Жанр: Tycoon, экономический симулятор, стретегия
Движок: GameAbstract
В каком пространстве: 2,5D изометрия
Язык программирования: Pascal (FreePascal), Orion
Платформа: ОС Windows, Linux
Предоставление исходного кода: не предоставляется
Тип лицензии: Сommercial +Demo, Trial (либо урезанная). Онлайн версия будет бесплатная

Краткое Описание: Градостроительный симулятор, в котором вам предстоит стать эдаким мэром какого-нибудь города России и создать свой мегаполис - объединение нескольких городов и сел в одну большую сеть. Вам предстоит строить жилые массивы, производства, налаживать транспортную сеть между городами мегаполиса для перевозки пассажиров и различной продукции, бороться с коррупцией разными методами, иметь дело с мафией и другими вещами из реальной жизни. Вы будете сами определять стратегию развития вашего мегаполиса, у вас будет масса инструментов для достижения целей, как законных так и нет. Когда будете готовы к игре в онлайне, перед вами откроется целый мир городов, которые построили разные люди и вы сможете налаживать с ними транспортные каналы для поставки различных товаров и пассажиров в ваш мегаполис. Вы сможете просить помощи у других городов или же наоборот субсидировать города своих друзей. Какие-то города будут ориентированы на туризм, какие-то на производство, третьи же будут просто городами со своей спецификой. В каждом городе и стране у вас будут разные условия, разный менталитет людей, который же конечно будет сильно влиять на сам игровой процесс, в какой-то стране вам предложат субсидии, в какой-то низкие налоги, а в какой-то будет повышенный уровень преступности, или пред-революционная ситуация, большие налоги и т.д.

Дополнительно:
Игра будет первым проектом на движке GameAbstract, с помощью этой игры также будет развиваться и сам движок GameAbstract. Все модели зданий, ландшафта будут сначала созданы в 3D, а затем отрендерены в Изометрию. Игра будет поддерживать дополнения - новые здания, карты и т.п.

Состав команды
Devel - Дмитрий Зайцев (главный разработчик, программист)
Flocker - Алексей Романов (3D моделирование, дизайн)
DENFER - Митя Липский (перевод 3d моделей в изометрию, 2д графика, скриптование)


Сообщение отредактировал Devel - Воскресенье, 12 Июня 2011, 13:28
DevelДата: Пятница, 10 Июня 2011, 16:12 | Сообщение # 4 | Тема: GameAbstract Framework - ИгроваяАбстракция
частый гость
Сейчас нет на сайте
Quote (stalkerya)
На android будет?


Возможно к тому времени когда разработка будет закончена, ZenGL будет поддерживать Android официально, а вообще на андроиде тоже стоит OpenGL ES 1.x, так что проблем с поддержкой в перспективе не должно быть.
DevelДата: Вторник, 07 Июня 2011, 15:16 | Сообщение # 5 | Тема: GameAbstract Framework - ИгроваяАбстракция
частый гость
Сейчас нет на сайте
Это игровой фреймворк для быстрой разработки 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
DevelДата: Суббота, 16 Апреля 2011, 17:51 | Сообщение # 6 | Тема: Ура ура друзья GameMaker 8.1 вышел в свет, можно скачать!
частый гость
Сейчас нет на сайте
Да и не плохо было бы если они сняли ограничение с размера массива в 32000 элемента, а то какое-то странное ограничение.
DevelДата: Суббота, 16 Апреля 2011, 15:07 | Сообщение # 7 | Тема: Ура ура друзья GameMaker 8.1 вышел в свет, можно скачать!
частый гость
Сейчас нет на сайте
Quote (NeZnayu)
Devel, видимо плохо следишь, редактор кода еще с 6й версии имеет подсветку синтаксиса, а автозаполнение и прочие навороты появились в 8.0

писать код в блокноте... Скажешь тоже...

Она есть только для функций, и нету подсказки для параметров, когда открываешь скобку и сверху отображается подсказка с параметрами. Также нет автодополнения для объектов и их свойств.

DevelДата: Суббота, 16 Апреля 2011, 08:54 | Сообщение # 8 | Тема: Ура ура друзья GameMaker 8.1 вышел в свет, можно скачать!
частый гость
Сейчас нет на сайте
Хотя я не пользователь, но слежу за конструктором. За столько лет они так и не допилили нормальный редактор скриптов, программировать в блокноте это все равно что в средневековье. Где автодополнение? Где всякие подсказки при наборе текста. И запускаться он стал на мой взгляд дольше.
DevelДата: Суббота, 08 Января 2011, 12:05 | Сообщение # 9 | Тема: AlloDraw engine
частый гость
Сейчас нет на сайте
Что-то мне схема LPS-3 показалась слишком надуманной =) Я из нее ничего не понял, у схемы не понятно - где начало, а где конец.

Сообщение отредактировал Devel - Суббота, 08 Января 2011, 12:05
DevelДата: Воскресенье, 26 Декабря 2010, 21:14 | Сообщение # 10 | Тема: Как заставить себя доводить дела до конца?
частый гость
Сейчас нет на сайте
Мне кажется процесс создания игры тебе нужно воспринимать как прокачку героя в какой-нибудь онлайн-игрушке, для это нужна лишь фантазия. Разбить разработку на части, и за каждую сделанную часть вознаграждать себя "морковкой" =). Естественно, в любой онлайн-игрушке есть конкуренты, и здесь ты тоже должен найти себе конкурентов, чтобы смысл прокачки остался. Если ты играешь в такие игры, я думаю тебе поможет biggrin

Как только чувствуешь, что процесс начинает надоедать, бросай дело, на день, на неделю, пока тебе снова не захочется за него взяться, важно не доходить до кондиции - когда тебя будет тошнить от своего же проекта. Вообще так с любым делом, творческим, когда нет денежного стимула, а когда его нет, энтузиазм обычно пропадает через 1-2 недели. И часто, доделываются до конца те проекты, в которых ты постоянно открываешь для себя что-то новое, а когда ты уже делаешь, то что ты делал много раз, очень большая вероятность, что тебе очень быстро надоест. Так что, не нужно сначала учиться, а потом делать сразу крупные проекты, надо совмещать эти 2 дела.

Сообщение отредактировал Devel - Воскресенье, 26 Декабря 2010, 21:24
DevelДата: Понедельник, 20 Декабря 2010, 16:18 | Сообщение # 11 | Тема: PHP DevelStudio [Конструктор программ]
частый гость
Сейчас нет на сайте
Ну дело в том, что лицензия ZenGL как раз LGPL, использовать движок в комерческих проектах (в закрытых) можно будет при условии динамической линковки (а не статической), как это написано в лицензии. Лицензия Chimpunk и Orion - MIT - а это практически тоже самое что и BSD лицензия (Поскольку копирайт на данную лицензию (MIT) отсутствует, другие группы имеют право использовать и изменять её для удовлетворения своих целей).

Разработка будет полностью на opensource fpc, который сам распространяется по лицензии GPL и Модифицированной LGPL (которая как раз и позволяет разрабатывать коммерческие закрытые продукты). Если мне придется включать компилятор FPC в конструктор, то тогда придется открывать исходники под лицензией GPL, если нет, то не нужно. Но навряд ли будет использоваться компилятор FPC для компилирования проектов, но даже если и будет, то это все равно позволит создавать закрытые продукты, т.е. лицензия FPC позволяет это, правда придется открыть исходники самой среды под той же лицензией что и FPC.

Сообщение отредактировал Devel - Понедельник, 20 Декабря 2010, 16:21
DevelДата: Понедельник, 20 Декабря 2010, 15:53 | Сообщение # 12 | Тема: PHP DevelStudio [Конструктор программ]
частый гость
Сейчас нет на сайте
Нет, движок распространяется под лицензией MIT, но и LGPL разрешает использовать исходники в коммерческих проектах, в закрытых, последняя версия QT под лицензией LGPL и как раз таки поэтому, стало возможно разрабатывать бесплатно закрытые проекты на QT. Не путайте GPL с LGPL.

Сообщение отредактировал Devel - Понедельник, 20 Декабря 2010, 15:59
DevelДата: Понедельник, 20 Декабря 2010, 15:10 | Сообщение # 13 | Тема: PHP DevelStudio [Конструктор программ]
частый гость
Сейчас нет на сайте
Активно ведется разработка своего скриптового движка для DevelStudio, практически аналог языка PHP, с таким же синтаксисом и возможностями. Только реализация своя и с нуля с некоторыми нововведениями в синтаксисе. А также родная поддержка многопоточности, анонимные функции, переменные (глобальные, локальные), хеш-массивы, пользовательские функции, области видимости (namespace - не такие как в php 5.3).

ВНИМАНИЕ.

Для тех, кто хочет первым испробовать этот скриптовой двиг, внедрить в свой двиг или конструктор, предлагаю активное сотрудничество. Лицензия будет открытой, скорее LGPL.

Характеристики языка
1. Скорость работы практически сравнима со скоростью оригинального PHP 5.2
a. Если сравнивать с GML (game maker), наш движок в 2,5-3 раза быстрее GML (8 версия).
b. Быстрей Pascal Script и Fast Script в 4-5 раз.
2. Типизация данных точно такая же как в PHP. (явных типов нет).
3. Анонимные функции (без названия), могут быть присвоены переменной, ячейке массиву, свойству класса.
4. Сборщик мусора для массивов, анонимных функций и объектов (т.е. те объекты, на которые уже никто не ссылается, автоматически очищаются)
5. Константы - строковые, числовые, логические
6. Типы данных - none, null, integer, float, string, array, function, object

На данный момент реализованы переменные, константы, пользовательские функции, условия, циклы, различные операторы (сложение, вычитание, конкатенация строк и т.п.), сборщик мусора для массивов и функций, анонимные функции, хеш-массивы. Скриптовой двиг компилирует код в байт-код, который потом выполняется, т.е. это не чистый интерпретатор. Язык разрабатывается на freepascal и delphi, будет кроссплатформенным, будет возможность подключать его через dll (для любых языков), а также компилировать вместе с программой написанной на lazarus, freepascal или delphi.

P.S. Обращайтесь ко мне, кто заинтересован в сотрудничестве в этой области.

Страница проекта:
http://code.google.com/p/orionphp/

SVN: http://orionphp.googlecode.com/svn/trunk/

Добавлено (20.12.2010, 15:10)
---------------------------------------------
Как вы видите, последние месяцы происходит затишье, новые версии среды пока не выходят и на то есть причины.

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

Во-вторых, это делается для определенных целей:

1. Оригинальный движок PHP уже не удовлетворяет всем потребностям, хотя его исходники открыты, но использовать их практически не возможно, они довольно кривые и плохо написаны, прошло более 10 лет и они нуждаются в полной переработке. А также структура движка не позволяет хранить исходный код в качестве байт-кода, а также шифровать байт-код на низком уровне.

2. Это делается для того, чтобы было легко перенести движок и на мобильные платформы, такие как Win Mobile и Android, а также iOS. Оригинальный движок пхп совершенно не подходит для этих целей.

3. Это делается для того, чтобы сделать среду более кросс платформенной, а также дать возможности разработчикам создавать кроссплатформенные приложения без всякой мороки.

И в заключении. Все это конечно позволит довольно сильно расширить возможности среды.


Переориентация среды в сторону разработки 2-2,5D игр.

Это не означает, что разрабатывать программы в среде будет больше невозможно. Как ни странно, но именно разработка игр более перспективное направление, спрос на это в 2-3 раза больше чем на разработку программ, относительно сред разработки. Поэтому приоритеты будут примерно такими - 70% сил брошены на разработку возможностей для создания игр, 30% - на возможности для создания программ.

Теперь немного о том как вообще будет выглядеть режим для создания игр...

Конечно принцип разработки игр в среде будет отличаться от того что есть сейчас и это понятно. Вот основные принципы режима разработки для игр:

1. Отсутствие жанровой направленности конструктора - возможность создавать платформеры, стратегии, аркады и любые другие инди игры.
2. Будет присутствовать очень мощная и удобная система для создания сетевых игр - как через интернет, так и через локальную сеть.
3. Возможности 3D будут присутствовать в минимальных количествах.
4. Очень вероятно, что будет возможность создавать игры для мобильных платформ, такие как Android, Win и iOS.
5. На оригинальном движке PHP игры писать будет невозможно, только на языке Орион.
6. DirectX будет использоваться для windows версии, OpenGL для других операционных систем.
7. В качестве графического движка будет использован ZenGL (разработчик Omega), а в качестве физического - Chimpunk

Лицензия, платность, бесплатность и т.п.

Этот вопрос пока открыт, но сейчас уже понятно, что полноценная возможность разработки игр под мобильные платформы будет платной. Над остальным еще не ясно, возможно как и предполагалось с DevelStudio будет платная Pro версия, но это не будет означать, что игры сделанные в бесплатной версии будут чем-то очень сильно ограничены, develstudio тому пример.

На что это будет похоже?

Конечно многих интересует вопрос, на какой конструктор это будет более похоже. Я скажу так, будет похоже на DevelStudio, только появятся новые функции, которые намного облегчат создания игр. Например объекты будут создаваться как шаблоны, а уже по шаблонам можно будет добавлять копии этих шаблонов в сцены. Сейчас такой способ просто не актуален для создания программ.

Мы сделаем конструктор таким, что он будет больше ориентирован на написание скриптов, политика примерно такая же как было при переходе от Mess Box к DevelStudio. Это позволит привлечь внимание более профессиональных разработчиков, но и для новичков будет предусмотрен несложный режим для составления сценариев для своих игр. Мы сделаем это таким образом, что разработка сложных игр - таких как РПГ или экономические стратегии, будет простой и понятной, хоть и придется для этого немного подучится скриптовому языку, который по сути и есть PHP.

Почему не планируется 3D?
Потому что для нас это пока непосильная ноша и нет уверенности что с 3D получится что-то стоящее и удачное, опыта для этого недостаточно. Для 3D нужно намного больше ресурсов - художники, моделеры и т.д. Направленность движка это разработка сетевых, онлайн, инди, мобильных игр где можно делать успешные игры и без 3D.

Как же с разработкой программ?
Она будет также поддерживаться, но как я говорил приоритет будет в 2-3 раза ниже чем у игр. Разработка программ на официальном движке php будет также возможна, но только в ОС Windows, разработка кроссплатформенных программ будет возможна только на языке Orion.

Напоследок...
Сам код среды и фреймворка будет полностью переработан и переписан на наш движок Orion. Код фреймворка для работы с Гуи будет поддерживаться. Скины будут поддерживаться только для ОС Windows и только для оригинального движка PHP.

Обсудить это можно на офф. форуме...

Сообщение отредактировал Devel - Суббота, 16 Октября 2010, 17:10
DevelДата: Воскресенье, 12 Декабря 2010, 19:22 | Сообщение # 14 | Тема: Game Maker 8 pro V.S. Scirra Construct 0.99.91
частый гость
Сейчас нет на сайте
DevelДата: Среда, 01 Декабря 2010, 18:22 | Сообщение # 15 | Тема: ATOM Limited Demo
частый гость
Сейчас нет на сайте
Похоже для начала надо как следует разобраться - что такое ANSI строка и Wide строка. smile А уже потом придумывать формат для хранения строк. Скорее нужен не формат, а правильный виевер для анси строки (а она по сути уже бинарная), бинарная строка может хранить и wide текст, все зависит от того, как воспринимает данные твоя программа.
DevelДата: Суббота, 20 Ноября 2010, 19:17 | Сообщение # 16 | Тема: AlloDraw engine
частый гость
Сейчас нет на сайте
Вот ты меня не внимательно прочел, как надо увеличить скорость стека. Постоянно делать 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
DevelДата: Суббота, 20 Ноября 2010, 18:45 | Сообщение # 17 | Тема: AlloDraw engine
частый гость
Сейчас нет на сайте
Зачем резервировать 300 мб памяти, это же глупо. Память нужно увеличивать по мере запросов на несколько килобайт например и уменьшать иногда.

Помню я делал тесты своего стекового класса, выходило 10 000 000 итераций, где 1 раз записывается в стек и 1 раз читается из стека (push и pop), выходило где-то 100 млсек на 3.0 Pentium.

И допустим у меня есть класс TPHPEval, при запросе пользовательских функций, нужен такой класс для выполнения байт-кода, а он в себе имеет стековый класс, класс для переменных и еще по мелочи. В этом случае глупо создавать и удалять постоянно объекты класса TPHPEval. Я сделал менеджер объектов для этого класса (и не только), которые помечает используемые в данный момент объекты этого типа и находит из них свободные и возвращает их. А потом я их использую. Получается типа схемы социализма)) нет ничего индивидуального.

Сообщение отредактировал Devel - Суббота, 20 Ноября 2010, 18:49
DevelДата: Четверг, 18 Ноября 2010, 14:26 | Сообщение # 18 | Тема: AlloDraw engine
частый гость
Сейчас нет на сайте
Самое главное простота)) Иначе поддерживать будет сложно. Еще на счет тестирования языка. Очень хорошо помогают тестировать язык юнит тесты:

Вот посмотри какие пишу тесты я, часто когда что-то меняешь, боишься что какая-то мелочь перестанет работать, а то и хуже:

http://code.google.com/p/orionphp/source/browse/#svn/trunk/test

А так я запускаю все тесты, если есть логические несоответствия, все записывается в лог.

Сообщение отредактировал Devel - Четверг, 18 Ноября 2010, 14:27
DevelДата: Четверг, 18 Ноября 2010, 11:40 | Сообщение # 19 | Тема: AlloDraw engine
частый гость
Сейчас нет на сайте
На мой взгляд ох как зря ты ввел типы Int32,Int64 и подобные. Посмотри как сделано в lua, там есть 2 типа int и float, но собирать движок можно под разными типами, int = int32 или int64 и т.п. Тот кто пишет скрипты не будет разбираться в разрядности. Byte еще более менее оправдан. Думаю еще не хватает типов: массив, объект и если есть анонимные функции - анонимная функция, все это все ссылки на самом деле, но тип нужен для движка.

С регистрами тебе тоже будет довольно сложно, та сказка про регистры в lua на самом деле ничего общего с регистрами не имеет. Нужно использовать стек с кешированием, т.е. когда в стеке выделяется память, выделять, когда он уменьшается на один, то верхушку не удалять, а лишь уменьшать длину стека - переменную, и тогда если будет повторное обращение к стеку, новый элемент не будет создаваться, если в стеке уже есть мусор. Вот и получаются псевдо регистры. Регистры можно хранить еще в инстуркциях байт-код, например 2 регистра, по сути это не регистры, но тебе придется генерировать трех адресный код, я генерирую трех адресный код из стекового и это не сложно, количество инструкций байт кода уменьшается вдвое, что влияет на скорость.

DevelДата: Вторник, 16 Ноября 2010, 16:07 | Сообщение # 20 | Тема: AlloDraw engine
частый гость
Сейчас нет на сайте
Для строк есть еще один вариант, это сделать строковой пул, т.е. все строки хранить в одной строке, надо лишь самому следить за смещением в главной строке и за длинной строки. Но я тебе скажу, прирост скорости более быстрый string тебе не даст особо ничего, потому что, как показывает практика, больше времени тратится на другие вещи. Но я такого еще не пробовал. Думаю будет быстро, потому что выделять постоянно ничего не надо.

А AnsiString это тот же PAnsiChar если не знал, только компилятор сам следит за длинной и выделением памяти, для анси стринг есть сборщик мусора и поэтому он более надежен, хоть может быть и медленней.

Если ты грамотно напишешь движок, то при выполнении, строки будут участвовать только для строковых встроенных строковых функций в движок. Т.е. строки не должны в конечном счете интерпретироваться при выполнении.

Сообщение отредактировал Devel - Вторник, 16 Ноября 2010, 16:08
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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