Size: a a a

2021 January 15

IP

Ivan Popelyshev in GameDev for Web
Anon
Коммунити ебаных токсиков. То стак который весь ентерпрайз юзает у них говно, то Ричард Голдрейх дурак, то ещё ченить придумают.
Короче я пас.
я тебя вообще поддерживаю, что неправильно то?
источник

IP

Ivan Popelyshev in GameDev for Web
Георгий
самое сложное мне кажется это заново создать объект после того как он удалился, это получается при удалении объекта надо записывать инфу о том как его воссоздать при реверсе?
в команду создания писать айдишник
источник

IP

Ivan Popelyshev in GameDev for Web
вот когда там Undo частичная начинается, вот это весело очень
источник

AG

Alexey Gulev in GameDev for Web
хз, вроде не сложно. у меня пул объектов, вью отвязано от логики полностью и подстраивается под то, что логика отдаст
источник

AG

Alexey Gulev in GameDev for Web
поэтому создание объекта, это просто заполнить данные о нем на стороне логики
источник

MM

Maksims Mihejevs in GameDev for Web
Для отката времени, хорошо продумать абстракцию над данными. Сделать stateless рендер над данными, то дальше останется сделать откат данных.
источник

AG

Alexey Gulev in GameDev for Web
и логику не волнует как и когда там вью отработает, будет ли анимировать или танцевать с ним
источник

MM

Maksims Mihejevs in GameDev for Web
Описывать всё операциями на данные, имея анти-операции.
источник

MM

Maksims Mihejevs in GameDev for Web
И можно так применять и реверсить операции по древу событий.
источник

MM

Maksims Mihejevs in GameDev for Web
По сути Editor в PlayCanvas так работает.
источник

MM

Maksims Mihejevs in GameDev for Web
Только там ещё отмотка данных локальных, а те что сделаны другими пользователями по multiplayer сам не отменяешь.
источник

AG

Alexey Gulev in GameDev for Web
ну эдитор не совсем то, зарендерить обратно выстрел так будет сложно
источник

AG

Alexey Gulev in GameDev for Web
=)
источник

Г

Георгий in GameDev for Web
ну так вот допустим даже у нас есть только стейт и команда которая умеет вперед и назад, и вот есть команда "удалить этот объект" - и все, в стейте больше нет о нем инфы, и как команда вернет его обратно? можно конечно флагом удаленные объекты помечать и потом просто флаг ставить на место, но если без флага то нужно в команде на удаление запоминать состояние объекта перед удалением чтобы можно было его обратно вернуть
источник

AG

Alexey Gulev in GameDev for Web
я и говорю, что подходы разные от задачи
источник

AG

Alexey Gulev in GameDev for Web
Георгий
ну так вот допустим даже у нас есть только стейт и команда которая умеет вперед и назад, и вот есть команда "удалить этот объект" - и все, в стейте больше нет о нем инфы, и как команда вернет его обратно? можно конечно флагом удаленные объекты помечать и потом просто флаг ставить на место, но если без флага то нужно в команде на удаление запоминать состояние объекта перед удалением чтобы можно было его обратно вернуть
перед исполнением команды записать стейт
источник

MM

Maksims Mihejevs in GameDev for Web
Alexey Gulev
ну эдитор не совсем то, зарендерить обратно выстрел так будет сложно
Да нет, тут больше вопрос данных. Если у тебя инфа типа: shot: { start: [ x, y, z ], direction: [ x, y, z ], timestamp: number }
источник

MM

Maksims Mihejevs in GameDev for Web
То уже можно отматывать пулю туда, сюда.
источник

AG

Alexey Gulev in GameDev for Web
Maksims Mihejevs
Да нет, тут больше вопрос данных. Если у тебя инфа типа: shot: { start: [ x, y, z ], direction: [ x, y, z ], timestamp: number }
ну да, придется все в это завернуть, но что если это партикл который в это не умеет? значит такой партикл уже нельзя использовать
источник

MM

Maksims Mihejevs in GameDev for Web
Георгий
ну так вот допустим даже у нас есть только стейт и команда которая умеет вперед и назад, и вот есть команда "удалить этот объект" - и все, в стейте больше нет о нем инфы, и как команда вернет его обратно? можно конечно флагом удаленные объекты помечать и потом просто флаг ставить на место, но если без флага то нужно в команде на удаление запоминать состояние объекта перед удалением чтобы можно было его обратно вернуть
При выполнении команды, мы храним данные до модификации которые она затрагивает.
источник