2.5D игра
Идея игры: "Заброшенные земли"
Описание игры:
Игрок оказывается в открытом мире, наполненном таинственными событиями и ужасами. Цель игры - исследовать просторы местности, раскрывать тайны и побеждать ужасы, что поджидают в каждом уголке
Функционал:
- Геймплей:
Игрок будет свободно исследовать различные локации на открытой местности, такие как леса, поля, горы и болота. На пути игрока будут встречаться различные ужасы и опасности, от преследующих монстров до аномальных явлений. Цель игры - раскрыть тайны местности и найти способы защиты или выживания
- Управление:
Игрок будет управлять персонажем с помощью клавиатуры или геймпада, перемещая его по открытой местности и взаимодействуя с объектами
- Алгоритмы:
Легкий алгоритм:
Реализация алгоритма перемещения персонажа по местности и взаимодействия с объектами
Средний алгоритм:
Реализация алгоритма управления поведением ужасных существ или явлений (например, случайное появление или преследование игрока)
- Архитектура проекта:
Использование архитектурного паттерна MVC (Model-View-Controller) для разделения логики игры, ее отображения и управления пользовательским интерфейсом. Реализация модели для хранения данных о состоянии персонажа, объектов местности и текущих заданиях. Использование ViewModel для управления взаимодействием между моделью и представлением (визуализацией на экране) и обработки пользовательских действий
- Креативность:
Разнообразие местности с уникальной атмосферой и характеристиками, каждая из которых скрывает свои тайны и опасности.
Различные виды ужасов и монстров, каждый со своими особенностями и способностями.
Возможность влиять на окружающий мир и развивать персонажа, чтобы противостоять всем ужасам и выжить
- Настройка готового проекта
- Управление и меню
- Полезные команды
- Полезные ссылки
- Структура проекта
- Требования к проекту
- Версия Python: 3.11.8
- После скачивания проекта к себе на компьютер не забудьте установить необходимые зависимости, прописав к консоли команду:
pip install -r requirements.txt
При запуске игры (python main.py) открывается главное меню:
- Single Player - одиночная игра
- Host Game - создать сервер и начать игру (другие могут подключиться)
- Join Game - подключиться к существующему серверу
- Exit - выход из игры
Навигация в меню:
↑/↓- перемещение по пунктам менюEnter- выбор пунктаESC- выход
W/A/S/Dили стрелки - перемещение персонажаE- подобрать предмет (когда рядом с ним)ESC- пауза (открывает меню паузы)- Клик мышью по слоту инвентаря - выбрать активный слот
- Resume - продолжить игру
- Main Menu - вернуться в главное меню
- Exit - выход из игры
Как играть вдвоем на одном компьютере:
- Игрок 1: выбирает Host Game
- Игрок 2: запускает игру отдельно и выбирает Join Game
- Оба игрока видят друг друга и могут играть вместе
Как играть по сети (разные компьютеры):
- Узнайте IP адрес компьютера-хоста:
- Windows:
ipconfigв командной строке - Linux/Mac:
ifconfigилиip addr
- Windows:
- Хост выбирает Host Game
- Другой игрок выбирает Join Game и подключается к IP хоста
- Порт по умолчанию:
5555
Технические детали:
- Используется Client-Server архитектура
- Протокол: TCP (надежная доставка)
- Частота обновлений: 20 Hz (20 раз в секунду)
- Синхронизируются: позиции игроков, направления взгляда
- Сохранить список зависимостей в файл requirements.txt:
pip freeze > requirements.txt - Отобразить зависимости в консоль:
pip list - Удалить файл из контроля версий:
git rm --cache [путь до файла] - Удалить все зависимости:
pip uninstall -y -r requirements.txt - Установить зависимости:
pip install -r requirements.txt
Waste_lands
├── assets/
│ ├── sounds
│ └── sprites
├── data_for_readme/
├── mvc
│ ├── controller/
│ │ ├── a_star.py
│ │ └── utils.py
│ ├── model/
│ │ ├── enemy.py
│ │ ├── inventory.py
│ │ ├── items.py
│ │ ├── perling_noise.py
│ │ ├── player.py
│ │ └── world.py
│ └── view/
│ └── menu.py
├── tests
│ └── sprites_load.py
│
├── config.py
├── main.py
├── README.md
├── requirements.txt
└── settings.py
- Игра должна быть написана на PyGame
Технические - 45:
-
Соответствие разобранным принципам программирования (за весь первый курс, включая то, что было на парах): SOLID, DRY, KISS, и другим, ООП/ФП: 10 баллов
-
Сложность алгоритмов: 15 баллов
Алгоритма нет: 0%.
[✓] Легкие алгоритмы. Примеры: алгоритм давался на парах, AABB (Axis-Aligned Bounding Box): 20%
[ ] Средние алгоритмы. Примеры: оптимизация алгоритма с пар (улучшенный BFS/DFS, A* и т.д.): 40%
[ ] Все, что сложнее и комплекснее (QuadTree, дерево решений, Perlin noise и т.д.): 60+%
Надо понимать, что выполнив 2 алгоритма с пар вы не получите 40*2%, но немного доп.баллов при хорошей реализации и защите получите.
Примеры дают ориентировочный уровень сложности алгоритма.
Все остальное зависит от сложности алгоритма, его реализации, вашего понимания.
-
Корректная, обоснованная реализация архитектуры проекта: MV*/ECS/EC/альтернативы: 15 баллов.
-
Полноценность проекта: работоспособность, удобство, производительность, целостность (внешняя и внутренняя) и прочее: 5 баллов Нетехнические - 5:
-
Красивости и прочее креативное: 5 баллов
- Безосновательное использование библиотек/списывание и т.д. - минус баллы. Пример безосновательного использования библиотек: ничего/почти ничего не реализовано в проекте самостоятельно, все на основе библиотек.