Войти
ПрограммированиеФорумОбщее

С++ корутины, начальный уровень (комментарии) (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
9:45, 9 ноя 2022

FourGen
> там нет проблем с потоками? Зачем там корутины?
На первой странице ведь объяснил зачем - сделать более читаемый код.

#31
18:48, 9 ноя 2022

BUzer
> Да, но как сериализовать корутину, которая заморожена где-то в середине своего
> процесса выполнения?

До конца кадра(или хотя бы до конца одной секунды) все корутины должны выполнится, собственно в этом и состоит идея микротасков.
Секунду подождать для сейва должно быть не напряжно.

#32
19:09, 9 ноя 2022

gamedevfor
Если корутины заканчиваются до концы кадра то зачем они нужны, достаточно тред пула.

#33
19:18, 9 ноя 2022

kipar
> Если корутины заканчиваются до концы кадра то зачем они нужны, достаточно тред
> пула.

Тред пул очень неудобен для управления миллионами юнитов каждого по отдельности, он годится разве что для управления большими группами юнитов.

#34
4:00, 10 ноя 2022

gamedevfor
А что такого можно сделать с юнитами при помощи корутин, которые длятся только один кадр? Я думал, идея в том, чтобы использовать корутину как аналог стейт-машины. Т.е., к примеру, к каждому юниту прибивается корутина (или несколько), которая существует всё время его жизни. И у неё там как-то процесс выполнения внутри гуляет по разным асинхронным функциям в зависимости от того, чем юнит занимается.

Корутины длиной в секунду уже работать с сейвами не будут, т.к. в каждый момент времени из всего миллиона юнитов будет находиться какой-нибудь, кто в данный момент запустил корутину.

#35
10:38, 10 ноя 2022

/A\, прекрасная статья. Мне очень понравилась.

#36
10:59, 10 ноя 2022

BUzer
Потомучто корутины тоже не вставляют куда угодно. А что-то типа такого

+ Показать

Патрулирование, ожидание анимации и прочее.

#37
(Правка: 12:44) 12:33, 10 ноя 2022

Патрулирование, ожидание анимации и прочее.

Можно в отдельный тред по флагам. Для тысяч персонажей отлично подойдет.

If (heroStatus == patrol ) DoFunPatrol;
If (heroStatus == Ploho ) DoFunLechenie;

А сама структура\класс персонажа это как тот же стейт состояний.


Корутины в плане управляемости и работы тяжелее\больше команд и действий для CPU.
Пока я склонен считать , что достаточно\удобнее и тредов проца.
Тем более сейчас 12 ядер уже норма для CPU.

Так же я очень редко встречаю корутины, в туторах по с++ или 3д графике.

Возможно в каких-то специфических приложениях корутины могут быть полезны и удобнее, чем городить костыли.

#38
(Правка: 13:10) 12:46, 10 ноя 2022

Suslik в вашей игре Path of Exile корутины есть ?

#39
13:00, 10 ноя 2022

lookid
ну вот Джульетта выпила яд и игрок решил засейвиться. Как сериализовать текущую строку в корутине будем?

#40
13:11, 10 ноя 2022

kipar
Какой засейвится? Чекпоинт перед катсценой.

#41
(Правка: 13:15) 13:13, 10 ноя 2022

Чекпоинт перед катсценой.

Лучше пароль как в игре Another world pc 1991 :)

#42
13:27, 10 ноя 2022

lookid
в катсцене да. Там правда и корутины не особо нужны, кат-сцены все-таки обычно художники делают а не прогеры. Но то же патрулирование уже придется на стейт-машине делать.

#43
13:32, 10 ноя 2022

kipar
Сохранять будут ближайший солид стейт. По другому никак.

#44
13:45, 10 ноя 2022

lookid
о том и речь уже вторую страницу.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее