evilPaprika / withstand

Курсовой проект 2018 Ильиных, Зелинский, Белоруссова

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Withstand

Мультиплеерный top down шутер, написанный на движке Unity.

Члены проекта: Белоруссова Юлия, Зелинский Дмитрий, Ильиных Иван.

Суть игры

Выживать вместе с товарищами, обороняясь от орд зомби, и искать еду, чтобы не умереть с голоду.

Игры, которыми мы вдохновлялись

  • Cataclysm DDA
  • Hotline Miami
  • Left4Dead
  • Survivio
  • Devil Daggers
  • Project Zomboid
  • Factorio

Описание проекта

Проект представляет собой игру под названием “Withstand”, а именно, мультиплеерный шутер с 2D графикой, в который можно играть от 1 до 4 человек. За основу наша команда взяла тему зомби-апокалипсиса, фантастического катастрофического сценария, описывающего эпидемию, ведущую цивилизацию к коллапсу. Игрок, создавая новый хост(с англ. host - устройство, предоставляющее сервисы формата «клиент-сервер») или подключаясь по ip-адресу к уже существующему, появляется на определенной карте с различными игровыми объектами (GameObjects). Игровыми объектами могут быть:

  • игроки, которые находятся под управлением других людей;
  • враждебные существа, цель которых - убить всех игроков, попадающих в область их видимости;
  • ящики, из которых может выпадать оружие или вещи, необходимые для выживания, такие как еда, которая может утолить голод, вода, утоляющая жажду, и аптечки, чтобы излечить раны и пополнить здоровье игрока;
  • деревья, служащие укрытием от вражеских снарядов.

Для хоста карта генерируется случайным образом. Различное расположение деревьев, лесов, ящиков и врагов. При подключении клиента к хосту происходит синхронизация игрового мира, то есть все игровые объекты, находящиеся на поле сервера, загружаются на поле клиента. Цель игры - выживать, собирая еду и воду и убивая врагов из любого типа оружия. На данный момент в игре присутствует 4 вида оружия (кулаки, пистолет, автомат, дробовик) и 2 вида врага (обычный зомби и зомби-маг), где у каждого объекта своя форма физического боя (ближний или дальний). В течение времени, проводимого в игре, количество врагов увеличивается и они становятся сильнее. Это делает игру более сложной и позволяет сохранять динамику.

Точки расширения

  • Creature.cs // создание новых, возможно, нейтральных персонажей;
  • Enemy.cs // (наследник от Creature) создание новых вражеских существ;
  • Item.cs // создание новых вещей (оружие, броня и прочее);
  • Generator.cs // генератор объектов мира;
  • PickUps.cs // абстрактный класс описываюший поднимаемые объекты;
  • SliderHandler.cs // навешивается на любой слайдер, и его становится легко изменять;
  • Indicator.cs // индикатор состояния объекта, можно сделать сколько угодно для одного объекта;
  • Projectile.cs // описывает абстрактный метательный снаряд
  • WeaponItem.cs // абстрактное оружие

DI-Containers:

DI-Container'ы в Unity используются редко, и в данной задаче их использование излишнее. Injection Dependency - это инверсия шаблона управления. Unity опирается на компонентный шаблон, в котором используется шаблон Service Locator, который также является инверсией шаблона управления. GetComponent, FindObjectOfType - примеры использования Service Locator.

Общая структура решения

Движок Unity уже частично предоставляет модель структуры. Например, сцены предоставляют возможность cодержать в себе игровые объекты и элементы интерфейса. Основная часть логики - это скрипты, которые позволяют задать взаимодействия между игровыми объектами или сделать желаемый функционал.

About

Курсовой проект 2018 Ильиных, Зелинский, Белоруссова


Languages

Language:C# 100.0%