Руководство по созданию крутых MMORPG для новичков
Автор: Дмитрий Литовченко
Эта статья создана с целью раздачи ссылок и экономии набранного другими программистами текста на форуме. Надеюсь, я смогу говорить более точно и справедливо от имени всех разгневанных разработчиков. Однако знайте, что в конце я постараюсь закончить всё на позитивной ноте.
Если вы открыли эту статью ожидая настоящего руководства по созданию концепта, дизайну, программированию, работе с сетью, отладке, полировке, маркетингу, распространению, управлению, обеспечению безопасности и постоянной разработке нового контента для вашей MMO, которая выходит через несколько месяцев, тогда вы также можете захотеть позвонить на бесплатный номер 1-800 чтобы заказать чудесные таблетки для потери веса и книги о том, как вы можете (ДА ВЫ МОЖЕТЕ!) стать миллионером посредством онлайн аукционов.
Вот, первое, что вы заметили в предыдущем параграфе (это на самом деле было всего лишь одно предложение), это количество враждебности. На самом деле такой ответ не сильно отличается, а в чём-то и гораздо более мягкий ответ, чем ответы самых профессиональных и опытных разработчиков, которым доводится читать посты про «дизайнера MMO» на форумах едва ли не каждый день. Каждый раз когда мы возвращаемся на форум, появляется очередной человек, без опыта программирования (или с минимальным), объявляющий, что его новая MMO FPS RPG будет новым убийцей WoW или Oblivion. Итак, перед тем, как мы программисты заработаем плохую репутацию за то, что мы пессимистичные интернет-головорезы, дайте мне объяснить почему мы отвечаем то, что мы отвечаем.
Вот краткий пример типичного поста про MMO:
Автор: ((куча разных людей))
Всем привет,
Я и мои друзья собрались вместе и мы готовим план для новой и интересной MMORPG.
Прямо сейчас дизайн на бумаге, но мы планируем скоро начать программирование,
у нас есть пара вопросов:
1. Какой язык программирования использовать?
2. Есть ли где-то сборники уроков по созданию игр и программированию сети?
3. Какой движок выбрать для MMO?
Наша новая идея ((вставьте название концепта, который уже был сделан 10000 раз))
и мы думаем, это будет действительно круто. Я дизайнер игры, и несколько человек мне
помогают, но нам нужны программисты. Если Вы хотите присоединиться, пишите нам на
убогий.адрес@бесплатнаяпочта.ру
Вместо того, чтобы пройтись по примеру сверху вниз, я сначала обращу ваше внимание на более общие проблемы.
Это *оскорбляет* нас, как программистов
Игры ещё не являются зрелым средством массовой информации, и многие люди не принимают их всерьёз. По разным причинам бесчисленные люди думают, что программирование игр — лёгкая работа для бездельников, когда на самом деле — это одна из самых сложных трудовых карьер, по которой может пойти человек. Результат очень поощряет, но только потому, что это настолько безумно сложно. Такой тип сообщения на форуме буквально оскорбителен для нас, потому что сказать «у меня нет опыта в программировании, но я легко сделаю MMO», на самом деле звучит как «То, чем вы, парни, гордитесь, *таааак* легко сделать.»
Это является чуть ли не основной причиной, почему мы настолько враждебны. Даже если вы не сказали это открытым текстом, мы видели такое же отношение к нам столько раз, что мы через время просто начинаем представлять себе невидимые слова и читать между строк, даже если вы не имели этого в виду. Итак, мы пояснили защитный ответ, но есть ещё другие вещи, которые нас тоже утомляет повторять, такие как:
Вы не являетесь дизайнером, и вам он не нужен
Писатель? Хорошо. Дизайнер характеров и персонажей? Хорошо. Дизайнер уровней? Да. Дизайнер? Нет.
«Дизайнер» — это один из самых общих существующих терминов, и весьма мало людей знают, что означает это слово. Идея игры, где вы находитесь на Луне, в виде ниндзь и сражаетесь с крабами-мутантами это НЕ дизайн, это концепт (и к тому же весьма убогий в этом случае). Дизайн вычёсывает всевозможные аспекты игры очень мелкой гребёнкой и продумывает все мелочи.
Возьмём для примера систему укрытия от огня противника в Gears of War:
Что определяется, как укрытие.
Может ли укрытие «сломаться», прийти в негодность?
Какие анимации понадобятся персонажу, чтобы присесть (встать) в укрытие, стрелять оттуда, перезарядиться, выйти из укрытия, и т.д.
Какие клавиши игрок должен нажать, чтобы присесть за стену или встать за угол?
Как насчёт выйти из укрытия?
Как не дать врагу, идущему из-за вашей спины, убить вас, когда вы в укрытии и не видите, что происходит сзади?
Предыдущий вопрос не может быть решён универсально, поэтому для каждого игрового уровня нам нужно убедиться, что такая ситуация не возникнет.
Как вы укроетесь от Берсеркера? (проблема, с которой, я думаю, они не очень хорошо справились)
Берсеркеры — слепые существа, чувствующие запах и тепло, атакующие на звук, могут с разбегу пробить обычную кирпичную стену
Как насчёт предотвращения случайного использования укрытия, когда вы этого не хотите? (Проблема, на самом деле, не была решена в первой части GoW)
Этот список может продолжаться до 60 или 70, но я остановлюсь здесь.
Я бы мог целый день продолжать обсуждать один аспект игры, и это всего лишь ничтожная часть всей игры. Очевидно, я не могу перечислить всевозможные аспекты дизайна MMO, но вот в одной статье была попытка это сделать:
Итак, вы решили сделать MMORPG? А хорошо ли вы всё продумали?
Это хорошо составленный и достаточно длинный список, но даже в нём далеко не всё раскрыто.
Итак, мы разобрались, что объём дизайна для хорошей игры ошеломляет. Но давате посмотрим, почему, как самостоятельному разработчику, вам даже не потребуется дизайнер...
Команда, которую вы собираете
Если вы потратили ваше время на прочтение статей, и особенно той статьи, ссылка на которую была дана чуть выше, я с уверенностью скажу, что вы — один из тысячи. Но не более. Вы один из тысячи, и это значит, что найти кого-то ещё с напором и целеустремлённостью, чтобы удержать проект на плаву, будет невероятно трудно. Вы можете найти другого участника через Интернет, а если очень повезёт, троих целеустремлённых людей. С таким количеством людей и потребностью в программистах и художниках, вам не хватит ресурсов чтобы выделить роль «дизайнера».
Я знаю, о чём вы думаете, я когда-то тоже про это подумал впервые... что вы с вашими друзьями сделаете это вместе. Давайте я скажу настолько чётко и понятно, насколько это возможно, — это ЭПИЧЕСКИ плохая идея! Я потерял нескольких друзей при нелицеприятных обстоятельствах, следуя такой логике, пожалуйста, не делайте такой же ошибки. Это всегда плохая идея смешивать серьёзное дело и дружбу, и у меня рухнули и сгорели два проекта из-за этого.
Хорошие участники команды ищут хороших лидеров.
Не поймите меня превратно, вполне реально собрать хорошую команду, но вам понадобится осязаемый продукт. Хорошие разработчики и программисты умны, и они, по своему опыту, ищут лидеров, которые не бросят проект на полпути. Лучший способ сделать это — с помощью прототипа, на который можно посмотреть, играбельная демо-версия является большим плюсом. Разработка играбельной части игры очень увеличит ваши шансы собрать сильную команду вместе.
Но давайте закончим с этим вопросом, потому что я сбился с темы.
Если Вы задаёте пространные вопросы о языках программирования и движках, вы не готовы создать 3D игру, не говоря уже про MMO.
Это простейшее правило жизни, если программист спрашивает «Какой движок мне подходит?», тогда вероятно он не имеет ни малейшего представления как ими (движками) пользоваться и что они из себя представляют. Зная насколько сложны движки, за этим вопросом последуют множество других вопросов по выбранному движку.
Этот вопрос на самом деле бесполезно задавать, поскольку в мире нет доступных публично движков, позволяющих выдержать масштабы настоящей MMO, это проблема железа серверов, а не программного обеспечения. Не смущайтесь, существуют движки, позволяющие принять больше подключений, чем обычный мультиплейер, но ничего отдалённо приближающегося к масштабам MMO.
Примечание: Как я упомянул ниже, мне следовало подчеркнуть разницу между глупыми вопросами о движках, обычными вопросами о движках и обычными вопросами новичков. Вы можете спросить «какой движок мне использовать», но лучше всего задать такой вопрос с предоставлением информации о вашем проекте. Не существует движка-повелителя, выкованного в огне Роковой Горы, который бы делал всё, что может вообразить простой смертный. На каждый сценарий имеется движок, примерно подходящий под его потребности. Это нормально — задавать вопросы о движках, но указывайте ваши потребности и цели. Если вы новичок, и вам требуется хорошая инструкция как научиться программировать, просмотрите некоторые старые темы и статьи на форуме, перед тем, как задавать вопросы на форумах. Задавать вопросы хорошо, но оглянитесь вокруг, скорее всего на них уже есть ответы.
Не существует уроков «как сделать MMO».
Если бы такие существовали, это был бы исторический документ. Даже более простые однопользовательские игры не могут быть описаны простым пошаговым уроком, из-за массивного количества работы, знаний и опыта, который вкладывается в них, и просто не может быть передан эффективно в форме текста. Это как сравнить чтение про футбол с реальной игрой в футбол. Как читать про страну или жить в ней.
Все эти аргументы даже не должны были прозвучать, потому что:
Это просто бесцельно и непрактично
Вот тема на англоязычном форуме, обсуждающая создание игры (пусть даже MMO) командой друзей в свободное время:
DevMaster.net: Lets talk about MMO development...
После некоторого количества дебатов, многие согласились, что теоретически (с небольшой целеустремлённостью) возможно создать MMO, но невозможно:
Собрать базу игроков достаточно большую, чтобы квалифицировать проект как MMO.
Позволить себе серверное оборудование и «грубую» компьютерную силу, чтобы выполнять код сервера быстро и надёжно.
Управлять оборудованием и программным обеспечением, а также обеспечивать защиту от хакеров.
Управлять созданием дополнительного контента, чтобы поддерживать развитие и жизнь MMO.
И как только вы учтёте все эти факторы, то поймёте, что просто непрактично создавать такую игру вообще.
Теперь, раз идея друзей и людей играющих вместе является привлекательной, есть гораздо более простое решение для этого:
Создайте многопользовательскую игру
Есть огромная (или может, массивная) разница между MO и MMO. Поддержка сетевой игры сложная, но определённо не невозможная, и часто встречается в играх, написанных одним программистом, или маленькими командами. Многопользовательская или совместная сетевая игра очень даже возможна, и я бы рекомендовал вам взяться за такой проект, хоть, вполне вероятно, вы и не закончите игру (это просто сухие цифры статистики), но это послужит отличным опытом. С другой стороны, работа над MMO оставит вас смущёнными, с небольшим головокружением, невозможностью продвигаться вперёд, и массой потраченного времени в конце.
Но прежде всего, повторю что-то, что надо повторять постоянно:
Устанавливайте себе реальные цели
Pong -> Крестики-нолики -> Тетрис -> Mario -> doom
Поднимайтесь постепенно по этой «карьерной лестнице». Делайте мелкие, играбельные части этих игр, которыми можно делиться с игроками, и смотрите, сколько сил это отнимает. Я бы оценил среднее время, которое требуется людям, чтобы сделать нечто подобное в 10-13 месяцев, учитывая, что они уже были знакомы с компьютерами в общем. Как в любом деле — начинай с малого, двигайся к большому.
Когда-то я слышал, как кто-то сказал «Если вы стартовали на Луну и промахнулись, то вы летите к звёздам», и мой ответ был «А, вы имеете в виду тот марсианский зонд, который промахнулся мимо точки посадки, разбился и сгорел?»
Идея в том, что чрезмерные амбиции убивают проект, и мы все с этим знакомы. Когда я был моложе, я начинал несколько проектов, и примерно на 20% каждого из них, я понимал, что я ничего нового больше не узнаю, и если его не закончить то потраченное время казалось потерянным. Я запомнил этот урок и теперь ставлю меньшие и более реальные цели, чем те, что я ставил раньше. В результате я наконец-то нашёл удобную мне скорость изучения новых технологий, и когда остаётся ещё много нового материала для изучения, я знаю, что это очень поможет ускорить работу. И я знаю, что это поможет вам (ДА, ВАМ!) сделать то же самое.
Источник: http://www.gamedev.ru