Вопрос: Сколько предметов может хранить сервер в игре?

Лучший ответ: Во-первых, ознакомьтесь с моделью памяти C#, как работает сборщик мусора, какие есть кучи, как они заполняются и опустошаются, как работать с IDisposable, using, и оборачивать unmanaged ресурсы.

Потому что на самом деле есть выбор: делать сервер на .Net либо на LLVM. В принципе, на LLVM garbage collector свой, и напридумать модно много чего интересного.

Во-вторых вам нужно разобраться в архитектуре ОС. Дело в том, сервер не может "рухнуть" из-за каких-то абстракций, он может начать захватывать слишком много памяти, и в зависимости от настроек ядра и окружения вашего Linux, в котором запущен процесс сервера, могут происходить разные вещи, которые ограничены лишь с вашими желаниями.

Но стоит так же упомянуть, что в зависимости от выбранной стратегии обработки соединений

 ( а относительно игровых движков, это просто сводится к названию используемых библиотек)

1 инстанс сервера может держать 100к соединений, но ваш игровой room может обслуживаться и многими   нодами, не обязательно одной. Более того, у вас может быть не одна nosql база данных, а целый кластер. 

Другими словами, вам стоит ознакомится с концепциями ACID, кластеризацией и микросервисной архитектурой. В завершение можете почитать про Kubernetes.

Когда вы проработаете эти темы, вы сможете уточнить свой вопрос до конкретных технических требований и сами сможете на него ответить.

PS: Касательно максимума соединений к абстрактным коням в вакууме, считается, что один демон, держащий 10к соединений - это граница highload. В конкретных цифрах обычно все сводится к доле процессорного времени за интервал допустимой задержки ответа сервера на конкретной платформе включая конкретное железо и конкретную сетевую карту + тесты доступа из точек по всей планете.

Худший ответ: К примеру мы знаем что палка будет в рюкзаке, либо валяется на земле и их может быть сколько угодно.
Если игра трехмерная, то пусть для простоты координаты палки будут выглядеть как список из 3х точек XYZ

Каждая точка в зависимости от точности, занимает разное кол-во памяти:
float это 4 байта, для double 8 байт

Возьмем к примеру меньшую точность float, чтобы сэкономить память, тогда координаты одной палки займут:
XYZ *4 байта = 12 байт

У палки есть id, пусть он будет integer 2 байта от 0 до 65536 (256 byte * 256 byte) т.е. разновидностей предметов в игре у вас будет максимум 65536, это не мало.

Дано 100000 игроков
Размер рюкзака 0-255 (максимум 256 предметов)
Рюкзак это список предметов с их id, к примеру:
id 1 = палка
id 390 = лопата
id 27 = яблоко
будет выглядеть как: [1, 390, 27]

Если все палки лежат у игроков:
100000 * 256 * 2 байта (id палки) = чуть более 50 мегабайт

Если все палки лежат на земле:
100000 * 256 * 2 байта (id палки) * 12 байт (XYZ) = чуть более 600 мегабайт

Можно сделать хак и описать координаты палок как квадраты на местности, к примеру у вас есть карта:
16 * 16 километров = 256 км² (1000000 м²) каждый квадрат = 1 км²
1000000 / 256 = каждый квадрат 62.5 x 62.5 метров
/ 256 = каждый квадрат 3.9 x 3.9 метра, как туалет в макдоналдс
/ 256 = 20 x 20 см

В итоге чтобы запомнить в каком квадрате лежит палка мы уложились в 4 байта [255,255,255,255].
id первого квадрата = [0,0,0,0]
id последнего квадрата [255,255,255,255]
Расположить ее на оси Z, чтобы не хранить высоту уже дело техники.

Теперь если все игроки выкинут свои палки на землю, то это займет:
100000 * 256 * 2 байта (id палки) * 4 байта (квадрат) ~  205 мегабайт, если все держать в памяти, то с этим справится любой сервер за $5.

Любые вопросы в комменты.