Skip to content

dfbakin/COVIDcover

Repository files navigation

COVIDcover

Игра с многопользовательским режимом на pygame

Лирическое отступление

Сейчас мы живем в непростое время. В такие моменты более всего необходима сознательность, сосредоточие и сострадание. Именно эти качества вы можете проверить в нашей игре. Также вы узнаете правила поведения при эпидемии, поймете некоторые простые вещи, которые защитят и Вас, и Ваших близких. Более того, в нашей игре предусмотрен многопользовательский режим, где вы сможете примерить на себя одну из ролей: полицейского, волонтера или обывателя.

Использованные технологии

Игра предназначена для python версии 3.6 и выше. Для разработки использовались:

  • pygame(собственно, для самой игры)
  • socket(для создания сервера многопользовательского режима)
  • pyinstaller(для сборки PyQT5 на windows)
  • cx_Freeze(для сборки pygame на windows)
  • flask(а также flask-login, flask-wtf, werkzeug, SQLAlchemy, SQLAlchemy-serializer, WTForms. Для сайта игры и API сервера)
  • PyQT5(для создания лаунчера-установщика)
  • threading(потоки, потоки, потоки. Как же без них :D )

Составляющие проекта

Проект состоит из нескольких частей:

  • Игра
    • папка multi_build для многопользовательской игры
    • main_build для одиночной
    • data для ресурсов
    • version.json - для обозначения версии игры
  • Сервер
    • файл server.py. Именно он заставляет игроков передавать информацию друг-другу для многопользовательской игры
  • Сайт и API сервер
    • место, откуда можно скачать игру, почитать правила. Также сайт необходим для работы многопользовательского режима. здесь хранятся данные об игроках, количество накопленных ими очков, а также список рабочих серверов. Благодаря сайту лаунчер понимает, куда нужно присоединиться, к какому серверу
  • Лаунчер
    • он и запускает игру, и обновляет её, и скачивает. Чтобы зайти в многопользовательский режим, нужно зарегестрироваться и войти либо через лаунчер (регистрацию можно пройти и на сайте).
    • проверяет файлы игры. Что-то потерялось или изменилось - заново устанавливает игру

Об игре

Основной режим игры - многопользовательский. Сингл тоже есть. При подключении игрок получает одну из 3 ролей (модель поведения, которой он будет придерживаться во время игры). Вот краткие цели для каждой группы персонажей:

  • Обыватель.

Каждому жителю города необходимо пройти тестирование на зараженность коронавирусом. Это возможно сделать при входе в здание больницы, выбор соответствующей опции доступен на внутреннем терминале. После получения результата игрок должен прочитать рекомендации по профилактике или предписание по защите от коронавируса. Затем игрок может либо свободно перемещаться по карте (при отрицательном результате), либо должен оставаться дома и соблюдать режим самоизоляции. Во время нахождения дома игрок может сделать заказ продуктов и лекарств, используя соответствующий терминал. Необходимо помнить, что заражение продолжается только при нахождении вне дома. Вероятность заражения=100% - это факт заражения.

  • Полицейский.

Эти герои зараженного города призваны поддерживать порядок в городе, следить за соблюдением режима самоизоляции граждан. У каждого полицейского есть встроенная автоматическая система, которая показывает статус жителей, находящихся поблизости. Зеленая метка означает, что тестирование показало отрицательный результат. Красная – положительный результат, предписана самоизоляция. Серый – житель не прошел тестирование. При обнаружении нарушителя полицейский может задержать его, кликнуть на зараженного 10-12 раз за 5 секунд.

  • Волонтер.

Эти бескорыстные люди считают свои долгом помогать жителям на самоизоляции. Они могут просматривать и выбирать заказы в своем офисе. Затем они должны выполнить этот заказ в течение ограниченного времени. Доставка заказа осуществляется до порога, то есть необходимо выбрать имя заказчика на терминале при входе в жилой дом. Таким образом, этот режим игры призван донести важность соблюдения самоизоляции и мер предосторожности.

Благодаря разделению на роли, у каждой группы разные стратегии победы, но есть и общие моменты. У каждого игрока есть набор параметром, которые меняются со временем, это голод, здоровье, зараженность и 2 счета: наличный и безналичный. Интересно, что:

  • чем меньше здоровье, тем быстрее растет заражение (дает мотивацию «беречь здоровье» и двигаться осторожно)
  • из-за слишком высоких прыжков здоровье уменьшает (о силе прыжка можно судить по переменной гравитации игрока в нижней точке прыжка)
  • чем меньше здоровья, тем медленнее возможно передвигаться (элемент реализма)
  • если игрок ближе чем на некотором расстоянии (~1,5 метра) от других жителей, то зараженность растет быстрее в зависимости от количества жителей
  • если игрок съедает слишком много (уровень сытости выше допустимого), то за единицу времени вычитается не 1, а 10 сытости. Это симуляция переедания.

Здоровье и сытость можно повышать, а зараженность понижать. Для этого необходимо использовать товары (еду для сытости и здоровья, например). Поскольку целью игры является заработок наибольшего количества денег (на карте, а не наличными, так как пользоваться купюрами и монетами может быть опасно), в COVIDcover реализована симуляции удаленной офисной работы. В хозяйственном магазине (там есть компьютерный отдел) можно купить 3 программы для своего планшете (он в доме): Словесник, Табличник и Картиночник. Каждая программа имеет различный интерфейс, но все дают очень заметный буст к заработку. При простой покупке программы коэффициент заработка за игровую единицу времени увеличивается, то есть при нахождении дома и бездействии все равно будет прибыль. Каждая программа дает свой буст. Каждая программа дает больший буст при ее запуске, что дает мотивацию для работы на карантине.

Словесник

В этой «программе» (формат мини-игры) нужно вводить слова с клавиатуры. При верном наборе идет начисление денег, при ошибке - небольшое списание. Эта игра симулирует работу с докладами, тестами, статьями, которая является незаменимым навыком при самоизоляции.

Табличник

Это тренажер для развития устного счета, симулирует работу с таблицами и произведение расчетов. В этой игре нужно посчитать математическое выражение, которое генерируется случайно, и нажать на правильный ответ. Механизм вознаграждения такой же: добавление денег при правильном ответе и штраф при неверном расчете.

Картиночник

Это симулятор презентаций, выполненный в формате кликера, где за каждый верный клик по картинке дается вознаграждение и выводится ободряющая реплика от программы. Один из жанров игры – платформер. Так мы решили дать простор для движения. Мы сделали путь до зданий более длинным и сложным, дали возможность преследования игрока по альтернативным путям. Более того, прыжки по некоторым платформам крайне сложны! Очень немногие могут много прыгать по ним и не терять здоровье.

Важные вещи

Вы вряд ли сможете запустить и сайт, и сервер на локалке, т.к. там нужно проделать кучу действий. Прежде всего это связано с тем, что данные проверяются с сайта, адрес которого хранится внутри .py/.exe файла. Если Яндекс.Облако не упало, то всё будет работать. Тогда адрес сайта нужно менять на localhost. Также, если вы хоть что-то измените в папке "COVIDcover" ИГРА ПОЛНОСТЬЮ ПЕРЕУСТАНОВИТСЯ. Это было сделано нарочно, чтобы никто не смог менять код игры, изменяя характеристики и ломая геймплей. ЗАПУСКАЙТЕ ИГРУ ЧЕРЕЗ ЛАУНЧЕР! Иначе игра просто не запустится :). Мы кинем отдельно вам код, его можно изучить. Комментарии к коду находятся в multi_main.py, именно по этим комментам можно понять, как работает single режим. Развлекайтесь!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published