Навигация по сайту

Популярные статьи

Створення гри для соціальних мереж розумник

Розробка ігор для соціальних мереж є досить великим інтересом для розробників. В першу чергу це пов'язано з тим, що соціальні мережі мають вже величезну аудиторію користувачів.

Найчастіше гри в соціальних представлені як Flash контейнер або через iframe. Якщо раніше велика частина ігор була на Flash, то завдяки технологіям які сьогодні дає веб уже можна писати багато користувачів і анімаційні ігри.

Ось і в один з вечорів я вирішив спробувати написати свою гру і подивитися на яких технологіях це можна зробити. Моя гра Вконтакте http://vk.com/app4533532 . А далі невеликий опис.

Я вже давно хотів спробувати можливості node.js і WebSockets тому гру було вирішено писати тільки на багато користувачів. Хоча спочатку, я думав спробувати використовувати php, але так як вже давно на ньому не програмую, то відкинув цю ідею. Плюс про асинхронність node.js і сокетов чув дуже багато хорошого.

Ідея гри, як і назва, прийшли в голову досить швидко «розумник! Грай з друзями «. Гра являє собою аналог гри «Хто хоче стати мільйонером?» Або «О, щасливчик», тільки у мене один гравець змагається з іншим. Мета гри-відповісти на більшу кількість запитань ніж ваш суперник. Само собою підказки мені довелося придумати інші, а не як в ТБ шоу.

Для гри було обрано такі технології. Як я вже писав node.js + бібліотека socket.io яка дозволяє використовувати різні типи підключення для сокетних з'єднань. Це була серверна сторона, тобто логіка яка відповідає за ігровий процес. Крім того я використовував Silex фреймворк на php для створення API. Чому я все не зробив на node.js? Відповідь проста. Є запити на кшталт отримання рейтингу, входу в гру, процес оплати в грі, які простіше зробити на php, та й оновлення php простіше. Якщо ж оновлювати код на node.js, то доведеться перезапустити гру і всі клієнти відключаться від гри. Тому неігрові процеси я виніс на плечі php.

Як Бази Даних спочатку хотів використовувати Mongo, але потім все ж вирішив, що MySQL вистачить. Всі дані у мене структуровані, так і з цієї БД я вже давно працюю. Для зв'язку node.js з MySQL була використана бібліотека node-mysql .

Для клієнтської частини я використовую marionette , require.js , backbone , Jquery. Для складання проекту grunt.js і less препроцесор.

Спочатку гру планувалося розмістити тільки в «Вконтакте», але після запуску довелося дописувати код для «Однокласників». Для обох соц. мереж використовується один і той же код. Поділ відбувається на рівні домену. Залежно від хоста завантажуються обробники Вконтаке або Однокласників. Завдяки фреймворку логіка і уявлення дуже добре розділені. Додавання нової соцмережі не займе багато часу.

На створення гри пішло приблизно 1 місяць вільного часу. Перші питання діставалися зі старих ігор знайдених на просторах Інтернету. Десь довелося знаходити алгоритм якими деякі розробники шифрували питання. Втім, як виявилося, багато хто з них були з невірними відповідями, з граматичними помилками. На все це скаржилися користувачі.

Після додавання гри в Вконтакте - відправив її на модерацію. Перша спроба модерація була через хвилин 30 після відправки. Відмовили в розміщенні. Для гри необхідно було 2 людини мінімум. На жаль перевіряючий людина була один і відхилив гру через «Завжди йде пошук суперника». Це був мій перший косяк після якого я зрозумів, що треба відразу писати ботів для гри. Навіть багато, хто заходив у гру по посиланнях в твітері відразу ж ішли тому нікого не було.

