При создании любого приложения на Blitz3D, необходимо заранее предусмотреть одинаковую скорость работы, вне зависимости от мощности компьютера. Да, ведь запустив обычный цикл с перемещением какого-либо объекта - скорость его движения будет разной на разных компьютерах, в зависимости от различных технических особенностей (видеокарта, процессор, архитектура мат. платы и т.д.).

Для игр самый подходящий способ это render tweening, когда логика игры обновляется заданное количество раз в секунду, а все промежуточные состояния - интерполируются, тем самым снижая нагрузку на систему.

Пример реализации render tweening на Blitz3D:

Global period
Global FPS=30
Global time, elapsed, ticks, tween#
period=1000/FPS
time=MilliSecs()-period

While Not KeyHit(1)
 Repeat
   elapsed = MilliSecs()-time
 Until elapsed
 ticks = elapsed/period
 tween# = Float(elapsed Mod period)/Float(period)
 For k=1 To ticks
  time = time+period
  If k = ticks Then
    CaptureWorld
    UpdateWorld
  End If
 Next
 RenderWorld tween
 Flip false
Wend

В примере как видите указано ограничение в 30 FPS (frame per second/кадров в секунду). Работа метода проста - разобраться не сложно.

Рекомендую CaptureWorld и UpdateWorld со своими функциями апдейта засунуть в общую функцию Update(), например. В цикле ее и ставить. Так намного удобнее и быстрее.

Если что-то не понятно, задавайте вопросы в комментариях.

(Visited 664 times, 1 visits today)