Хочу рассказать вам о том, как я начинал создавать свой RGG генератор, а по итогу создал новое соревнование с достижениями, платиной, кастомизацией профиля и таблицей рейтинга.
Вступление
Предупрежу сразу, возможно история получится скомканной и не до конца развёрнутой, но я думаю, что расскажу всё что происходило во время разработки и запуска этого проекта.
Также, я не знаю правила сайта, поэтому не буду публиковать ссылку на свой проект, думаю в комментариях можно будет её написать. Ещё, я закрасил все логотипы на скриншотах. Спасибо.
Я надеюсь вас заинтересует моё испытание. Приятного чтения!
Начало
Пару лет назад, я уже видел и слышал аббревиатуру RGG. Но тогда я как-то не придал её значение. И вот, примерно, месяц назад я снова наткнулся на это название.
Retro Game Gauntlet. Итак, это челлендж, придуманный анонимусами с Форчана, запущенный примерно весной 2013. Суть челленджа в прохождении игр, которые выбирает для тебя генератор рандомных чисел. Для челленджа аноны сделали сайтик с генератором игр, списком игр для различных ретро-платформ и, собственно, список самих платформ для прохождения.
Мне понравилась сама идея, но не понравилась реализация. На всех сайтах связанных с RGG был только простой генератор игр, который в случайном порядке выдавал игр из базы. И по большей части, игры были трешовыми. Поэтому, я решил сделать свой генератор, с адекватным интерфейсом и функционалом. На первое время, я поставил для себя такие задачи:
- Создать генератор
- Сделать базу данных игр
- Сделать регистрацию пользователей
- Отслеживать завершённые игры
Разработка
У меня уже был куплен VDS, также мне удалось купить трёх знаковый домен в зоне .ONE. Весь код на PHP + HTML + JS + CSS. База данных MySQL.
Если вам не интересны технические особенности, можете сразу переходить к дизайну. Там будет интересней.
База игр
Создать генератор случайных данных не очень сложно, он делается буквально парой строк, поэтому не буду заострять на нём внимание. Куда интересней, была идея получения списка игр.
Около года назад, я наткнулся на очень любопытный сайт — RetroAchievements. Он позволяет получать достижения в ретро играх! Это очень классно, я даже прошёл парочку старых игр и как-то забросил его. И вот мой мозг почему-то заставил меня загуглить, есть ли у них API. Оказалось, что есть. И он очень и очень удобный. Но главное, можно получить список игр по платформам.
При получении специально ключа, вы можете обращаться к их API.
Параметр: GetGameList( 4 )
Возвращает список игр для определённой платформы:
- Mega Drive
- Nintendo 64
- SNES
- Gameboy
- Gameboy Advance
- NES
Их там намного больше, но для себя я решил взять только это. При обращении по тому параметру, мы получаем JSON ленту со списком игр:
В общем, я создал БД и записал туда все игры, которые только были для этих платформ.
Это была моя первая ошибка, но об этом потом.
Отлично, теперь при нажатии кнопки на форме, из БД случайным образом выбирается игра. ЕХЕЙ! Всё? Пф.
Информация об игре
Ещё есть интересный параметр: GetGameInfo( 504 )
При обращении к нему, мы получаем всю информацию по ID игры. Такую как:
- Иконка игры
- Boxart игры
- Один скриншот с игры и один скриншот главного меню
- Разработчик и издатель
- Дата выхода
Поэтому, я сделал вывод этих данных. Это было не сложно.
Достижения
Для меня было приятно неожиданностью, что у них в API есть доступ к достижениям пользователя. И я решил, сделать у себя также! Ведь это очень и очень круто.
Существует параметр: GetUserProgress( ‘Scott’, ‘2, 3, 75’ );
Если вкратце, то он возвращает статистику пользователя Scott для игр с ID 2,3 и 75. В этой статистике есть информация о том, какие достижения получил пользователь, а какие ещё нет. А ещё иконка достижений, их заголовок и описание. По итогу, я получил всё что мне нужно было, результаты будут дальше в Дизайне.
Регистрация
С регистрацией пользователя я решил не заморачиваться. Стандартные поля, такие как: Email, Логин и пароль.
Но, т.к я решил ввести систему достижений, пришлось заставить пользователя зарегистрироваться в системе RetroAchievements, там ничего такого. Просто указал ссылку и попросил регистрироваться.
Ещё один важный момент. Чтобы пользователи не указывали ники других людей, я сделал проверку, чтобы пользователь который зарегистрировался в системе RA, имел такую же дату регистрации как и пользователь который регистриуется в моём испытании.
По поводу разработки, я думаю всё. Там я могу много что рассказать. Но думаю пользователям это не интересно. Да и место не резиновое.
Дизайн
Тут я буду краток. Изначально, мой дизайн выглядел так:
Но он мне не нравился. Поэтому чуть позже я его изменю, но пока давайте остановимся на этой странице и рассмотрим, что было реализовано.
И так, тут вы можете видеть boxart игры, её название и жанр. А ещё есть список не полученных достижений. При наведении на них, появляется описание каждого достижения.
А ещё, чтобы подстегнуть пользователя играть, я ввёл систему дат. На прохождение игры давалось три дня, если пользователь успевал её пройти за три дня, ему давалось дополнительно 100 очков опыта?
Что за очки опыта?
Хм. В общем, за каждое достижение дают очки опыта. При том, чем сложнее достижение, тем больше опыта дают.
——
Сейчас я хочу вернутся к базе данных игр. Помните, что я там сделал ошибку? Так вот, не у всех игр есть достижения. Ладно, с этим можно легко справится плашкой — «У этой игры нет достижений». Но проблема ещё была в том, что в базе были игры со странными названиями.
И тогда я решил, нужно оставить только игры с достижениями. Ранее я гнался за мыслю, что ЧЕМ БОЛЬШЕ ТЕМ ЛУЧШЕ. хех.
Ещё я решил полностью сменить дизайн страницы и сделать настройку профиля. Люблю настройки)
По итогу, пользователю можно загружать: Аватарку, Фон для страницы и Фон под аватрку.
В получившимся варианте это выглядит так:
Дизайн главной страницы
Дизайн главной страницы у меня вышел просто отпадным.
Бета-тест
Буквально неделю назад, мне удалось заманить немного людей. Благодаря им, я выявил приличное кол-во багов:
- В базу иногда добавлялись игры, которые пользователь просто пропустил
- Ошибки в описании
- Проблемы с загрузкой файлов
- Начисление очков опыта
- и многое другое
Эмуляторы
Я переписал исходники windows эмуляторов и настроил их на работу с моей системой.
На данный момент эмуляторы доступны для платформ: Windows, Lunix, Android, iOS и Raspberry Pi
Итог
По итогу у меня получилось реализовать всё что я хотел и даже больше.
На данный момент пользователь может случайным образом получать игру. Получать достижения и очки опыта.
Также бета-тестеры попросили реализовать самостоятельный выбор игры. Я его сделал, но с ограничениями. Как только пользователь пройдёт 10 игр, эта функция пропадёт.
Приятная настройка профиля и адекватный список игр.
Надеюсь я вас заинтересовал ивам понравится. Спасибо за внимание!
Источник: DTF