Після написання ботів відправив гру на модерацію вдруге. Цього разу довелося чекати аж 4 дні. Навіть накатав лист на підтримку. Після цього гру розмістили в каталозі. Але все одно гравців було мало. У більшості випадків все грали з ботами. Але! у «Вконтакте» є цікава фішка. Вони можуть за безкоштовно розмістити гру в блоці «Нові». Ігор досить багато, тому мій реліз в цьому блоці був 20го жовтня. До 20го числа в грі було всього близько 100 чоловік ... Але прокинувшись вранці 20го числа ... я був в шоці. В онлайні було 300 осіб. Мій сервер з 1.5Гб ОЗУ просто не справлявся з таким навантаженням. Гра постійно перезавантажувалася. Чесно - я не був готовий до такого навантаження.

Користувачі скаржилися. Валилися помилки. В цей же день було виправлено безліч помилок. Якимось чином в одну гру замість двох осіб потрапляло троє. Я довго не міг зрозуміти чому. Виявилося, що я забув повісити індекс на одне з полів в БД. Через це одночасно 2 користувача знаходили відкриту гру і підключалися до неї до того моменту коли її статус в БД змінювався з «open» на «playing». Надалі довелося ще сильніше оптимізувати це «вузьке» місце.

Після виправлення багів довелося закуповувати новий сервер вже з 4гб ОЗУ. Добре, що він був за тією ж ціною, що і мій поточний сервер куплений в минулому році. На 3 день після запуску, в ніч я переніс всі файли. До жалю перенесення DNS не була настільки швидким і я втратив велику кількість гравців. Це видно з наступного графіка:

Прикро, але треба було бути готовим до цього відразу. Втім зараз ситуація досить стабільна. Всі видимі на перший погляд баги виправлені. Починаємо потихеньку додавати нові фічі.

Першим, що довелося зробити - можливість додавання нових питань користувачами. Другим - відзначати якісь питання з помилками чи ні. Це реалізував за допомогою «лайків» і «діслайков» питань. В цілому - тепер з помилками знаходити питання простіше.

Крім гри довелося розвивати групу - в цьому місці гравці повідомляли про баги і невірних питаннях. Так само там йде просування гри: конкурси, питання і т.п.

Крім гри запустив магазин сувенірів http://umnikclub.printdirect.ru/ . Наскільки це буде приносити прибуток-поки не ясно. Можна буде зрозуміти тільки через місяць-другий.

Які ще плани по грі? 1. Запуск в однокласниках (чекаю оформлення ВП. Без юр. Особи не запускають гру) 2. Спробувати можливості фейсбук. 3. Портирування на мобільні платформи.

На все це потрібен час, звичайно, а його часом дуже не вистачає. По можливості буду реалізувати.

Які висновки я зробив для себе?

1. Для гри потрібна хороша і правильна монетизація. У мене вийшла не надто. Підказки особливо ніхто не купує.

2. Необхідно мати потужне залізо, інакше наплив гравців укладе гру. Підсумок-втрата гравців.

3. Відкриття юр.лица і оформлення договорів. Без цього «голосу» з контакту і «Ок» з Однокласників вже не виведені.

4. Розвивати групу треба відразу ж разом з додатком. Я упустив трохи цей крок. Посилання на групу повинна бути в додатку. І краще - на видному місці.

5. Тестування на «вузькі» місця. Без них можна отримати багато «загадкових» багів.

6. У багатокористувацьких іграх треба відразу продумувати спамерських пошукових роботів. Перший час без них нікуди. Потрібні хоча б найпримітивніші.

Зараз гру встановило близько 60 000 чоловік. В середньому в онлайн буває 100-150 чоловік. Сервак себе почуває чудово. Гра знаходиться на 684 місці в рейтингу найбільш популярних додатків. У грі іноді з'являються невеликі баги-намагаюся їх знаходити.

Всім вдалої гри! Якщо у вас є якісь питання-задавайте в коментарях.

Гра являє собою аналог гри «Хто хоче стати мільйонером?
Js?
Які ще плани по грі?
Які висновки я зробив для себе?