Я всегда обнаруживал, что самые интересные проекты, над которыми я работал, были те, которые объединяли несколько моих интересов вместе… Итак, какой мой интерес я могу совместить с моими растущими навыками программирования? Что ж, я много лет играл в League of Legends, но никогда не имел возможности работать с Riot API… до сих пор.

Трудно не быть перегруженным всеми вещами, к которым вы можете получить доступ с помощью API. Это особенно верно, когда у вас нет четкого представления о том, что вы хотите построить, используя данные, которые API получает для вас. Несмотря на то, что это пугает, отсутствие четкого предубеждения о том, что вы хотите сделать, также может рассматриваться как хорошая вещь; в некотором смысле, это оставляет нас открытыми для более творческих, спонтанных мыслей. Это было мышление, которое я пытался иметь при подходе к этому мини-проекту.

Одним из самых интересных аспектов сообщества League of Legends (и игрового сообщества в целом) является широкое распространение профессиональных стримеров и игроков. League of Legends — одна из самых популярных игр на популярной потоковой платформе Twitch.tv, и с момента появления платформы в 2011 году число зрителей постоянно растет.

Профессиональная киберспортивная лига игры привлекает большое количество зрителей благодаря лояльным фан-базам, но многие люди стекаются на популярные стримы, чтобы получить советы и стили игры от ветеранов игр. Проблема, однако, в том, что некоторые из лучших профессиональных игроков часто отказываются от стриминга из-за своего плотного графика. Как можно «учиться у лучших», если нельзя посмотреть игру игрока вне профессиональных трансляций?

Хотя проекты программирования начального уровня часто воспринимаются как обучающий опыт, а не как полезные инструменты, я хотел помнить о функциональности, поскольку считал, что это будет хорошей практикой на будущее. Имея в виду выявленную проблему, я повторно подошел к API с некоторыми общими целями для того, что я хотел, чтобы моя программа делала. Я знал, что в League of Legends уже давно есть собственный клиент для зрителей, чтобы игроки могли смотреть игры людей из своего списка друзей. Возможно, добавили функционал для просмотра игры любого игрока? Немного сузив фокус, некогда устрашающий API стал гораздо менее пугающим для начинающего программиста.

Как и в случае с любой задачей, не связанной с программированием, я решил разделить этот проект на основные проблемы, которые можно было бы решать по отдельности. Во-первых, программе нужно было ввести имя призывателя игрока (имя пользователя, под которым вы регистрируете любую учетную запись League of Legends) и получить любую полезную информацию, которую я мог получить. Оттуда я мог бы использовать эти данные, чтобы открыть представление зрителя о живой игре этого игрока. После некоторого изучения веток обсуждений (бесценный инструмент, когда вы пытаетесь учиться в незнакомой области) оказывается, что наблюдать за игрой любого игрока на самом деле довольно просто, если вы можете получить две ключевые части информации:

1. «Ключ шифрования» игры

2. «gameId» игры

Имея обе части информации, клиент-наблюдатель может открыть любой экземпляр League of Legends. Здорово! Теперь у меня была вся информация, необходимая для завершения моего проекта, мне просто нужно было добавить немного магии Ruby, чтобы связать все это воедино.

В целом, хотя я создал работающее приложение, есть несколько вещей, которые я хотел бы реализовать в будущем. Во-первых, API Riot требует, чтобы создатель обновлял свой ключ API каждые несколько дней, что делает инструмент неудобным для тех, кто не хочет напрямую взаимодействовать с кодом. Во-вторых, приложение работает только в Windows. По какой-то причине открытие клиента зрителя в MacOS с идентификатором игры и шифрованием определенного игрока не было хорошо задокументировано. В будущем я хотел бы решить обе эти проблемы, а также реализовать другой анализ данных для пользователей, которые хотят использовать это приложение в качестве образовательного опыта в League of Legends.