![]() |
GetRelativeTimeMs
Вложений: 2
Я тут пытался делать игрушку и обнаружил 2 фигни:
1. Функция GetRelativeTimeMs работает как-то странно - с ее помощью не получается отловить моменты меньше 10 мс. В первом аттаче лежит маленькая прога, которая это демонстрирует. 2. Во втором аттаче игрушко, которое я начал делать, я там пытался обойти первую фигню, специально делая задержку, но ни фига не работает. Короче, там в исходнике я закомментил строку, которая должна быть вместо той, что я написал. Сломал мозг, не пойму в чем косяк. Так как сейчас сделано, меня не устраивает, потому что может по-разному работать на слабых и мощных телефонах. |
Ответ: GetRelativeTimeMs
1. Не увидел никаких проблем в первом примере. Интервалы между итерациями в эмуляторах составляют 15 - 16 мс, пробовал у себя в телефоне 12 - 13 мс. А ты хотел ровно 10 что ли?
2. Зачем хранить интервал в вещественном числе? Тем более что используется низкая точность вычислений (до 0.0001) возможно вся твоя проблема именно в этом. Храни задержку в простом integer. |
Ответ: GetRelativeTimeMs
не замечал, функция гуд. а задержку в игре я реализовываю вот так, отлично работает:
Код:
var |
Ответ: GetRelativeTimeMs
Блин, забыл, что в первом аттаче надо было строку delay(10) поменять на delay(1). Тогда и увидите.
beisik, я тоже так делал, но получается как бы стабилизация фпс, например все время 25 кадров в секунду. А мне хочется чтоб фпс было максимальным и зависело от мощности мобилы. Как это сделать? |
Ответ: GetRelativeTimeMs
Romanzes
Никакой стабилизации фпс. Фпс максимальное, у меня весь игровой цикл разбит на Update (игровая логика рассчитывается), Render (отрисовывается) и UpdateButtons (это кнопочки проверять). Так вот, происходит стабилизация не фпс (вызов Draw), а ups (вызов Update). Так Update процедура выполняется абсолютно всегда 25 раз в секунду, а Draw - как позволяет телефон :) |
Часовой пояс GMT +4, время: 09:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot