Если всю профессиональную жизнь увлеченно развивать ИТ борясь с экономным начальством, бестолковостью юзеров, ночами восстанавливать упавшие системы, начинаешь ждать пенсию как избавление. И вот – УРА! Пришло время и ты вышел на пенсию. И здесь то и кроется самая засада. После небольшого отдыха наступает синдром абстиненции трудоголика. Никаких «хоббей» за время упорной работы не приобрел. И наступает Скука.            Все началось с решения написать игру для Андроида. И сразу стало понятно, что для игры потребуется WEB сервис. Нужно же где-то хранить успехи и поражения игрока, и, далее – организовывать всякого вида соревнования. Ну может быть такое уже есть на просторах интернета? Искал, но, каюсь не слишком тщательно. Решил написать сам (заодно прокачать свои умения в WEB технологиях). Так появилось то, что я назвал «Бэк — офис для игр». Основным свойством системы является полная независимость от самого игрового процесса. То есть системе безразлично в какую игру играет игрок: шахматы, биллиард, карты головоломки на скорость и т.д. Систему интересуют  только абстрактные (для нее) параметры игры, ресурсы игроков и их результаты, обеспечение канала взаимодействия игровых программ между собой в реальном времени. Основную идею и устройство системы вполне описывает структура сущностей определенных в ней. Итак: Сервер системы. Это очевидно. WEB сервер, обеспечивающий выполнение заявленные сервисы системы. Клиент. Игровая программа, использующая ресурсы системы. Администратор системы. Уникальная роль в системе. Его функции: §  Общее управление системой §  Просмотр содержимого объектов системы §  Поддержка разработчиков (администраторов) игр §  Консультации и помощь в отладке игр. §  Экспорт аккаунтов разработчиков (администраторов) игр из тестовой системы в рабочую §  Публикация отлаженных на тестовой системе разработчиком игр в рабочей системе. §  Блокировка/разблокировка разработчиков и/или их игр по тем или иным причинам. §  Общение с администраторами игр в чате или посредством электронной почты. §  Внутрисистемный арбитраж. Разрешение спорных вопросов. §  Установка и изменение курсов виртуальной «валюты» системы для каждого из администратора игр. Администратор (разработчик) игр. Уникальная роль в конкретной игре. Может быть владельцем нескольких игр. Его функции: §  Создание и регистрация игр §  Блокировка/разблокировка игроков §  Определение стартовых ресурсов для новых игроков. §  Настройка параметров игр. §  Организация и ведение соревнований. §  Установка курсов игровых валют. §  Регулирование цен (в игровой валюте) на игровые ресурсы. §  Внутри игровой арбитраж. Разрешение спорных вопросов на уровне собственных игр. Игрок. Обязанностей не имеет кроме как играть в созданную разработчиком игр игру. Имеет логин, е-мейл, игровую валюту, рейтинг и определенные разработчиком игр игровые ресурсы. Имея единственную (в системе) учетную запись, может играть в разные игры разных авторов. Игра. Ограничивает общепринятое понятие игры следующим определением: «Игра есть совокупность параметров, ресурсов, игроков и их активов полученных или выигранных игроками в процессе соревнований». Собственные обязательные свойства: §  Название игры §  Название игровой валюты §  Стартовая сумма в единицах этой валюты при регистрации игрока в игре (стартовый бонус) §  Параметр игры. Произвольный параметр, определяющий течение игры. Целое число. Разработчик имеет полную свободу назначения параметров. Параметры игры и их значения «по умолчанию» наследуются соревнованиями. Собственные обязательные (при создании) свойства: Название. Значение по умолчанию, целое. Системой определен один фиксированный параметр, обязательный для всех соревнований. Это «Количество фреймов в матче». Удалять его или создавать параметр с таким же названием нельзя, допускается только изменять его значение в конкретных соревнованиях. Этот параметр автоматически создается при создании новой игры. Кроме того, разработчик может добавить единственный на игру параметр с признаком «Рейтинг». Этот параметр используется в соревнованиях как награда от администратора игры победителям, увеличивая их игровой рейтинг. §  Тип игрового ресурса. Определяет перечень игровых ресурсов. Может принимать только два значения: «Число» и «Список». Ресурс со списочным типом полезен для группировки ресурсов с числовым типом по категориям. Присутствие списочного типа необязательно. §  Игровой ресурс. Произвольное значение, получаемое, выигрываемое, покупаемое у администратора игры или у других игроков, продаваемое другим игрокам. Цена ресурса номинируется администратором игры в единицах игровой валюты, или на «бирже» игроком – продавцом. Целое число. §  Системная валюта – Дублоны. Курс системной валюты устанавливается администратором системы для каждого администратора игр отдельно. Получается администратором игр при регистрации. Покупается у администратора системы. Расходуется при внутри игровых операциях в качестве комиссионных. §  Игровая валюта.  Может обмениваться на другие ресурсы. Получается игроком при регистрации в игре. Может покупаться у администратора игр за реальные деньги. Расходуется при покупке игровых ресурсов у администратора игры или на бирже у других игроков. §  Рейтинг игрока. Особый вид ресурса игрока в игре. Не покупается, не продается, только получается при регистрации в игре и зарабатывается/теряется в процессе соревнований. Вычисление изменений рейтинга выполняется игровой программой по результатам сыгранных игроком игр.  §  Соревнование. Непосредственный акт игры нескольких игроков с параметрами, настраиваемыми администратором игры. Параметры соревнования есть параметры игры с измененными значениями. Соревнования определены 3 видов: Чемпионат, Турнир, Первенство. Кроме соревнований разработчик может реализовать произвольный акт игры нескольких игроков с установкой значений параметров, определенных в игре (Свободный матч) одним из игроков. Система фиксирует состояние игрока относительно соревнования. §  Фрейм. Минимальный игровой акт. Фрейм является неделимой единицей структуры любого соревнования. §  Матч. Совокупность фреймов. Матч может состоять из одного или более фреймов. Иначе говоря, online встреча фиксированного состава игроков. §  Раунд. Применим только к турниру. Совокупность матчей, проводимых «на одном уровне» §  Турнир. Пирамидальная последовательность раундов. В каждом из матчей может быть только один победитель, выходящий в следующий раунд. Победитель матча определяется по вычисленным игровой программой результатам фреймов матча. Параметры могут изменяться от раунда к раунду. Собственные свойства: Название. Количество партнеров в матче (NP). От 2 до 10. Количество раундов (NR). От 2 до 10. Важно: NPNR — общее количество игроков турнира не рекомендуется делать большим, чем 256. Дата окончания подписки. Регистрация игроков для участия в турнире заканчивается не позднее истечения этой даты. Дата начала. Турнир начинается не ранее этой даты. Вступительный взнос. Целое. Сумма в единицах игровой валюты, уплачиваемая игроком при подписке. Вступительный рейтинг. Игрок с меньшим рейтингом не может участвовать в турнире. Стимул от Автора. Параметр в целых единицах игровой валюты. По умолчанию – 0. Количество фреймов в матче. Устанавливаемое значение наследуется параметрами раундов. Количество фреймов в матче не должно быть меньше чем количество партнеров в матче. Количество фреймов в матче. Устанавливаемое значение наследуется параметрами раундов. Количество фреймов в матче не должно быть меньше чем количество партнеров в матче. §  Чемпионат. Соревнование, в котором каждый игрок играет в матче каждый с каждым. В матче участвуют только два игрока. Места по окончанию чемпионата определяются игровой программой. Допустима ничья в каждом из матчей. Собственные свойства: Название. Количество игроков. Не рекомендуется делать большим, чем 256. Дата окончания подписки. Регистрация игроков для участия в чемпионате заканчивается не позднее истечения этой даты. Дата начала. Чемпионат начинается не ранее этой даты. Вступительный взнос. Целое. Сумма в единицах игровой валюты, уплачиваемая игроком при подписке. Вступительный рейтинг. Игрок с меньшим рейтингом не может участвовать в турнире. Стимул от Автора. Параметр в целых единицах игровой валюты. По умолчанию – 0. Количество фреймов в матче. §  Первенство. Игроки, участвующие в первенстве не состязаются друг с другом непосредственно. Выполняя некоторые, определяемые игрой, задания, игроки показывают результаты, по которым определяется победитель. Собственные свойства те же, что и у чемпионата. §  Свободный матч. Не регламентируемые администратором игры матчи между игроками. Значения параметров, определенных в игре, устанавливаются самими игроками. §  Чат. Система предоставляет сервис мгновенных сообщений как между администратором игры и игроками, так и между игроками. Возможно отправлять сообщения группам игроков. Группы в чате напрямую соответствуют играм. Администратор игр состоит во всех группах, соответствующих принадлежащим ему играм. Игрок состоит во всех группах, соответствующих играм, в которых он зарегистрирован. С более детальным описанием системы можно ознакомиться непосредственно на сайте в разделе «Описание системы».  Этот же сайт служит инструментом создания и управления игрой/играми для разработчика/администратора игр. Автором предлагается также .NET Standard компонент GBOClientStd, предоставляющий все необходимые методы для доступа к API системы. Этот компонент доступен для скачивания на GitHub. С целью проверки полноты и работоспособности системы автором написана Андроид игра – головоломка под названием «Медвежатник». Игра полностью подтвердила заявленные свойства системы, однако гарантировать отсутствие «багов» в ней автор не может гарантировать, поскольку он же и является на сегодня единственным тестировщиком как самой игры, так и системы в целом. По моему убеждению, «самый плохой тестировщик это разработчик» и, поэтому .apk игры выложен на 4pda по ссылке. Для тех, кто заинтересуется игрой – маленькая подсказка: Головоломка решена когда все «ручки» на двери сейфа приобретают зеленый цвет, и таких ручек четное количество. Так и закончилась моя борьба с пенсионной скукой, борьба была интересной, а кто победил – неизвестно, она опять на горизонте. Есть правда надежда, то кто-то заинтересуется системой и обратится к автору за консультацией. Здесь другая опасность – один может не справиться. Но, как говорится «волков бояться, в лес не ходить». Приглашаю. Программист на пенсии