Зарегистрировать учетную запись 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Зарегистрировать учетную запись



Введение

Цель

Проект Mavirea представляет собой многопользовательскую игру - стратегию в реальном времени.

Область действия

Документ разработан в рамках проекта Mavirea на основе стандартного шаблона Inteks SEP и предназначен для использования студентами ФФ и преподавателями курса ООАД.

Определения и сокращения

 

Таблица 1: Определения и сокращения

Термин Описание
Карта Прямоугольное игровое поле с Unit
Игровой стол Загруженная карта группой игроков
Unit Боевая единица, имеющая HP
Link Связь двух Unit для передачи HP
HP Здоровье
Чат Средство обмена сообщениями в реальном времени
Honor Очки чести, которые получает игрок по результатам сражения
RTS Стратегия в реальном времени
Nick Уникальное имя пользователя

 

Ссылки

В тексте содержатся ссылки на следующие документы:

[1] https://goo.gl/95jvGc - стратегия в реальном времени

[2] https://goo.gl/hpwMOJ - игра «Tentacle Wars»

[3] https://goo.gl/ZPRGxv - игра «Eufloria»

[4] https://goo.gl/Oz0sib - игра «Solarmax 2»

Ссылки приводятся в виде [N], где N – номер документа в вышеприведенном списке.

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

Существует множество подобных игр, но обладающих целым рядом недостатков:

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

· Игровое развитие ограничено

· Эти проекты не развиваются

Будущий программный продукт позволит игрокам:

· Сыграть в любимую игру с друзьями

· Посоревноваться с другими игроками

· Расширятся возможности игровой механики

 

Описание предметной области и проблем, для решения которых предназначен будущий программный продукт, приведены в разделе 2.

Раздел 3 содержит описание требований к программному решению, раздел 4 – описание архитектуры выбранного решения.

Предметная область проекта

Наша игра в жанре RTS[1]. На старте unit на игровом поле распределяются между игроками, некоторые unit могут быть нейтральными. Каждый unit имеет очки HP. Как только появляется надпись старт, вы можете начинать действовать, также у ваших unit начнет генерироваться HP. Для того чтобы захватить unit противника вам необходимо создать Link между вашим одним или несколькими unit и вражеским unit. Link передает очки HP, таким образом при направлении Link на свой unit его HP будет пополняться, а если Link направить на вражеский unit, то его HP будут уменьшаться. Link может быть разорвана, тогда происходит быстрое возвращение очков HP. В случае, когда у вражеского unit закончились HP, то управление этим unit перейдет к игроку нанесшему добивающий урон. Сражение происходит до того момента пока не будут захвачены все вражеские unit на игровом столе.

Примеры похожих игр: концептуально похожая: [2], идейно схожие: [3], [4].

Существующие проблемы

· Отсутствие многопользовательского режима у всех существующих вариаций этой игры.

· Ограниченный набор карт.

· Однотипное компьютерное поведение.

· Отсутствует система рейтинга в игре.

Решения:

· Создание многопользовательского режима.

· Создание генератора карт.

· Создание редактора карт.

· Создание системы рейтинга игрока.

· Ведение статистики учетной записи.

· Статистика сражения.

· Создание системы общения в игре.

· Игровые события.

 

Предполагаемое решение

Проблема разнообразия в игровом процессе решается путем интеграции многопользовательского режима.

Будет создана система расчета Honor игрока.

 

Требования к программному решению

Данный раздел описывает требования к программной системе, разрабатываемой в рамках проекта Mavirea.

Роли

В предлагаемой к разработке системе идентифицированы следующие роли:

1. Пользователь – человек, который взаимодействует с главным меню

2. Игрок – человек, который взаимодействует с игровым столом

3.2 Функциональные требования для роли Пользователь

 

Сменить учетную запись

Цель:

Зайти на конкретную учетную запись.

Предусловие:

Пользователь должен находиться в главном меню.

Сценарий:

Если эта учетная запись существует, и пользователь не аутентифицирован, то он выполняет сценарий «Аутентификация».

Альтернативный сценарий:

Если пользователь находится не в той учетной записи, то он выполняет сценарий «Выйти из учетной записи», после переходит на другой сценарий по условию ветвления.

Альтернативный сценарий:

Если этой учетной записи не существует, то пользователь выполняет сценарий «Зарегистрировать учетную запись», после переходит на другой сценарий по условию ветвления.

