Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 December 01

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Некоторые ECS даже поддерживают fixed-step-systems отдельно от остальных
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Кроме самого рендеринга тебе придется еще экстраполировать анимацию и движение объектов каждый кадр
источник

AK

Adam K in RU Rust GameDev — русскоговорящее сообщество
Скорее уж интерполировать. Кадр задержки, думаю, можно себе позволить.
источник

NV

Nikita Vilunov in RU Rust GameDev — русскоговорящее сообщество
Roman
Некоторые ECS даже поддерживают fixed-step-systems отдельно от остальных
например?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Nikita Vilunov
Чуваки, а как нынче решают проблему зависимости обновления стейта игры от рендеринга? Вижу что в движках типа bevy все вычисления всё ещё происходят последовательно друг за другом, просто теперь ECS-системы распаралелены по компонентам. В каждую систему передаётся time delta, которая позволяет изменять стейт пропорционально прошедшему времени, что делает логику независимой от ФПС.

Кто-то практикует дискретные обновления игрового мира, то есть количество итераций в секунду поддерживается на фиксированной частоте, в то время как рендеринг происходит on a best effort basis?
Ничто не мешает тебе в рендер-системе пропускать какие-то тики если в данный момент происходит рендеринг и все очереди забиты.
источник

NV

Nikita Vilunov in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
Ничто не мешает тебе в рендер-системе пропускать какие-то тики если в данный момент происходит рендеринг и все очереди забиты.
Чет не понял сообщение. Если у меня происходит рендеринг, я бы все равно хотел как-то менять стейт (не в рендер-системе). Пропускать тики не вариант, у меня много систем с логикой, все они должны быть синхронизированы между собой.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Ты можешь по условию не делать определенных штук в твоей рендер-системе.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Nikita Vilunov
Чет не понял сообщение. Если у меня происходит рендеринг, я бы все равно хотел как-то менять стейт (не в рендер-системе). Пропускать тики не вариант, у меня много систем с логикой, все они должны быть синхронизированы между собой.
^
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Не пропускать тики целиком, а пропускать логику которая не нужна в тике.
источник

NV

Nikita Vilunov in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
Ты можешь по условию не делать определенных штук в твоей рендер-системе.
Может всё-таки не в рендер-системе, а в системах логики?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
В чем разница?
источник

NV

Nikita Vilunov in RU Rust GameDev — русскоговорящее сообщество
Я заинтересован в том, что рендер-система выполнялась как можно чаще, а системы логики выполнялись фиксированное количество раз в секунду и в детерминированном порядке относительно друг друга.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
А. Что мешает тогда сделать в каждой фикседстеп-системе

if time_since_last_fixed_step() < FIXED_STEP_DURATION { return; }
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
А порядок обычно задается или тобой, или скеджулером который ты используешь.
источник

NV

Nikita Vilunov in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
А. Что мешает тогда сделать в каждой фикседстеп-системе

if time_since_last_fixed_step() < FIXED_STEP_DURATION { return; }
пахнет проблемами с перформансом из-за гоняния цикла вхолостую и с детерминированностью из-за недетерминированного получения текущего времени
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Nikita Vilunov
пахнет проблемами с перформансом из-за гоняния цикла вхолостую и с детерминированностью из-за недетерминированного получения текущего времени
Почему вхолостую, ты же на каждом цикле как минимум рендеришь.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Ну и ты ведь можешь время для фикседстепа замерять раз на кадр.
источник

NV

Nikita Vilunov in RU Rust GameDev — русскоговорящее сообщество
ну и ещё неприятно что пока рендеринг идёт, ничего параллельно вычислять нельзя
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Почему нельзя?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Скеджулеры это обычно решают.
источник