На данный момент у меня есть система, в которой я записываю состояние геймпада в структуру и сохраняю это в списке состояний для записи ввода в течение продолжительности видеоигры. Полное состояние пэда занимает 192 бит на фрейм, но это немного расточительно. Например, если аналоговые триггеры на пэде не нажаты, они по-прежнему принимают 32 бита вверх, каждый, в хранилище. Поэтому я, очевидно, хочу сэкономить место.Способ избежать потери памяти
Я попытался установить это значение в NULL, но, похоже, не влияет на размер двоичного файла, который система сохраняет в конце матча.
Какие альтернативы доступны в ситуации, когда вам нужно только записать или сохранить определенные значения, но сохранить целостность структуры данных?
EDIT:
Я думаю, что я нашел решение; . Раньше я пытался установить значения в NULL, переопределив стандартный float с помощью System.Nullable в структуре. Моя идея состоит в том, что установка этого значения NULL в структуре будет сериализоваться намного меньше. У меня создается впечатление, что NULL записывается как 4 бит. Возможно, это возможно. Во всяком случае, код, который у меня был раньше, имел довольно очевидную ошибку, поэтому я вернулся и исправил его снова. Теперь я получаю гораздо более мелкие повторы, и точность кажется такой же хорошей, поэтому я собираюсь предположить, что обман NULL делает что-то правильно.
Проблема, с которой я периодически сталкивалась, заключается в том, что я сохраняю двоичный файл. Я могу использовать режим Append для записи в файл, но он не воспроизводится должным образом; он останавливается в точке, в которой происходит первая запись, и после этого ничего не играет. Кроме того, я обнаружил, что прилагаемый файл был огромным. Это все еще очень много работает; Я просто пытаюсь сгладить изломы по одному. –
Что-то вроде функции повтора - утомительная работа, потому что самые слабые ошибки испортили все остальное. Если у вас возникли проблемы с потоком и записаны на диске, чередуйте поток данных с метаданными и информацией об отладке, это поможет вам найти проблемы с обнаружением. Если вы очень хотите получить то, что вы вложили в этот поток, количество данных будет очень быстрым, это 60 FPS, но вам также нужно запустить цикл ввода игры с такой скоростью? Часто буферизованный входной подход с более низкой частотой дает столь же хорошие результаты, но при меньших затратах. –
Система, которую я делаю сейчас, на самом деле является доказательством концепции, которую я собираю для своей диссертации. Метод записи, который у меня есть на минуту, отлично работает, но, очевидно, есть улучшения, которые можно было бы сделать и обсудить по этому вопросу. К сожалению, входная запись для повторов, по крайней мере, с точки зрения игры, немногочисленна и далека от того, что я нашел, были довольно расплывчатыми, так что я сильно колотил в темноте. Я посмотрю, как уменьшить скорость обновления игры; спасибо за идею. –