• Как создать 2д мир?

    vabka
    @vabka
    Токсичный шарпист
    Зависит от того, какие именно атрибуты у этих клеток есть.
    Магии не существует - придётся как-то хранить информацию о каждой клетке.

    1. Если массив (не куча и не хэш-таблица) - можно немного сэкономить и точно не хранить координаты клетки, тк они и так вытекают из позиции элемента.

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

    PS: 1млн клеток, даже если считать, что на каждую клетку нужно 8 байт, а не 1бит - это меньше 8мбайт.
    Ответ написан
    Комментировать
  • Как создать 2д мир?

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