Пятница, 08 Ноября 2024, 21:04

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите буду рад)
faridunibodulloДата: Суббота, 25 Апреля 2020, 12:51 | Сообщение # 1
частый гость
Сейчас нет на сайте
Как сделать чтобы скорость игры не зависело от fps в game maker 8
Например в игре War Craft 3 если fps 20 или fps 100 то скорость движения юнитов одинаково
Или в CS 1.6 при fps 20 скорость движения равен скоросту движения с 101 fps
martukДата: Суббота, 25 Апреля 2020, 13:44 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
faridunibodullo, читай про delta time. Я не помню конечно чтобы в gm8 оно было имплементировано, но во всяком случае можно отталкиваться от значения fps.
Если у тебя выставлена скорость комнаты - 60 кадров в сек, то можешь заглобалить переменную dt со значением 60/fps. (fps - встроенная переменная в gm). И далее мы просто умножаем скорость передвижения любого объекта на dt и будет у тебя одинаковая скорость при любом fps
UNIT02_GAMES_STUDIOДата: Суббота, 25 Апреля 2020, 17:17 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Помню в своей игре тоже хотел сделать такое, но возникала проблема. Когда игра по какой либо причине теряла fps (в моем случае при включении паузы), то за эту доли секундную потерю, персонажи начинали сильно ускоряться, подстраиваясь под текущий fps. Поэтому следует этот момент учесть и как-то замаскировать.

А вообще, я например не считаю, что заоблачное значение fps столь важно. Можно выставить просто 30 или 60 и все будет нормально. Если эти цифры не будут показываться на экране, то никто даже не поймет ничего. Главное, что бы fps был стабильным и не проседал.


МОИ ИГРЫ:
[2D] Агент Green [Action-platformer]
[2D] Оставшиеся: Мир После Нас [TDS]
AlexanderBekkerДата: Суббота, 25 Апреля 2020, 19:05 | Сообщение # 4
BekkerDev Studio
Сейчас нет на сайте
martuk, это довольно геморройное решение, ибо в коде может быть куча строк, где придётся умножать значения на delta. Проще привязать к FPS обновление всей игровой логики. Не знаю, как это делается в Game Maker, но я делаю так:
Код
public void render() {
   elapsed += Gdx.graphics.getDeltaTime();
   float frames = 1.0f / 60f;
   while (elapsed > frames) {
      elapsed -= frames;
      game.tick();
   }

   graphics.render(game);
}


Разработчик, композитор и издатель инди-игр в Steam.
Редактор карт: BekkerDev Level Editor 4
Страница разработчика в Steam
Паблик ВК: BekkerDev Studio
faridunibodulloДата: Суббота, 25 Апреля 2020, 20:07 | Сообщение # 5
частый гость
Сейчас нет на сайте
AlexanderBekker,
Pascal ???

Добавлено (25 Апреля 2020, 20:18)
---------------------------------------------
и не только скорость движения, а полностью игру потому что команды степа тоже медленно работают при понижении фпс

DivESДата: Суббота, 25 Апреля 2020, 21:11 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
faridunibodullo, это Java.
К чему ты там пришёл-то?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг