Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Переводы уроков про PushButton Engine (http://www.flasher.ru/forum/showthread.php?t=142323)

koIIImarik 18.07.2010 16:19

Переводы уроков про PushButton Engine
 
Всем привет.
Закончил сегодня перевод 5-го официального урока про разработку игр с помощью PushButton Engine.

Ссылки на уроки:
Урок #1
Урок #2
Урок #3
Урок #4
Урок #5

Хотелось бы услышать мнение людей о том, нужны ли вообще переводы уроков про PushButton Engine и использует ли кто-нибудь на форуме данный фреймворк в своих разработках.

Официальные доки тут: http://pushbuttonengine.com/docs/

P.S.:
Если уроки вам покажутся полезными, то буду благодарен за карму на Хабре: http://flashist.habrahabr.ru/blog/99402/

alexcon314 19.07.2010 10:30

Спасибо. Только почему поместили во флейм? Может быть блог заведете?

Contemplator 19.07.2010 12:06

Цитата:

Сообщение от alexcon314 (Сообщение 923204)
Спасибо. Только почему поместили во флейм? Может быть блог заведете?

зачем ему блог, когда есть свой сайт с уроками? =)

alexcon314 19.07.2010 12:16

действительно)

Furinax 19.07.2010 12:55

Огромное спасибо за ваш труд :)
Теперь знаю, что буду читать после книжек по флексу :)

koIIImarik 19.07.2010 13:00

2 alexcon314:
2 Furinax:
Приятно знать, что переводы будут полезны другим людям =) Спасибо вам.

Котяра 19.07.2010 13:23

Напрягает в PBE - использование Java стайл конвенций наименований..
UPD - посмотрел доки: вроде теперь нормально именуют.. исправились что ли?
А вообще мне лично этот фрэймворк и не нужен - легче самому написать то что надо, чем разбираться в этом движке. Рамки это чаще плохо, чем хорошо.

koIIImarik 19.07.2010 13:52

2 Котяра:
Не работал раньше с этим фреймворком, поэтому не знаю, какие раньше принципы именования в нём использовались. Лично, что мне не нравится в фреймворке — это использование «ссылок» на свойство через строковые названия, например так: "@Spatial.position".

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

В частности, PBE имеет один очень интересный инструмент по встраиванию внешних ресурсов через [Embed], который описывается в 5-м уроке. Не прочитав этот урок, я вряд ли когда-нибудь узнал о такой возможности.

Diestro 19.07.2010 13:55

А какое отношение тег Embed имеет к PBE?

koIIImarik 19.07.2010 13:58

2 Diestro:
Почитайте 5-й урок.

Diestro 19.07.2010 14:43

А причем тут 5й урок? Еще раз повторяю: тег Embed никакого отношения к PBE не имеет.

koIIImarik 19.07.2010 14:55

Хорошо, давайте так, вы читали 5-й урок? О чём там идёт речь?

Diestro 19.07.2010 14:57

Там идет речь о встраивании изображений посредством метатега [Embed], который к самому Push Button Engine никакого отношения не имеет.

koIIImarik 19.07.2010 15:03

А как этот тег PBE использует в своих целях?

Diestro 19.07.2010 15:09

:) Великолепный диалог.
Я вступил в диалог увидев вот это:
Цитата:

Сообщение от koIIImarik (Сообщение 923242)
2 Котяра:
В частности, PBE имеет один очень интересный инструмент по встраиванию внешних ресурсов через [Embed]

и в ответ написал что тег Embed не имеет никакого отношения к самому движку. Этим метатегом можно пользоваться в любом AS3 проекте.

koIIImarik 19.07.2010 15:18

Да =) Я сейчас перечитал своё сообщение, наверно я не очень правильно выразился, было бы правильнее сказать, «…на основе информации, передаваемой через тег [Embed]…», а не «…по встраиванию внешних ресурсов через [Embed]…».

Котяра 19.07.2010 17:01

Ну на самом деле это делается и без всякого PBE.
В чём его заслуга?
В уроке кстати не указано каким образом получать доступ к MyResource.myAsset?
Через строку? Это убожество.
В общем очень странный движок и я не увидел ни одной прикольной фичи.
например там нет:
- системы сообщений (mvc)
- динамической подгурузки с прелоадерами.
- кэширование битмап.
Всё как то на очень простом уровне..

koIIImarik 19.07.2010 17:07

