Русский
Русский
English
Статистика
Реклама

Бэк-офис для игр или результат борьбы с пенсионной скукой

Если всю профессиональную жизнь увлеченно развивать ИТ борясь с экономным начальством, бестолковостью юзеров, ночами восстанавливать упавшие системы, начинаешь ждать пенсию как избавление. И вот УРА! Пришло время и ты вышел на пенсию. И здесь то и кроется самая засада. После небольшого отдыха наступает синдром абстиненции трудоголика. Никаких хоббей за время упорной работы не приобрел. И наступает Скука.

Все началось с решения написать игру для Андроида. И сразу стало понятно, что для игры потребуется WEB сервис. Нужно же где-то хранить успехи и поражения игрока, и, далее организовывать всякого вида соревнования. Ну может быть такое уже есть на просторах интернета? Искал, но, каюсь не слишком тщательно. Решил написать сам (заодно прокачать свои умения в WEB технологиях). Так появилось то, что я назвал Бэк офис для игр.

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

Основную идею и устройство системы вполне описывает структура сущностей определенных в ней. Итак:

  • Сервер системы. Это очевидно. WEB сервер, обеспечивающий выполнение заявленные сервисы системы.

  • Клиент.Игровая программа, использующая ресурсы системы.

  • Администратор системы. Уникальная роль в системе. Его функции:

Общее управление системой

Просмотр содержимого объектов системы

Поддержка разработчиков (администраторов) игр

Консультации и помощь в отладке игр.

Экспорт аккаунтов разработчиков (администраторов) игр из тестовой системы в рабочую

Публикация отлаженных на тестовой системе разработчиком игр в рабочей системе.

Блокировка/разблокировка разработчиков и/или их игр по тем или иным причинам.

Общение с администраторами игр в чате или посредством электронной почты.

Внутрисистемный арбитраж. Разрешение спорных вопросов.

Установка и изменение курсов виртуальной валюты системы для каждого из администратора игр.

  • Администратор (разработчик) игр. Уникальная роль в конкретной игре. Может быть владельцем нескольких игр. Его функции:

Создание и регистрация игр

Блокировка/разблокировка игроков

Определение стартовых ресурсов для новых игроков.

Настройка параметров игр.

Организация и ведение соревнований.

Установка курсов игровых валют.

Регулирование цен (в игровой валюте) на игровые ресурсы.

Внутри игровой арбитраж. Разрешение спорных вопросов на уровне собственных игр.

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

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

Название игры

Название игровой валюты

Стартовая сумма в единицах этой валюты при регистрации игрока в игре (стартовый бонус)

Параметр игры. Произвольный параметр, определяющий течение игры. Целое число. Разработчик имеет полную свободу назначения параметров. Параметры игры и их значения по умолчанию наследуются соревнованиями. Собственные обязательные (при создании) свойства:

  1. Название.

  2. Значение по умолчанию, целое.

Системой определен один фиксированный параметр, обязательный для всех соревнований. Это Количество фреймов в матче. Удалять его или создавать параметр с таким же названием нельзя, допускается только изменять его значение в конкретных соревнованиях. Этот параметр автоматически создается при создании новой игры. Кроме того, разработчик может добавить единственный на игру параметр с признаком Рейтинг. Этот параметр используется в соревнованиях как награда от администратора игры победителям, увеличивая их игровой рейтинг.

Тип игрового ресурса. Определяет перечень игровых ресурсов. Может принимать только два значения: Число и Список. Ресурс со списочным типом полезен для группировки ресурсов с числовым типом по категориям. Присутствие списочного типа необязательно.

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

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

Игровая валюта. Может обмениваться на другие ресурсы. Получается игроком при регистрации в игре. Может покупаться у администратора игр за реальные деньги. Расходуется при покупке игровых ресурсов у администратора игры или на бирже у других игроков.

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

Соревнование. Непосредственный акт игры нескольких игроков с параметрами, настраиваемыми администратором игры. Параметры соревнования есть параметры игры с измененными значениями. Соревнования определены 3 видов: Чемпионат, Турнир, Первенство. Кроме соревнований разработчик может реализовать произвольный акт игры нескольких игроков с установкой значений параметров, определенных в игре (Свободный матч) одним из игроков. Система фиксирует состояние игрока относительно соревнования.

