Яндекс как сделать игры?

Совет 1: Как создать онлайн игру

В некоторых странах, таких как Южная Корея например, онлайн-игры стали практически национальным видом спорта. Не менее популярны они и в Европе, США и нашей стране, а их создатели хитов этой быстрорастущей сферы становятся миллионерами в считанные месяцы.

Естественно, у многих, кто столкнулся с миром онлайн игр как игрок или же как начинающий предприниматель возникает вопрос — как же сделать онлайн игру?

На самом деле это достаточно просто.

В первую очередь необходимо определиться с видом игры. Все онлайн игры делятся на несколько очень непохожих друг на друга типов:

RPG (Role-Playing Game, ролевая игра), или скорее MMORPG (Massively Multyplaying Online Role-Playing Game – многопользовательская онлайновая ролевая игра) – ролевые игры, подобные World of Warcraft или Lineage. Играющему предстоит выбрать роль (отсюда и название) — стать орком или гномом, воином или магом и т.п., после чего включиться в бурную жизнь игрового мира.

Такая игра состоит из двух основных частей. Серверная часть — это, собственно, игровой мир, а по сути — база данных, где хранится информация об игроках, их умениях и навыках («статы»), а также всевозможных предметах и объектах игрового мира. Клиентская часть — это программа, которую игрок запускает на своем компьютере для того, чтобы увидеть игровой мир и своего персонажа, а также совершать какие-либо действия в нем. Основная задача клиента — обмениваться информацией с сервером (получать данные об объектах и существах, окружающих персонаж игрока в каждый момент времени, и передавать на сервер информацию о действиях игрока), а также отображать полученные с сервера данные в виде привлекательной графики, как правило, трехмерной.

Для программирования как клиентской, так и, особенно, серверной части, необходимы отличные знания и хороший опыт собственно программирования, создания баз данных, навыки 3D-дизайна, ну и, конечно же, развитое воображение, которое поможет создать сложный и интересный игровой мир. Кроме того, сделать современную игру в одиночку просто невозможно. Нужна команда профессионалов.

www.kakprosto.ru

Создание браузерной игры. Как заработать миллион?

К браузерным играм не привыкли относиться всерьез, но на самом деле – это неплохой бизнес для небольшой команды друзей, у которых нет денег, но есть светлые мысли. А если еще и деньги есть, то тогда все значительно упрощается.

На самом деле создать браузерную онлайн игру может любой, у кого есть желание учиться, но не думайте, что вас ждет легкая прогулка. Даже если вы мастер на все руки (программист и дизайнер в одном флаконе), то придется потратить уйму времени. Если же вы не владеете ни кодом, ни карандашом, то затраты будут финансовыми.

Как создать браузерную игру ничего не изучая?

Ответ – никак. Для начала нужно будет выучить HTML – язык разметки, который работает в связке с каскадной таблицей стилей – CSS. Эти языки располагают текст и изображения на странице, собирая картинку из множества фрагментов. Поскольку вы намерены сделать именно браузерную игру, то ей обязательно понадобится сайт, желательно красивый и функциональный. Поэтому не обойтись без JavaScript – самого простого способа визуализировать вашу игру на стороне геймера. Этот язык позволяет менять местами элементы страницы без ее перезагрузки. По сути, JavaScript управляет элементами CSS и HTML в реальном времени.

Для создания браузерной игры придется выучить HTML, CSS, PHP и JavaScript, так что бессонные ночи вам гарантированы

Язык программирования PHP нужен для создания движка игры. Он используется на сервере для обработки данных, поступающих от разных геймеров. Это – ядро, которое приводит в действие все внутренние механизмы.

Я не хочу ничего учить, но у меня есть деньги

Поздравляем, вы избежали многих проблем. И тут же получили новые. Чтобы сделать браузерную игру хорошего качества (в плохую никто играть не будет) нужно иметь хорошую команду разработчиков, а хорошие спецы стоят денег. Если брать по минимуму, то вам необходимы:

  • Программист – 2 штуки
  • Дизайнер и художник – 2 штуки
  • Гейм-дизайнер – 1 штука
  • Комьюнити-менеджер – 1 штука
  • Гейм-мастер – 1 штука.

