Вступление
Я уверен, все вы помните те времена, когда операционная система у каждого производителя была своя. Более того, порой они разнились и у моделей одной фирмы! Но их объединяла одна важная черта — поддержка Java ME. Сотни тысяч игр и приложений заполонили рынок, культовых же среди них не наберется и двух десятков.
История игры
Одной из таких стала игра Gravity Defied. Простейший геймплей — гонщик на мотоцикле, преодолевающий высокие горы и глубокие ямы, удобная физика — вращение в воздухе и простота модифицирования привели к тому, что более половины школьников хоть раз ее да запускали. Разбитые экраны, выломанные клавиши, пробитые телефонами стены — типичные атрибуты Gravity Defied. Профессионалы же зарабатывали, помогая знакомым проходить тяжелые уровни.
Эх, хорошие были времена!
Разработка
И вот после одного из прекрасных раундов Codeforces, в очередной раз обновляя страницу в ожидании изменения рейтинга, я вспомнил Gravity Defied и решил превратить график в профиле в уровень для игры. Пара вечеров археологических раскопок в одном единственном форуме и одной полезной вики, и на свет появилось это! Небольшой скрипт на Python3, получая через Codeforces API список проведенных раундов, создает список точек трека по изменению рейтинга и времени между соседними раундами. Все используемые библиотеки встроенные (os, sys, time, urllib, json). Работает из консоли, притом может считывать ники пользователей, как из файла, так и из командной строки. Уровни генерируются в форматах ".mrg" для версии на Java ME и неофициальной версии на Android и ".gdlvl" для официальной игры на Android (от codebrew). Советы по установке и сам скрипт можете найти здесь (ссылка на github).
О найденных багах в скрипте и неточностях в данном посте пишите, пожалуйста, в личные сообщения.
Удачи и приятной игры!