Создаем уровни для Gravity Defied из графика рейтинга Codeforces

Revision ru2, by awoo, 2015-06-22 21:41:55

Вступление

Я уверен, все вы помните те времена, когда операционная система у каждого производителя была своя. Более того, порой они разнились и у моделей одной фирмы! Но их объединяла одна важная черта — поддержка Java ME. Сотни тысяч игр и приложений заполонили рынок, культовых же среди них не наберется и двух десятков.

История игры

Одной из таких стала игра Gravity Defied. Простейший геймплей — гонщик на мотоцикле, преодолевающий высокие горы и глубокие ямы, удобная физика — вращение в воздухе и простота модифицирования привели к тому, что более половины школьников хоть раз ее да запускали. Разбитые экраны, выломанные клавиши, пробитые телефонами стены — типичные атрибуты Gravity Defied. Профессионалы же зарабатывали, помогая знакомым проходить тяжелые уровни.

Эх, хорошие были времена!

Разработка

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

О найденных багах в скрипте и неточностях в данном посте пишите, пожалуйста, в личные сообщения.

Удачи и приятной игры!

Tags gravity defied, codeforces, python

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en5 English awoo 2015-06-26 08:52:35 41
ru5 Russian awoo 2015-06-25 22:51:01 0 (опубликовано)
en4 English awoo 2015-06-25 22:47:19 68
ru4 Russian awoo 2015-06-25 22:46:50 10
en3 English awoo 2015-06-25 22:42:40 197 Tiny change: 'ain...\n\nDevelo' -
en2 English awoo 2015-06-25 21:35:34 2608 Tiny change: '24422694/36ac0/8jKq7pMzPOc70dd/wU1hi' -
ru3 Russian awoo 2015-06-24 22:41:34 2804 Мелкая правка: 'e=
ru2 Russian awoo 2015-06-22 21:41:55 511 Мелкая правка: 'github).\n![ ](htt' -
en1 English awoo 2015-06-22 19:41:19 1976 Initial revision for English translation
ru1 Russian awoo 2015-06-22 19:35:53 2100 Первая редакция (сохранено в черновиках)