FourGen
> там нет проблем с потоками? Зачем там корутины?
На первой странице ведь объяснил зачем - сделать более читаемый код.
BUzer
> Да, но как сериализовать корутину, которая заморожена где-то в середине своего
> процесса выполнения?
До конца кадра(или хотя бы до конца одной секунды) все корутины должны выполнится, собственно в этом и состоит идея микротасков.
Секунду подождать для сейва должно быть не напряжно.
gamedevfor
Если корутины заканчиваются до концы кадра то зачем они нужны, достаточно тред пула.
kipar
> Если корутины заканчиваются до концы кадра то зачем они нужны, достаточно тред
> пула.
Тред пул очень неудобен для управления миллионами юнитов каждого по отдельности, он годится разве что для управления большими группами юнитов.
gamedevfor
А что такого можно сделать с юнитами при помощи корутин, которые длятся только один кадр? Я думал, идея в том, чтобы использовать корутину как аналог стейт-машины. Т.е., к примеру, к каждому юниту прибивается корутина (или несколько), которая существует всё время его жизни. И у неё там как-то процесс выполнения внутри гуляет по разным асинхронным функциям в зависимости от того, чем юнит занимается.
Корутины длиной в секунду уже работать с сейвами не будут, т.к. в каждый момент времени из всего миллиона юнитов будет находиться какой-нибудь, кто в данный момент запустил корутину.
/A\, прекрасная статья. Мне очень понравилась.
BUzer
Потомучто корутины тоже не вставляют куда угодно. А что-то типа такого
Патрулирование, ожидание анимации и прочее.
Патрулирование, ожидание анимации и прочее.
Можно в отдельный тред по флагам. Для тысяч персонажей отлично подойдет.
If (heroStatus == patrol ) DoFunPatrol;
If (heroStatus == Ploho ) DoFunLechenie;
А сама структура\класс персонажа это как тот же стейт состояний.
Корутины в плане управляемости и работы тяжелее\больше команд и действий для CPU.
Пока я склонен считать , что достаточно\удобнее и тредов проца.
Тем более сейчас 12 ядер уже норма для CPU.
Так же я очень редко встречаю корутины, в туторах по с++ или 3д графике.
Возможно в каких-то специфических приложениях корутины могут быть полезны и удобнее, чем городить костыли.
Suslik в вашей игре Path of Exile корутины есть ?
lookid
ну вот Джульетта выпила яд и игрок решил засейвиться. Как сериализовать текущую строку в корутине будем?
kipar
Какой засейвится? Чекпоинт перед катсценой.
Чекпоинт перед катсценой.
Лучше пароль как в игре Another world pc 1991 :)
lookid
в катсцене да. Там правда и корутины не особо нужны, кат-сцены все-таки обычно художники делают а не прогеры. Но то же патрулирование уже придется на стейт-машине делать.
kipar
Сохранять будут ближайший солид стейт. По другому никак.
lookid
о том и речь уже вторую страницу.