Конечно, линейно массивом не надо такое делать. Для такого прекрасно подходит Linked Lists. Вам не важно будет в каком порядке хранится информация в памяти, и можно будет всегда вносить изменения. Также можно нужную информацию подгружать динамически, и освобождать за ненадобностью. Вам так не придется дублировать весь массив, для внесения коррективов динамически. Хотя в вашем случае где всего 1 млн. клеток, то можете и дублировать хоть на по фреймово. Видеопамять очень шустрая. Но все же логичнее будет использовать списки. Но придется платить указателями, лишним размером. Хотите действительно ответ, то слушайте, попробуйте сделать хоть чтото, не думая об оптимизации, и показать что сделали, и что не получилось, больше конкретизировать, потому что программистов надо спрашивать более конкретизировано чтолибо. И еще раз, не думайте об оптимизиации, постарайтесь сделать так, как уже задумали, и потом спросите как можно оптимизировать. И вам подскажут, просто теоретиков никто не любит, слишком дофига их. Ваш вопрос обидятся и удалят так как не смогут ответ найти. Конкретизируйте, делайте, так как задумали, ну задумали скажем 1 миллион, ну и что с того! Попробовали засунуть в память и оно не влезло чтоли? Нет, не пробовали, испугались, зачемто, а просто попробуйте для начала, что разве появится ошибка какаято. Сейчас той памяти в любом китайском смартфоне по несколько гигабайт. И да, попробуйте на 1 фрейм дублировать весь массив. Сейчас такие скорости и размер что хоть 1000 fps можно получать в 3D не говоря уже об 2D. Потому не бойтесь компьютеру в лоб давать любой свой код даже если он кажется медленно работающим, компьютер тупой как валенок, но настолько шустр что трудно даже уже стало вообразить, он схавает все что угодно, тем более ваш массив в 1 миллион. Если речь не про скроллер а речь про матрицу размером в 1 терабайт, тогда без процесса кеширования не обойтись.