Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 27.08.2008, 23:58   #1
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 638 пользователей)
Печаль GetRelativeTimeMs

Я тут пытался делать игрушку и обнаружил 2 фигни:
1. Функция GetRelativeTimeMs работает как-то странно - с ее помощью не получается отловить моменты меньше 10 мс. В первом аттаче лежит маленькая прога, которая это демонстрирует.
2. Во втором аттаче игрушко, которое я начал делать, я там пытался обойти первую фигню, специально делая задержку, но ни фига не работает. Короче, там в исходнике я закомментил строку, которая должна быть вместо той, что я написал. Сломал мозг, не пойму в чем косяк. Так как сейчас сделано, меня не устраивает, потому что может по-разному работать на слабых и мощных телефонах.
Вложения
Тип файла: zip TestMidpXTimer.zip (5.6 Кб, 339 просмотров)
Тип файла: zip Robobasket.zip (13.6 Кб, 330 просмотров)
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 08:23   #2
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: GetRelativeTimeMs

1. Не увидел никаких проблем в первом примере. Интервалы между итерациями в эмуляторах составляют 15 - 16 мс, пробовал у себя в телефоне 12 - 13 мс. А ты хотел ровно 10 что ли?
2. Зачем хранить интервал в вещественном числе? Тем более что используется низкая точность вычислений (до 0.0001) возможно вся твоя проблема именно в этом. Храни задержку в простом integer.
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 17:17   #3
beisik
Нуждающийся
 
Аватар для beisik
 
Регистрация: 23.04.2008
Адрес: Брест, Беларусь
Сообщений: 53
Написано 10 полезных сообщений
(для 18 пользователей)
Ответ: GetRelativeTimeMs

не замечал, функция гуд. а задержку в игре я реализовываю вот так, отлично работает:

var
lastTime: integer;
ups: integer;
...
ups := 25;
lastTime := GetRelativeTimeMs - 1000 div ups;
...
GameQuit := false;
repeat
  while GetRelativeTimeMs - lastTime >= (1000 div ups) do
  begin
    Update;
    lastTime := lastTime + (1000 div ups);
  end;
  UpdateButtons;
  Draw;
  repaint;
until GameQuit;
__________________
diary

Последний раз редактировалось beisik, 28.08.2008 в 17:18. Причина: забывалка я :)
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 22:08   #4
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 638 пользователей)
Ответ: GetRelativeTimeMs

Блин, забыл, что в первом аттаче надо было строку delay(10) поменять на delay(1). Тогда и увидите.
beisik, я тоже так делал, но получается как бы стабилизация фпс, например все время 25 кадров в секунду. А мне хочется чтоб фпс было максимальным и зависело от мощности мобилы. Как это сделать?
(Offline)
 
Ответить с цитированием
Старый 29.08.2008, 13:02   #5
beisik
Нуждающийся
 
Аватар для beisik
 
Регистрация: 23.04.2008
Адрес: Брест, Беларусь
Сообщений: 53
Написано 10 полезных сообщений
(для 18 пользователей)
Ответ: GetRelativeTimeMs

Romanzes
Никакой стабилизации фпс. Фпс максимальное, у меня весь игровой цикл разбит на Update (игровая логика рассчитывается), Render (отрисовывается) и UpdateButtons (это кнопочки проверять). Так вот, происходит стабилизация не фпс (вызов Draw), а ups (вызов Update). Так Update процедура выполняется абсолютно всегда 25 раз в секунду, а Draw - как позволяет телефон
__________________
diary
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Romanzes (29.08.2008)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com