Выйти из учетной записи

Цель:

Выйти из учетной записи.

Предусловие:

Пользователь должен быть аутентифицирован.

Сценарий:

Пользователь нажимает кнопку «выйти из учетной записи» и в поле профиля престают отображаться данные о пользователе.

Аутентификация

Цель:

Войти в учетную запись

Предусловие:

Пользователь должен быть не аутентифицирован.

Сценарий:

Пользователь нажимает кнопку «войти в учетную запись». Всплывает новое окно с полями для ввода аутентификационных данных. Пользователь вводит корректные e-mail и пароль в специальные поля и нажимает кнопку «вход». Если вход выполнен, то пользователю сообщается о том, что вход выполнен, система входит в учетную запись и отображается поле профиля в меню

Альтернативный сценарий:

Если аутентификация по каким-либо причинам не произошла, то всплывает окно, которое сообщает о том, что вход не выполнен и причину ошибки. Пользователю необходимо вновь повторить этот сценарий.

Начать игру

Цель:

Запуск игрового стола.

Предусловие:

Пользователь должен быть аутентифицирован и находиться в главном меню.

Сценарий:

Выбрать игровой стол, или подключиться к столу друга, или создать стол.

Создать игровой стол

Цель:

Создать игровой стол.

Сценарий:

Выбираем карту и нажимаем «создать».

Использовать чат

Цель:

Прочитать или отправить сообщение.

Предусловие:

Пользователь должен быть аутентифицирован и находиться в главном меню.

Сценарий:

Выбираем вкладку по сценарию «Сменить вкладку», выполняем сценарий «Прочитать сообщение» для прочтения сообщения и выполняем сценарий «Отправить сообщение» для отправки сообщения.

Сменить вкладку

Цель:

Выбрать определенную вкладку чата.

Сценарий:

В окне чата выбрать нужную вкладку.

Прочитать сообщение

Цель:

Прочитать сообщение.

Предусловие:

Пользователь должен находится в нужной вкладке.

Сценарий:

Прокручиваем окно чата до нужного сообщения и читаем это сообщение.

Отправить сообщение

Цель:

Отправить сообщение.

Предусловие:

Пользователь должен находится в нужной вкладке.

Сценарий:

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

Создать вкладку

Цель:

Создать новую вкладку.

Сценарий:

Если пользователь хочет создать чат с конкретным пользователем, то он находит этого пользователя и сообщает ему о том, что хочет создать с ним чат, нажав кнопку «шепнуть». Создается вкладка с чатом этого пользователем.

Альтернативный сценарий:

Если пользователь хочет общаться с группой, то он вступает в эту группу и появляется вкладка с групповым чатом.

Пригласить

Цель:

Пригласить пользователя в группу.

Предусловие:

Если пользователь в группе, то пользователь должен быть лидером группы и в группе не должно быть приглашаемого пользователя.

Сценарий:

В поле «пригласить друга» набрать nick пользователя и нажать кнопку «Пригласить»

Распустить

Цель:

Распустить группу.

Предусловие:

Пользователь должен быть лидером группы.

Сценарий:

Нажать кнопку «Распустить группу»

 

Исключить из группы

Цель:

Исключить из группы.

Предусловие:

Пользователь должен быть лидером группы.

Сценарий:

Нажать кнопку «Исключить» напротив нужного игрока.

Выйти из группы

Цель:

Выйти из группы.

Предусловие:

Пользователь должен находиться в группе.

Сценарий:

Нажать кнопку «Покинуть группу».

Зайти в группу

Цель:

Зайти в группу.

Предусловие:

Пользователь должен получить приглашение.

Сценарий:

Нажать кнопку «Принять».

Альтернативный Сценарий1:

Нажать кнопку «Отклонить».

Просмотреть рейтинг Honor

Цель:

Посмотреть Honor учетной записи.

Сценарий:

Пользователь нажимает кнопку «Honor» и в поле ввода текста вводит nick нужного пользователя.

Альтернативный Сценарий1:

Свои очки Honor находятся в главном меню.

3.2.5 Функциональные требования для роли Игрок

Играть

Цель:

Победить.

Предусловие:

Пользователь должен находиться на игровом столе.

Сценарий:

Атакуем и защищаем. Если потеряны все Unit, то поражение. Если захватили все вражеские Unit, то победа.

Защищать

Цель:

Сконцентрировать силы на Unit.

