pro100chel
@pro100chel
Python && PHP Developer

Как организовать сервер на питоне для онлайн игры?

Хочу сделать игру. Игра - шутер. Сервер будет написан на Python.

Максимальное количество игроков в одной сессии - 60.

Как организовать работу сервера?
В секунду от каждого клиента отправляется 30 запросов.

Мой вариант такой: каждая сессия == один поток.
В потоке сервер уже получает пакеты от пользователей.

Просто можно еще по-другому: для каждого пользователя свой поток, но я не понимаю, как передавать данные из одного потока в другой, не руша производительность.

Я не знаю, правильно ли я думаю, поправьте меня.
  • Вопрос задан
  • 2631 просмотр
Пригласить эксперта
Ответы на вопрос 3
Tiendil
@Tiendil
Разработчик ПО.
Самое главное: не делайте многопоточность на Python, если она не завязана на обработку io. Потому что есть GIL и он не простит.

Можно делать по одному процессу на матч, но тогда будет перерасход по памяти, так как придётся дублировать статические данные в каждом процессе.

Возьмите любой современный асинхронный фреймворк и пишите сервис, который может держать несколько матчей. Глобальные переменные тормаза не вызывают.

P.S. Судя по формулировке вопроса, вам может быть рано делать подобный проект, попробуйте уменьшить сложность задачи на порядок.
P.P.S. Тут правильно уже советовали: делайте как получается и обзовите это прототипом. Когда появится прототип, станут видны хорошие и плохие решения, можно будет разбираться в теме более предметно.
Ответ написан
Ternick
@Ternick
Для реализации того что вы хотите нужны глубокие знания, а если рассуждать то далеко не уйдёте :)
И делать сервер на питоне не самая лучшая идея для производительности игры :)
+++++++++++++++++++++++++++++++=
Слыхали что нибудь о асинхронном программировании,нет ?
+++++++++++++++++++++++++++++++=
Между потоками можно передавать информацию глобальными переменными :)
+++++++++++++++++++++++++++++++=
В вашем вопросе я бы сказал есть много разных штук которые вы не указали и это называется думай как хочешь :)
Ответ написан
@majstar_Zubr
C++, C#, gamedev
Сначала делаете как знаете = быстрее, потому что, чем быстрее технический прототип готов, тем быстрее исчезнут сферические кони.
На нем можно прикинуть максимум нагрузки, и сколько времени на каждого игрока получится выделить. Вообще направление мысли правильно конечно, но на каждого пользователя свой поток - это уже слишком.
Всегда никто не знает, какой в итоге выйдет игра, может и так выйти, что всего 60 игроков инстанс держать сможет, если хорошенько намакаронить, а там уже речь о 60 потоках идти не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы