Онлайн браузерка ресурсами одного человека
Всем привет! В этом посте я хочу рассказать о том, как я разрабатывал онлайн-игру, а также поделиться результатом своей работы для обсуждения/критики/предложений. Итак, игра - World of Frogs
Немного предыстории:
По профессии я back-end разработчик, пишу на C#, работаю в сегменте разработки enterprise приложений. Но шарпистом-бэкендщиком я был не всегда - я увлёкся разработкой, участвуя в развитии одного из многочисленных пиратских WoW-серверов из славного Новосибирского Академгородка. Когда в 2011 году я решил начать работать, то, оценив рынок вакансий в своём городе, я пришёл к выводу, что пробиться в серьёзный геймдев вряд ли выйдет, а потому нужно копать в сторону c# или java и уже совсем в другой области. Так я на 5 лет забыл про то, чем так увлекался и что побудило меня войти в сферу IT.
Идея пришла мне в голову около года назад, после того как приехавший ко мне в гости друг показал нашумевший slither.io - тогда мне очень понравилась идея онлайн (что всегда интересней), полностью браузерной (чистый html + js - никаких флэшей) игры с низким порогом вхождения, весьма залипательной, но при том выглядящей достаточно просто для того, чтобы потянуть усилиями одного человека.
Идея зрела не один день, пока не вылилась во что-то конкретное - решил я, что формат должен быть похож на выше упомянутую игру-вдохновитель, но при этом мне хотелось принести некий кусочек чего-то подобного на WoW - набор опыта, рост по уровням, изучение способностей, PvP, PvE. Почему в качестве главного героя я выбрал лягушку? - этого я, честно говоря, уже и не помню. Вероятно, потому что лягушки прикольные :)
В качестве иных обитателей болота были выбраны тараканы и мухи.
Начать я решил с той части, опыта в которой у меня меньше всего, но которая видна пользователю в первую очередь - интерфейс игры. В качестве графического движка был выбран phaser.js, как выглядящий наиболее развитым и документированным среди бесплатных библиотек. В пэйнте была нарисована лягушка, которая в раскадровке выглядела вот так:
Осваивая движок, я научил лягушку ходить, прыгать и бить языком
Нарисовав также муху и таракана, я приступил к разработке серверной части, заранее обдумав то, как справляться с большим количеством игроков.
После чуть более чем полугода активной разработки по вечерам и выходным, после множества оптимизаций и решения моря проблем, я имел рабочую игру, с весьма страшненьким сайтом и непрофессиональными моделями игровых персонажей.
Т.к. мне хотелось, чтобы игра осталась не просто домашним проектом для саморазвития, но и также была интересна окружающим, было решено сформировать заказ для фрилансера, чтобы тот заново нарисовал игровых персонажей, элементы интерфейса игры, а также дизайн главной страницы. Модельки стали выглядеть так:
Для упрощения процесса вхождения в игру на главную страницу было добавлено обучающее видео, а в игре изучение новых способностей стало сопровождаться вот такими тултипами:
Для того, чтобы избавить игрока от лишних телодвижений и ввода ненужной информации, первоначальный вход в игру был реализован с главной страницы по одному нажатию кнопки мыши. Но т.к. онлайн-игра, как правило, предполагает возможность различать игроков между собой, был введён механизм генерации ников в виде случайного сочетания прилагательного + существительного из заранее заданного словаря. Как результат, незарегистрированному игроку может выпасть ник вида Могучий Бурундук, Жадный Лось, Дрожащий Тапок, Грозный Орангутан и т.п. :)
Анонимно зашедший игрок в дальнейшем может зарегистрироваться, чтобы не потерять набранный прогресс, а также выбрать более человеческий ник.
Для более комфортного привыкания к игре, было выключено нападение агрессивных NPC на игроков ниже 3-го уровня. Помимо этого убийство низкоуровневых игроков не приносит опыта, а убитые, в свою очередь, не теряют свой опыт.
На текущий момент под нужды проекта было арендовано две слабенькие виртуалки, которые в теории позволят держать суммарный онлайн в районе 600 человек. В случае необходимости можно докупить ещё серверов - архитектура приложения заточена под горизонтальное масштабирование.
Планов по развитию игры у меня миллион, лишь бы был интерес со стороны игроков.
Текущую версию публикую, чтобы получить фидбэк и, в случае необходимости, скорректировать вектор развития проекта.
Посмотреть игру можно на её сайте: http://frogs.world
Для обсуждения проблем, внесения предложений и иных фидбэков была создана группа в VK: https://vk.com/frogs.world