forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на BlitzMax (http://forum.boolean.name/forumdisplay.php?f=106)
-   -   elmax - набросок фреймворка (http://forum.boolean.name/showthread.php?t=4262)

elmortem 27.08.2007 15:49

elmax 0.0.6 - тень фреймворка
 
Вложений: 4
Застолблю-ка я себе местечко в данной ветке... (:
Выкладываю пока первые наработки, может кто посмотрит-покритикует...

Для правильной работы нужен модифицированный модуль pub.libxml. Инстркция по инсталяции в архиве... (:

Version 0.0.6 (14.09.2007)

Внимание! Относительно прошлых версий изменены имена многий файлов - не копируйте поверх старый версий.

Вырезка из readme.txt:

Что уже умеем?

1. Инициализация из xml-конфига.
2. Менеджер ресурсов с загрузкой из xml.
3. Простенький GUI с загрузкой из xml.
3.1. Окно (CGuiWindow) - контейнер, содержит другие контролы.
3.2. Лейбл (CGuiLabel) - можно указать горизонтальное форматирование текста.
3.3. Кнопка (CGuiButton) - можно указать бэкграунд кнопки из 3 фреймов (нормальное состояние, наведение, нажатие), шрифт, текст надписи, её цвет и альфу.
3.3.1. Возможность указать скрипт, сработающий при нажатии на кнопку.
3.3.1. Возможность указать имя функции скрипта, сработающей при нажатии на кнопку.
3.4. Скролл (CGuiScroll) - можно задавать минимальное и максимальное значение каретки (minValue и maxValue), а так же устанавливать положение самой каретки (value).
3.5. Листбокс (CGuiList) - контейнер, может содержать только элементы, которые будут составлять список. Для таких элементов от CGuiCtrl отнаследован специальный класс CGuiListItem. Устанавливает этим элементам (x=0.0, y)-координаты в соответствии с их положением в листе.
3.5.1. Элемент листа Лэйбл (CGuiListItemLabel) - можно задать шрифт, текст, его цвет и альфу.
3.6. Текстовая кнопка (CGuiTextButton) - можно указать бэкграунд кнопки из 9 фреймов по 3 на состояние (нормальное состояние, наведение, нажатие), шрифт, текст надписи, её цвет и альфу. Серединка кнопки растягивается в зависимости от указанной ширины.
3.6.1. Возможность указать скрипт, сработающий при нажатии на кнопку.
3.6.1. Возможность указать имя функции скрипта, сработающей при нажатии на кнопку.
3.7. Строка ввода (CGuiInput) - в активном состоянии позволяет вводить текст (поддержка русского языка), можно указать бэкграунд из 9 фреймов по 3 на состояние (нормальное состояние, наведение, активное), шрифт, его цвет и альфу.
3.8. Чекбокс (CGuiCheck) - стандартный чекбокс.
3.9. Изображение (CGuiPicture) - загружает и рендерит спрайт.
4. Класс спрайта с поддержкой анимации. Поддерживает вывод отдельных фреймов.
5. Класс шрифта с поддержкой форматирования расположения (верх\низ\лево\право\ценрт) относительно указанных координат.
5.1. Содержит методы для работы с текстом в виде листов TList. TList нужен для быстрой работы с многострочным текстом.
6. Класс цвета с функиями конвертации из Byte в Float и обратно, извлечение RGBA-составляющих из Int.
7. Наметки будущего класса вектора.
8. Система частиц, основанная на отдельных эмиттерах, которые можно легко расширять.
8.1. Стандартный эмиттер.
8.2. Эмиттер, создающий частицы по чёрно-белой маске.
8.3. Эмиттер, колеблющий частицы по горизонтали, создавая эффект вращения в глубину.
9. Система виджетов (CWidget) для создания отдельных элементов проргаммы (меню, геймплей, диалоговые окна и т.д.).
9.1. Управление виджетами через скрипты.
9.2. Возможность добавлять виджет в модальном режиме (обновляется только он).
10. Управление программой через скриптовую систему (Lua).
10.1. Управление базовыми классами.
10.2. Управление виджетами.
10.3. Управление GUI.

Что будем уметь?

1. Эмиттер на скриптах для задания сложного поведения частицам.

Что будет ещё?

1. Гексогональная сетка с возможностью гибкого (у ячейки будет несколько параметров) поиска пути.
2. Универсальная система сохранения\загрузки игры. (в процессе)
2.1. Универсальная система профиля игрока.

Зачем всё это?

Мне нужен удобный инструмент для разработки казуальных игр. Если он ещё кому-то пригодится - можете поделиться со мной своей прибылью! ^__^

dimanche13 27.08.2007 16:37

Re: elmax - набросок фреймворка
 
Забавненько, сейчас правда похвастаться не чем, окна то прозрачны , то нет. XML - оно читает, а надо ли? В чем будет сохраняться система частиц? Универсальная система сохранения\загрузки игры - что это?
http://elmortem.mirgames.ru/ - это ты?

elmortem 27.08.2007 16:59

Re: elmax - набросок фреймворка
 
Прозрачны не активные окна, это было сделано для теста активности окна. (:
Т.е. если клацнуть по окну, то оно станет активным, а если вне окна - не активным.
XML - очень удобный и наглядный формат хранения данных. Так что определённо надо. Загрузка может немного дольше, но за-то не нужно никакого дополнительного софта для редактирования - блокнотик открыл и подредактировал.

Частицы так же будут в XML по той простой причине, что эммитер имеет крайне небольшое число параметров, так что придумывать новый бинарный формат смысла не имеет. К тому же проще будет портировать систему частиц.
Пока создание редактора частиц не предполагается, всё ручками в блокноте.

Система сохранения и загрузки игры позволит регистрировать "в себе" разные данные и сохранять\загружать их. Не зная всех возможностей Макса я пока детально не думал над этим... Но это точно не будет "волшебной сохранялкой читающей мысли". Просто несколько упростит работу и уменьшит написание кода в дальнейшем.

В общем сейчас занимаюсь GUI и форматированным текстом, а там видно будет.

dimanche13 27.08.2007 17:17

Re: elmax - набросок фреймворка
 
ВЫкладывай следующие версии, пощупаем :) Если действительно будет работать всё то, что ты заплонировал без глюков и тормозов, то это будет просто супер.

moka 27.08.2007 17:27

Re: elmax - набросок фреймворка
 
Насчёт xml согласен с тобой, т.к. это отличный формат хранения информации.

Запустил и Сразу же с первого действия нашёл баг ;)
Значит двигай за край быстро окно, над другим окном, то тоже задвигаеться, т.к. ты у тебя перемещение окна на позицию куда переместить стоит До изменения координат курсора.
Далее, у тебя гуи не динамичны - окошко одним рисуночком, а не из частей гуи эллементов.

dimanche13 27.08.2007 17:47

Re: elmax - набросок фреймворка
 
Да, это еще ладно, что два окошка вместе двигаются. У меня вообще вылетало из программы и даже не говорило почему.

moka 27.08.2007 17:48

Re: elmax - набросок фреймворка
 
elmortem, ещё могу посоветовать добавить лог систему, для ведения логов в дубаг моде, а так же динамичный дебаг логгер, в самой игре, где будут графики всякие.

elmortem 27.08.2007 17:59

Re: elmax - набросок фреймворка
 
dimanche13
http://elmortem.mirgames.ru - да, это я...

MoKa
На счёт перемещения окна гляну, хотя для моих целей перемещать окна вообще не нужно, это я уж так, в порыве знакомства с Максом... (:
Собственно поэтому гуи не динамический, для казуалок обычно это просто не нужно. Каждый элемент должен быть неповторим и исключителен. Так что все бэки для окон и кнопочек будут рисоваться целиком. Хотя возможно будет контрол кнопки из 3 частей (лево, тянущаяся серёдка и право)...
debuglog я использую, где нужно. И уже прикрутил лог в файл, так что всё нормально. (:

На счёт вылетов, надо бы трай-кетч использовать, но мне лень, всё-таки это бейсик, а не С++. ^_^

dimanche13 27.08.2007 18:08

Re: elmax - набросок фреймворка
 
Try & Catch тоже есть в BlitzMax. Assert -есть. Вылеты - это самый страшный из грехов. А неожиданные вылеты в самый интересный момент, вообще приводят к раннему выпаданию волос игроков)))

moka 27.08.2007 18:17

Re: elmax - набросок фреймворка
 
elmortem, насчёт кнопочки лучше не растягивающуюся а зацикленную и последняя отсечённая.

elmortem 27.08.2007 18:25

Re: elmax - набросок фреймворка
 
dimanche13
Знаю, что есть, но мой мозг ещё не свыкся с мыслью, что это "не просто бейсик"... (:
В оригинале вылетов быть не должно. А пока сделаем вид, что это триальным период. ^______^

elmortem 28.08.2007 13:45

Re: elmax - набросок фреймворка
 
MoKa
Что-то я не нашёл функции, возволяющей менять uv-координаты текстуры, чтобы сделать отсечение. ):
Так что контрол Скролла пока сделан через DrawImageRect, который растягивает серёдку... В принципе при правильно рисовании серединной части тянуться будет нормально...
Но если подскажешь способ рисования с отсечением - будет круто. (:

Разобрался с перемещением окна, теперь нельзя случайно зацепить несколько штук - только одно, которое начал перемещать изначально.

Для текста пока сделал форматирование по горизонтали и вертикали с учётом переноса строк. Думаю над тем, нужно ли делать раскраску отдельных слов (как в Quake III)...

dimanche13 28.08.2007 14:19

Re: elmax - набросок фреймворка
 
Вообще-то в любом TImage есть поле Pixmap. Это прямой доступ к байтам картинки и делай с ней что хочешь.

elmortem 28.08.2007 14:22

Re: elmax - набросок фреймворка
 
dimanche13
В реалтайме ковыряться с байтами нецелесообразно - скорость не та. Или там какие-то другие байты?

moka 28.08.2007 14:25

Re: elmax - набросок фреймворка
 
Глянь функцию: SetViewport

dimanche13 28.08.2007 14:34

Re: elmax - набросок фреймворка
 
ах, да, есть еще setscale(xscale,yscale) может это подойдет для изменения контрола скрола. Просто менять yscale для вертикального и xscale для горизонтального...

elmortem 28.08.2007 14:44

Re: elmax - набросок фреймворка
 
MoKa
Думал об этом, но пока отказался. Постоянное переключение вьюпорта мне почему-то не нравится...

dimanche13
Scale очень неточная вещь, к тому же тех же результатов, но более точных я добился используя ImageDrawRect. Так что пока всё будет как есть - серединка будет тянуться. Смотрится нормально, как только доделаю контрол списка - выложу.

moka 28.08.2007 14:51

Re: elmax - набросок фреймворка
 
Цитата:

Так что пока всё будет как есть - серединка будет тянуться.
С учётом что сама кнопочка, не будет состоять из текстуры, а только из горизонтально одинаковой картинки. При этом казуальные игры более потребны к хорошему оформлению, а кнопочки с текстурой - это хорошо. :) Впрочем твой выбор.

elmortem 28.08.2007 18:18

Re: elmax - набросок фреймворка
 
MoKa
Не, ты всё перепутал. (:
Та кнопочка, которая уже готова тянуться не будет. Она будет из одной текстуры без всяких модификаций с растягиванием.
Тянться будет серёдка в другой кнопочке. А так же уже тянется серёдка у скролла.
Обновление выложу вечером...

moka 28.08.2007 18:22

Re: elmax - набросок фреймворка
 
elmortem, я то понял всё, просто сделать более корректно предложил, чтож ждём обновления :)

elmortem 28.08.2007 19:39

Версия 0.0.2
 
Одновил инфу и архив в первом посте.
Вот список изменений:

Version 0.0.2 (28.08.2007)
+ Менеджер ресурсов умеет загружать строки в виде TList. Нужны для вывода форматированного текста.
+ Форматирование текста по вертикали и горизонтали.
* Слегка подправлена структура GUI, исправлены косяки с перемещением окна.
+ Добавлены новые GUI-контролы (скролл, лист, лист->лэйбл).
+ Спрайту добавлен метод рендера отдельного фрейма.

dimanche13 28.08.2007 21:03

Re: elmax - набросок фреймворка
 
Посмотрел на твой код и понял, что я недооценивал XML. Очень удобная, простая и надежная штука. Единственное что не понравилось, это то ,что нельзя выйти, щелкнув по крестику окна.
If KeyDown(KEY_ESCAPE) or AppTerminate() then IsQuit = True

elmortem 28.08.2007 21:18

Re: elmax - набросок фреймворка
 
dimanche13
А я-то всё думал, почему у меня по крестику прога не закрывается... ^__^
Спасибо, поправлю сие недоразумение.

elmortem 29.08.2007 02:31

Re: elmax - набросок фреймворка
 
Посмотрел имеющиеся Системы Частиц. Даже платные, имеющие редакторы, достаточно убоги и не сравняться даже с простейшей системой частиц движка HGE, бесплатные поделки-недоделки вообще не впечатлили.

Подумал над тем, чем должна обладать нормальная система частиц, вот что надумал:
Как таковой системы частиц нет. Есть тип самих частичек, определяющий все доступные для визуализации и расчётов параметры. И есть набор эмиттеров (систем с разной физикой), определяющих поведение и вид частиц.
Основная идея в том, что у основного (родителя, основы) типа эмиттера (от которого наследуются остальные) есть метод обработки частиц на основе стандартных параметров: движение, вращение вокруг своей оси, вращение вокруг оси эмиттера, изменение цвета по массиву цветов, изменение размеров, жизнь частицы. Этот метод принимает информаию о том, какие именно данные обрабатывать, а какие не трогать.
Нечто вроде: Super._Update(POSITION Or COLOR Or LIFE) ' Обработать линейное движение, изменение цвета и жизнь частицы.
Остальные вычисления будет делать сам эмиттер.
Это позволит использовать отнаследованные от основной частицы типы частиц, с расширенными параметрами, а так же создавать сколь угодно сложные эмиттеры, не трогая основных возможностей Системы Частиц.
По дефолту будет сделано около 5'и стандартных эмиттеров, и парочка сложных (например появление частиц по битовой маске, загрженной из графического файла с сохраненим цвета частиц для каждого пикселя)...
Остальные эмиттеры пусть пишет кто хочет. (:

Есть какие-то мысли или пожелания по структуре Системы Частиц или дефолтным эмиттерам? Очень интересно было бы послушать.

moka 29.08.2007 13:05

Re: elmax - набросок фреймворка
 
elmortem, ты её забыл про размер, прозрачность и бленды. ;)
Идея есть такая: Есть класс эмитеров, у каждого эмитера есть свой список, где будут его детишки, это даст больше производительности т.к. перебираться будет не весь список всех партиклов а только тех, которые пренадлежат эмитеру. Я помню делал такие, где у меня перемещение их производилось Только коммандами AddForce, получалось что я воздействовал на все партиклы в близком месте, но это для взрывов. Так же нужно учитывать какой у тебя будет вид, side или top. Ещё параметр гравитации для эмитеров думаю не помешает. :)
Насчёт имеющихся систем частиц, я их так мало видел на бм, т.к. наверное они на столь убоги что их и не рекламируют хорошо. Лазал по визуальному редактору систем частиц в HGE, да там очень хороший редактор. Хм, но помойму не универсальный. :)

