Краткий ответ: зависит от ожидаемого времени жизни объектов.
Обычно методы комбинируются. Объект, который является довольно статичным и который вряд ли удастся удалить или создать часто (обычно это игроки, уровни, определенные объекты на уровнях и т. Д.), Создается с помощью первого описанного вами метода (список объектов, массив, одиночный объект, и т.д.) Точный метод зависит от игры и создаваемого объекта.
Для краткосрочных объектов, таких как пули, эффекты частиц или в некоторых играх, обычно используются сами враги, например, шаблон пула объектов . Кусок памяти переворачивается в начале игры и повторно используется в течение игры для пуль и эффектных частиц. Что касается , сколько памяти я должен зарезервировать? , идеальный ответ - «Как можно меньше». К сожалению, это трудно понять иногда. Лучший способ выяснить это - угадать, сколько пуль или что-то еще вы планируете иметь на экране в любой момент времени, умножьте на два (потому что, когда вы решите, что ваш пули-адский стрелок не очень хорошо работает с только 50 пуль), а затем добавить немного буфера. Чтобы упростить его, сохраните это значение в легко понятном #define BULLET_MAX 110
, чтобы вы могли изменить его, когда игра приближается к завершению, и вы можете быть достаточно уверены, что значение не будет сильно колебаться. Для дополнительного удовольствия вы можете связать значение в переменную конфигурации, и настройки графики влияют на него.