forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   framework ? (http://forum.boolean.name/showthread.php?t=6710)

dimanche13 06.10.2008 16:11

framework ?
 
мужики, а может замутим свой "булочный" framework? кто поможет? принимаются предложения и пожелания, в общем любая помощь принимается. :) А еще лучше скажите, что там должно содержаться по вашему и в каком виде. Не стесняемся, делимся идеями и кодом.

SBJoker 06.10.2008 16:18

Ответ: framework ?
 
гуи нужен (невиндовый)

dimanche13 06.10.2008 16:53

Ответ: framework ?
 
поподробнее, как ты это видишь и представляешь? просто скин- не виндовый или может принцип другой?

SBJoker 06.10.2008 17:54

Ответ: framework ?
 
Я имею ввиду то что мы восновном делаем игры, и нажна система ГУИ для игры, ну там главное меню, настроки и т.д. это имаджами линейно кодить очень стрёмно.

ABTOMAT 06.10.2008 18:02

Ответ: framework ?
 
Просветите что такое framework вообще? Набор готовых команд и функций?
Я только понял что его нада ставить чтобы проги некоторые работали.

H@NON 06.10.2008 18:14

Ответ: framework ?
 
из моего понятия о фреймворке это надстройка над движком, для быстрой разработки приложений( от сюда в нем ГУИ и прочее)... хотя хз, пусть объяснит кто-нить более просвещенный в этом плане человек :)

SBJoker 06.10.2008 18:26

Ответ: framework ?
 
Чего непонятного? Framework - досл. "Рабочая рамка" для движка. Это Новый уровень абстракции. Где могут быть функции типа engine.GetFps(), engine.LoadMap() и тому подобное. Потому игровые фреймворки обычно имеют узкую ориентацию на один-два жанра игр.

Непутаем с MS Framework .NET ето насамом деле Runtime для .NET языков. Т.е. набор библиотек. Хотя уровень их абстракции существенно выше чем обычных привычных всем dll.

dimanche13 06.10.2008 18:57

Ответ: framework ?
 
Ну да, не путайте с M$ Framework .NET, здесь смысл несколько другой. SBJoker все объяснил.
И мне как-раз-таки хотелось бы сделать, нечто не узко-специализированное, а наоборот: развернутое, то есть чтоб "рабочая рамка", выражаясь на языке SBJoker-а, была резиновой. Несколько жанров чтоб потянула, на своем уровне абстракции естественно :)
Кстати недостатка в количестве ГУЕв для БМак са не вижу. Просто надо подработать напильником уже существующие. Несколько упростить в сложых местах и усложнить в простых, поправить копирайты и в путь)))) шучу-шучу. ГУИ- первое предложение. Дальше...

SBJoker 06.10.2008 19:13

Ответ: framework ?
 
Хех раз такая пьянка: 3д модуль дх9, видео-либа, звуковой движок, сетевой движок.

Черный крыс 06.10.2008 19:17

Ответ: framework ?
 
партиклы

dimanche13 06.10.2008 19:39

Ответ: framework ?
 
Цитата:

Сообщение от SBJoker (Сообщение 87947)
Хех раз такая пьянка: 3д модуль дх9, видео-либа, звуковой движок, сетевой движок.

:-D :-D :-D
нееее, 3Д не берусь делать (сморю с надеждой на Хорс), будет принципиально 2Д. Надо было сразу, конечно, сказать :crazy: .
А вот насчет сетевого движка как раз сейчас думаю, погружаясь в отражение и метаданные. Насчет партиклов тоже идея хорошая. А то ни одного доведенного до ума - нет. Звуковой движок, ммм видел несколько кстати, для БМ, попробую их и скажу, что к чему. Кстати неужели вы думаете , что я один это всё осилю :4to: надеюсь и на вашу помощь, а то вообще браться не стоит.
Вообще давайте посчитаемся, сколько нас здесь БМаксовцев?

SBJoker 06.10.2008 23:54

Ответ: framework ?
 
Да самое главное, желательно всё стронее или опенсорц или бесплатное. И чтоб форматы файлов юзало нетребующие отчислений за лицензию..

Черный крыс 07.10.2008 00:07

Ответ: framework ?
 
