- Mail ru games linux
- Логика работы с дистрибутивами игр
- Конфигурирование продукта
- Использование GUI утилиты для Windows (MailRuGameUploader.exe)
- Использование консольных утилит
- Тестирование загруженного дистрибутива
- Квоты по проектам и свободному месту
- Как это работает
- Linux Quest. Поздравляем победителей и рассказываем про решения заданий
- 1. Первый этап
- 1.1. Интересные факты:
- 1.2. Задание
- 1.3. Решение
- 2. Второй этап
- 2.1. Интересные факты
- 2.2. Задание
- 2.3. Решение
- 3. Третий этап
- 3.1. Интересные факты
- 3.2. Задание
- 3.3. Решение
Mail ru games linux
Разработчики должны использовать инфраструктуру Mail.ru для распространения дистрибутивов своих игр на Платформе. Игровой центр предоставляет разработчику возможности по высокоскоростной загрузке дистрибутивов игр пользователям и набор утилит для подготовки обновлений (патчей), минимизирующих объем данных.
Внимание: все работы по загрузке дистрибутивов и обновлению версий игры выполняются разработчиком самостоятельно.
В исключительных случаях данная работа может быть выполнена силами дежурных инженеров Платформы, но, в этом случае, срок и скорость выполнения работы определяется текущей загруженностью.
Логика работы с дистрибутивами игр
Клиент игры скачивается Игровым центром (ИЦ) с серверов ИЦ и через механизмы p2p-скачивания. Если на компьютере пользователя нет скачанной игры, ИЦ скачивает её дистрибутив и устанавливает игру на компьютер.
Если на компьютере пользователя игра была установлена ранее, ИЦ скачивает для неё патч и применяет его на установленную игру (выполняет обновление игры). Каждая версия клиента игры, собранная для скачивания её Игровым центром, называется билдом клиента игры.
Разработчик игры собирает и выливает билды [клиента игры] на серверы ИЦ c помощью утилиты сборки дистрибутивов, работа с которой описана далее. Скачать эту утилиту, а также управлять собранными билдами клиента игр можно в кабинете разработчика. Утилита сборки публикует свежесобранный билд в тестовой линии. Такой билд будет доступен в Игровом центре только если ИЦ настроен на тестовую линию. Подробнее об этом см. пункт «Тестирование загруженного дистрибутива» ниже. Обычные пользователи этот билд не увидят. Чтобы билд стал виден всем пользователям ИЦ, необходимо перевести его в основную линию с помощью функций, доступных в кабинете разработчика.
При подготовке билдов, утилиты сборки обращаются по порту 80 (HTTP) к серверам pkg.dl.mail.ru, pkg-store.dl.mail.ru и pkg.gc.my.com. При сборке и выливке билдов на ИЦ-серверы, утилиты сборки обращаются к ИЦ-серверам по портам 80 (HTTP) и 21 (FTP) к серверам adm-store.dl.mail.ru и admin.dl.mail.ru. Соответственно, необходим доступ с компьютеров сборки к указанным ресурсам.
Сервер | Порт |
pkg.dl.mail.ru | 80 (HTTP) |
pkg-store.dl.mail.ru | 80 (HTTP) |
pkg.gc.my.com | 80 (HTTP) |
adm-store.dl.mail.ru | 80 (HTTP) и 21 (FTP) |
admin.dl.mail.ru | 80 (HTTP) и 21 (FTP) |
Конфигурирование продукта
1.1. Зайти в личный кабинет под аккаунтом, имеющим соответствующие привилегии и активированной двухфакторной авторизацией https://games.mail.ru/dev/login/
1.2. Выбрать нужный продукт из списка, перейти в раздел «Загрузка дистрибутивов».
1.3. Нажать «изменить» и настроить параметры запуска клиента.
1.4. Если проект не имеет одновременно две версии запускаемого файла (х32 и х64) то достаточно заполнить только одно из полей. Необходимо прописать путь до исполняемого файла относительно папки клиента игры.
1.5. Параметры командной строки запуска клиента
Включают в себя только дополнительные параметры от партнера, прописывать доп. параметры sz_pers_id — не нужно. Например там можно прописать IP сервера или еще какие-нибудь игровые параметры которые будут уходить при запуске.
1.6. Имя файла содержащего иконку игры (поле отвечает за размещение иконки игры на рабочем столе)
Необходимо прописать путь относительно папки клиента игры. Есть три возможных сценария:
- Если иконка находится в корне вашего клиента, тогда просто имя файла (например GameIcon.ico).
- Если иконка находится во вложенных папках, тогда как пример (bin\GameIcon.ico).
- Если вообще нет иконки, то можно прописать в это поле название exe файла игры (значение скопировать с поля «Имя главного исполняемого файла (32 бита)» или с «Имя главного исполняемого файла (64 бита)» )
1.7. Название меню-группы под кнопкой пуск
Например «Mail.Ru\Royal Quest»
1.8. Расширеные настройки клиента
Например:
Пример заполнения всех полей на этой форме
Использование GUI утилиты для Windows (MailRuGameUploader.exe)
2.1. Вся сборка дистрибутивов клиента игры выполняется в «Каталоге Сборки» («Assembly Folder»). В нём утилита сборки создаёт служебные подкаталоги с дистрибутивами и патчами собранных билдов. В нём же находятся и файлы настроек сборки. Этот каталог может оказаться большого объема, поскольку в нём будут находиться несколько последних собранных билдов клиента.
2.2. Утилиты для сборки и загрузки билдов на ИЦ-сервер вы можете скачать по ссылкам Windows 64 bit, Linux (Gentoo 64 bit), MacOS 64 bit и распаковать в отдельный каталог. Утилиты существуют только для 64-bit версий ОС, поэтому для корректной работы требуется установленная на компьютере версия Windows x64.
2.3. Запустить приложение MailRuGameUploader.exe, имеющееся в каталоге распакованных утилит сборки.
2.4. В поле «Path to the source client files folder» ввести путь к каталогу исходных файлов клиента, из которого будет собран новый билд.
2.5. В поле «Path to the Assembly folder» ввести путь к каталогу сборки. При сборке самого первого билда это может быть пустой каталог. Желательно использовать один и тот же каталог для всех последующих сборок данного клиента, так как при сборке нового билда в нём должен присутствовать каталог собранного предыдущего билда. Если каталога предыдущего билда в каталоге сборки не окажется, то в начале сборки утилита автоматически начнёт скачивать его с сервера.
2.6. Нажать «Accept these folders». Система проверит корректность задания каталогов.
2.7. В поле «Authorization token» скопировать токен из кабинета разработчика. Для этого вы должны открыть нужную игру, в разделе «Загрузка дистрибутивов» найти поле «Ваш токен для авторизации в утилитах для загрузки дистрибутивов» и скопировать его значение в буфер обмена. Затем вставить токен из буфера обмена в поле «Authorization token».
2.8. Нажать на появившуюся кнопку «Check the token». Система проверит данный токен.
2.9. Нажать «Start to Assemble». Должна произойти сборка билда клиента игры и выливка его на ИЦ-сервер. По окончании успешной выливки билда его можно видеть в разделе «Загрузка дистрибутивов», в списке билдов. Он в этот момент находится в тестовой линии.
2.10. После тестирования билда вы можете переместить его в «основную» линию путём нажатия кнопки справа от билда в списке билдов («Перевести из тестовой линии в основную»). Данный функционал находится в личном кабинете (не внутри GUI утилиты). После этой операции билды в основной линии доступны для скачивания всем пользователям.
Использование консольных утилит
Консольные утилиты позволяют осуществлять публикацию игр с ПК под управлением операционных систем Windows, Linux, MacOS.
3.1. Утилиты для сборки и загрузки билдов на ИЦ-сервер вы можете скачать по ссылкам Windows 64 bit, Linux (Gentoo 64 bit) и распаковать в отдельный каталог.
3.2. Запустить приложение bstool.exe с параметрами, задающими все необходимые параметры операции. Формат командной строки и все штатные параметры утилиты:
3.3. Для сборки очередного билда игры, запуск тулы выглядит так:
Собранный билд автоматически выливается на ИЦ-сервер и становится доступен в ИЦ в тестовой линии.
3.4 Для перевода собранного билда в живую линию следует выполнить команду:
> bstool.exe -movetesttolive -token=
После успешного выполнения этой команды, билд окажется доступным для Игрового центра, работающего в обычном режиме (т.е. который видит только билды живой линии).
Тестирование загруженного дистрибутива
До того, как загруженный контент опубликован:
4.1. Авторизуйтесь в Игровом центре Mail.ru аккаунтом, от имени которого игра добавлена или загружена через кабинет разработчика https://games.mail.ru/dev/.
4.2. Переключите Игровой центр в режим разработчика (в верхнем меню пункт «Помощь» -> «Режим разработчика»).
4.3. В режиме разработчика на странице игры появится меню, позволяющее переключиться на «тестовую линию». Используя этот режим, вы можете скачать обновления и дистрибутивы, загруженные в раздачу, но не опубликованные на всех пользователей.
Ограничения и рекомендации
Квоты по проектам и свободному месту
Новому разработчику по умолчанию выделяются следующие квоты:
Как это работает
Квоты на создание проектов позволяют контролировать процесс создания проектов разработчиком. Если по умолчанию разработчику выделяется 5 проектов, значит, для создания 6 проекта придется обратиться к платформе Mail.ru gamesdev@ml.corp.mail.ru . В случае превышения лимита разработчик увидит следующее сообщение:
Ограничение по месту, выделенному на один проект, позволяет контролировать процесс заливки собранных разработчиком билдов на сервер Игрового центра. Разработчик всегда может видеть актуальное свободное место проекта в разделе «Загрузка дистрибутивов».
Источник
Linux Quest. Поздравляем победителей и рассказываем про решения заданий
25 марта мы открыли регистрацию на Linux Quest, это Игра для любителей и знатоков операционной системы Linux. Немного статистики: зарегистрировалось на игру 1117 человек, из них 317 — нашли хотя бы один ключ, 241 успешно справились с заданием первого этапа, 123 — второго и 70 прошли третий этап. Сегодня наша игра подошла к концу, и мы поздравляем наших победителей!
- Первое место занял Александр Тельдеков.
Александр про себя сказал, что он самый типичный сисадмин. Живет в Волгограде, разные Unix-like системы администрирует уже лет двадцать. Успел поработать в интернет-провайдерах, банке, системном интеграторе. Сейчас работает удалённо в небольшой фирме, занимается облачной инфраструктурой для крупного зарубежного заказчика. Любит читать, слушать музыку. Про Игру Александр сказал, что игра в целом понравилась, он любит такие задачки. В одной из компаний на собеседовании занимался похожим на Hackerrank, было интересно. - Второе место — Роман Суслов.
Роман из Москвы. Ему 37 лет. Работает Linux/Unix-инженером в компании «Инфосистемы Джет». По работе приходится заниматься администрированием и траблшутингом Linux/Unix-систем + SAN. Интересы самые разные: Linux-системы, программирование, reverse engineering, информационная безопасность, Arduino. Про Игру Роман отметил, что игра в целом понравилась. «Размял немного свои извилины и отвлекся от серых будней повседневной работы. 🙂 Хотелось бы побольше заданий, а то не успел войти во вкус как игра уже закончилась». - Третье — alex3d.
Алекс живет в Москве, занимается разработкой ПО. «Спасибо за контест, было интересно проверить свой скилл google-fu».
Так же в рейтинге 10-ти лучших игроков:
- Yevgeniy Saldayev
- Маркел Мохначевский
- Константин Коносов
- Павел Сергеев
- Владимир Боваев
- Иван Бубнов
- Pavlo Klets
Мы понимаем, что вариантов решения всех наших задач много, ниже описаны одни из возможных вариантов решения.
1. Первый этап
Мы назвали его «А ты точно админ?», так как задание было довольно простое — починить теплый ламповый сервис.
1.1. Интересные факты:
Двое игроков нашли первый ключ за первые 15 минут игры, а за первый час у нас появилось три лидера, которые справились с заданием.
1.2. Задание
Ты вышел на работу в компанию, где долгое время не было грамотного специалиста по информационным технологиями. Прежде чем начать наводить порядок, нужно решить горящую проблему, блокирующую работу офиса.
Уборщица зацепила шваброй кабель питания серверного шкафа. Питание восстановили, но очень важный веб-сайт всё равно не работает. Веб-сайт важный, потому что компания не очень озабочена информационной безопасностью, и на главной страничке этого можно найти в открытом виде пароль администратора от компьютера генерального директора.
На днях пароль поменяли, а новый все забыли, директор не может работать. Ходят слухи, что на этой машине были ещё ключи, которые могут помочь нам в дешифровке резервной копии бухгалтерских документов.
Все ждут оперативного решения вопроса!
1.3. Решение
1. Первым делом нужно поменять пароль root на виртуальной машине, чтобы получить на нее доступ. При запуске замечаем, что это Ubuntu 16.04 Server.
Для сброса пароля рута рестартуем машину, при загрузке, в момент отображения меню grub-а, переходим в редактирование пункта Ubuntu кнопкой «e». Редактируем строчку linux, добавляем в конец init=/bin/bash . Грузимся через Ctrl+x, получаем баш. Перемонтируем корень с rw, поменяем пароль:
Не забываем про sync, ребутаем.
2. В условии сказано, что у нас не работает веб-сервер, смотрим:
То есть по факту Apache запущен, но отвечает с кодом 404. Смотрим конфиг:
Тут же находится ключ — StevenPaulSteveJobs.
Проверяем путь /usr/share/WordPress — такого нет, но есть /usr/share/wordpress . Правим конфиг и перезапускаем апач.
3. Пробуем снова, получаем ошибку:
В чём же дело? Надо разбираться. Для этого нужно получить доступ в MySQL, как это сделать описано в документации. Один из пунктов документации рекомендует нам прописать опцию skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf . Тут тоже находится ключ — AugustaAdaKingByron.
Поправляем права пользователю ‘wp’@’localhost’ . Запускаем MySQL, делаем его доступным по сети, комментируя в конфиге опцию skip-networking .
4. После проделанных действий веб-сервер запускается, но сайт все равно не работает, так как
Правим права на файл.
Обновляем страницу, заходим на сайт и находим ключ — BjarneStroustrup! Мы нашли все три ключа, наш директор может работать, мы расшифровали файлы бухгалтерии. Все счастливы, а у тебя впереди много работы по налаживанию инфраструктуры, бэкапов и безопасности в компании.
2. Второй этап
Нужно было решить задачу про сбор аналитики. Аналитику любят все — кто и откуда и в каких количествах ходят. Мы придумали случай, с которым могут в том или ином виде столкнуться все инженеры в жизни.
2.1. Интересные факты
Один из наших игроков ввел правильный ключ за первые 10 минут игры, а за первый час у нас появился лидер, который справился с заданием.
2.2. Задание
Ты вышел на работу в компанию, к тебе пришли менеджеры и попросили найти, кому отправлялись письма из Африки. Нужно построить топ-21 адресов получателей по ним. Первые буквы адресов получателей — ключ. Одно но: почтовый сервер, через который письма были отправлены, не загружается. Все ждут от оперативного решения вопроса!
2.3. Решение
1. Сервер не грузится из-за несуществующего раздела swap в fstab, при загрузке система пытается его примонтировать и падает. Как загрузиться?
Скачиваем образ, мы скачали CentOS 7, грузимся с Live CD/DVD (Troubleshooting -> Rescue), монтируем систему, правим /etc/fstab . Тут же находим первый ключ — GottfriedWilhelm11646Leibniz!
2. Пароля как всегда нет, нужно поменять пароль root на виртуальной машине. Мы это уже проделывали в первом задании. Меняем и успешно заходим на сервер, но он сразу уходит в перезагрузку. Сервер перегружается с такой скоростью, что не успеть даже посмотреть все логи внимательно. Как понять, что происходит?
Опять загружаемся с livecd, внимательно изучаем логи системы и на всякий случай заглядываем в крон, раз такая периодичность. Там находим проблему и второй ключ — Alan1912MathisonTuring!
Нужно в /etc/crontab удалить или закомментировать строчку echo b > /proc/sysrq-trigger .
3. После чего сервер загрузился, и можно выполнить задание менеджеров: «Какие адреса Африки?» Данная информация, в целом, общедоступна. Найти эту информацию можно в интернете по словосочетаниям «ip address africa», «geoip database». Для решения задачи можно использовать свободно доступные базы распределения адресов (geoip). Мы в качестве эталона использовали БД MaxMind GeoLite2, доступную по лицензии Creative Commons Attribution-ShareAlike 4.0.
Попробуем решить нашу задачу, используя только системные утилиты Linux, но вообще ее можно решать огромным количеством способов: с помощью утилит фильтрации текста и с помощью скриптов на различных языках программирования.
Для начала, просто получим пары «IP-отправителя — получатель» из почтового лога /var/log/maillog (построим таблицу email получателей — IP отправителя). Это можно сделать вот такой командой:
И прежде чем мы продолжим с составлением БД адресов Африки, глянем на топ IP-адресов отправителей.
Среди всех явно выделяются по кол-ву писем три первых получателя из топа. Если grep-нуть IP-адреса отправителей, что отправляли на адреса из этого топ-3, можно заметить явное преобладание определённых сетей:
Большая часть сетей 105/8, 41/8, 196/8,197/8 выделена AFRINIC — один из пяти региональных интернет-регистраторов, выполняющих распределение интернет-ресурсов. AFRINIC распределяет адресное пространство на территории Африки. А 41/8 относится к AFRINIC вовсе вся.
Таким образом, ответ на задачу, собственно, есть в самом логе.
На данном этапе мы получаем строку «LinuxBenedictTorvadst».
Правильный ключ: «LinusBenedictTorvalds».
Полученная строка содержит опечатку по отношению к правильному ключу в 3 крайних символах. Это связано, с тем, что выбранные нами сети не целиком выделены странам Африки и с тем, как распределены email-ы по IP-адресам в нашем логе.
При достаточном уточнении наиболее крупных сетей, выделенных странам Африки, можно получить точный ответ.:
Задачу также можно решить другим путём.
Скачиваем MaxMind, распаковываем, и следующие три команды также решают нашу задачу.
Тем или иным способом мы в итоге посчитали статистику, и менеджеры получили необходимые им данные для работы!
3. Третий этап
Третий этап чем-то похож на первый — тоже нужно починить теплый ламповый сервис, но все сложнее, чем в первом задании.
3.1. Интересные факты
За первые 15 минут три игрока нашли первый ключ, через 2 часа 20 минут после начала этапа наш победитель справился с заданием.
3.2. Задание
Ты вышел на работу в компанию, где все документы компании хранятся на внутреннем сервере Wiki. В прошлом году инженер заказал 3 новых диска для сервера в дополнение к одному существующему, аргументируя это тем, что для отказоустойчивости системы нужно ставить диски в некие массивы. К сожалению, спустя несколько недель после их установки инженер уехал отдыхать в Индию и не вернулся.
Несколько лет сервер работал без сбоев, но пару дней назад сеть компании была взломана. По инструкции сотрудники охраны извлекли диски из сервера и отправили их тебе. В процессе транспортировки, один диск был безвозвратно утрачен.
Нужно восстановить работоспособность Wiki, прежде всего интересует содержание страниц вики. Некий кусок текста, который был на одной из страниц данной вики, является паролем от сервера 1C и срочно нужен для его разблокировки.
Кроме того, где-то на страницах вики или в ином месте были пароли от сервера логов и сервера видеонаблюдения, которые так же желательно восстановить, без них исследование происшествия невозможно. Как всегда ждут от оперативного решения вопроса!
3.3. Решение
1. Пытаемся загрузиться по очереди с тех дисков, что у нас есть и везде получаем одинаковое сообщение:
Надо с чего-то загрузиться. Опять спасает загрузка с Live CD/DVD (Troubleshooting -> Rescue). При загрузке пытаемся найти загрузочный раздел, не находим, попадаем в shell. Пытаемся изучать что и как с дисками. Известно, что их три. Инструментов для этого больше в 7-й версии CentOS, где есть команды blkid или lsblk , которые нам показывают всю информацию про диски.
Как и что делаем:
Сразу видно, что
Монтируем sdb1, видно, что это загрузочный раздел CentOS 6.
Очевидным образом идем в раздел grub и находим там первый ключ — James191955Gosling в необычном файле.
2. Изучаем pvs и lvs, так как работаем с LVM. Видим, что должно быть 2 физических volume, один не находится и ругается на потерянный uid. Видим, что должно быть 2 логически volume: root и swap, при этом root частично потерян (атрибут P у volume). Смонтировать не получается, а жаль! Он нам очень нужен.
Есть еще 2 диска, смотрим на них, собираем и монтируем:
Смотрим, видно, что это загрузочный раздел CentOS 6 и дубль того, что уже есть на /dev/sdb1 , и тут опять тот же ключ — James191955Gosling!
Смотрим как собран /dev/md127 .
Видим, что должен был быть собран из 4-х дисков, собрался из двух /dev/sda1 и /dev/sdc1 , они должны были быть номерам 2 и 4 в системе. Предполагаем, что из /dev/sda2 и /dev/sdc2 тоже можно собрать массив. Непонятно, почему нет на них metadata, но это на совести админа, который где-то на Гоа. Предполагаем, что тут должен быть RAID10, хотя есть варианты. Собираем:
Смотрим blkid, pvs, lvs. Обнаруживаем, что собрали физический volume, которого нам ранее не хватало.
Сразу починился lvroot, монтируем его, но предварительно активируем VG:
И там все есть, в том числе и ключ DennisBMacAlistairCRitchie — в домашней директории root — /root/sweet .
3. Пытаемся все же оживить наш сервер, чтобы он нормально запустился. Все логические volume c нашего /dev/md0 (где у нас все нашлось) перетаскиваем в /dev/sdb2 , где изначально и работал весь сервер.
Гасим сервер, убираем 1 и 3 диски, оставляем второй, грузимся с Live CD/DVD в Rescue. Находим раздел загрузочный, восстанавливаем загрузчик в grub:
Отрываем загрузочный диск и успешно загружаемся, но сайт не работает.
4. Вариантов запустить сайт два: настроить с нуля Apache или использовать уже настроенный заранее nginx c php-fpm:
Наконец, нужно запустить MySQL:
Он не запускается, и отгадка кроется в /var/log/mysql . Как только вы решите проблему с MySQL, сайт заработает, на главной страничке будет ключ — RichardGCCMatthewGNUStallman! Теперь у нас есть доступ в 1С, и сотрудники смогут получить зарплату. А у тебя как всегда впереди много работы по налаживанию инфраструктуры и безопасности в компании.
Так же мы можем еще раз поделиться списком книжек, которые помогали нам и нашим участникам готовиться к игре: linux.mail.ru/books.
Спасибо за то, что были с нами! Следите за анонсами следующих игр!
Источник