Сценарий:

Направляем свои Unit на союзный Unit.

3.2.6.2 Атаковать

Цель:

Захватить Unit.

Сценарий:

Направляем свои Unit на вражеский Unit. Если здоровье Unit меньше нуля, то Unit переходит

к атаковавшему.

3.2.7 Просмотреть статистику сражения

Цель:

Посмотреть статистику.

Предусловие:

Пользователь должен находиться на игровом столе.

Сценарий:

Закончить игру.

 

3.3 Нефункциональные требования

· Игровое поле вмещается на экран без скроллов

· Чат должен занимать не более 1/3 экрана

· Отзывчивый интерактивный интерфейс

· Поддержка разрешений экрана

1. 1600х900

2. 800х600

3. 1280х720

· Платформа Windows c возможностью портировать на платформы Linux, IOS, Android, Mac OS X

 

 

Обзор архитектуры

Описание архитектуры системы.

Компонентная модель системы

Система состоит из 4 сборок. Из 2 библиотек и 2 приложений. В первую очередь собирается “SimpleTeam Lib”. После “GameOne Lib”, который зависит от “SimpleTeam Lib”. И 2 приложения, которые зависят от этих библиотек. Непосредственно 2 приложения представляют клиент и сервер.

SimpleTeam Lib

Базовая библиотека. Подразумевается, что она задает общий контракт, общее поведение всей системы. В дальнейшем можно написать другую клиент-серверную игру на основе этой библиотеки.

SimpleTeam.Command

Контракт команд системы. Команда получает в качестве параметра реестр параметров (всех классов), с которыми можно будет общаться. Команда изначально знает с каким классом она хочет взаимодействовать и просит класс по его ID (interface ITypeID). Если реестр не дал класс, значит по какой либо причине класс недоступен или данной команде отказано в доступе. (Последнее будет написано позже)

SimpleTeam.Command.Scenario

Контракт исполнения команд. Существует очередь исполнения команд и исполнитель. Исполнитель является независимым потоком. Исполнитель узнает от главного потока обо всех командных очередях, обо всех классах с которыми эти команды будут общаться. Хранит в себе реестр всех параметров, что и реализует данный контракт. Предполагается, что класс с которым можно взаимодействовать, хранит в себе командную очередь, которую может пополнять. Исполнитель в свою очередь опустошает ее. Может и не хранить очередь, если он является «читателем».

SimpleTeam.Main

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

SimpleTeam.Message

Протокол сообщений, при помощи сообщений клиент и сервер общаются. Каждый тип сообщения хранит в себе ID (interface ITypeID). В сообщении лежит список рассылки пользователей. Это означает, что внутренняя система всегда знает, от какого пользователя пришло сообщение. А интернет протокол всегда знает кому отправить это сообщение.

SimpleTeam.Network

Сетевой протокол, обертка над TCP протокол. TCP поток скрывается NetworkParser, поднимая на уровень пакетов. NetworkUserProtocol общается с NetworkParser, поднимая на уровень User.

SimpleTeam.SystemBase

Общие системные контракты. Паттерн машины состояний работающей на отдельном потоке, протокол ITypeID типов классов.

SimpleTeam.User

Сетевая и внутри игровая информация о пользователе. В дальнейшем будет переделан User протокол. Не сетевая информация должна находиться не в базовой библиотеке.

 

GameOne Lib

Библиотека конкретной игры. Реализация контрактов SimpleTeam Lib.

SimpleTeam.GameOne.Command

Конкретные команды и параметры для игры. Реализация общения классов.

SimpleTeam.GameOne.GameInfo

Информация о всех игровых объектах, которые требуется передавать по сети.

SimpleTeam.GameOne.Message

Полная реализация протокола сообщений.

SimpleTeam.GameOne.Scene

Определяет контракт сцен, с которыми можно при помощи команд взаимодействовать.

GameOne Client

Клиент игры.

SimpleTeam.GameOne.Main

Запуск приложения и ее поддержка. Реализация IMain из SimpleTeam Lib.

SimpleTeam.GameOne.Message

Контейнер сообщений для сцен. Хранит сообщения, пришедшие в сцену.

SimpleTeam.GameOne.Network

Реализация NetworkClientMachine. Полное поведение сетевого протокола со стороны клиента.

SimpleTeam.GameOne.Scene