2 Котяра:
Цитата:

Ну на самом деле это делается и без всякого PBE.
В чём его заслуга?
Его заслуга в том, что вам не нужно ничего дописывать и там, на мой взгляд достаточно удобно, организована проверка на встроенность файлов, и если файл встроен, он не будет подгружаться извне, а будет браться из библиотеки встроенных файлов.

Nirth 19.07.2010 22:07

Цитата:

- системы сообщений (mvc)
Так сложилось исторически, что game-engineers не любят MVC, и вообще слишком много абстракций, которые помогают в GUI / Server-Client / Enterprise приложениях, мешаются в Game Dev'е.

BlooDHounD 19.07.2010 23:40

Nirth, так уж сложились, что ты сейчас не прав )

Nirth 19.07.2010 23:55

Так уж сложилось, что иметь три полностью инкапсулированных абстраций, в игре не нужно =)

Добавлено через 1 минуту
Если на то пошло, то можно реализовать Delegate-Model или View-(Model+Controller) но конкретно MVC – изометрических RGP – лишнии костыли.

BlooDHounD 19.07.2010 23:57

Nirth, так уж сложилось, что они всегда имеются. в том или ином виде. ооп не нужен для существования мвц.

Nirth 20.07.2010 00:07

Ок давай конкретизируем.

В большинстве движков ( XNA, CryEngine, Unreal Development Kit ) у нас есть 2 ключевых функции:
1) обновляет данные, может называтся – update, evaluate не суть важно, далее update
2) обновляет экран - обычно называется draw.

Update и Draw могут быть синхронизированными ( update > draw > update > draw ) или нет ( update > update > draw > update > update > draw ). Например в Need for Speed идет 3 вызова update на один вызов draw.

update вычисляет новую позицию объектов ( это может быть либо физический движок, либо AI ботов ), и записывает их куда нибудь, это может быть вектор, массив, объект.
draw считывает данные и отрисовывает.

Теперь если ты понимаешь, под MVC что, M это вообще любой способ хранения информации, а в качестве контроллера может выступать и просто процедура вроде update. То да, но если ты все же сверишься с парадигмой / паттерном MVC то, так уж получается, что ты не прав.

Добавлено через 7 минут
Если уж натягивать за уши, то вот что используется в в геймдеве – http://c2.com/cgi/wiki?ModelDelegate

Котяра 20.07.2010 00:22

2BlooDHounD - в кои то веки солидарны) хотя, я уже тоже не люблю MVC и предпочитаю в render(draw) опрашивать скопом список изменённых состояний( которые, конечно, isInvalidated)
— Папа - а я уже game-engineer? :)
но в PBE, таки, об этом всём даже и не пахнет

Nirth 20.07.2010 00:25

Котяра & Bloodhound
Я вас не понимаю, вы что под MVC понимаете, любую архитектуру, где так уж сложилось, что отображение и обработка данных не в одном месте? если так то я могу 90 если не больше софта записать под MVC, но есть точные определения. Например - Модель должна "извещать", а не просто болтаться в памяти.

Котяра 20.07.2010 00:43

Цитата:

Сообщение от Nirth (Сообщение 923467)
отображение и обработка данных не в одном месте

Это необходимый и достаточный минимум, в моих изысканиях, я называл моделью данные(вернее их холдеры), которые просто помечались изменёнными. Контроллер (в частности функция render) - просто проверяет эти изменения - это по сути отложенные сообщения, просто приходят не телеграммы, а посылки раз в неделю, за которыми надо заходить)
Здесь немного потеряна связь модель - вид, но в классике MVC вид тоже не сам изменяется - его меняет контроллер.
Вообщем, МВЦ - это как минимум разделение данных, чего в 99% случаев достаточно.

Nirth 20.07.2010 00:46

Котяра, у тебя ближе к ValueObject / DataTransferObject нежели к Model. Я просто хочу отметить, что MVC, это не просто decoupling данных, от обработки и отображения, а конткретный способ, как этот decoupling происходит. И это далеко не единственный способ. Просто один из самых стандартных и востребованных.

Model это нечто, что может отсылать сообщения, и принимать сообщения. Если у тебя просто блок данных – это не модель.

Котяра 20.07.2010 00:52

