Я недавно перешел на С++ для игрового программирования. У меня есть большой опыт работы с управлением памятью и проблемами с мусором в С#, но не с С++.
В прошлом я слышал некоторые неясные советы, чтобы избежать распределения и освобождения во время игры (т.е. new
и delete
) и предварительно выделить все, что вам может понадобиться. Но это намного сложнее и сложнее, чем просто выделять и освобождать игровые объекты по мере необходимости во время игры (врагов, частиц и т.д.).
Я думаю, что совет, который я прочитал, имел в виду платформы с ограниченными ресурсами - я нацелен на развитие в основном для ПК, и я думаю, что данные состояния игры, которые будут часто меняться, будут составлять порядка нескольких мегабайт в большинстве случаев, Остальные - текстуры, звуковые активы и т.д., Которые я буду предварительно загружать.
Итак, мой вопрос: в мире ПК с гигабайтами памяти стоит ли головная боль настраивать продуманный пул памяти, предварительное выделение и т.д. для моих данных состояния игры? Или это просто какая-то неоспоримая традиция "лучшей практики", которая развивалась при максимизации ограниченных платформ, которые теперь повторяются как Евангелие?
Если мои 2 Мб игровых данных становятся фрагментированными и теперь распространяются на 4 МБ, я не могу представить, что это имело малейшее значение на ПК после 1990 года, но любопытно узнать, не хватает ли я чего-то:).