По сути своей полная графическая система игры. Обработка всех пользовательских вводов. Отображение состояния приложения на экран. (Система не готова)

 

GameOne Server

Сервер игры.

SimpleTeam.GameOne.Data

База данных. Данные игроков, возможно состояние сервера и его логгирование.

SimpleTeam.GameOne.Main

Запуск приложения и ее поддержка. Реализация IMain из SimpleTeam Lib.

SimpleTeam.GameOne.Network

Реализация NetworkServerMachine. Полное поведение сетевого протокола со стороны сервера.

SimpleTeam.GameOne.Scene

Полная обработка логики игры со стороны сервера. (Система не готова)

Допущения и ограничения

При разработке проекта был плохо изучен\разработан сетевой протокол отправки данных. В связи с этим принято допущение, что у сетевого соединения нет больших задержек и соединение надежное, без разрывов. Иначе допускаются потери сетевых данных, потеря текущего системного состояния, вплоть до не корректной работы клиента. За исключением «бинарного сериализатора», «системы пакетов» и «системы сообщений» сетевой протокол потребуется переделать.

Плохо изученная\спроектированная GUI система. Существуют проблемы масштабируемости шрифтов (и т.п.) под разные разрешения, как следствие некорректное их отображение. GUI система стабильна, при учете стабильного сетевого протокола. В дальнейшем данную систему потребуется переделать.

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

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

Нет знаний по базам данных. Создана простая система базы данных. Ограниченная функциональность по сохранению данных игрока.

На данной стадии нет «суперпользователя». Сервер ни кем не администрируется.

 

Известные проблемы

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

Не администрируемый сервер

Проблема Сервер нельзя запустить\остановить\перезапустить и т.п.
Ранг 10 / 10
Влияние на проект Падение сервера и не возможность играть.
Пути решения Распределение и сокрытие прав пользователей. Создание суперпользовательского протокола.

 

 

Лист регистрации изменений

Дата Версия Описание Автор
       
       
       
       
       

 

[В качестве описания версии можно указывать какие изменения/дополнения были сделаны в этой версии по отношению к предыдущей.]

Лист регистрации проверок

Дата Версия Описание Автор
       
       
       
       
       

 

[Здесь описываются результаты проверки документа. Для каждой проверки указывается число, версия документа, описание результатов проверки и имя человека, который делал проверку.]

Введение

Цель

Проект Mavirea представляет собой многопользовательскую игру - стратегию в реальном времени.

Область действия

Документ разработан в рамках проекта Mavirea на основе стандартного шаблона Inteks SEP и предназначен для использования студентами ФФ и преподавателями курса ООАД.

Определения и сокращения

 

Таблица 1: Определения и сокращения

Термин Описание
Карта Прямоугольное игровое поле с Unit
Игровой стол Загруженная карта группой игроков
Unit Боевая единица, имеющая HP
Link Связь двух Unit для передачи HP
HP Здоровье
Чат Средство обмена сообщениями в реальном времени
Honor Очки чести, которые получает игрок по результатам сражения
RTS Стратегия в реальном времени
Nick Уникальное имя пользователя

 

Ссылки

В тексте содержатся ссылки на следующие документы:

[1] https://goo.gl/95jvGc - стратегия в реальном времени

[2] https://goo.gl/hpwMOJ - игра «Tentacle Wars»

[3] https://goo.gl/ZPRGxv - игра «Eufloria»

[4] https://goo.gl/Oz0sib - игра «Solarmax 2»

Ссылки приводятся в виде [N], где N – номер документа в вышеприведенном списке.

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

Существует множество подобных игр, но обладающих целым рядом недостатков:

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

· Игровое развитие ограничено

· Эти проекты не развиваются

Будущий программный продукт позволит игрокам:

· Сыграть в любимую игру с друзьями

· Посоревноваться с другими игроками

· Расширятся возможности игровой механики

 

Описание предметной области и проблем, для решения которых предназначен будущий программный продукт, приведены в разделе 2.

Раздел 3 содержит описание требований к программному решению, раздел 4 – описание архитектуры выбранного решения.

Предметная область проекта

