Хотя Python определенно можно использовать для асинхронного программирования, он не выглядит естественным, даже с Twisted, если сравнить его с Node.js, он просто не выглядит или не чувствует , что приятно.
Поскольку вы планируете делать веб-игру в реальном времени, вы, скорее всего, в конечном итоге будете использовать WebSockets .
WebSockets основаны на HTTP и используютОбновите заголовок, чтобы инициировать двунаправленное соединение, это означает, что вы можете легко использовать как обычный сервер , так и , чтобы ваши WebSockets работали на порте 80, если вам нужно много запасных вариантов для поддержки старых браузеров, тогдавсегда есть всемогущий Socket.IO .
В зависимости от сложности вашего внешнего интерфейса, я бы предпочел пойти с express.js или просто написать свой собственныйstuff.
Наличие как внешнего интерфейса, так и игры в одном и том же процессе имеет (очевидно) множество преимуществ, вы можете получить много информации без необходимости запрашивать базу данных.
Anotее большая «особенность» заключается в том, что вам не нужно переключаться между логикой клиента и логикой сервера.Поначалу это может показаться небольшим преимуществом, но помимо того факта, что вы не наберете ;
в Python и не забудете свой {}
в JS после непрерывной работы с обеими сторонами в течение нескольких часов, вытакже сможет повторно использовать код между сервером и клиентом.Опять же, на первый взгляд это может показаться небольшим преимуществом, но в хороших многопользовательских играх на клиенте всегда много работы, просто чтобы компенсировать отставание, также Python и JavaScript сильно отличаются друг от друга, поэтому приходится переписывать части JSв Python требует времени и может даже вводить ошибки.
(Теперь о бесстыдных штекерах ...)
Я провел 2 многопользовательские игры с Node.JS уже есть, хотя у него нет HTTP-интерфейса. Обе игры запускают на клиенте довольно много JS:
Многопользовательские астероиды / Geometry Wars Crossover
RTS Concept (немного похоже на Eufloria)
Кроме того, хотя JSON, кажется, идеально подходит для передачи данных между браузером и клиентом, вы скоро обнаружите, что он использует тонну полосы пропускания, поскольку я столкнулся сту же проблему я написал в какой-то специализированной библиотеке, которая экономит до 45%
трафика:
BiSON.js
Опять-таки, наличие JavaScript на сервере и Клиnt позволяет повторно использовать код и, следовательно, сэкономить время разработки.
Итак, чтобы подвести итог, я настоятельно рекомендую перейти к Node.js:
- Повторно используемый код,меньшее переключение контекста, следовательно, более короткое время разработки
- V8 во многих случаях быстрее , чем Python.
- Нет проблем параллелизма, по умолчанию все асинхронно.
- Node.js - следующая большая вещь, прыгайте на подножку.
- Это JavaScript!;)