Как написать собственную браузерную RPG?
04.09.2024 08:36:48
04.09.2024 08:36:48
Как написать собственную браузерную RPG?
Такой запрос я выполнил в Google перед тем, как решиться написать этот пост. Ответы нашел разные, от «молча» и «о, в этом топике можно поглумиться» до реальных примеров кода с алгоритмами на PHP, предложений структур баз данных и даже книг, обещающих, что после прочтения вы напишете отличную игру.
В книги подобного рода я не верю, напоминает серию «похудей за 5 дней». Прикинув, сколько усилий нужно приложить для того, чтобы ходить по интернету, собирать чужие алгоритмы, разбираться в каждом конкретном куске кода, структурах баз и пытаться все это поженить вместе, я пришел к выводу, что этот вариант крайне неэффективен и вряд ли даст на выходе что-то серьезное. Плюс меня скорее интересовали не технические моменты реализации, потому как совершенно понятно, что, чтобы написать игру, нужно быть программистом, а скорее весь процесс от начала до конца: с чего начать? где взять идеи? как сделать игру интересной? сколько нужно людей? а денег? как привлечь игроков?
В этом посте я расскажу реальную историю создания игры одним человеком за 3 (!) месяца. Сегодня в нее играют 200 человек, в Харцызске расписаны стены домов, а по Черновцам ездят такси и маршрутки с рекламой игры. 3 месяца назад еще не было даже идеи.
С чего начать?
С идеи. Понятно, что в наше время ничего нового уже никто не придумывает, все улучшают существующее, соответственно залог успеха — взять несколько удачных идей, объединить их вместе и создать что-то уникальное. Я заядлый геймер и поиграл в огромное количество игр на своем веку, соответственно за идеями далеко в карман лезть не пришлось. Больше всего мне нравились RPG, стратегии, игры типа Fallout, UFO, Red Alert. Отличные хиты своего времени, но представьте, сколько времени и средств было потрачено на реализацию? У меня таких денег нет, нужно что-то проще... В чем я хорошо разбираюсь и у меня есть опыт? В web-приложениях, значит будет браузерная RPG с элементами стратегии и пошаговым ведением боя. Отлично!
Поехали дальше... Какое выбрать время? Погуглив на предмет похожих игр, сложилось впечатление, что выбор довольно большой, но почти у всех фэнтези (орки, эльфы и прочая нечисть). Будем делать будущее! Далекое? Нет, совсем фантастика мало кому понравится, но и без нее не обойтись. Пусть будет 2086-й год, просто с потолка.
Придумывать для RPG статы не нужно, везде они примерно одинаковые, соответственно берем стандартные: силу, скорость, защиту, живучесть и т.д. и т.п. Система их взаимодействия тоже везде примерно одинакова, похоже, здесь проблем нет, едем дальше...
История игры
Что происходит и зачем? На мой взгляд, чем ближе к реальности — тем лучше, от фантастики народ уже устал. Берем мир, делим на страны, объявляем власть в каждой стране (кланы) и наделяем их возможностями: установление законов, сбор налогов с крафтеров и т.п. При такой идее автоматически получаем конфликт между кланами. Отлично, вот и есть ради чего играть!
Теперь как же объяснить виртуальные возможности, недоступные в реальной жизни. В последнее время популярна тема наномашин, ее и возьмем.
Все, идея готова! На создание ушел один день.
2086 год
После неудачных испытаний с нанобомбой почти все человечество было уничтожено. Оставшиеся в живых настолько ослаблены, что самостоятельное существование кажется невозможным. Исчезнувшая цивилизация оставила после себя разработки в таких передовых технологиях, как генная инженерия и нанотехнологии, и с помощью оставшихся знаний и наработок была создана система Genesyx, подключившись к которой человеческое тело снова обретает возможности, необходимые для выживания. Достигается это за счет внедрения в тело человека наномашин, поддерживающих жизненные процессы и развивающих различные навыки (силу, скорость и т.п.). Под их управлением находится все: физическое и психологическое состояние, реакция на внешние раздражители и даже чувства. Даже обыденное оружие и амуниция попали под управление наномашин, позволяющих их владельцам получить еще больше навыков при использовании. Сами наномашины управляются системой Genesyx, но игрок может воздействовать на их поведение, используя карманный компьютер и свою биоэнергию, необходимую для работы Genesyx.
Ввиду отсутствия регулирующей власти в мире воцарился хаос. С развитием боевых навыков развиваются также возможности наномашин, человек получает все больше возможностей, больше энергии, больше власти. Многие стали использовать эти возможности в личных интересах, развязалась война. С целью исправить ситуацию системой Genesyx были установлены строгие ограничения на проведение боев, любые нарушения караются заключением в камеру или вовсе отключением от Системы. Нанороботы занимаются восстановлением тела от повреждений, полученных в боях, смерть стала возможной только при отключении человека от Genesyx.
Для установления порядка были также созданы кланы, получившие возможность строить базы в различных уголках планеты и исследовать новые технологии с целью развития своего состава. За возможность установить власть в каждой конкретной стране многие кланы вступили в борьбу, ведь это позволяет устанавливать ряд законов с целью извлечения максимальной выгоды. В этой борьбе правил нет, победит сильнейший.
Начинаем разработку (середина октября)
С идеей определились, что делать понятно, осталось сделать. Для реализации я выбрал следующие технологии:
— ASP.NET
— JavaScript
— MS SQL
Почему именно их? Просто потому, что много опыта именно в этих областях, и они явно подходят для больших нагрузок (а нагрузки будут очень большими).
Но вот беда, что же делать с дизайном, ведь дизайнерскими способностями я обделен. Вариантов придумал два:
— Взять готовый дизайн из интернета. Можно найти кучу бесплатных.
— Нанять фрилансера, который нарисует ровно то, что нужно.
Я выбрал второй вариант, т.к. решил делать сразу хорошо и не идти на компромиссы. Обошлось в 20000 р. и месяц работы, но устроило все! (найти можно намного дешевле, в зависимости от того, чего хочется получить в результате).
Пока дизайнер развлекался с графикой, я занялся написанием кода и начал с самого начала: главная страница сайта, форма регистрации, форма входа и т.п., т.е. просто шел ровно по тем шагам, по которым пойдет пользователь, пришедший на мой сайт. Итак, было сделано следующее без дизайна и с самыми простыми возможностями:
— Форма регистрации — полдня
— Форма входа — полдня
— Окно чата — 1 день
— Окно отправки сообщения в чат — 2 часа
— Список игроков — 2 часа
— Окно информации о персонаже — 2 дня
— Создание заявок на бой — 1 день
— Автоматическое восстановление жизни и энергии — 2 дня (тут пришлось реализовывать восстановление как на клиенте, так и на сервере, чтобы, с одной стороны, не было нагрузки при обновлениях и, с другой стороны, невозможно было читить с клиента).
Для запуска первой версии не хватает только одного: боя. Вот тут мозгу пришлось покипеть, т.к. раньше ничего подобного делать не приходилось. Во-первых нужно сделать рандом, причем не просто случайные числа, а рандом, зависящий от вероятности (пример: есть 50 силы, но насколько сильным будет урон, должно зависеть от другого стата «кулачный бой»). Покопал интернет, понял, что будет очень непросто. В итоге придумал довольно простой алгоритм сам. Дальше... попал или не попал? Еще один рандом с вероятностью, выдающий 0 или 1. Математики скажут «читай литературу, давно все придумано». Это правда, но поймут, что там написано, только математики
Для запуска не хватает только дизайна. Регистрирую домен, покупаю виртуальный хостинг, выкладываю все в интернет. Далее зову пару друзей попробовать поиграть. В ответ получаю кучу фидбека: тут слишком часто обновляется, там мелькает, тут стат странно работает, в чате хочу такую-то феньку и т.п. Отлично! Докручиваем все мелочи, чиним самые серьезные баги.
Начинаем думать, что еще понадобится в первую очередь. Первая страница должна заманивать — нужны новости (полдня). Люди захотят писать о багах и предлагать свои идеи + надо где-то описать правила игры — нужен форум (2 дня). Пока все, для старта достаточно.
После получения дизайна 3 дня уходит на вырезание картинок из PSD-шника и верстку.
В календарных днях на все вышеперечисленное ушло полтора месяца, ведь основную работу никто не отменял, соответственно время есть только по вечерам и на выходных.
Все, готов к запуску.
Первый старт (конец ноября)
Здесь все просто. Идем в игру похожего жанра и зовем пару друзей или просто знакомых. У меня таких было много, парочку я позвал. Разумеется, всем сразу понравится то, что админ — знакомый человек, с которым он давно играет в другом проекте и может наделить нереальными возможностями. Тут важно управлять ожиданиями: если всем все раздавать, серьезные ништяки игры сразу обесцениваются, соответственно договариваемся о чем-то конкретном: ты играешь, качаешься до 5 уровня, сообщаешь мне о багах и получаешь именной предмет в подарок после выполнения. Дело в шляпе. Человек начинает качаться, ему становится скучно, т.к. в игре больше никого нет, он зовет друзей. Пока несколько человек качаются и соревнуются в получении уровня, чиним найденные баги и докручиваем функционал, который просят игроки. В моем случае сразу захотели оружие, соответственно был сделан оружейный магазин, возможность покупки, одевания/раздевания и влияния статов оружия в бою. Итого неделя.
А дальше-то что? Вот это промах, оружие-то никто не нарисовал. Идем к фрилансеру, делаем заказ, ждем две недели, в процессе кормим игроков обещаниями. Чтобы совсем не потухли и не ушли, кидаем рекламу в паре похожих проектов. Резко наваливается куча игроков, все начинает серьезно тормозить, некоторые начинают в чате ругаться матом. В итоге к постояльцам всего +2 игрока... Но! Хостер кричит, что приложение нагружает сервер, и просит свалить нафиг. Арендуем выделенный сервер (6000 р. в месяц), смотрим, где провалы, оптимизируем.
Продвигаем (начало декабря)
Игра запущена, и доказано, что все работает, но играет всего 5 человек. Пора начинать пиар. Идем в похожие проекты и на тематические форумы и получаем кучу регистраций. Но вот беда, все уходят! Почему? Потому что игроков в чате мало, воевать не с кем и никто никого ждать не хочет. Логично, нужны боты! Здесь еще раз вскипел мой мозг, пришлось реализовывать алгоритм поиска пути на карте. Все довольно просто, но с непривычки тяжко. Через пару недель появляются боты, маскируем их под реальных игроков: пусть сидят в чате, создают сами заявки и принимают созданные. Вроде должно сработать. Повторяем рекламу в проектах и на форумах, народ подтягивается, многие уходят, т.к. функционала мало, но и многие остаются! Появляется пара энтузиастов, поверивших в будущее проекта, просим их тупо сидеть постоянно в игре и поддерживать жизнь в чате, соглашаются. Пару раз повторяем рекламу в других проектах (это все делают
Разумеется, в процессе происходит постоянная дописка функционала, разработка оружия и прочего.
Подошел Новый год, все хотят халявы, почему бы и нет? Делаем двойной опыт за бои и хорошие подарки на Новый год. Всем очень нравится, и все больше игроков остается! На новогодних каникулах можно отдохнуть от работы и полностью посвятить себя приданию хорошего ускорения игре: народ просит моды в вещи и профессии, а также кучу прочих мелочей. Реализуем по мере возникновения спроса. Одновременно начинают появляться противники проекта, кто-то ругается матом, кто-то рекламирует другие проекты. Надо что-то делать.
Отдохнем от функционала, в игре должно быть приятно находиться
Разрабатываем полицию, призванную следить за порядком. На удивление, очень много энтузиастов находится в нее попасть. Назначаем ответственного (на данном этапе уже есть игроки, которым можно доверять), поручаем разработать управленческую структуру и систему наказаний. Пишем функционал: запрет общения в чате, блоки и т.п. Через неделю все готово, но! Попавшие в полицию игроки начинают чувствовать власть и распугивают игроков незаслуженными наказаниями. Что делать? Во-первых, пистон, во-вторых, четкие правила, как и за что наказывать, в-третьих, назначаем жену полицейским, даем максимум прав и заставляем следить за всем происходящим. Проблема решена!
Ну есть 100 игроков, а дальше что?
А дальше делаем две вещи: реферальная система для обеспечения вирусного маркетинга (привел — получи игровую валюту) и отдел рекламы, работающий за зарплату. В итоге имеем: а) кучу рекламы в других проектах и на форумах и б) энтузиастов, расписывающих стены домов и подъездов, а также милиционера, имеющего друзей в транспортном цеху и такси. Последний размещает кучу рекламы на передвижном транспорте.
Послесловие
До создания игры я долго думал, стоит ли овчинка выделки и что конкретно я один буду делать, было совершенно не понятно, ведь проект огромный. Статей, способных развеять мои сомнения, я не нашел и решил попробовать сам. Читатель сможет использовать опыт и будет понимать, чего ожидать, в каком направлении двигаться и как расставить приоритеты.
На сегодняшний день игра находится примерно в состоянии, описанном выше. Активных игроков — в районе 200 и 10–30 новых регистраций ежедневно.
Речь идет об игре Genesyx.
Надеюсь, пост окажется полезным, покажет, что один человек вполне способен начать что-то большое и добиться успеха, а также сподвигнет кого-то на создание своего проекта.
Продолжение следует...

*barmalei*