Наша игра в жанре RTS[1]. На старте unit на игровом поле распределяются между игроками, некоторые unit могут быть нейтральными. Каждый unit имеет очки HP. Как только появляется надпись старт, вы можете начинать действовать, также у ваших unit начнет генерироваться HP. Для того чтобы захватить unit противника вам необходимо создать Link между вашим одним или несколькими unit и вражеским unit. Link передает очки HP, таким образом при направлении Link на свой unit его HP будет пополняться, а если Link направить на вражеский unit, то его HP будут уменьшаться. Link может быть разорвана, тогда происходит быстрое возвращение очков HP. В случае, когда у вражеского unit закончились HP, то управление этим unit перейдет к игроку нанесшему добивающий урон. Сражение происходит до того момента пока не будут захвачены все вражеские unit на игровом столе.

Примеры похожих игр: концептуально похожая: [2], идейно схожие: [3], [4].

Существующие проблемы

· Отсутствие многопользовательского режима у всех существующих вариаций этой игры.

· Ограниченный набор карт.

· Однотипное компьютерное поведение.

· Отсутствует система рейтинга в игре.

Решения:

· Создание многопользовательского режима.

· Создание генератора карт.

· Создание редактора карт.

· Создание системы рейтинга игрока.

· Ведение статистики учетной записи.

· Статистика сражения.

· Создание системы общения в игре.

· Игровые события.

 

Предполагаемое решение

Проблема разнообразия в игровом процессе решается путем интеграции многопользовательского режима.

Будет создана система расчета Honor игрока.

 

Требования к программному решению

Данный раздел описывает требования к программной системе, разрабатываемой в рамках проекта Mavirea.

Роли

В предлагаемой к разработке системе идентифицированы следующие роли:

1. Пользователь – человек, который взаимодействует с главным меню

2. Игрок – человек, который взаимодействует с игровым столом

3.2 Функциональные требования для роли Пользователь

 

Сменить учетную запись

Цель:

Зайти на конкретную учетную запись.

Предусловие:

Пользователь должен находиться в главном меню.

Сценарий:

Если эта учетная запись существует, и пользователь не аутентифицирован, то он выполняет сценарий «Аутентификация».

Альтернативный сценарий:

Если пользователь находится не в той учетной записи, то он выполняет сценарий «Выйти из учетной записи», после переходит на другой сценарий по условию ветвления.

Альтернативный сценарий:

Если этой учетной записи не существует, то пользователь выполняет сценарий «Зарегистрировать учетную запись», после переходит на другой сценарий по условию ветвления.

Выйти из учетной записи

Цель:

Выйти из учетной записи.

Предусловие:

Пользователь должен быть аутентифицирован.

Сценарий:

Пользователь нажимает кнопку «выйти из учетной записи» и в поле профиля престают отображаться данные о пользователе.

Аутентификация

Цель:

Войти в учетную запись

Предусловие:

Пользователь должен быть не аутентифицирован.

Сценарий:

Пользователь нажимает кнопку «войти в учетную запись». Всплывает новое окно с полями для ввода аутентификационных данных. Пользователь вводит корректные e-mail и пароль в специальные поля и нажимает кнопку «вход». Если вход выполнен, то пользователю сообщается о том, что вход выполнен, система входит в учетную запись и отображается поле профиля в меню

Альтернативный сценарий:

Если аутентификация по каким-либо причинам не произошла, то всплывает окно, которое сообщает о том, что вход не выполнен и причину ошибки. Пользователю необходимо вновь повторить этот сценарий.

Зарегистрировать учетную запись

Цель:

Создать учетную запись.

Предусловие:

Пользователь должен быть не аутентифицирован.

Сценарий:

Пользователь нажимает кнопку «Зарегистрировать учетную запись». Всплывает новое окно, в котором есть поля для ввода регистрационных данных. Пользователь вводит nick, e-mail и пароль и нажимает кнопку «зарегистрироваться». Если регистрация прошла успешна, то пользователю сообщается о том, что пользователь зарегистрирован.

Альтернативный сценарий:

Если регистрация не удалась, то пользователю сообщается об этом и говорится причина ошибки. Тогда пользователю необходимо вновь повторить сценарий регистрации.

 

 

Начать игру

Цель:

Запуск игрового стола.

Предусловие:

Пользователь должен быть аутентифицирован и находиться в главном меню.

Сценарий:

Выбрать игровой стол, или подключиться к столу друга, или создать стол.

Создать игровой стол

Цель:

Создать игровой стол.

Сценарий:

Выбираем карту и нажимаем «создать».



Поделиться:


Последнее изменение этой страницы: 2016-08-10; просмотров: 167; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.229.253 (0.164 с.)