Форум сайта python.su
Привет, я только начал вникать в питон и задался вопросом как можно реализовать игровой сервер на питоне? Подходит ли django для этого? Как бы выглядел код для реализации реалтайм игры, например пошаговый бой двух игроков?
Офлайн
смотрите в сторону асинхронных фреймворковс поддержкой вебсокетов (если веб)
crossbar.io (twisted), asyncio, tornado и тп
в джанге будут большие задержки, но если очень хочется, можно глянуть http://channels.readthedocs.org/en/latest/ (скоро будет включено в джангу) или всякие socketio обёртки, http://swampdragon.net/ и тп
Отредактировано slav0nic (Дек. 27, 2015 13:28:31)
Офлайн
qVadroДа не совсем ясно что вы имеете ввиду. Это веб? Можно ведь сервер и просто поднять для общения обычных приложений.
игровой сервер на питоне?
Офлайн
doza_and
Имел в виду игровую логику, синхронизацию действий пользователей для мультиплеера. Не обязательно веб игры. Для мобильной или десктопной тоже, общий
Офлайн
qVadro
Подходит ли django для этого?
qVadrodjango вам наверное не нужен. Один из простых способов синхронизации для не очень динамичных игр это уведомления от СУБД хранящей игровые данные. Посмотрите http://docs.sqlalchemy.org/en/latest/core/event.html
Не обязательно веб
Офлайн
doza_and
через бд не подходит, хочется разобраться с решением побыстрее, как бы это выглядело на питоне. Допустим нужно начать забег 3-4 игроков в игре “раннер”. Каждый игрок видит всех игроков в забеге и его перемещения, к примеру игра Ninjump Dash. Я бы хотел увидеть набросок кода как это можно реализовать. Я так понимаю при поиске соперников происходит поиск по временным таблицам с начинающимися сессиями, а при нужно количестве игроков происходит начало сессии игровой, но как бы это выглядело в коде пока не понимаю
Офлайн
qVadro
ну тогда Twisted + redis/что-то подобное
из примеров http://bazaar.launchpad.net/~game-hackers/game/trunk/view/head:/gam3/network.py twisted+pygame (старый код)
https://pygnetic.readthedocs.org
http://www.pygame.org/tags/server (+теги multiplayer, network)
https://github.com/marcusmoller/pyorpg-server/blob/master/src/server.py (автор похоже имеет поверзностное понимае про асинхронный подход)
правда для pygame всё старое и уровень входа в twisted считается высоким
Отредактировано slav0nic (Дек. 28, 2015 13:45:20)
Офлайн
qVadroНадеюсь это означает что вы хотите более быстродействующую технологию а не побыстрее с этим разделаться.
хочется разобраться с решением побыстрее
import Pyro4 class GameServer(object): def register_user(self, userdata): .... return user_id def logout_user(self, user_id): ..... def process_actions(self,user_id,action_list): ..... def send_scene(self): ..... daemon = Pyro4.Daemon() # make a Pyro daemon ns = Pyro4.locateNS() # find the name server uri = daemon.register(GameServer) # register the GameServer as a Pyro object ns.register("example.GameServer", uri) # register the object with a name in the name server print("Ready.") daemon.requestLoop()
import Pyro4 class Player(object): def register(self, userdata): .... return user_id def logout(self, user_id): ..... def send_actions(self): .... def set_scene(self,scene_data_changes): .... ......
Отредактировано doza_and (Дек. 28, 2015 20:17:38)
Офлайн
doza_and
Спасибо большое за пример.
Что будет с графикой? Тоже питон?Я абстрагируюсь от клиента, меня просто интересует серверная часть. Графику и с cdn скачать можно
Офлайн