Партиклы - это давняя проблемма БМаксеров....
Я БМаксер. Если буш делать партиклы - готов помочь.
Есть хороший сорсик партиклов, но его надо доработать. Или можно написать с нуля....
С меня редактор. =)

HolyDel 07.10.2008 10:20

Ответ: framework ?
 
SBJoker, ку!

в бмаксе есть препроцессор? я у ся сделал удобно - можно переопределять некие дефайны и они определят используемую библиотеку. Хочеш юзать басс и платить -включи басс, хочуеш шквал, но бесплатно (но и возможностей поменьше) - включай шквал.
А интерфейс остается одинаковым в любом случае ))

SBJoker 07.10.2008 10:32

Ответ: framework ?
 
Препроцессор есть, но стандартный знает только пару предопределённых дефайнов:
?MacOS ?Win32 ?Debug, и ещё помелочи... мой препроцессор, позволяет юзать свои дефайны, мелкие макросы, условия с дефайнами, и несколько предопределных дефайнов __LINE__ __FILE__ __DATETIME__.

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

dimanche13 07.10.2008 12:31

Ответ: framework ?
 
так чтоже ты молчишь? выкладывай препроцессор с примерами юзанья ))) Насчет партикл-движков, нашел только два(!) один платный 25 вечно(?)зеленых и один немецкий какой-то недоделанный. Еще есть вроде HGE-шный формат читающий. Какие у вас сведенья?

jimon 07.10.2008 12:38

Ответ: framework ?
 
dimanche13
http://forum.boolean.name/showthread.php?t=4843

dimanche13 07.10.2008 12:47

Ответ: framework ?
 
Спасибо, jimon, проглюкал я :)
вот нашел еще партикл-движок http://www.scottshaver2000.com/forum...2154a4 3e9db0 искать их долго, кидайте сюда ссылки на партикл-движки для БМ, можно и свои выкладывать ;)

ICoder 07.10.2008 19:19

Ответ: framework ?
 
Я Вас, "народ", не понял... :mda: Что за Framework, что он делает то??? :wallbash: Как я знаю :crazy: , Фреймворк выполняет определенные(конкретные :drag: ) цели. А в вашем случае??? :SOS:

Черный крыс 08.10.2008 07:55

Ответ: framework ?
 
Так как насчет партиклов?
Зато у нашего сообщества будет хорошая тузла...

Наработки в этом направлении уже есть (причем очень хорошие) - спасибо oxid' у ! + Я сейчас подгоняю эти наработки под свой проект. - поэтому тама я делаю ставку на специфику своего проекта. А занятся полноценным парт-движком нет времени...но если кто захочет за это взятся то я найду время и напишу хороший редактор.

Что уже есть :
- загрузка эффектов из скриптов
- уровни: эмиттер, группа, частица (т.е. для каждого из этих элементов можно задавать различные свойства)
- свойства и анимация: вращение, движение с ускорением и без, размеры, анимация цвета и спрайта и прочее само-собой разумеющееся типа жизнь, период анимации, наложение (альфа или световое) и др.
- область эмиттера (появления новых частиц): прямоугольник, точка, окружность.
- эффект следа (group_trace)
- etc

Что необходимо сделать :
- относительное вращение (относительно центра эмиттера).
- компиляция в байткод для более быстрой загрузки, а не парсинга строк.
- транслятор из скрипта в код ВМах-а для вообще нативной и более гибкой работы с эммитерами частиц.
- визуальный редактор.

на данный момент работаю над 1-ым пунктом. 4-й пункт как я сказал - беру на себя.
Если это все сделать то будет очень клевая тузла партиклов.

Также есть мысль внедрить в партиклы - траектории движения. Можно будет двигать емиттер\группу\партикл и задавать им индивидуальные траектории. Естественно с возможностью эти траектории интерполировать\менять\удлиннять\укорачивать\двига ть отдельные точки\двигать всю траекторию в режиме реального времени.

ЗЫ Тот что за 25 баксоф толкают, - я его и за 3 рубля не куплю. Тама ничего нету. Насчет немецкой разработки - эти партиклы довольно неплохие, но опять таки - они не юзабельнеые. Все остальные же партиклы под БМакс - очень скромные по своим возможностям (даже групп и эмиттеров нету).

