В основном то, что вы хотите сделать, это составлять списки по мере необходимости. Если вы перерисовываете объекты местности за один раз, вам может пригодиться список только их. Но для того, чтобы это стоило того, вам понадобятся десятки тысяч из них и многие десятки тысяч вещей, которые не являются местностью. В противном случае достаточно быстро просмотреть ваш список всего и использовать «если» для извлечения объектов ландшафта.
Мне всегда был нужен один главный список, независимо от того, сколько других списков у меня было. Обычно я делаю это в виде карты, таблицы с ключами или словаря, чтобы иметь возможность произвольного доступа к отдельным элементам. Но простой список намного проще; если вы не получаете случайный доступ к игровым объектам, карта вам не нужна. И случайный последовательный поиск по нескольким тысячам записей, чтобы найти правильную, не займет много времени. Так что я бы сказал, что бы вы ни делали, планируйте придерживаться основного списка. Подумайте об использовании карты, если она становится большой. (Хотя, если вы можете использовать индексы вместо ключей, вы можете придерживаться массивов и получить что-то намного лучше, чем Map. Я всегда заканчивал большими промежутками между номерами индексов, поэтому мне пришлось отказаться от него.)
Несколько слов о массивах: они невероятно быстрые. Но когда они набирают около 100 000 элементов, они начинают подгонять сборщиков мусора. Если вы можете выделить место один раз и не трогать его потом, хорошо. Но если вы постоянно расширяете массив, вы постоянно выделяете и освобождаете большие куски памяти и склонны к тому, что ваша игра зависает на несколько секунд за раз, и даже выдает ошибку из-за ошибки памяти.
Так быстрее и эффективнее? Конечно. Карта для произвольного доступа. Для действительно больших списков связанный список превзойдет массив, если и когда вам не нужен произвольный доступ. Несколько карт / списков для организации объектов различными способами, по мере необходимости. Вы можете многопоточное обновление.
Но это все много работы. Этот единственный массив быстрый и простой. Вы можете добавлять другие списки и вещи только тогда, когда это необходимо, и, вероятно, они вам не понадобятся. Просто знайте, что может пойти не так, если ваша игра станет большой. Возможно, вы захотите иметь тестовую версию с числом объектов в 10 раз больше, чем в реальной версии, чтобы дать вам представление о том, когда вас ждут неприятности. (Только делать это , если ваша игра будет получать большую.) (И не пытайтесь многопоточностью , не давая ей много думал. Все остальное легко начать с , и вы можете сделать , как много или как мало , как вам нравится и отступать в любое время. С многопоточностью вы заплатите большую цену, чтобы войти, сборы за пребывание высоки, и трудно выйти обратно.)
Другими словами, просто продолжайте делать то, что вы делаете. Ваш самый большой лимит - это, вероятно, ваше собственное время, и вы используете его как можно лучше.