Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   таймер или счетчик (http://www.flasher.ru/forum/showthread.php?t=211209)

delphic 13.07.2015 08:56

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

ZackMercury 13.07.2015 09:39

Что такое "счётчик"?

callme 13.07.2015 09:44

Вариант №1
Цитата:

TimerEvent.TIMER
TimerEvent.TIMER
рендер
TimerEvent.TIMER
рендер
TimerEvent.TIMER
TimerEvent.TIMER
рендер

Вариант №2
Цитата:

Event.ENTER_FRAME
рендер
Event.ENTER_FRAME
рендер
Event.ENTER_FRAME
рендер

Зачем рассчитывать новые позиции объектов на экране (нагружать проц), ведь рендер может случиться не сразу, а после следующего TimerEvent.TIMER.

Поэтому я не использую TimerEvent.TIMER.

delphic 13.07.2015 09:57

Цитата:

Сообщение от ZackMercury (Сообщение 1184872)
Что такое "счётчик"?

я имел в ввиду например
имеется частота кадров к примеру 60
вот за минуту код отрабатывается 60
скажем я поставил таймер на минуту,что бы передвинуть объект например
или
лучше я поставлю условие что если счетчик достиг 60 то передвинуть объект

caseyryan 13.07.2015 10:03

Цитата:

Зачем рассчитывать новые позиции объектов на экране (нагружать проц), ведь рендер может случиться не сразу, а после следующего TimerEvent.TIMER.

Поэтому я не использую TimerEvent.TIMER.
Есть же event.updateAfterEvent(); если надо, чтобы обязательный рендер был.
Цитата:

имеется частота кадров к примеру 60
вот за минуту код отрабатывается 60
При частоте 60 кадров, код отрабатывает 60 раз в секунду, а не в минуту, соответственно в минуту 3600 раз

Цитата:

скажем я поставил таймер на минуту,что бы передвинуть объект например
или
лучше я поставлю условие что если счетчик достиг 60 то передвинуть объект
Какая-то полная каша. Для начала неплохо бы доходчиво сформулировать свой вопрос.
Цитата:

было как то сказано что таймер лучше чем использование счетчика, может тормозить игра на старых компах, но так ли это,в чем конкретно все таки лучше таймер
Можно пример, где это было сказано?
Я предполагаю, что речь об ENTER_FRAME vs. TIMER. Если это так, то суть не в том, какой использовать, а в том, чтобы рассчитать сколько времени прошло с момента последнего обновления, и передвинуть объекты на столько, на сколько они могли при текущей скорости и направлении передвинуться за это время.
Тормозят оба. К слову, и ENTER_FRAME и TIMER в as3 основаны на таймере, и если среда подвисает по каким-то причинам, то и один и другой подвиснут вместе с ней

ZackMercury 13.07.2015 10:04

Цитата:

имеется частота кадров к примеру 60
вот за минуту код отрабатывается 60
За минуту?

Цитата:

скажем я поставил таймер на минуту,что бы передвинуть объект например
А чем интерфейс Flash IDE не угодил? Там можно двигать что куда угодно.

Цитата:

лучше я поставлю условие что если счетчик достиг 60 то передвинуть объект
Никто так не делает.

callme 13.07.2015 11:04

Цитата:

Сообщение от caseyryan (Сообщение 1184875)
Есть же event.updateAfterEvent(); если надо, чтобы обязательный рендер был.

Что выбрать из этих двух вариантов и почему?

delphic 13.07.2015 11:57

Цитата:

Сообщение от caseyryan (Сообщение 1184875)
Есть же event.updateAfterEvent(); если надо, чтобы обязательный рендер был.

Тормозят оба. К слову, и ENTER_FRAME и TIMER в as3 основаны на таймере, и если среда подвисает по каким-то причинам, то и один и другой подвиснут вместе с ней

вот я то не помню где было утверждение о том что лучше использовать timer, вот я и подумал с чего бы то это timer лучше enter_frame.

по некоторым причинам хочу использовать ENTER_FRAME а не timer, вот и услышав где то на сайте по свешенному флеш что таймер лучше чет ENTER_FRAME, задумался почему???как так может быть))) отсюда и топик появился

можно об этом чуть подробней? как бы своими словами,не техническим языком
Если это так, то суть не в том, какой использовать, а в том, чтобы рассчитать сколько времени прошло с момента последнего обновления, и передвинуть объекты на столько, на сколько они могли при текущей скорости и направлении передвинуться за это время

