Своя браузерка — путь мыши: ЗАЧЕМ?
Начало: habrahabr.ru/post/249625/Откровенно говоря, я планировал ограничиться одной коротенькой статьей, в которой собирался кратко перечислить сложности на пути любого желающего завести в хозяйстве собственный сервер с браузерной игрой на OpenSource-движке. Однако неожиданно оказалось, что всё, что я хотел сказать, просто не вмешается в одну статью разумного размера. Что ж, значит это будет несколько статей. Теперь можно не пытаться впихнуть всё в один пост и подробно разобрать все грабли на пути будущего администратора браузерки.
Первая статья цикла неожиданно даже для меня вылилась в общие рекомендации о поведении Администратора сервера. Но уже сейчас очевидно, что это — бег впереди паровоза. Перед тем, как некто решает установить браузерку и заделаться админом, он должен ответить себе на главный Вопрос. И звучит этот вопрос так: «ЗАЧЕМ?!»
Но перед тем, как дать возможные варианты ответа на этот вопрос, мне хотелось бы прояснить, для кого предназначен этот цикл статей.
Как известно, лучше быть богатым и здоровым, чем бедным и больным. В нашем случае — лучше иметь деньги на разработку и раскрутку и/или обладать собственным опытом в этой сфере. Если вы узнали себя в этом описании — значит эти статьи не для вас. Право же — если у вас есть деньги на разработку, то зачем вам связываться с бесплатными движками? Проще нанять специалистов-профессионалов, которые сделают эту работу лучше, быстрее и по итогу — с меньшим геммороем. Как действовать в таких случаях, описано в десятках и сотнях великолепных статей на здесь же, на Хабре. Ищите и читайте их.
Если у вас есть опыт разработки браузерок — то опять же, вам незачем читать эту статью. Вы и сами можете быстро и красиво написать собственный движок, а затем продать его издателю или скооперироваться со специалистом по раскрутке.
Если у вас есть опыт раскрутки сетевых проектов — вам незачем становится связываться с разработкой, установкой и поддержкой своего движка. Вам проще найти уже более-менее рабочий сервер и предложить свои услуги администратору за долю в доходах. Если вы действительно хороший специалист, то любой администратор с радостью ухватится за шанс повысить посещаемость своего сервера и свои доходы.
Теперь, когда мы отсекли «богатых и здоровых», остались только «бедные и больные». Те, у кого нет ни денег, ни умений, а есть только горячее желание стать администратором своего сервера. И теперь можно попытаться ответить на заданный выше вопрос: «Ну и зачем это всё вам нужно?»
Мне очень не хочется развеивать мечты и надежды будущих админов, уже мысленно управляющих серверами с тысячами регистраций и сотен онлайна. Но реальность печальна и жестока. Первые несколько месяцев (а то и лет) вы не сможете предложить игрокам НИ-ЧЕ-ГО: — Вы используете какой-то из готовых движков —, а значит многочисленные вариации таких серверов уже сотнями раскиданы по сети; — У вас еще нет никаких умений, что бы как-то выделить ваш сервер из сотен подобных; — У вас нет денег на найм хоть каких-либо специалистов — всё, т.е. АБСОЛЮТНО ВСЁ вам придется делать самому! Начиная от настройки операционной системы и заканчивая администрированием форума (который, кстати, тоже придется разворачивать вам) и внутриигрового чата; — У вас даже нет денег на раскрутку и рекламу — поэтому даже это вам придется делать самому. Вам придется изучить СЕО, что бы выделятся из сонма одинаковых клонов хотя бы мета-тегами. Вам придется самому регистрироваться в десятках каталогов, что бы получить хоть какое-то количество регистраций и хоть какой-то онлайн. Вам придется самому искать тематические форумы и рекламировать свою игру — там, где это не запрещено правилами.
Всё еще осталось желание запустить свою браузерку? Тогда ответьте сами себе на вопрос «Зачем?». Только будьте честными хотя бы с собой! Вариантов ответа на этот вопрос — огромное множество. Я попытаюсь рассмотреть лишь некоторые из них — и объяснить почему они плохо подходят как причина для запуска своей собственной браузерки. Итак…
Ответ нулевой — ДЕНЬГИКак уже было сказано в предыдущей статье — здесь рыбы нет. Хоть какого-нибудь выхлопа можно ожидать только при серьёзных вложениях сил и/или средств. А зачастую — и того и другого. Но даже при этом хотя бы «в ноль» браузерку выйдет очень не скоро.
Ответ первый — ПОЧЕСАТЬ СВОЁ ЧСВВ этом нет совершенно ничего плохого. Как мотиватор, чесание ЧСВ будет, пожалуй, посильнее, чем даже желание наживы. Но говорю сразу — оно того не стоит. Почесать ЧСВ можно и более легкими способами. Например — найти уже открытый сервер с таким же «бедным и больным» админом и напросится в модераторы. Затрат и обязанностей — минимум, профит и размер ЧСВ — по достижимому максимуму при учете полного отсутствия навыков и денег.
Ответ второй — НАУЧИТЬСЯВы хотите изучить новый язык — скажем PHP, на котором написано большинство браузерок — и не смогли придумать ничего лучшего, чем учить его на коде бесплатного движка? Право же! Есть гораздо более лучшие и безболезненные способы выучить PHP! В сети есть огромное количество обучающих курсов с примерами на любой уровень сложности — начиная с «Hello World!» и заканчивая примерами создания простенькой игры «с нуля». С подробными пояснениями каждого шага, комментированным кодом, сообществом, готовым ответить на ваши вопросы. В общем — фактически любой другой способ для изучения нового языка ЛУЧШЕ, чем копаться в говнокоде очередной бесплатной браузерки.И я знаю, о чём я говорю — код буквально каждого просмотренного мною движка ogame-like клона по качеству варьируется от «чудовищного» до «очень плохого». Включая даже мой код СуперНовы. Этому есть объективные причины. Очень редко весь срок жизни движка его код пишется одной и той же командой. Как правило, код бесплатного движка представляет сборную солянку из фрагментов, написанных разными людьми с разным уровнем опыта и разными подходами к написанию ПО. Все эти разномастные куски кое-как состыкованы вместе. Структура БД как правило — ужасна. Отсутствуют внешние ключи и даже важные индексы в таблицах, записи не нормированы, данные в зачастую дублируют друг друга, а для одних и тех же данных используется несколько разных таблиц просто потому, что разные куски кода писали разные люди в разное время. Пытаться научиться по такому коду — это сломать себе изначально стиль кодирования и усвоить bad practice, так сказать, «с пеленок».Но даже если движок разрабатывался одним человеком/одной командой, то и здесь вы не застрахованы от разномастного кода. Дело в том, что человеку свойственно обучаться. Вырабатываются новые приёмы, добавляются новые практики, расширяется арсенал средств. Да и по мере доработки движок растет и развивается и предоставляет всё больше и больше инструментов для совершения стандартных действий. И то, что год назад казалось программисту вершиной мастерства (и было им, если судить объективно) через год уже будет вызывать только нервную усмешку и чувство неловкости. Да, конечно — если изначально планировать архитектуру игры, расписать структуру БД и чётко следовать своим планам, то всего этого удалось бы избежать. Только, увы — люди, которые могут такое сделать, уже давно работают либо на себя, либо «на дядю». А бесплатные движки пишутся энтузиастами. Поэтому — чудовищное качество кода таких движков это не исключение, а правило.
Ответ третий — СДЕЛАТЬ СВОЁДолжен огорчить и здесь — поначалу большую часть времени вы будете разбираться в ужасном чужом коде просто что бы вы смогли перейти к меньшей части — фиксу чужих ошибок. Практически любой бесплатный движок содержит: почти полное отсутствие проверки вводимых параметров на соответствие типам и корректность; прямая вставка данных от пользователя в таблицу без экранировки — путь к SQL-injection; прямой вывод данных от пользователей как в HTML-код (путь к появлению вирусняков и злонамеренных скриптов в вашей браузерке) так и в JS-код (в лучшем случае делающие ваши скрипты нерабочими, а в худшем — позволяющие выполнить на странице враждебный код); прямая запись данных в таблицы БД с полным игнорированием конкурентности —, а это прямой путь к дедлокам, ситуациям race condition, потерям юнитов, ресурсов и прочих игровых ништяков. И это только вершина айсберга! Мало какие движки делают полноценные проверки «типа-системных-данных», и слишком доверяют данным от браузера — что в перспективе дает злонамеренным игрокам возможность присваивать себе ресурсы или даже манипулировать чужими аккаунтами. И это я еще не упомянул неверный выбор типов данных в БД, когда через пару лет работы у топ-игроков наступает переполнение полей в таблицах со всеми сопутствующими трудноуловимыми глюками, либо неверно выбранный внутренний формат хранения данных — когда строка 070 при конвертации в число вдруг становится числом 56.И даже когда вы закроете основные дыры и поправите наиболее вопиющие глюки, то над вами всегда будет довлеть проклятие УНАСЛЕДОВАННОГО КОДА. Любые ваши попытки сделать что-то своё, новое и интересное, будет наталкиваться на то, что с текущим кодом и текущей структурой БД сделать это будет попросту НЕВОЗМОЖНО, не переписав заметный кусок игры. Или когда исправление глюка в одном месте приводит к возникновению совершенно другого глюка в, казалось бы, несвязанном участке кода — просто потому, что старый глюк был уже учтен и исправлен кем-то другим в своём фрагменте.Право же — если просто хотите поучаствовать в разработке и сделать что-то своё — присоединитесь к какому-нибудь существующему проекту. Даже если вас не возьмут в состав команды (а кому вы нужны без умений и денег?), то вы как минимум сможете попробовать написать какой-то мод и получить при этом консультацию и помощь на форуме проекта.
Всё еще хотите ставить свою браузерку? Ну что же, мыши! Добро пожаловать в страну жёстких и колючих кактусов! Вот только несколько растений, которые вам прийдется полностью пережевать на своём пути.
Кактус первый — ОДИНОЧЕСТВОЯ писал это выше, но подчеркну еще раз — готовьтесь к тому, что вам придется всё делать самим. Начиная от настройки сервера под игру и заканчивая вёрсткой страниц и даже рисованием картинок к игре. Или хотя бы к переделыванию бесплатных картинок из инета. Если у вас есть знакомый админ, который поможет настроить сервер, знакомый верстчик, который поможет сверстать страницы или знакомый художник, который нарисует вам картинки — вам очень, просто несказанно повезло! Однако сразу настраивайтесь на то, что помощь эта — временная и/или эпизодическая. Вы можете отвечать только за своё желание сделать Идеальную Браузерку и только у вас есть стимул продолжать над ней работу. Если кто-то из тех, с кем вы начали проект вместе с течением времени охладел — не стоит его порицать. Скажите ему «спасибо!» за проделанную работу и продолжайте путь без него. Если кто-то вам помог по дружбе — не стоит считать его вашим должником и рассчитывать на то, что вы можете использовать его скиллы всегда и без ограничений. Если есть возможность — внимательно наблюдайте что и как делал ваш друг, что бы в следующий раз самостоятельно повторить эти действия самому, а за помощью обращаться лишь в крайних случаях. Если вы всё делаете правильно — то обращаться за помощью прийдется всё реже и реже, а вы в дополнению к изучению основного языка программирования получите еще и смежные навыки.
Кактус второй — ОТСУТСТВИЕ НАВЫКОВПоначалу любое действие будет вызывать кучу вопросов. Поначалу будет непонятно даже с чего начинать и за что хвататься. Это — нормально. Это стоит ожидать и к этому стоит готовится заранее. В самом начале у вас не будет не только навыков, но вы даже не будете знать, где можно найти ответы на свои вопросы и даже порой не будете понимать, как сформулировать вопрос. Как говорится — читайте доки, они рулят. Иногда бесплатные движки содержат простейшие инструкции по установке игры в стандартной/базовой конфигурации.Зачастую на форумах можно найти ответы на наиболее часто встречающиеся вопросы. Но помните, что вопрос на форуме — это расход «кредита помощи». Только то, что вы скачали движок и захотели его установить, не делает автора движка чем-то вам обязанным! Поэтому избегайте расходовать свой кредит на общие вопросы типа — «Как установить MySQL?» или «Как настроить PHP?». Такие ответы проще искать в Гугле — с огромной степенью вероятности там уже есть нужный ответ, который был дан для аналогичного вашему случая или очень близкого.Так же не имеет смысла задавать на форуме вопросы по языкам — в Гугле есть ответы на все ваши вопросы — обычно намного больше, лучше и подробнее, чем вам ответят на форуме. Даже на вопросы по движку ответы лучше всего искать самостоятельно. В конце-концов ваш движок будет OpenSource и идеальная документация по коду — это сам код.А разобраться в хитросплетениях говнокода вам поможет какая-нибудь IDE. Лично я, например, использую phpStorm. Кроме бесплатной ознакомительной версии JetBrains предоставляют бесплатные лицензии для авторов OpenSource проектов. Наиболее полезные функции при изучении нового кода — это Alt-F7 — «Found Usages» (найти все места, где используется данная переменная/константа/функция/итд), Ctrl-B — «Declarations» (перейти к месту объявления переменной/константы/функции/итд) и Ctrl-Alt-F — «Found in path» (глобальный поиск строки во всем проекте).Вообще IDE (не обязательно phpStorm) очень сильно помогает в начальном освоении языка. Подсветка синтаксиса, указание на синтаксические ошибки и возможные логические ошибки в коде, автоматическое форматирование — всё это очень облегчает знакомство с кодом. Файл-мешанину со сбитым форматированием можно легко привести к аккуратному удобочитаемому виду применив встроенную функцию Ctrl-Alt-L — «Reformat code…«И тут может помочь, если у вас уже есть какие-то смежные скиллы.Умеете рисовать картинки? ВЕЛИКОЛЕПНО! Вы можете сделать уникальную игру «прямо из коробки»! Достаточно только поставить стандартный движок, заменить часть картинок нарисованными вами — и это уже даст приток игроков. Потому что пусть это будет и «обычный ogame-клон», но внешний вид будет притягивать внимание и до поры, до времени маскировать полную стандартность игры. Встречают — по одежке. Правда, провожают — по уму, поэтому рано или поздно придется переходить и к работе с кодом. Но это уже будет не так мучительно, поскольку определенную работу вы уже проделали, заменяя картинки в игре (что, кстати, может быть очень нетривиальным в некоторых проектах!)Умеете верстать? Это почти так же круто, как и умение рисовать! Вы можете придать своей игре внешний вид просто манипулируя стандартными блоками в темплейтах. Более того — вы можете взять стандартный темплейт игры и переделать его для мобильных пользователей, что даст вам сразу +100 к новым игрокам! Все виденные мною движки грешат тем, что играть в игры на их основе с мобильных телефонов либо очень неудобно, либо вообще невозможно (например, из-за слишком активного использования событий «mouseover», «mouseenter» и «mouseleave», либо правого клика).Умеете в СЕО? Ну, тогда непонятно, зачем вы вообще читаете этот текст. Вы и сами знаете как стричь деньги на клонах чужих сайтов.
Кактус третий — ОТСУТСТВИЕ СВОБОДНОГО ВРЕМЕНИБудьте готовы к тому, что первое время у вас просто не останется свободного времени. Работа-еда-сон-браузерка — это будет ваш цикл на первые несколько месяцев, пока вы не получите хотя бы базовые знания и навыки. При чем время будет уходить не только и не столько на саму модификацию и освоение кода, сколько на сопутствующие действия: настройка и оптимизация ОС; настройка и привыкание к среде работы; разворачивание, настройка и модерирование форума; модерирование игры; продвижение игры — всё это, напомню, вам прийдется делать скорее всего в одиночку.Если вы занимаетесь своей браузеркой и у вас остается свободное время — то либо вы нигде не работаете/не учитесь, либо вы что-то делаете не так и не вкладываете нужное количество усилий в игру.
Кактус четвертый — СРЕДНЕСТАТИСТИЧЕСКАЯ «НЕБЛАГОДАРНОСТЬ» ИГРОКОВОтмечу — «неблагодарность» не зря взята в кавычки. Как показывает практика — большая часть игроков нормальны и адекватны. И обычно вы даже не будете замечать их присутствия, кроме как по изменению в числе онлайна. Однако иногда встречаются и неадекваты. И эта та ложка дёгтя, что будет портит бочку мёда. Очень сложно помнить о том, что основной массе ваших игроков всё нравится, когда в чате появляется неадекват и начинает метать кал налево и направо.Для вашего же собственного морального здоровья рекомендую — не вступать с такими неадекватами в переписку и блокировать их сразу же. Здоровее будете. Впрочем, более подробно на общении с пользователями я планирую рассказать в одной из следующих статей. Пока же следует запомнить: самая главная ценность начинающего админа браузерки — это его душевное здоровье и уверенность в своих силах. У вас и так будет дохрена поводов и причин для разочарований и расстройств, что бы добавлять к этому списку общение с неадекватами.
И опять незаметно набралось почти 17 кб текста. Поэтому на данной мажорной ноте закончим эту статью.