elmortem 29.08.2007 15:11

Re: elmax - набросок фреймворка
 
MoKa
Не, не забыл, просто не стал перечислять, долго это. Я ж про основную идею интересовался.
На счёт отдельных листов - да, так и предполагается. Список частиц будет не глобальным, а принадлежащим конкретному эмиттеру.
А так будет и гравитация и блендинг и всё остальное. А что не будет в дефолтовых классах - можно будет дописывать "под себя". (:

Частицы в HGE мне не нравятся из-за их нерасширябельности (если только основной код править, что и приходилось), а в целом сделано достойно. Но для шароварок, ИМХО, уже не достаточно.

К вечеру допишу базовые классы, посмотрим, что получится. Скриншот выложу.

elmortem 29.08.2007 21:08

Re: elmax - набросок фреймворка
 
Вложений: 2
Сейчас стандартный эмиттер имеет 38 параметров, а стандартная частица 13 параметров.
Всё работает, вполне неплохо, но не хватает заточенных под разные нужны эмиттеров, чем я и займусь в ближайшее время. А пока вот скрин.

elmortem 30.08.2007 04:07

Re: elmax - набросок фреймворка
 
Первый пост обновлён.

Last Version 0.0.3 (30.08.2007)
+ Класс цвета с возможностью конвертаии из Byte в Float и фнкция извлеченя ветовых составляющих из Int.
+ Система частиц с 3 эмиттерами (стандартный, по чёрно-белой маске и дрожищий) и загрзкой из xml.

dimanche13 30.08.2007 12:05

Re: elmax - набросок фреймворка
 
раздражает вечный эмитер на курсоре. и еще, скролбар иногда становится красным. это баг?

elmortem 30.08.2007 12:22

Re: elmax - набросок фреймворка
 
dimanche13
Ну, это ж демонстративная прога, её цель не успокаивать, а демонстрировать. Причём всё и сразу. (: Потому вполне нормально, если некоторые элементы будут разражать. (:
А красный скроллбар - это скорее всего баг, но повторить его у меня не полчилось. Можешь заскриншотить его и описать, как оно у тебя так вышло?

dimanche13 30.08.2007 13:02

Re: elmax - набросок фреймворка
 
я заскриншотил, да не знаю как на форуме прицепить картинку...

johnk 30.08.2007 13:07

Re: elmax - набросок фреймворка
 
Засовывай на http://imageshack.us/

dimanche13 30.08.2007 13:13

Re: elmax - набросок фреймворка
 
так чтоли...

elmortem 30.08.2007 13:56

Re: elmax - набросок фреймворка
 
Да, это баг. Возникает при выделении последнего пункта в списке. Пофиксил.

dimanche13 30.08.2007 14:17

Re: elmax - набросок фреймворка
 
не обязательно последнего. Всх пунктов, которые гносят имя Second List Item.

elmortem 31.08.2007 03:24

Re: elmax - набросок фреймворка
 
dimanche13
Пофиг, всё равно пофиксил. (&

Есть у кого-нибудь пожелания по частицам? Код вообще кто-нибудь ковырял? Структура в целом как? Хочет по коду отзыв услышать...

dimanche13 31.08.2007 13:09

Re: elmax - набросок фреймворка
 
Код:

Const PS_LIFE:Int = 2,
PS_POSITION:Int = 4,
PS_GRAVITY:Int = 8,
PS_ANGLE:Int = 16,
PS_SCALE:Int = 32,
PS_COLOR:Int = 64,
PS_EMMLIFE:Int = 126,
PS_ADDPAR:Int = 256

я так понял что ты используешь их как флаги, ну 1 и 0. тогда это должны быть степени двойки = 128. Бегло смотрел, так что могу ошибаться.
и еще
Код:

                Local children:TList = New TList
                children = node.getChildren()
                Local j:TxmlNode = Null
                For j = EachIn children

по-моему можно проще:
Код:

                children:Tlist = new( node.getChildren()
                For local j:TxmlNode  = EachIn children

ну или типа такого...

elmortem 31.08.2007 13:37

Re: elmax - набросок фреймворка
 
Действительно, должно быть 128, это я ошибся. Остальной код тож попробую...

dimanche13 31.08.2007 13:46

Re: elmax - набросок фреймворка
 
Вот поэтому я делал так enum (для С правда) от 1 до конечного, ну чтобы было типа:
Код:

Const PS_LIFE:Int = 1,
PS_POSITION:Int = 2,
PS_GRAVITY:Int = 3,
PS_ANGLE:Int = 4,
PS_SCALE:Int = 5,
PS_COLOR:Int = 6,
PS_EMMLIFE:Int = 7,
PS_ADDPAR:Int = 8

а потом:
Код:

if temp & (1 << PS_LIFE) then ...

moka 31.08.2007 13:55

Re: elmax - набросок фреймворка
 
dimanche13, а как реализуешь систему смешивания флагов? Смотри в стандартных флагах б3д, там удобно что можно смешать и те и те флаги, а у тебя как тогда?

dimanche13 31.08.2007 14:58

Re: elmax - набросок фреймворка
 
Код:


PS_LIFE:Int = 0
PS_POSITION:Int = 1
PS_GRAVITY:Int = 2
PS_ANGLE:Int = 3
PS_SCALE:Int = 4
PS_COLOR:Int = 5
PS_EMMLIFE:Int = 6
PS_ADDPAR:Int = 7

temp:Int = 0
temp = (1 Shl PS_LIFE) | (1 Shl PS_GRAVITY) ' установить 2 флага

Print "temp: " + temp

If( temp & (1 Shl PS_LIFE) )
        Print " PS_LIFE - yes!"
Else
        Print " PS_LIFE - no!"
End If
       
If (temp & (1 Shl PS_GRAVITY) )
        Print " PS_GRAVITY - yes!"
Else
        Print " PS_GRAVITY - no!"
End If

If (temp & (1 Shl PS_COLOR) )
        Print " PS_COLOR - yes!"
Else
        Print " PS_COLOR - no!"
End If

End

Moka примерно так ;)

jimon 31.08.2007 15:04

Re: elmax - набросок фреймворка
 
dimanche13
бррр
в блице флаг указыватся вот так 2 + 8 + 512 и все нормально
слишком много кода писать в твоем способе надо

dimanche13 31.08.2007 15:49

Re: elmax - набросок фреймворка
 
Цитата:

Сообщение от jimon
бррр
в блице флаг указыватся вот так 2 + 8 + 512 и все нормально
слишком много кода писать в твоем способе надо

Jimon, ну это не мой способ))) этот способ применяется в програминге микроконтроллеров, для битовых операций над специальными регистрами. На Блитце он выглядит, конечно трудновато. Но все приемущества этого способа можно увидеть лишь на С.
Код:

enum { PS_LIFE = 0, PS_POSITION, PS_GRAVITY, ... }
ну а дальше как я уже говорил
if(reg & (1 << PS_LIFE) | (1 << PS_POSITION) )

Как можно видеть надо тока добавлять новые флаги в енумс и все. не заботиться ни о каких цифрах.

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

elmortem 31.08.2007 18:09

Re: elmax - набросок фреймворка
 
Ну, я ж не на Си сейчас прогаю.
Работает - значит всё гут. Скоро выложу апдейт с русским вводом. (:

elmortem 31.08.2007 18:52

Re: elmax - набросок фреймворка
 
Первая страница обновлена.

Last Version 0.0.4 (31.08.2007)
+ Добавлены новые GUI контролы (текстовая кнопка, строка ввода)
* Исправлены ошибки в системе частиц
* Добавлены параметры дистанции для эмиттеров

jimon 31.08.2007 22:26

Re: elmax - набросок фреймворка
 
elmortem
там русский работает ? а unicode вообще ?

elmortem 31.08.2007 22:45

Re: elmax - набросок фреймворка
 
jimon
Русский работает, юникод при вводе я на языках, отличных от русского затестить не могу, у меня нет диска с виндой, а ввод настроен только для русского и английского.
Поидее там надо utf8.bin менять символами, которые хочешь использовать при вводе...
Причём только с 128 до 255 с учётом той локали, в которой бкдет осуществляться ввод.
Т.е. я подозреваю, что сейчас будет работать только русский...
Если у кого есть возможность затестить на других локалях - было бы хорошё...

elmortem 03.09.2007 00:18

Re: elmax - набросок фреймворка
 
Заборол LUA-скриптинг. На днях выложу обновление.

Jet 03.09.2007 17:37

Re: elmax - набросок фреймворка
 
Цитата:

Сообщение от elmortem
Заборол LUA-скриптинг. На дня выложу обновление.

с интересом ждемс! :super:

elmortem 04.09.2007 02:55

Re: elmax - набросок фреймворка
 
Первая страница обновлена.

Version 0.0.5 (04.09.2007)
+ Добавлены скрипты
* Структура движка адаптирована под скрипты.
+ Класс виджета, для создания отдельных элементов программы (управление через скрипты).
* Лог выводит всю информацию только в DEBUG-режиме, иначе только пустые строки, SYS и ERR.
* GUI контролы-кнопки (CGuiButton и CGuiTextButton) поддерживают указание скрипта на исполнение при нажатии.

dimanche13 04.09.2007 13:02

Re: elmax - набросок фреймворка
 
Молоток! Разработка продвигается семимильными шагами. Честно, говоря в ЛУА я не рублю совсем. Если будет время напиши статейку, как прикрутить ЛУА к БМАХу и как использовать эти скрипты. Думаю это многим пригодится.

elmortem 04.09.2007 13:17

Re: elmax - набросок фреймворка
 
Ну, как его использовать статья есть тут: http://blitzetc.boolean.name/articles/lua.htm, но там какая-то непонятная версия используется. У меня в ридми написано, где взять и как инсталить нормальный Lua для BM. Но мне не хотелось ковыряться с командами LuaAPI, поэтому я с оффициального сайта стянул OO Interface, слегка подточил его напильником и получился файлик lua.noel.bmx у меня в проекте. Если нужна статья, как использовать именно его - могу написать как-нибудь...

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

dimanche13 04.09.2007 13:38

Re: elmax - набросок фреймворка
 
Блин, и правда, в ридми написано как его установить. Буду пробовать. Жду следующего апдейта. Бегло поглядев код, остались какие-то смутные ощущения... что где-то что-то не так... но что? пока не пойму - не скажу...

elmortem 04.09.2007 16:09

Re: elmax - набросок фреймворка
 
Я вот думаю написать отдельные методы для ввода и несколько переделать структуру GUI. Точнее не самого GUI, а его взаимодействия с остальными классами...
Так что буду раз любым замечаниям.

elmortem 06.09.2007 23:00

Re: elmax - набросок фреймворка
 
Ох как я сейчас всё к чертям поломаю в движке. Всё станет проще и больше скрыто от юзера. (:
Элементы гуи будут доступны из lua-скриптов.
На днях выложу альфа-версию движка.

dimanche13 06.09.2007 23:07

Re: elmax - набросок фреймворка
 
Давай-давай ))) ты бы нарисовал дерево классов, а то я начал было разбираться... да что-то голова закружилась ^___^ ниасилил