Zebestov 13.07.2015 12:36

Таймер — фигня.
Другое дело, что привязка к FPS не гарантирует равномерного течения процесса.
В таких случаях в каждом кадре просто засекают время, прошедшее с последнего рендера, с помощью getTimer() и делают с ним одно из двух:
– подставляют в F(t), если имеется функциональная зависимость от времени
– высчитывают, сколько раз нужно вызвать какой-то метод, скажем, update(), если имеем дело с дискретными вычислениями (а это все физ. движки как минимум)

delphic 13.07.2015 13:31

Цитата:

Сообщение от Zebestov (Сообщение 1184882)
Другое дело, что привязка к FPS не гарантирует равномерного течения процесса.

на сколько это критично? совсем прям видно не вооруженным глазом? вот этот момент мне интересен.

Zebestov 13.07.2015 13:52

Дело даже не в том, насколько это видно. Просто если fps по каким-то причинам просядет, то все процессы игры замедлятся. Как правило на это пофиг. Но если игра требует хоть какой-то защиты от читеров, то лучше эти процессы (вычисление игровых процессов и их отображение) разделить.

delphic 13.07.2015 14:04

Цитата:

Сообщение от Zebestov (Сообщение 1184886)
Дело даже не в том, насколько это видно. Просто если fps по каким-то причинам просядет, то все процессы игры замедлятся. Как правило на это пофиг. Но если игра требует хоть какой-то защиты от читеров, то лучше эти процессы (вычисление игровых процессов и их отображение) разделить.

читеров в смысле подобие артмани?если взять public static var ее тоже можно отлавливать? ну а как от них избавятся, это как игла)), один раз применил,все остальное вроде как сложнее, особенно для первого написания
трудно спрыгнуть.
ну так игра и зависит же от fps,если просядет, так она и с таймером сядет, не могу понять

callme 13.07.2015 14:18

Цитата:

Сообщение от delphic (Сообщение 1184888)
ну так игра и зависит же от fps,если просядет, так она и с таймером сядет, не могу понять

Zebestov про такие ситуации: Летит птица слева направо. Если с предыдущего кадра прошло много времени, надо птицу побольше подвинуть.

Тогда игрок и не заметит, что игра просаживалась.

А хотя нет, он похоже про что-то другое.

udaaff 13.07.2015 14:32

Если необходима защита от спидхака, то dt необходимо считать через Date#time. Замедляются как раз таки таймера, дата не изменяется.
Цитата:

если взять public static var ее тоже можно отлавливать?
Для того, чтобы школьнек не смог изменить значение перменной достаточно не хранить её в явном виде. Простое xor шифрование решает проблему.
Код AS3:

public class SafeInt
{
        public function SafeInt(value:int = 0)
        {
                super();
                this.value = value;
        }
 
        private var _key:int = 1e8 * Math.random();
 
        //----------------------------------
        //  value
        //----------------------------------
 
        private var _value:int;
 
        public function get value():int
        {
                return _value ^ _key;
        }
 
        public function set value(value:int):void
        {
                _value = value ^ _key;
        }
}


delphic 13.07.2015 15:26

Итак имеется таймер на 1 сек
Имеем fps скажем на 60, ставлю счетчик, достигаем 60 останавливаемся (тоже 1 сек)
в чем то разница? по существу люди.... меня сейчас именно этот вопрос интересует
есть ли она? и какая конкретно

ZackMercury 13.07.2015 15:34

И таймер, и ФПС может просесть от лагов системы. Нельзя на это полагаться.

delphic 13.07.2015 15:44

Цитата:

Сообщение от ZackMercury (Сообщение 1184893)
И таймер, и ФПС может просесть от лагов системы. Нельзя на это полагаться.

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

ZackMercury 13.07.2015 16:01

Весь игровой процесс должен быть построен на дельте.

caseyryan 13.07.2015 17:05

Цитата:

Вооооот то что я и хотел услышать)))
Это было сказано уже несколько раз в этой теме.
Цитата:

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

delphic 14.07.2015 10:34

дабы не создавать новый топик, подскажите как получить сколько установлено fps? this. ????? и

caseyryan 14.07.2015 10:35

Код AS3:

stage.frameRate



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

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