dimanche13 08.10.2008 10:10

Ответ: framework ?
 
Отлично, что уже есть наработки. Я знаю, что oxid ответственно подходит к любой задаче. Показывай что у вас получилось, ща в аську постучусь.

dimanche13 08.10.2008 20:37

Ответ: framework ?
 
Хмм, пока изучал код партикл-движка oxid-а появилась мысль создать нечто такое же. Суть такая, что есть некая система модификаторов, которые воздействуют на частицы, можно применять сразу несколько, а можно ни одного не применять. Покажу в коде:
Код:

for local modificator:TModificator = eachin my_modificatorsList
  for local particle:TPartcle = eachin my_particlesList
        modificator.apply( particle )
  next
next

сам же TModificator абстрактен и от него наследуются все модификаторы с методом apply(part:TParticle) , которые воздействуют на частицу в зависимости от необходимого эффекта, например чтоб действовал ветер пишем
Код:

type TWind extends TModificator
  field force:float
  field direction:int

 method apply( particle:TParticle )
  particle.x :+ (force * direction)
 end method

end type

типа такого, вот думаю будет ли тормозить....

Черный крыс 09.10.2008 17:10

Ответ: framework ?
 
оставить 3 основных класса - эмитер\партикл\групп со своими полями.
И просто тупо пробегаться и обновлять эти поля.

скажем так
Обновление Эмиттера
\\Обновление позиции\ратации и.т.д....
Эмиттер имеет поле указывыающее на группу.
--> подуровень группа
\\Обновление позиции\ротации группы и т.д....
Группа имеет поле указывающее на партикл.
\\Обновление партикла - обновление трансформации партикла + транформация группы + трансформация Эмиттера. = финальная трансформация партикла.
\\Другие обновления партикла (альфа,след,жизнь и т.д....)

Эмиттер может содержать любое кол-во групп, так же как и группа может содержать любое кол-во партиклов.

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

dimanche13 09.10.2008 19:16

Ответ: framework ?
 
Да, спроси у Тормоза, пусть сюда отпишется. А еще лучше выложет ехе-шник, просто я не видел его партиклов.

Taugeshtu 10.10.2008 00:27

Ответ: framework ?
 
Пожелание от меня (думаю, есть люди, которые с ним согласятся):
Чтобы во фреймворк "вставлялся" модуль xord3d, желательно - "легко и безболезненно"...
Ну и в общих чертах:
-Партиклы
-GUI - желательно чтобы с набором стандартных менюшек типа "игра/сетевая/настройки/авторы/выйти", а еще лучше с визуальным редактором
-звуковой движок
-сеть
-input (если можно, выкинуть в отдельный поток, чтобы не "пропадали" нажатия клавы и движения мышки)
-менеджер ресурсов(+объектов игрового мира? они вроде в любой игре есть...)

О, точно... Не знаю, как назвать... Опишу... Очень хотелось бы видеть команды, позволяющие выполнить скажем одну функцию в одном потоке, а вторую - в другом (согласен на "виртуальные" потоки, распределяемые ОС. Ногами за ламерство не бить)... Или же тогда класс потоков, чтобы можно было создать поток, а затем получить что-нибудь вроде:
stream_1.Start
...
stream_1.End
(т.е. что-то вроде For Local c=1 to 1 ... Next)
Извините за излишне абстрактное выражение мыслей...

SBJoker 10.10.2008 08:26

Ответ: framework ?
 
Мультипоточность уже есть в последней версии БМакса.

jimon 10.10.2008 10:35

Ответ: framework ?
 
С input'ом в другом потоке есть особеность, прийдется не использовать keyhit\mousehit, а использовать callback функцию которая вызывается когда что-то нажали или передвинули, сходу понять как организовать её взаимодействие с игрой иногда достаточно трудно и прийдется еще хорошо думать о блокировках в некоторых местах игрового двига. Конечно если построить внутрений двиг игры на пуле евентов то ничего кроме етого пула блокировать не надо будет, но пул евентов для игрового двига не все делают

dimanche13 10.10.2008 11:16

Ответ: framework ?
 
