Я экспериментирую с написанием игры в стиле функционального программирования, который подразумевает представление игрового состояния с помощью чисто функциональных неизменяемых структур данных.
Одной из наиболее важных структур данных будет трехмерная сеткапредставляющий мир, где объекты могут храниться в любом месте [x, y, z] сетки.Свойства, которые я хочу для этой структуры данных:
- Неизменные
- Быстрые постоянные обновления - то есть создание новой версииВся сетка с небольшими изменениями является дешевой и достигается за счет структурного разделения.Сетка может быть большой, поэтому копирование при записи не представляется возможным.
- Эффективная обработка разреженных областей / одинаковых значений - пустые / незаселенные области не должны потреблять ресурсы (чтобы учестьбольшие открытые пространства).Бонусные баллы, если он также эффективен при хранении больших «блоков» одинаковых значений
- Неограниченный - может расти в любом направлении по мере необходимости
- Быстрое чтение / поиск - т.е. может быстро получить объект (ы) в [x, y, z]
- Быстрый объем запросов , т.е. быстрый поиск в области [x1, y1, z1]-> [x2, y2, z2], в идеале использовать разреженность, чтобы пустые места быстро пропускались через
Какие-либо предложения по наилучшей структуре данных для использования?
PS Iзнаю, что это может быть не самый практический способ написания игры, я просто делаю это как учебный опыт и расширяю свои способности с помощью FP ......