Если у вас нет личных знакомств, то придется обращаться к аутсорсингу. Обычно такие ребята трутся на биржах фрилансеров, самой популярной их которых является www.fl.ru/.

Всех необходимых работников можно найти на биржах фрилансеров

Правда, в этом случае нужно быть очень осторожным, поскольку фрилансеры привыкли регулярно срывать сроки. Как говорят опытные руководители, можно бесконечно смотреть на 3 вещи: как течет память, как горит дедлайн и как не работает фрилансер.

Во сколько обойдется разработка?

Во столько, сколько у вас есть денег. Вот здесь приведены примерные выкладки и структура расходов на создание среднестатистической браузерки. Итоговая сумма – 25 миллионов рублей. Однако не стоит пугаться этой цифры. В статье автор посчитал расходы на разработку по максимуму, так что при желании эту сумму модно уменьшить в разы и даже десятки раз. Или увеличить, если ваш папа – прокурор. Безусловно, такие проекты, как Drakensang Online или City of Steam требуют сумм как минимум с шестью нулями, но простую табличную браузерку можно сделать за пару десятков тысяч рублей.

В конце концов, вы всегда можете обратиться к краудфандингу. Пути Кикстартера неисповедимы, взлететь там может любой проект. Главное правильно подать блюдо.

Этапы разработки

Создание браузерной игры с нуля можно разделить на несколько этапов:

1. Поиск идеи

Поскольку у вас вряд ли есть 25 миллионов рублей и вы вряд ли являетесь гением в программировании и дизайне, единственное, чем вы можете зацепить пользователя, это необычный сеттинг. Даже пресловутая кампания из эльфов, орков, людей и гномов способна увлечь клиента, если погрузить их в необычную среду или заставить делать странные вещи. Например, игра Ботва Онлайн была написана «по приколу» четырьмя людьми в свободное от работы время, но благодаря своему необычному сеттингу быстро стала успешным бизнес проектом.

2. Разработка сюжета

Сюжет очень важен (если конечно, вы не делаете стратегию). Если у самого воображения не хватает, наймите кого-нибудь, у кого оно есть. В крайнем случае, обратитесь к аутсорсингу и найдите толкового копирайтера, у которого уже есть опыт создания квестов.

3. Создание игры

Даже если вы выучили вдоль и поперек JavaScript и CSS, вы все еще ничего не знаете о том, как создать браузерную игру. Это примерно то же самое, как если бы вы выучили теорию плавания, ни разу не побывав в бассейне. Лучший выход в этом случае – воспользоваться самоучителем. Вот здесь можно многое узнать о разработке игр, причем не только браузерных.

Еще по теме:   Как сделать презентацию в браузере Яндекс?

Скорее всего, ваша первая браузерка будет выглядеть так. Это – легендарный Бойцовский Клуб

4. Продвижение проекта

Последний этап, на котором дело в свои руки берут комьюнити-менеджер и специалист по маркетингу (если таковой имеется). В крупных компаниях на долю рекламы уходит примерно 60% бюджета, поэтому на эту статью денег лучше не жалеть. Если же ваши финансы поют романсы, то тогда не остается ничего другого, как самому перепахивать игровые форумы и завлекать геймеров всеми возможными способами.

Как создать браузерную игру с помощью конструктора

Оказывается, ушлые программисты уже давно создали кучу конструкторов MMO, которые могут помочь новичку создать браузерную онлайн игру бесплатно. Это не значит, что вы можете успокоиться и удалить все закладки по программированию, но с помощью конструктора можно здорово ускорить процесс.

Популярный игровой конструктор Construct 2

Большой популярностью пользуется MMO Constructor – отечественный продукт, в котором можно создать все элементы полноценной браузерной RPG. Взамен авторы требуют совсем ничего – 50% от прибыли проекта. Разобраться в конструкторе непросто, но добрые люди уже написали гайды. Также чтобы создать браузерную игру, можно воспользоваться такими программами, как Construct Classic, Eclipse, FPS Creator.

Больше информации о конструкторах можно узнать на форуме Gcup, где тусуются все: и продвинутые геймдевы, и зеленые новички.