Фрейм. Минимальный игровой акт. Фрейм является неделимой единицей структуры любого соревнования.

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

Раунд. Применим только к турниру. Совокупность матчей, проводимых на одном уровне

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

  • Название.

  • Количество партнеров в матче (NP). От 2 до 10.

  • Количество раундов (NR). От 2 до 10. Важно: NPNR общее количество игроков турнира не рекомендуется делать большим, чем 256.

  • Дата окончания подписки. Регистрация игроков для участия в турнире заканчивается не позднее истечения этой даты.

  • Дата начала. Турнир начинается не ранее этой даты.

  • Вступительный взнос. Целое. Сумма в единицах игровой валюты, уплачиваемая игроком при подписке.

  • Вступительный рейтинг. Игрок с меньшим рейтингом не может участвовать в турнире.

  • Стимул от Автора. Параметр в целых единицах игровой валюты. По умолчанию 0.

  • Количество фреймов в матче. Устанавливаемое значение наследуется параметрами раундов. Количество фреймов в матче не должно быть меньше чем количество партнеров в матче.

  • Количество фреймов в матче. Устанавливаемое значение наследуется параметрами раундов. Количество фреймов в матче не должно быть меньше чем количество партнеров в матче.

Чемпионат. Соревнование, в котором каждый игрок играет в матче каждый с каждым. В матче участвуют только два игрока. Места по окончанию чемпионата определяются игровой программой. Допустима ничья в каждом из матчей. Собственные свойства:

  • Название.

  • Количество игроков. Не рекомендуется делать большим, чем 256.

  • Дата окончания подписки. Регистрация игроков для участия в чемпионате заканчивается не позднее истечения этой даты.

  • Дата начала. Чемпионат начинается не ранее этой даты.

  • Вступительный взнос. Целое. Сумма в единицах игровой валюты, уплачиваемая игроком при подписке.

  • Вступительный рейтинг. Игрок с меньшим рейтингом не может участвовать в турнире.

  • Стимул от Автора. Параметр в целых единицах игровой валюты. По умолчанию 0.

  • Количество фреймов в матче.

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

Свободный матч. Не регламентируемые администратором игры матчи между игроками. Значения параметров, определенных в игре, устанавливаются самими игроками.

Чат. Система предоставляет сервис мгновенных сообщений как между администратором игры и игроками, так и между игроками. Возможно отправлять сообщения группам игроков. Группы в чате напрямую соответствуют играм. Администратор игр состоит во всех группах, соответствующих принадлежащим ему играм. Игрок состоит во всех группах, соответствующих играм, в которых он зарегистрирован.

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


Автором предлагается также .NET Standard компонент GBOClientStd, предоставляющий все необходимые методы для доступа к API системы. Этот компонент доступен для скачивания на GitHub.

С целью проверки полноты и работоспособности системы автором написана Андроид игра головоломка под названием Медвежатник. Игра полностью подтвердила заявленные свойства системы, однако гарантировать отсутствие багов в ней автор не может гарантировать, поскольку он же и является на сегодня единственным тестировщиком как самой игры, так и системы в целом. По моему убеждению, самый плохой тестировщик это разработчик и, поэтому .apk игры выложен на 4pda по ссылке. Для тех, кто заинтересуется игрой маленькая подсказка: Головоломка решена когда все ручки на двери сейфа приобретают зеленый цвет, и таких ручек четное количество.

Так и закончилась моя борьба с пенсионной скукой, борьба была интересной, а кто победил неизвестно, она опять на горизонте. Есть правда надежда, то кто-то заинтересуется системой и обратится к автору за консультацией. Здесь другая опасность один может не справиться. Но, как говорится волков бояться, в лес не ходить. Приглашаю.

Источник: habr.com
К списку статей
Опубликовано: 02.02.2021 12:18:59
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Net

Разработка игр

C

Web services

Signalr

Web api

Asp.net core

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru