Я начинаю делать свою 2D-игру/движок, но понятия не имею о лучшей архитектуре потоков для работы с клиентами на стороне сервера.Архитектура Threading для Gameserver
Первоначально, я думал о проекте «Нить за карту», а не о потоке за пользователя. Но есть еще один идеальный метод?
В моей концепции для нарезки карт поток будет создан только у входа игрока на карте и будет уничтожен вскоре после его опустошения. Но с этой концепцией карта со слишком большим количеством игроков (например, магазинов игроков) может вызвать сильное отставание.
С пользовательским подходом к потоку было бы большое количество потоков - и, следовательно, высокое выделение памяти.
Итак, есть еще один лучший способ сделать это?
Возможно, серверный пул потоков, с большим количеством пользователей, использует больше потоков, чем карты с несколькими. – lesderid
Попытайтесь переделать свою логику игры в какой-то конечный автомат, где вы можете просто вызвать 'map.Step()', чтобы продвинуть его из любого потока. Тогда вы можете легко переключаться между пулом потоков, небольшим фиксированным числом потоков или даже одним потоком. –
+1 для Кори «переделайте свою логику игры в нечто государственную машину» - немного сложнее, но вам нужна эта гибкость для сложного приложения. –