Об этом проекте

Python Game Server — это легковесный сервер и фреймворк для пошаговых многопользовательских игр. Он ориентирован на настольные и карточные игры, а также на учебные курсы по программированию, где студенты реализуют клиентов или новые игры. Ключевые возможности, описанные в README: - Автоматический подбор соперников или явное присоединение к сессии - Гибкий, игронезависимый API - Фреймворк, скрывающий от программиста сложность многопользовательского взаимодействия - Добавление новых игр путём наследования от базового класса и переопределения нескольких методов - Интеллектуальные обновления состояния, позволяющие избежать опроса - Опциональная поддержка TLS - Требуются только базовые навыки Python Быстрый старт: запустите сервер (server/game_server.py), затем запустите два клиента (client/tictactoe_client.py). Единственное требование — обычная установка Python. Клиентский API: модуль client/game_server_api.py позволяет клиентам запускать игровую сессию и присоединяться к ней, отправлять ходы, получать состояние игры и перезапускать игру в текущей сессии. В README показан игровой цикл TicTacToe с использованием GameServerAPI с параметрами server, port, game, session и players, а также вызовами join(), state() и move(**kwargs) и исключением IllegalMove. Добавление игр: создайте модуль в server/games/, реализуйте класс, производный от AbstractGame, переопределите необходимые методы и зарегистрируйте его в server/games_list.py. Шаблон предоставлен в server/games/template.py. Для новых игр API не требует изменений; ходы принимают произвольные именованные аргументы, а состояние игры возвращается в виде словаря. Работа сервера: отредактируйте IP и порт в server/config.py, где можно настроить и другие параметры, включая TLS. Для запуска в качестве службы предоставлен файл unit для systemd. Вики проекта содержит справочник по API, рекомендации по реализации клиента и заметки по эксплуатации сервера. Предыстория проекта: разработан для курса программирования, где студенты изучают Python как первый язык и работают в небольших группах. Фреймворк и API спроектированы так, чтобы достаточно было базовых навыков программирования, хотя использование не ограничивается образованием. Вклад приветствуется через pull requests, issues или discussions. Лицензия GPLv3, copyright 2025, 2026 Fabian Eberts.