Сколько из этих строк обычно требуется игроку за сеанс? При каждом запросе к серверу возникают большие дополнительные издержки, поэтому, если вы ожидаете, что длительные сеансы, отправка лота в первую очередь может оказаться самой легкой задачей.
Что касается данных, если размер имеет значение, пропустите JSON и сложите его самостоятельно, в вашем примере вы получите больше служебной информации, чем данные. Все ключи в вашем примере выглядят как вещи, которые можно пропустить, если только вы сохраните свои данные в правильном порядке.
Обновление:
Вы отвечаете менее чем на сотню, я думаю, что это будет предел, когда оба подхода стоят примерно одинаково. Однако отправка партии может обеспечить более плавный игровой процесс, особенно на соединениях с высокой задержкой, хотя и за счет более длительного начального времени загрузки.
Бездействие с упаковкой данных на самом низком уровне может в глазах большинства разработчиков быть мертвой дисциплиной (вполне справедливо сказать, что я просто не смог найти руководство по этому вопросу для публикации здесь), но факт для каждого Вы можете вырезать байт из данных одной строки, вы можете вырезать от 5 до 10 КБ из всей коллекции, и есть много байтов, для удаления которых не потребуется много работы.
Для того, чтобы сократить большую часть жира, не делая реализацию большой работой, я бы порекомендовал что-то вроде этого:
Поместите все данные в один массив, для каждой строки используйте две строковые записи в массиве, одну для текстовой строки, затем одну для всех метаданных, закодированных как одна строка. Например, вы можете написать каждое требование в виде двух символов: первый обозначает тип требования, второй - его значение, поэтому, если вы ограничиваете себя использованием только цифр и букв, у вас может быть до 62 типов требований, каждое из которых имеет одно из 62 возможные значения, и они будут стоить всего 2 байта за штуку.