Размещение игры в социальной сети
В этом посте я хочу рассказать о заключительном этапе разработки игры для социальной сети. Игра размещается в сети ВКонтактке, соответственно речь пойдет о ней. Это не первая моя попытка попасть в каталок ВК, но пока как-то не заладилось. Игра написана на HTML5 с использованием движка Phaser.
Хостинг или VPS?
IFrame приложения, как их называет сама ВК - это обычная страница, расположенная где-то в интернете, которую сайт ВК просто подгружает во фрейм на своей странице. Вопрос хостинга, то есть размещения игры не стоял бы так остро, если бы ВК не ввели правило, что все IFrame приложения должны быть доступны по защищенному протоколу HTTPS. Это накладывает ряд ограничений на использование дешевых или бесплатных хостингов, так как большинство из них не предоставляет HTTPS. Связано это с реализацией самого протокола, который требует наличие отдельного IP. Да, я знаю про возможность использовать Google Docs или Github для бесплатного размещения своих страниц, но этот метод не всем подходит, особенно если в игре есть серверная часть, которая работает с базами данных и т.д.
Для себя я эту проблему решил заказав недорогой VPS у одной из российских компаний за 280 рублей в месяц. Вы получаете в свое распоряжение свой собственный виртуальный компьютер с системой Linux и отдельным IP. Главная проблема заключается в установке необходимого софта, такого как веб-сервер Apache, интерпретатор PHP, СУБД MySQL и другие. Но при помощи мануалов из сети настройка рабочего веб-сервера займет не более часа. В итоге мы получаем свою собственную машину с которой можем творить все что вздумается.
Сертификат SSL
SSL нам необходим для настройки HTTPS на нашем сейте. Для разработки и отладки можно использовать самоподписанный сертификат, но для общего использование нужен доверенный издатель. Раньше я использовал бесплатные сертификаты от StartSSL. Но с осени прошлого года компания Google добавила этого издателя в список "недоверенных". Позже этому примеру последовала и Mozila. Соответственно сейчас использовать эти сертификаты не представляется возможным - браузер пользователя выдает предупреждение и предлагает закрыть такой сайт. Поискав немного в сети других бесплатных издателей, и не найдя вменяемых, которые выдавали бы сертификат в течении нескольких минут без особых заморочек, я решил заказать платный сертификат у Comodo.com. Не сочтите за рекламу, просто недорогие сертификаты за 300 рублей/год для нищебродов вроде меня )))
Интеграция социальных функций
Скажу честно - самый нелюбимый мой этап. Дело в том что для того чтобы работать с VK API игра должна запускаться обязательно с сайта vk.com. То есть после каждого изменения файлы нужно загружать на веб-сервер, либо переадресовать ссылку таким образом чтобы вконтакте загружали файлы непосредственно с вашего компьютера. До недавних пор это можно было сделать довольно легко - в поле "Адрес IFrame" можно было записать https://localhost/. Главное чтоб у вас был установлен самоподписанный сертификат SSL на компьютере. После недавних нововведений vk не позволяет вводить локальные адреса. Это решается довольно просто. Нужно отредакировать файл hosts на компьютере и перенаправить адрес на свой компьютер. Можно добавить строчк "127.0.0.1 site.com" и в поле "Адрес IFrame" вписать HTTPS://site.com. Повторю наличие сертификата все равно обязательно.
Как вы заметили на рисунке здесь появилось еще одно поле для ввода адреса, для мобильных версий игры. Если ваша игра не предуусатривает запуск на телефонах то это поле нужно оставить пустым.
Еще нужно обратить внимание, что если ваша игра использует внутри-игровые покупки - на странице "Настройки платежей" нужно указать адрес PHP скрипта который будет обрабатывать эту покупку.
Про работу с самим VK API здесь говорить не буду, так как это весьма обширный вопрос и если надо будет - напишу об этом отдельный пост.
Развертка готовой игры
Если вы пишите игру на HTML5 то нужно позаботится о безопасности исходных файлов. Прежде чем заливать на сервер файлы JavaScript рекомендуется произвести над ними действие, называемое "обфускация". Это "закодирует" исходный код вашей игры. Серьезных программистов это конечно не остановит, а вот любителей покопаться в чужом коде отпугнет.
А теперь хотел бы попросить у сообщества немного помощи
Буквально сегодня закончил свою игру и решил потестировать немного прежде чем размещать ее в каталоге. Буду признателен если найдутся желающие ее потестить. Естественно необходим аккаунт в сети ВК.
Что собой представляет игра? Это классическая игра "Кейворд", либо как её называют на русский манер "Ключворд" (так же иногда их называют числовыми кроссвордами, но это не совсем верно). Внешне игра похожа на обычный кроссворд, но без определений к словам. В каждую клетку кейворда вписаны числа. К каждому числу однозначно соотносится одна из букв русского алфавита. Требуется восстановить все исходные слова, подстанавливая буквы в клетки.
Вся графика для игры использовалась из бесплатного арта. По этому если среди читателей есть дизайнеры желающие помочь отрисовать весь GUI за не очень большое вознаграждение - буду рад сотрудничать. Так же приветствуются ваши замечания и пожелания по самой игре.
Покупка подсказок пока не работает, так как игра не находится в каталоге. Так что не переживайте )))
Ссылка на игру в ВК: https://vk.com/app6143842
P.S. Если вы хотите получить больше подсказок, напишите мне в личку ваш ID вконтакте либо ссылку на страницу и я начислю их вам в ручном режиме.




Ну если совсем минимизировать затраты можно сертификат получить через какой-нить https://letsencrypt.org/ бесплатно. Вроде у него и аналоги есть другие бесплатные, но сходу не вспомню названия. Там есть небольшие заморочки с необходимостью его часто обновлять, но куча скриптов для автоматизации в инете.
p.s. IMHO, обфускацию стоит делать ради оптимизации размера js, а не ради скрытия от чужих глаз. Клиентская часть все равно 100% уязвима. Да и для взлома JS побольшому счету и не особо нужен. Проще посмотреть самое интересное - обмен данных с бекендом и уже от этого плясать.