-Партиклы
сейчас вроде над ним и трудиться начинаю
-звуковой движок
-сеть
это же есть, и в нескольких вариантах кстати, насчет мультипоточности слышал есть, да попробовать не могу, у кого-нить есть ? Там по-мойму через свн надо обновляться и перекомпиливать с ключом -h все модули.
-input (если можно, выкинуть в отдельный поток, чтобы не "пропадали" нажатия клавы и движения мышки) а куда они пропадают??? у меня вроде не пропадает.
-менеджер ресурсов(+объектов игрового мира? они вроде в любой игре есть...) это будет, но в меру моих представлений об его абстрактности

"Конечно если построить внутрений двиг игры на пуле евентов то ничего кроме етого пула блокировать не надо будет, но пул евентов для игрового двига не все делают" то есть событийноуправляемый движок? нет пожалуй на это я замахиваться не буду, по крайней мере пока.

oxid 10.10.2008 16:24

Re: framework ?
 
Насчет пула - ничего сложного там нет, просто правильно организовать архитектуру.
В БМ и так уже есть пул для событий ввода - я столкнулся наоборот с необходимостью его отключать и просто обрабатывать клавиатуру в цикле, считавая текущие коды клавиш.

dimanche13 12.10.2008 15:12

Ответ: framework ?
 
хорошая новость для тех, кто жаждал GUI, помимо тех, что уже есть(откровенно сыроватых) wolfhound512 с blitz.pp обещал к следуещей версии GUIw512 сделать поддержку БМакса.
Так теперь об участниках... эээ я так понял никто участвовать не намерен?

SBJoker 12.10.2008 15:23

Ответ: framework ?
 
Ну я чем смогу помогу... однако полностью заниматься этим не могу, мне проект выпускать надо.

dimanche13 15.10.2008 13:07

Ответ: framework ?
 
Спасибо SBJoker за поддержку.
Так, вышел модуль для БитмапШрифтов от создателей блайд. http://www.blide.org/index.php?section=fontmachine можно будет заюзать

Черный крыс 15.10.2008 17:33

Ответ: framework ?
 
+1
я тож помогу. =) чем смогу канеш...=)

dimanche13 16.10.2008 21:06

Ответ: framework ?
 
Я вот подумал начало проги должно быть простым, немного абстрактным, но в то же время интуитивно понятым. Думаю все будет примерно так:

Код:

SuperStrict

Include "_EngineXXX.bmx"

_Engine.Init("settings.ini")

_Engine.add_state( New _GameRoutineState.Create("game_routine") )
_Engine.add_state( New _OptionsState.Create("options") )

_Engine.change_state("game_routine")

        _Engine.Run()

_Engine.DeInit()

End

Чтоб выйти на некий уровень абстрактности, и попытаться объять необъятное, надо постараться сделать как можно более простые и доступные для понимания типы, которые будут юзаться как привычные Бмаксовские. Так например чтоб не держать компоненты цветов по отдельности можно их объединить в тип _Color. И тому подобные упрощения могут привести, как к простоте программирования, так и читабельности кода. Но естественно надо избежать четкой привязки к какой-то одной идее или методу программирования. Если есть варианты или у вас есть уже какие-нибудь полезные наработки таких типов, пишите...

dimanche13 03.11.2008 17:41

Ответ: framework ?
 
Что же, на данный момент сделано: основа от которой можно плясать это тип _Engine(смотри предыдущий пост), стэт-менеджер _GameStateManger, парсер *.ini файлов _IniParser, модуль для подсчета фпс _FPS, модуль обработки для мышки _Mouse, тип для объекта _GameObject - от него надо будет наследовать все объекты в игре, а также консоль _Console с возможностью добавления команд и неплохой расширяемостью.

dimanche13 24.11.2008 23:34

Ответ: framework ?
 
Вложений: 1
ну как и обещал выкладываю консольку и дебаг-контейнер для движка. Идеи конечно не новы, но архи-полезны. На время забиваю на проэкт, ухожу грызть гранит науки (курсовой, гос.экз и диплом) заниматься програмирование будет некогда.
Сейчас попотел и выдал нагора аж четыре экзампла (example_00x) , расписал всё как мог (комментов даже больше чем кода :p ) но если есть вопросы спрашивайте...

Abiron 19.06.2009 22:57

Ответ: framework ?
 
Жаль, проект загнулся. Такое подспорье новичкам.


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

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