Так что там насчет миллиона?

Любая, даже мобильная игра должна приносить прибыль. Иначе нет никакого смысла тратить свое и чужое время. Дабы сделать свой проект финансово успешным, нужно слушать, что говорят опытные разработчики и делать то же самое:

  • Не жадничайте! Более 80% игроков вообще не платят, либо платят копейки. Однако они создают массовку, на которую подтягивается крупная рыба. Сконцентрируйтесь на ней. Остальным дайте возможность резвиться бесплатно.
  • Постарайтесь сделать так, чтобы донаторы не сильно выделялись из общей массы, иначе масса уйдет, оставив вас без донаторов и без денег. В общем, бряцайте мускулами аккуратно.
  • Лучше всего тратят деньги те, кто не хочет тратить свое время, поэтому монетизируйте наиболее рутинные операции. Не разменивайтесь по мелочам.
  • Уроки истории создания игр показывают, то онлайн-проект должен быть бесконечным. Если у геймера появится чувство, что ему нечего делать — он уйдет, а туда, где нет онлайна, новый геймер не придет никогда.

Напоследок хочется сказать – не так страшен черт, как его малюют. Даже лучшие геймдевы когда-то начинали с нуля, и кто знает, может быть именно вы станете следующим Джоном Кармаком или Ричардом Гэрриотом?

gametarget.ru

вторник, 4 апреля 2017 г.

Как создать игру самому? Этапы создания игры

Приветствую. Хотите узнать как создать игру самому и какие бывают этапы создания игры? В наше время чтобы создать простую игру на PC или телефон не обязательно нужно быть в этом большим специалистом, существуют специальные программы, которые позволяют создавать игры с нуля в одиночку.

Конечно, качество такой игры, если у вас нет опыта и знаний, может быть очень низким, но все с чего-то начинали. В этой статье вы узнаете что вам нужно чтобы создать игру и какие есть основные этапы создания игры.

Куда больше материалов вы можете найти на специальной странице в этом блоге:

Я выделил 7 основных этапов создания игры.

Как создать игру самому?

Для создания игры вам нужно знать язык программирования, а сейчас все они на английском, да и они сложные, там есть свой, так называемый синтаксис, который тоже нужно знать. Так вы себе представляете создание игры, верно?

Конечно, почти все высоко бюджетные игры делаются с помощью одного из ключевых языков, однако для новичка даже этого знать не обязательно.

Существуют специальные программы для создания игр, одной из которых является Game Maker. Они были созданы специально для создания игр (программа так и называется — создатель игр). Лично я работаю в Game Maker и он позволяет делать вполне качественные игры под любые платформы, от андроида, до ios.

Так-же можно посоветовать Unity или Construct 2, в качестве хороших альтернатив.

Все эти инструменты развиваются, а для Game Maker Studio 2 недавно вышла вторая часть, про которую я писал вот тут: Что нового в Game Maker Studio 2? Обзор GMS 2

Лично моё мнение, Game Maker — одна из самых удобных программ для создания игр именно для новичков, тогда как освоение Unity с нуля может занять куда больше времени.

Если вы выбираете Game Maker — то мой блог и канал вам существенно помогут в его освоении, ну а если вам выбор остановится на Unity или чем-то еще, тотам тоже существует огромное количество бесплатных обучающих материалов высокого качества на Русском.

