Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Аппетит событий и DI (http://www.flasher.ru/forum/showthread.php?t=176058)

Psycho Tiger 01.03.2012 17:01

Ну, я делал дамп того, что генерило AMF. Почти чистый JSON.

Inet_PC 01.03.2012 17:19

Не знаю, толи мы не умеем amf готовить, то-ли, что, но на серверной стороне (php), он у нас жутко тормозил.

alatar 01.03.2012 17:23

AMF я привел в качестве примера бинарного протокола. :)

Цитата:

Ну, я делал дамп того, что генерило AMF. Почти чистый JSON.
Зависит от типа данных.

xdoom 01.03.2012 17:50

Цитата:

Сообщение от alatar (Сообщение 1066425)
Между какими модулями?

20Hz Iservice->Iengine->Iview
и так же в обратном направлении, итого тысяча набирается менее чем за 20сек.
мне тоже кажется это маразмом.

Статьи интересные, там логика а не архитектура, не пуля кричит "лечу", а физ-движок кричит серверу и представлению "свежие пирожкиданные!!!", в то же время сервер кричит движку "покупайтелетят новые пули !!" так вот может получается сотня выкриков каждую секунду. Или нужно иначе?

alatar 01.03.2012 18:16

данные (от сервера или от пользователя) 1 событие (условно) -> движок (расчет нового состояния, изменение модели) 1 событие от модели (данные изменились) (в обратную сторону 1 событие, новое состояние) -> рендер (отрисовка).
Это если гонять состояния. Такой способ крайне неустойчив к взлому.
Другая ситуация.
контроллер (действие пользователя, например "нажали вперед") -> сервер (расчет нового состояния, отсылка клиенту) -> контроллер (изменение внутренней модели) -> рендер (отображение).

Ну и так далее. Где тут сотни событий?

Цитата:

а сервер кричит движку "летят новые пули "!!
По разу на каждую?

Добавлено через 7 минут
P.S. Во многих шутерах вообще нет пуль. Просто мгновенное попадание, а условная пуля (собственно просто отрисовка) летит условно уже постфактум. Т.е. на клиенте пули есть, а на сервере используются, скажем так, лазеры.

xdoom 01.03.2012 23:04

Всё именно так как вы описали, прям один в один, только частота 20Hz чего нить говорит? вся это цепочка в одну сторону и в другую сторону гоняется с периодичностью раз в 50ms. 6-10 событий за 1 итерацию = 50ms посчитайте сколько набёрётся за секунду.
Цитата:

Сообщение от alatar (Сообщение 1066480)
Ну и так далее. Где тут сотни событий?

Понятно где?

Цитата:

Сообщение от alatar (Сообщение 1066480)
По разу на каждую?

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

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

p.s. конечно мы не стремимся в сторону battlefild 3 где для пуль есть ещё и гравитация и время жизни, логика quake - отличный старт.
хотя время жизни у наших снарядов тоже есть.

TanaTiX 01.03.2012 23:16

Я бы советовал рассматривать отдельно фреймворки и MVC. Это все же разные понятия.
На счет передачи событий данных через эвенты - может их хранить в моделе уже в распаршенном виде? Не вижу смысла в json.

ЗЫ. Да, опечатался.

alatar 02.03.2012 00:29

Цитата:

6-10 событий за 1 итерацию = 50ms посчитайте сколько набёрётся за секунду.
Какая вам разница сколько их наберется за секунду? Можете еще за год посчитать, получите более впечатляющие цифры. Если обработка не вылазит за эти 50 мс, то тормозов не будет. По памяти тоже должно быть приемлемо. Количество событий за итерацию и время обработки этих событий и есть для вас критические параметры, а не сколько вы их насобираете за секунду. Сама отправка события это дешевая операция и экономить их надо, если они уже не влезают в кадр.

Цитата:

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

xdoom 02.03.2012 03:16

В моём тексте объединение понятий фреймфорка и MVC вызвано лишь использованием событий в обоих случаях.
Тема была создана только потому что не был уверен в этом:
Цитата:

Если обработка не вылазит за эти 50 мс, то тормозов не будет. По памяти тоже должно быть приемлемо. ... Сама отправка события это дешевая операция...
задача с синхронизацией это уже другая история, гораздо увлекательней, но о ней в другой раз.
Спасибо за дискуссию, успокоят меня наверное только тесты, как проведу отпишусь.

Добавлено через 14 минут
p.s. между модулями на самом деле json не гоняется, но от этого смысл не менятся. TanaTiX наверное опечатлося говоря о передаче событий через евенты, подразумевая данные.

xdoom 05.03.2012 07:20

Код AS3:

                public function speedtest()
                {
                        var eventDispatcher:EventDispatcher = new EventDispatcher()
                        eventDispatcher.addEventListener(Event.ACTIVATE,eventHandler)
                        var i:int = 10000000                       
                        var t:int = getTimer()
                        while (i--){
                                eventDispatcher.dispatchEvent(new Event(Event.ACTIVATE))
                        }                       
                        trace(getTimer()-t,ecount)
                        i = 10000000
                        t = getTimer()
                        while (i--){
                                eventHandler()
                        }
                        trace(getTimer()-t,ecount)
                        i = 10000000
                        t = getTimer()
                        while (i--){
                                ecount++
                        }
                        trace(getTimer()-t,ecount)
 
                }
                private var ecount:int
                private function eventHandler(e:Event=null):void{
                        ecount++
                }

Код:

13314 10000000
2773 20000000
778 30000000

Было понятно что события медленней, но не думал что более чем в три раза.
Фишка событий - это возможность цепляться на них сразу же нескольким обработчикам, когда этого не нужно, не понимаю причин их использовать. Прямых связей можно избежать другими способами.
По моему скромному представлению.


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

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