Ладно, не будем спорить, я сам пока в поисках " самого идеального фрэймворка и наилучшего паттерна"))
Просто в PBE вообще нет ничего, кроме декораций, которые сложнее чем, то что они декорируют) тАКОЕ ОЩУЩЕНИЕ, ЧТО ПОРТИРОВАЛИ САМОПИСНЫЙ ДЖАВА ДВИЖОК, НЕ ЗНАЯ, ЧТО В AS3 ЭТО ВСЁ ЕСТЬ И ТАК.

Nirth 20.07.2010 00:54

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

Приложения которые работают постоянно сами, и приложения, которые работают по требованию пользователя.

Например, если мы пишем веб приложение, или десктопное – 99 процентов времени, оно ничего не выполняет, могут быть рутины ( например RSS/Mail клиенты могут перепроверять раз в 5-10 минут ). Но чаще мы просто ждем User Input, в данном случае Model View Controller является оптимальной парадигмой, в том плане, что программу нужно пнуть, чтобы она изменилась. Юзерь кликает мышкой, вид обновляет модель, модель пинает контроллер.

Есть другая категория программ, в которые входит большинство игр – Они работают постоянно. Если пользователь отпустит мышку, контроллер, клавиатуру – игра все равно будет продолжать играть. 30-60 кадров в секунду перерисовываясь и 30-240 раз обновляя физику/ии.

В данном случае MVC является ненужным костылем, потому что, никто никого извещать не должен. Программа так и так, проверяет все данные несколько десятков раз в секунду.

Исключением являются пошаговые игры, квесты и тд, там MVC и в правду очень может пригодится, так как мы буквально ждем ввода пользователя. Но если игра real-time нам не нужны не модель, не контроллер, не вид ( вид в MVC тоже отсылает сообщения, в нашем случае рендер никому ничего не отсылает, просто ставит флаг - отрендерил ).

Добавлено через 4 минуты
Цитата:

PBE вообще нет ничего
А PushButton да сосет =)

zurkis 20.07.2010 04:53

злой ты Nirth, какая собака тебя покусал то?

koIIImarik 20.07.2010 11:33

2 Nirth:
Вы вообще не любите какие-то сторонние фреймворки или конкретно PBE считаете плохим фреймворком?

Nirth 20.07.2010 13:11

Я солидарен с Котярой, использование строковых литералов – не сть хорошо, это источник потенциальных ошибок, если в комманде есть Junior кодеры.

koIIImarik 20.07.2010 13:47

Вы имеете ввиду подобные записи: "@Spatial.position"? Если да, то мне это тоже не нравится, но мне хотелось бы по-больше узнать о PBE и понять, возможно, получится как-то «обходить» подобные записи.

Nirth 20.07.2010 13:49

Я не разбирался в PBE, и сомневаюсь, что я знаю кого либо, кому охота в нем разбираться.

koIIImarik 20.07.2010 13:53

Суровый флешер.

Nirth 20.07.2010 13:55

Просто у я ленивый, и у меня очень много ленивых друзей ^_^

На самом деле мы можем все ошибатся, по-играйся, посмотри, может литералы не так сильно мешают. Может есть альтернативные способы доступа к полям. Даже если PBE сосет, и ты в нем разочаруешься, все равно вынесешь опыт – как фреймворки далеть не надо.

koIIImarik 20.07.2010 14:36

Цитата:

Даже если PBE сосет, и ты в нем разочаруешься, все равно вынесешь опыт
И я так же думаю =)

lowka 20.07.2010 21:33

Цитата:

Сообщение от Котяра (Сообщение 923475)
Ладно, не будем спорить, я сам пока в поисках " самого идеального фрэймворка и наилучшего паттерна"))
Просто в PBE вообще нет ничего, кроме декораций, которые сложнее чем, то что они декорируют) тАКОЕ ОЩУЩЕНИЕ, ЧТО ПОРТИРОВАЛИ САМОПИСНЫЙ ДЖАВА ДВИЖОК, НЕ ЗНАЯ, ЧТО В AS3 ЭТО ВСЁ ЕСТЬ И ТАК.

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

Nirth 20.07.2010 22:05

@lowka
То есть с твоей точки зрения – Ценность PBE в том, что кто то им попользуется, забьет на него, и напишет лучше? ^_^
У меня похожая точка зрения =)

koIIImarik 20.07.2010 22:35

2 Nirth:
Подмена понятий и нежелание замечать фразу «может и не будет» are detected!


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.