В любом случае, первый (нулевой 🙂 этап — это выбор программы для создания игр.

Первый этап — дизайн документ

Далее вам нужно создать дизайн документ для новой игры. Другими словами — вам нужна идея игры. О чём будет игра? Что там будет происходить? Какой это будет жанр? Сколько времени и денег займёт разработка? Таких вопросов очень много и перед началом создания игры очень полезно составить какой-то примерный план.

Базовые вещи о том, как написать дизайн документ для игры, вы можете найти тут:

  • Как написать дизайн документ игр

Поверьте, без предварительного плана и чисто на энтузиазме с большой вероятностью игру вы не закончите.

Главная и основная часть создания игры — собственно говоря её создание, написание кода. Тут всё зависит от среды и программы, в которой вы игру делайте, однако в Game Maker и для новичков существует система drug and drop — перетаскивай и бросай.

Подобная система есть не только в GM, а так-же она есть например в редакторах карт и конструкторах для популярных игр. Кстати, именно с модов для популярных игр я рекомендую вам начать делать игры.

  • С чего начать разработку игр

Чтобы сделать свою первую игру с нуля вам не обязательно знать язык программирования, достаточно использовать систему drug and drop, которая выглядит примерно вот так:

Замечательная особенность Game Maker Studio 2 в том, что там все эти элементы автоматически расшифровываются в программный код, который видит разработчик.

Это позволяет постепенно учить код и переходить от drug and drop к кодингу.

Конкретные вопросы типа: как сделать движение, как сделать выстрел, какие бывают эффекты и всё такое прочее, вы сможете найти на моём ютуб канале в виде специальных уроков по основам создания игр.

Сколько занимает создание игры?

Вопрос сложный, всё зависит от ваших навыков, от того, что это за игра и других факторов.

Иногда простую игру на телефон опытный человек может сделать за пару недель, иногда игры среднего качества делаются небольшой командой из нескольких человек за 6-12 месяцев, ну а крупные проекты делаются большими студиями и разработка может занимать 1-2 и больше лет, при этом над игрой трудиться команда из 100 и более человек.

По примерным данным создание одной крупной игры занимает порядка 2-3 лет для команды из 200 человек, если мы говорим про серьезные проекты типа GTA 5.

При этом не забывайте что бывают и исключения из правил. Notch написал первую версию Minecraft за неделю и эта версия уже имела большую часть базовых структур. но в итоге разработка заняла несколько лет, хотя в отличие от GTA, над Майнкрафт работала очень маленькая команда, а доходы от Майнкрафт были очень серьезными.

Хотя это больше исключение, а не правило. Сейчас конкуренция существенно выше и подобные супер успешные и супер дешёвые проекты появляться всё реже.

Третий этап — графика

Графика обычно делается параллельно с процессом разработки и написания кода, и обычно ей занимается отдельный человек. Очень трудно совмещать работу не только программиста, но и дизайнера, однако иногда это удаётся сделать в одиночку, к тому-же некоторые проекты не требует очень качественной графики, либо-же берутся уже готовые картинки и спрайты.

  • Читайте: Где брать спрайты для игр?
Еще по теме:   Как сделать синхронизацию папки с Яндекс диском?

Графика и рисование это очень затратный процесс.

По моему опыту, если вы делайте игру в одиночку, на графику может уходить 40-60% общих затрат времени. По сути дела для инди разработчика одиночки хорошая графика может удвоить общее время на создание игры. И если удвоение с 1 месяца до 2 это не страшно, то удвоение с 2 до 4 лет, это очень много.

Поэтому крайне рекомендуется для начинающих разработчиков использовать все возможные способы получить бесплатную графику (может быть взять художника/дизайнера в долю) или же в качестве первых игр сделать графическое оформление минимальным.

В крайнем случае, можно заказать графику отдельно на стороне, с помощью аутсорса.

Однако, если вы хотите сделать всё сами, то есть множество способов научиться рисовать. Я тоже учусь (недавно купил планшет) и для обучения рисованию могу посоветовать вам некоторые хорошие ютуб каналы:

  • Хорошие YouTube каналы про Геймдев и Графику

Долго-ли учиться рисованию?

Вообще, как и любому делу — учиться можно и нужно всю жизнь, а совершенству предела нет. Однако, посмотрите еще раз мои рисунки.

Ну не прям вот ужас, да? Плохо конечно, но не прям вот?

Ну вот, это я рисовал компьютерной мышкой в очень простом графическом редакторе, а учился рисовать я 1-2 месяца, рисуя по 1 картинке в неделю, максимум.

Я думаю за год можно выйти на очень неплохой уровень, если выделять по 1-3 часа в день на рисование и на изучение теоретической базы.

У меня есть видео (16 минут):

www.econdude.pw

Как создать онлайн игру и заработать на ней?

Многие из нас не раз задавались вопросом, как создать свою онлайн игру и заработать.

Не важно для какой цели, как много понадобится сил и терпения или сколько придется вложить денег на ее раскрутку. Любое творение появляется из-за желания подарить миру что-то созданное своими руками, прославиться или похвастаться близким, а возможно, получить с этого материальную выгоду.

Можно ли создать свою игру и заработать, не имея навыков?

Для новичков в программировании существует множество программ по моделированию, с которыми сможет работать даже самый неопытный программист. Но перед тем как приступать к созданию, следует определиться с жанром, типом интерфейса и сюжетом. Сюжет – главная составляющая будущей игры, ведь создать что-то уникальное и неповторимое не так уж просто.

Игра должна захватить своего игрока с первых секунд, помочь ему почувствовать себя творцом судьбы в новом еще неизведанном мире. Больше всего игроками ценятся те игры, где они могут активно развиваться, соперничая с другими персонажами. Благодаря этому стремлению создатель будет получать немалый доход.

Когда основная задумка готова, можно приступать к поиску команды, которая не только поможет с созданием самой игры, но и будет помогать в ее дальнейшем развитии. Если на примете нет никаких знакомых, можно поискать фрилансеров. В самом начале понадобятся:

  1. Программист
  2. Художники и дизайнеры
  3. Гейм-мастер
  4. Комьюнити-мессенджер

Количество денег, которое придется вложить в создание проекта, зависит лишь от того, насколько серьезен будет его разработчик. 25 миллионов рублей – примерная максимальная сумма, как показывает статистика. Если свести все расходы до минимума, она станет в разы меньше, но тогда и игра может выйти совсем не такой, как задумывалось с самого начала.

Самый длительный процесс – создание альфа-версии игры, особенно если создатель занимается этим в одиночку. Поначалу будет возникать много ошибок и неточностей, после исправления которых можно выпускать бета-версию игры. После еще одного теста, можно выпускать готовый продукт, в котором количество неисправностей сведено до минимума.

Как заработать на своей созданной игре?

Создать игру, которая заинтересует широкий круг людей и принесет доход тоже нелегко, особенно если не вкладывать деньги в ее продвижение. Если же денег на рекламу нет совсем, придется заниматься этим собственноручно, завлекая на проект знакомых и рассказывая о нем на различных форумах для геймеров. Затем следует лишь набраться терпения, потому что поначалу игра может и вовсе не приносить прибыли, а если и приносить, то копейки.

Если достаточно хорошо раскрутить свой проект, то следом за обычными игроками, желающими играть бесплатно, подтянуться те, кто готов платить огромные деньги за развитие своего персонажа. Стоит так же не забывать о частых обновлениях, вносящих в игру что-нибудь полезное и интересное для игроков, чтобы они не теряли интерес. Но нельзя забывать о том, что интересы публики меняются довольно быстро.

Сегодня в тренде может быть одно, а завтра геймеры заинтересуются уже чем-то другим. Для того чтобы интерес к проекту не угас, следует вносить в него разнообразные изменения, а не зацикливаться на чем-то одном.

Помимо этих способов есть еще и другие, не менее прибыльные способы. Например, реклама других проектов — чем больше покупают рекламу, тем больше можно получить за эту услугу денег.

В конце хотелось бы добавить, что своя игра – это возможность создать уникальный мир со своей историей, персонажами, который может порадовать и увлечь многих игроков, не нашедших свое место на других проектах.

Видеоурок — основы создания игр в GameMaker:

opartnerke.ru

Создаем многопользовательскую браузерную игру. Часть первая. Клиент-серверная архитектура

Рассказывает Алвин Лин, разработчик программного обеспечения из Нью-Йорка

В 2014 году я впервые побывал на CodeDay в Нью-Йорке. И хотя CodeDay не совсем хакатон, это было моё первое знакомство с подобными мероприятиями. Там мы с моим другом Кеннетом Ли написали многопользовательскую игру в танчики. Так как несколько моих друзей спрашивали меня о том, как я её написал, я решил описать процесс её создания.

В этом посте я вкратце опишу ход своих рассуждений и покажу, как воссоздать архитектуру, а также дам некоторые советы, если вы захотите сделать игру сами. Этот пост рассчитан на тех, кто владеет основами JavaScript и Node.js. Если вы с ними не знакомы, то есть много замечательных онлайн-ресурсов, где можно их изучить.

Прим. перев. На нашем сайте есть много познавательных материалов как по JavaScript, так и по Node.js — обязательно найдёте что-нибудь подходящее.

Бэкенд игры написан на Node.js с использованием веб-сокетов, которые позволяют серверу и клиенту общаться в режиме реального времени. Со стороны клиента игра отображается в HTML5-элементе Canvas . Для начала нам, конечно же, понадобится Node.js. В этой статье описана работа с версией 6.3.1, но вы можете использовать любую версию выше 0.12.

Прим. перев. Если вы не знакомы с веб-сокетами, рекомендуем прочитать наш вводный материал.

Еще по теме:   Как использовать планировщик ключевых слов в Яндекс

Создание проекта

Для начала установите зависимости. Создайте папку проекта, перейдите в неё и запустите следующий код:

Для быстрой настройки сервера целесообразно использовать фреймворк Express, а для обработки веб-сокетов на сервере — пакет socket.io. В файл server.js поместите следующий код:

Это довольно типичный код для сервера на связке Node.js + Express. Он устанавливает зависимости и основные маршруты сервера. Для этого демонстрационного приложения используется только один файл index.html и папка static . Создайте их в корневой папке проекта. Файл index.html довольно простой:

Ваш пользовательский интерфейс может содержать куда больше элементов, поэтому для более крупных проектов CSS-стили лучше помещать в отдельный файл. Для простоты я оставлю CSS в коде HTML. Обратите внимание, что я включил в код скрипт socket.io.js . Он автоматически заработает в рамках пакета socket.io при запуске сервера.

Теперь нужно настроить веб-сокеты на сервере. В конец файла server.js добавьте:

Пока что в игре нет никаких функций, поэтому в обработчик веб-сокетов ничего добавлять не нужно. Для тестирования допишите следующие строки в конец файла server.js :

Эта функция будет отправлять сообщение с именем message и содержимым hi всем подключенным веб-сокетам. Позже не забудьте удалить эту часть кода, так как она предназначена только для тестирования.

В папке static создайте файл с именем game.js . Вы можете написать короткую функцию для регистрации сообщений от сервера, чтобы убедиться в том, что вы их получаете. В файле static/game.js пропишите следующее:

Запустите сервер командой node server.js и в любом браузере перейдите по ссылке http://localhost:5000. Если вы откроете окно разработчика (нажать правую кнопку мыши → Проверить (Inspect)), то увидите, как каждую секунду приходит новое сообщение:

Как правило, socket.emit(name, data) отправляет сообщение с заданным именем и данными серверу, если запрос идет от клиента, и наоборот, если запрос идет от сервера. Для получения сообщений по конкретному имени используется следующая команда:

С помощью socket.emit() вы можете отправить любое сообщение. Можно также передавать объекты JSON, что для нас очень удобно. Это позволяет мгновенно передавать информацию в игре от сервера к клиенту и обратно, что является основой многопользовательской игры.

Теперь пусть клиент отправляет некоторые состояния клавиатуры. Поместите следующий код в конец файла static/game.js :

Это стандартный код, который позволяет отслеживать нажатие клавиш W , A , S , D . После этого добавьте сообщение, которое оповестит сервер о том, что в игре появился новый участник, и создайте цикл, который будет сообщать серверу о нажатии клавиш.

Эта часть кода позволит отправлять на сервер информацию о состоянии клавиатуры клиента 60 раз в секунду. Теперь необходимо прописать эту ситуацию со стороны сервера. В конец файла server.js добавьте следующие строки:

Давайте разберёмся с этим кодом. Вы будете хранить информацию о всех подключенных пользователях в виде объектов JSON. Так как у каждого подключённого к серверу сокета есть уникальный id, клавиша будет представлять собой id сокета подключённого игрока. Значение же будет другим объектом JSON, содержащим координаты x и y .

Когда сервер получит сообщение о том, что присоединился новый игрок, он добавит новый вход в объект игроков при помощи id сокета, который будет в этом сообщении. Когда сервер получит сообщение о движении, то обновит информацию об игроке, который связан с этим сокетом, если он существует.

io.sockets.emit() — это запрос, который будет отправлять сообщение и данные ВСЕМ подключённым сокетам. Сервер будет отправлять это состояние всем подключённым клиентам 60 раз в секунду.

На данном этапе клиент ещё ничего не делает с этой информацией, поэтому добавьте со стороны клиента обработчик, который будет отображать данные от сервера в Canvas .

Этот код обращается к id Canvas ( #canvas ) и рисует там. Каждый раз, когда от сервера будет поступать сообщение о состоянии, данные в Canvas будут обнуляться, и на нём в виде зеленых кружков будут заново отображаться все игроки.

Теперь каждый новый игрок сможет видеть состояние всех подключенных игроков на Canvas . Запустите сервер командой node server.js и откройте в браузере два окна. При переходе по ссылке http://localhost:5000 вы должны будете увидеть нечто похожее:

Вот и всё! Если у вас возникли проблемы, посмотрите архив с исходным кодом.

Некоторые тонкости

Когда будете разрабатывать более функциональную игру, целесообразно разделить код на несколько файлов.

Такие многопользовательские игры — отличный пример архитектуры MVC (модель-представление-контроллер). Вся логическая часть должна обрабатываться на сервере, а всё, что должен делать клиент — это отправлять входные пользовательские данные на сервер и отображать информацию, которую получает от сервера.

Однако в этом демо-проекте есть несколько недостатков. Обновление игры связано со слушателем сокета. Если бы я хотел повлиять на ход игры, то мог бы написать в консоли браузера следующее:

Теперь данные о движении будут отправляться на сервер в зависимости от характеристик компьютера более 60 раз в секунду. Это приведёт к тому, что игрок будет передвигаться невероятно быстро. Так мы переходим к концепции определения полномочного сервера.

Ни на каком этапе клиент не должен контролировать какие-либо данные на сервере. Например, никогда не нужно размещать на сервере код, который позволит клиенту определять своё положение/здоровье на основе данных, которые передаются через сокет, так как пользователь сможет легко подделать сообщение, исходящее из сокета, как показано выше.

Когда я создавал свою первую многопользовательскую игру, я написал код так, что игрок мог стрелять тогда, когда отправлялось сообщение о стрельбе, которое со стороны клиента было связано с нажатием кнопки мыши. Умелый игрок мог воспользоваться этим, вставив строчку на JavaScript, очень похожую на ту, что упоминалась выше, чтобы заполучить почти неограниченную скорость стрельбы.

Лучшая аналогия, которую я могу привести, заключается в том, что клиенты должны посылать на сервер только информацию о своих намерениях, которые затем будут обрабатываться и использоваться для изменения состояния игроков, если они валидны.

В идеале циклы обновлений как у клиента, так и на сервере не должны зависеть от сокетов. Попытайтесь сделать так, чтобы обновления игры находились за пределами блока socket.on() . В противном случае вы можете получить много странных нелогичных действий из-за того, что обновление игры будет связано с обновлением сокета.

Кроме того, старайтесь избегать такого кода:

В этом отрезке кода обновление координаты х для игрока связано с частотой смены кадров в игре. SetInterval() не всегда гарантирует соблюдение интервала, вместо этого напишите нечто подобное:

Это не так изящно, зато обеспечит более плавную и последовательную работу. Усложните демо-проект и попробуйте сделать так, чтобы обновление осуществлялось согласно времени, а не частоте смены кадров. Если не захотите на этом останавливаться, попытайтесь создать на сервере физический движок, который будет управлять движениями игроков.

Также можно сделать так, чтобы из игры удалялись отключенные игроки. Когда сокет отключается, автоматически отправляется сообщение о разъединении. Это можно прописать так:

Также попытайтесь создать собственный физический движок. Это сложно, но весело. Если захотите попробовать, то рекомендую прочитать книгу «The Nature of Code», в которой есть много полезных идей.

Если хотите посмотреть на гораздо более продвинутый пример, вот игра, которую я сделал, а также исходный код, если вы хотите узнать, как это было написано. На этом всё. Спасибо, что прочитали!

tproger.ru

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть
Adblock
detector