jimon 06.09.2007 23:34

Re: elmax - набросок фреймворка
 
elmortem
кста давно хотел сказать :) да все забываю
не стоит особо извращатся с архитектурой и фреймворками
на системах уровня BlitzMax ...
я конечно понимаю что круто построить мега архитектуру
и быть в конечном итоге ею довольным ... (сам такое ощущаю)

но в BlitzMax в некотором смысле по другому все делается
тут практически все готово чтобы сесть и начать писать игру

мне из таких низкоуровневых модулей понадобился только таймер
все остальное - ресурс манагер, фпс щетчик и тд тесно сплетены с игрой
и врядли где нибудь их можно просто так использовать :)

я не говорю ничего конкретного по твоему фреймворку
просто говорю что если захочется делать кучу типов - то не стоит

elmortem 07.09.2007 01:01

Re: elmax - набросок фреймворка
 
Добавил контрол Чек-бокс. Структуру переделал, билд движка собрал. Как только соберу вменяемый сэмпл, показывающий все возможности фреймворка - выложу.

jimon
Ну, во первых, как ты и сказал, я получаю от этого ни с чем не сравнимое удовольствие. (:
Во вторых, я не вижу в голом Максе того, с помощью чего мне было бы удобно делать игру. Собственно я ни делаю ничего, что нельзя ре-использовать в нескольких проектах.
Например GUI нужен везде. И менеджер ресурсов. И сейт-система, которую заменил на систему конвеер виджетов. А уж вывод текста в Максе просто никакой. ):
Далее, вот конкретно Макс не такая уж слабая штука, чтобы с ней не поизвращаться, наворачивая. Всё же трансляция из бейсика в С++ с последующей компиляцией - не какая-нибдь там интерпретация. Скорость очень приемлемая, даже с таким обилием типов, что у меня получается. Собственно это и есть упрощённый С++ с синтаксисом Бэйсика. Так что не вижу смысла парится на счёт количество типов и глубины наследования. (:

В общем с какой стороны не взгляни - ситуация меня устраивает. ^_^
У меня нет цели делать универсальный движёк. Но упростить себе разработку шароварок я смогу. Ну а паралельно может ещё кому пригодится. А нет - так я не обижусь. ^_^

dimanche13
Дерево классов и документацию надеюсь выложить вместе с альфой. Просто до этого общая структура не была ещё устоявшейся. Надеюсь теперь всё. (:

moka 07.09.2007 11:39

Re: elmax - набросок фреймворка
 
elmortem, хм а как у тебя дела с отчиской? Утечек нету? Точно Проверял?

johnk 07.09.2007 11:55

Re: elmax - набросок фреймворка
 
Цитата:

Собственно это и есть упрощённый С++ с синтаксисом Бэйсика.
Ничего себе абстракции :)

elmortem, а у тебя подобных поделок для 3д не было?

elmortem 07.09.2007 15:16

Re: elmax - набросок фреймворка
 
MoKa
Память "специально" не выделяется. А если средствами Макса выделять память под объекты типов, то как может утечка появится?
Вообще, ни у нигде нет статейки на тему правильной работы с памятью в Максе?

JohnK
3Д не люблю, я казуален до мозга костей. (:
Есть 2Д надстройки над OpenGL для Delphi и C++ (разные). Есть надстройка над HGE для С++, тоже 2Д.
3Д нафиг, у него нет будущего. Это переходное звено между 2Д и Виртуальной Реальностью. (:

На счёт абстракций - так фигли такого-то? Нормальная обстрация, вполне удобоваримая. (:

johnk 07.09.2007 15:19

Re: elmax - набросок фреймворка
 
Вот:
http://johnk.3dn.ru/publ/1-1-0-3
Правда для версии 1.14. :)

dimanche13 07.09.2007 15:53

Re: elmax - набросок фреймворка
 
elmortem 3Д не люблю. Тоже думаю что 2Д себя не исчерпало.
Я вот тута задумал сделать игрушку. Платформер, аля Марио, но с головоломками и квестовыми лементами на Максе. Если есть желание присоединяйся. А если честно,то одному просто в падлу)))

Про память могу сказать одно. Она очищается и выделяется на лету, так сказано на оффсайте. Правда, говорят в pngloader есть протечка. Если любишь в памяти копаться, то для этого есть memmove, memcopy, GCSuspend и все в этом роде.

jimon 07.09.2007 16:34

Re: elmax - набросок фреймворка
 
манагер памяти в BMaxе довольно забавный :)
в общем в любом случае обьекты там надо удалять принудительно
разве что локальные ссылки чистятся хорошо сами
остальному я не доверяю :)


Часовой пояс GMT +4, время: 22:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot