Что такое мультиплеер и синглплеер
Что лучше многопользовательские или одиночные игры?
Каждый геймер хоть раз задавался таким вопросом: во что поиграть? И чаще всего первый поставленный критерий, это выбор между одиночной и многопользовательской игрой. Давайте разберём, что же всё-таки больше удовлетворяет геймера, игра с другими людьми или одиночное прохождение.
Во-первых, надо отметить, что у каждого человека свои вкусы к играм, кому-то больше нравится играть вместе с друзьями, в компании, или даже просто разговаривать с незнакомыми людьми, кого-то больше удовлетворяет тихая и спокойная игра в одиночку.
Если вы знаете к чему привержены больше всего, то и скачиваете, но если вы находитесь на распутье выбора режима игры, то вы обязаны дочитать статью до конца.
Достоинства Многопользовательской игры
Онлайн игры всегда были востребованы в сообществе из-за их социализации. Каждый может найти человека, с которым можно совместно поиграть, делится эмоциями от игры, вместе бомбить на неё во время поражений и радоваться во время побед.
В многопользовательских играх есть возможность создавать большие группы людей с одинаковыми интересами(кланы), а также встать во главе этих людей, при этом развивая в себе навыки командира.
Вы будете продолжать в игру до тех пор пока она вам не надоест, или пока проект не закроется. Это может продолжаться несколько лет, если даже не десятков лет. Одиночные игры такими результатами похвастаться не могут, максимум на что они способны это 200-300 часов, не больше.
Онлайн игры постоянно развиваются и не стоят на месте, всё конечно зависит от разработчиков игры, но чаще всего в MMO обновления выходят регулярно, радуя игроков новыми идеями, фичами, дополнениями и т.д.
Достоинства Однопользовательской игры
Уникальность одиночных игр, в присутствии в них сюжета, персонажей и не обезличенного главного героя, которому можно сочувствовать, сопереживать, будто проживая совсем другую жизнь. Одиночные игры способны перенести игрока в совершенно другой мир, к другим людям и другому себе, тогда как онлайн игры не способны к такому эмоциональному сопряжению с игроком.
В однопользовательских играх у игрока есть полная свобода выбора в плане установки других модификаций, читов, использовании кодов и т.д. Одиночные игры всегда были объектом мододельства, есть игры с базой модов в тысячу и больше единиц(GTA, Stalker, Skyrim и др.). С помощью них можно изменить игру до неузнаваемости, и для этого не надо ждать обновления месяцами, а то и годами.
Самый большой плюс современных одиночных игр, в том что в них всё чаще интегрируется кооперативный режим. Теперь геймеры могут играть в свои любимые игры вместе с друзьями, вместе проходить сюжет и компании. Но полностью заменить многопользовательские игры они всё равно не смогут, т.к кооперативный режим не даёт доступ в огромный сетевой мир, а лишь объединяет нескольких игроков для совместной игры.
Но вы можете следовать этим двум простым пунктам:
Мультиплеер в быстрых играх (части I, II)
Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.
Если вы уже знакомы с базовыми идеями, стоящими за многопользовательскими играми — смело пропускайте первую часть и переходите ко второй.
Часть I
Проблема читерства
Вся наша головная боль начинается с читерства.
Если вы разрабатываете одиночную игру, вам наплевать если пользователь решит смухлевать — его действия влияют только на него. Да, возможно игрок не получит тот опыт, который вы хотели ему дать, но в конце концов он купил игру и может пользоваться ей как захочет.
А вот в мультиплеерных играх все совсем иначе. В любой соревновательной игре читер не просто упрощает себе игру, но и ухудшает чужой игровой опыт. Вам, как разработчику, стоит препятствовать этому, так как читеры отгоняют игроков от вашей игры.
Есть много вещей которые можно сделать чтобы предотвратить читерство. Но самый главный принцип(и наверное самый глубокий) очень прост: не доверяй игроку. Всегда ожидайте худшего — что игрок будет пытаться вас обмануть.
Авторитарный сервер и наивный клиент
Этот принцип ведет нас к простому, на первый взгляд, решению — вся игровая логика крутится на главном сервере, под вашим контролем, а клиент лишь демонстрирует текущее состояние сервера и отправляет ему команды (нажатия клавиш и т.д.). Обычно это называют авторитарным сервером, потому что он единственный, кто умеет моделировать мир.
Конечно, сервер может быть взломан, но эта тема выходит за рамки данной серии статей. Тем не менее, использование авторитарного сервера предотвращает широкий спектр читов. Например, вы не можете доверять клиенту уровень жизней игрока. Взломанный клиент может изменить локальную информацию и сообщить что у игрока 100000% жизней, но сервер знает что жизней всего 10% и если игрока атакуют, он умрет вне зависимости от того, что об этом думает клиент.
Так же нельзя верить игроку, когда он сообщает о его позиции в мире. Если вы доверитесь, взломанный клиент может сообщить серверу:
— Я на (10, 10)
А секундой позже:
При этом возможно он «прошел» через стену или двигается быстрее чем ему положено.
А вот правильная парадигма. Сервер знает что игрок находится в позиции (10, 10); клиент говорит: «Я хочу подвинуться на единицу вправо». Сервер обновляет позицию игрока на (11, 10), производя все необходимые проверки, а затем отвечает игроку: «Вы на (11, 10)»:
Подытожим: игровое состояние управляется только сервером. Клиенты отправляют свои действия на сервер, а сервер периодически обновляет свое состояние и отправляет его на клиенты, которые, в свою очередь отображают его пользователям.
Разбираемся с сетями
Наивный клиент отлично подходит для медленных пошаговых игр — стратегий или покера. Так же он неплохо сработает при локальном подключении, где информация передается практически мгновенно. Но он абсолютно непригоден для быстрых игр по интернету.
Давайте поговорим о физике. Предположим что вы находитесь в Сан-Франциско и подключаетесь к серверу в Нью-Йорке. Это примерно 4000 километров. Так как ничто не может передвигаться быстрее скорости света, в лучшем случае сигнал дойдет за 13 миллисекунд. Но весьма маловероятно, что у вас будет такая хорошая связь. В реальном мире информация не идет прямым путем, причем не со скоростью света.
Так что давайте предположим, что это занимает 50 мс. И это практически лучший сценарий. А что если вы подключаетесь к серверу в Токио? А что если линия связи перегружена? В таких случаях задержки доходят до половины секунды.
Вернемся к нашему примеру. Пусть клиент отправляет сообщение:
— Я нажал на стрелку вправо.
Сервер получает запрос через 50 мс и сразу отправляет обратно обновленное состояние.
Это сообщение дойдет до пользователя еще через 50 мс.
С точки зрения игрока, он нажал на стрелку, потом 0.1 секунды ничего не происходило, а затем персонаж наконец подвинулся на единицу вправо. Этот лаг между командой и её результатом может показаться незначительным, но он заметен. И уж конечно лаг в полсекунды был бы не просто заметным, а сделал бы игру абсолютно неиграбельной.
Резюмируя
Игры по сети невероятно веселы, но привносят совершенно новый класс проблем и препятствий. Авторитарная архитектура хороша против читеров, но наивная реализация сделает игру неотзывчивой для пользователей.
В дальнейшем мы исследуем возможность создания системы, базирующейся на авторитарном сервере, но с минимальными задержками для игроков, делая их неотличимыми от одиночных игр.
Часть II
Введение
В первой части мы рассмотрели клиент-серверную модель с авторитарным сервером и наивным клиентом, который отправляет команды на сервер и отображает обновленное состояние пришедшее в ответе.
Наивная реализация этой концепции приводит к ощутимой задержке между командой и реакцией. Например, если игрок нажимает стрелку влево, персонаж начнет двигаться через полсекунды. Это происходит потому что команда должна дойти до сервера, а результат команды после этого должен дойти до клиента.
В интернете, где задержки могут составлять десятые доли секунды, геймплей в лучшем случае будет неотзывчивым, а в худшем — неиграбельным. В этой части мы найдем способы уменьшить эту проблему или избавиться от неё вовсе.
Предсказание на стороне клиента
Несмотря на то что некоторые игроки пытаются читерить, большую часть времени сервер получает корректные запросы. Это означает, что полученный ввод будет корректным и игра обновится так, как ожидается. То есть если персонаж находится на (10, 10) и отправляет команду на движение вправо, он окажется на (11, 10).
Мы можем использовать это если игра достаточно детермениртована (то есть результат определен командами и предыдущим состоянием).
Предположим что у нас лаг 100 мс и время перемещения персонажа составляет 100 мс. При использовании наивной реализации, время действия составит 200 мс.
Предполагая что команды будут исполнены, клиент может предсказывать состояние игрового мира и часто предсказание будет правильным, так как игровой мир детерминированный.
Так что вместо того чтобы отправлять команду и ждать пока придет новое игровое состояние чтобы отрендерить его, мы можем отправить команду и начать рендерить результат как если бы команда уже была выполнена. И, разумеется, надо ждать от сервера результата — «настоящего» состояния игры, которое по большей части будет совпадать с локальным состоянием.
Теперь у нас нет абсолютно никакой задержки между действием игрока и результатом на экране, а сервер все еще авторитарный (если взломаный клиент начнет отправлять некорректные команды, он может рендерить что угодно на экране, но это никак не повлияет на состояние игры на сервере, которое видят другие игроки).
Проблемы синхронизации
В предыдущем примере я аккуратно подобрал числа чтобы все отлично работало. Давайте немного изменим сценарий. Лаг будет составлять 250 мс, а анимация передвижения на одну единицу будет длиться 100 мс. А еще давайте игрок дважды быстро нажмет на стрелку вправо.
При использовании текущего подхода вот что произойдет:
Мы столкнулись с интересной проблемой на t = 250 мс, когда нам пришло новое состояние. Клиент предсказал x = 12, но сервер говорит что x = 11. Так как сервер авторитарный, клиент должен передвинуть персонажа обратно на x = 11. Но позже, на t = 350, сервер говорит что x = 12, так что персонаж опять прыгает, но на этот раз вперед.
С точки зрения игрока, он нажал на стрелку вправо дважды, так что персонаж переместился на две единицы вправо, постоял там 50 мс, прыгнул на единицу влево, постоял там 100 мс и прыгнул на единицу вправо. Конечно, это совершенно неприемлимо.
Согласование с сервером
Ключ к решению этой проблемы лежит в понимании того, что клиент видит игровой мир в настоящем времени, но из-за лага обновления с сервера приходят о состоянии мира в прошлом. К тому моменту, когда сервер отправил нам обновления, он еще не получил некоторые наши команды.
Но обойти эту проблему не так уж сложно. Давайте будем добавлять к каждому запросу от клиента его номер. А сервер при ответе будет добавлять номер последнего обработанного запроса. И давайте хранить на клиенте копию всех команд, отправляемых на сервер.
Итак, на t = 250 клиенту приходит «x = 11, последняя команда #1». Клиент удаляет все команды до #1 включительно, но оставляет копию #2, о которой еще не знает сервер. Он применяет полученное от сервера состояние (x = 11), а затем применяет ввод, который еще не виден серверу. В данном случае #2 «вправо на 1 единицу». Конечный результат x = 12, что соответствует истине.
Далее, на t=350, от сервера приходит новое состояние: «x = 12, последняя команда #2». Клиент удаляет все копии команд до #2 включительно, а затем применяет состояние x=12(ничего не изменилось). Так как более нет необработанных команд, на этом все заканчивается, с корректным результатом.
Итоги
Мы разобрали пример с движением, но этот же принцип применим почти ко всему. Например, при атаке вражеского персонажа, вы можете сразу показать кровь и число, отражающее нанесенный урон.
Но не стоит на самом деле обновлять жизни персонажа, пока сервер не пришлет обновленное состояние.
Из-за сложностей игрового состояния, которое не всегда легко откатить, возможно не стоит убивать персонажа даже если уровень его жизни упал ниже нуля. Что если что другой игрок вылечился прямо перед вашей атакой, но сервер еще об этом не сообщил?
Прим. перев. Я бы убивал персонажа сразу, но обеспечил персистентность(возможность откатывания состояний). Так будет проще писать переносимый код, выполняющийся и на сервере и на клиенте. В любом случае, как вы убедитесь в этом позже, это придется делать.
Это все нас приводит к интересному заключению — даже если мир абсолютно детерминированный и нет читерящих игроков, все равно есть вероятность того, что состояние предсказанное клиентом и состояние отправленное с сервера не совпадают. Хоть для одного игрока это невозможно, очень легко воспроизвести такую проблему при нескольких одновременно играющих игроках. Это будет темой следующей статьи.
Games: Синглплеер и мультиплеер.
Этот цикл начался с чувства, что за моими предпочтениями в играх стоят какие-то структуры. Одной из первых тем оказалось мое отношение к мультиплееру, которое я не раз обсуждал со своим товарищем, гасящимся в LoL. Я никогда не любил игру по сети. Вдвоем против компа – это да, а вот игровые баталии в интернете всегда оставляли равнодушным. По моему глубокому убеждению, одиночная игра воплощает логику желания, в то время как многопользовательские игры строятся на компромиссах. В юности мультиплеер отталкивал тупой ориентацией игроков на эффективность и результат, убивающей всякую эстетику. В более старшем возрасте онлайн игры стали казаться воплощением определенной психо(пато)логической позиции, которая мне не близка. Я прекрасно понимаю, что для многих сетевые баталии – это очень интенсивный и насыщенный опыт. Собственно, чтобы понять на основе чего возникает увлечение одиночным или многопользовательским типом игры, определенным жанром или конкретной игрой, я начал анализировать разные аспекты психологии компьютерных игр.
Однако среди сетевых игр особняком стоят те игры, в которых происходит попытка внести собственный смысл в бесконечную повторяемость. Это те случаи, когда на первом плане оказывается социальное взаимодействие – т.е. игра в клане, сложная кооперация действий в согласии с определенной выработанной стратегией. Прежде всего, это склонные к мегаломании MMO-симуляторы (вроде Eve online) и MMO-шутеры (например, Titanfall и Destiny). Но большинство игр, увы, построены на примитивной тактике и позволяют лишь проигрывать одно и то же, сводя коммуникацию к лайкам и дислайкам. То же самое касается и игроков: среди них довольно часто имеет хождение индивидуалистическая стратегия, трактующая кооперацию в духе «дилеммы заключенного». Иными словами, одна из проблем мультиплеера заключается не в том, что он навязывает какие-то формы коллективизма, а наоборот как раз в том, что в нем не хватает кооперации и групповой солидарности (я это хорошо ощущаю, т.к. мне нравится быть частью группы, объединенной целью или делом). Например, один из повторяющихся возгласов на любом обсуждении предпочтения сингла или мультиплеера звучит так: «К черту мультиплеер! Я всех лечу и прихожу на помощь, мне – никогда. Иди тогда наХ со своей игрой».
Стоит отметить и сомнительность излюбленного довода мультиплеерщиков – дескать, это круто играть с живым человеком. Круто в данном случае включает в себя широкий спектр эмоций: от радости до злорадства, от интереса к другим до усталости от себя, от любви к сложности до стремления вызывать у других живую реакцию. Увы, в большинстве случаев – это виртуальные переживания по отношению к анониму, очень удобные чтобы получать именно то, о чем вы бессознательно фантазируете. Это общение с зеркалом, а не с реальными людьми. Единственный случай похожий на контакт – это знакомство в игре с продолжением, включающее попытки узнать человека лучше, в т.ч. через манеру игры. Но даже в этом случае сам игрок остается заложником собственного виртуального образа. Я уже отмечал, что это один из ключей к формированию зависимости от игр.
В конечном счете, если мы будем сравнивать лучшие примеры одиночных игр с мультиплеерными играми, то мы увидим, что по качеству и геймплею они в среднем равны. Радикально различаются они в том, на кого они рассчитаны, т.е. кого именно представляли на месте игрока создатели. Лучшие синглы видят в игроке многостороннего и требовательного любителя игр, готового отплатить искренней симпатией и увлеченностью за отличную атмосферу и сюжет. В них множество опций и возможностей, кроме того, создатели часто стремятся сделать свой продукт оригинальным, т.к. избыток клише (даже самых удачных) редко ведет к массовой популярности. В том числе потому, что многие геймеры верны тем, кто им полюбился раньше. Игрок в представлениях создателей мультиплеера – это абстрактный никто с простыми мотивами типа «всех запобедить». Такой игрок не имеет истории и каких-то специальных предпочтений. Интересные фишки (например, «грабить корованы») приходят из синглов. Здесь никто не откажется от работающих клише, и попытки вовлечь в игру прямолинейны и тупы. Фактически, нет расчета на живой интерес, скорее на род зависимости. Я специально перелопатил десятки мультиплееров в поиске хоть какого-то намека на мысль создателей о том, что пользователь может оказаться эстетом, любителем этических дилемм или хотя бы ностальгирующим фаном (других игр, комиксов и т.п.). Ни черта подобного. Шизофреническая красочность, минимальное отличие от конкурентов в данном игровом сегменте и необходимость часто играть ради продвижения (и/или донат) – вот, оказывается, все, что вам нужно.
Компьютерные игры в каком-то смысле всегда были способом коммуникации, однако со временем возник прямо противоположный образ – образ геймера-эскаписта, избегающего реального контакта с жизнью. Образ хотя и утрированный, но в какой-то степени отражает целый пласт тенденций в современном мире. Снова повторюсь, что одна из тенденций заключается в значительной выгоде для капитала и ряда государств того, чтобы вы были одиноки. Игры – часть индустрии, вынужденной бороться за место под солнцем. Точно так же одиночные игры и сетевые по-своему выражают подвижки в современном образе субъекта. И, как мне кажется, мы не можем до конца осознать, что именно происходит сегодня в данной сфере. Маркс как-то сказал, что «Анатомия человека – ключ к анатомии обезьяны», иными словами, только развитая форма позволяет судить о промежуточных шагах к ней. Сегодня мы отчетливо видим к чему шли видеоигры, начиная с 70-х годов, но что происходит сейчас – расцвет, очередной кризис, выхолащивание или смена парадигмы – с уверенностью сказать невозможно. Лично я исхожу из мысли, что компьютерные игры не только формируют наши желания, но и дают пространство для рефлексии этих желаний. А это уже не мало – и неважно, каким путем вы идете, через синглплеер, кооператив, мультиплеер или сразу всеми.
Что такое мультиплеер и что он означает в играх?
Современный игровой рынок все больше и больше насыщается различными многопользовательскими играми. И это не удивительно, ведь многие геймеры предпочитают проводить время в виртуальном мире не в одиночку, а в компании с другими людьми.
Так что такое мультиплеер? Сегодня мы решили попробовать дать ответ на этот вопрос и разобраться с тем, что представляют собой многопользовательские игры.
Что такое мультиплеер и история его появления
Данное понятие относится к многопользовательским играм для нескольких человек. Обычно для соединения используется интернет, однако нередко применение локальных сетей и коммутируемых соединений. Первым проектом, созданным для подобных целей, считается «Теннис для двоих», который вышел в далеком 1958 году.
С появлением приставок разработчики продолжали экспериментировать, добавляя возможность играть в паре на двух геймпадах. Из года в год стали появляться совершенно уникальные проекты, которые использовали идею многопользовательского прохождения и успешно воплощали ее в реальность. Среди таких игр можно отметить «Снайперов» с его первой реализацией «смертельных матчей», F29 Retaliator с воздушными боями PvP и F1GP, которая стала сетевой гонкой. Чуть позже на свет появились игры серии FPS, которые стали большим прорывом на рынке и положили начало киберспорту.
Продолжаем рассказывать о том, что такое мультиплеер. Практически все проекты данного режима можно классифицировать. Подробнее об этом мы расскажем в следующей части нашей статьи.
Техническая реализация
Многопользовательские игры, для которых достаточно одного компьютера:
Мультиплеер по сети. Все задействованные компьютеры соединены одной вычислительной сетью.
Правила
Одна «жизнь». Данный режим не подразумевает никакого взаимодействия между игроками, у каждого своя сессия. Управление передается из одних рук в другие, происходит это после «гибели» текущего персонажа.
Личное соревнование. Игроки преследуют свои собственные интересы и иногда сталкиваются друг с другом. Цель — победа над всеми соперниками.
Командное соревновательное прохождение.
«Свободный» режим. В таком мультиплеере игроки могут действовать по своему собственному сценарию. Режим широко используется в ММОРПГ.
Типы мультиплеера на примере трехмерных шутеров
Типы мультиплеера на примере стратегий реального времени
Надеемся, что вышеизложенная информация смогла помочь нашим читателям разобраться с вопросом о том, что такое мультиплеер в видеоиграх. В следующей части статьи мы рассмотрим несколько мультиплеерных режимов на примере популярной игры «ГТА».
Примечательно, что одни из самых популярных проектов были сделаны руками талантливых любителей и фанатов-энтузиастов. Как раз о таких мультиплеерных режимах и пойдет речь.
Мультиплеер «ГТА: криминальная Россия»
2004 год запомнился в игровой индустрии выходом одной из самых горячо любимых частей серии GTA под названием «Сан Андреас». Проект быстро собрал вокруг себя большую аудиторию поклонников со всего мира, некоторые из которых так вдохновились криминальной атмосферой любимой игры, что стали собственноручно экспериментировать с движком. Как результат, на свет стали появляться многочисленные моды и дополнения, основанные на мире San Andreas. Некоторые из них стали не менее популярны, чем оригинальная игра.
Мы решили рассказать подробнее о моде «ГТА: Криминальная Россия» и о мультиплеере, который стал его неотъемлемой частью. Дополнение не просто добавляет много новых возможностей, но и полностью меняет сеттинг. Игроки переносятся в Россию девяностых годов, во время, когда на улицах бушевала криминальная активность. Создатели постарались привнести в свой проект как можно больше русского колорита, поэтому данный мод так горячо любим в странах СНГ. Сам игровой процесс мультиплеера практически не отличался от режима синглплеера. Игрокам давались стандартные задания, которые могли выполняться в компании с другими пользователями.
Как начать играть
Клиент серверов «Криминальной России» носит название «Мультиплеер 0 3 7». Для того чтобы начать играть по сети, достаточно скачать все необходимые файлы с официального сайта распространителя. Там же можно найти и другой клиент, который называется «Мультиплеер 0 3», — это более ранняя версия. Разработчики стараются радовать свою аудиторию чем-то новым, поэтому и выпускают обновленные и улучшенные файлы. Для того чтобы начать играть в самую последнюю версию «Криминальной России», мы рекомендуем скачивать мультиплеер «ГТА 0 3 7».
Сторонние проекты
Мультиплеер в «ГТА» является очень важной составляющей игрового процесса. Поэтому совсем не удивительно, что все больше и больше энтузиастов добавляют в свои моды возможность для многопользовательской игры.
Помимо мультиплеера «ГТА: Россия», существует еще несколько популярных серверов. Особого внимания заслуживает Samp Rp, который добавляет еще больше возможностей для командных прохождений. Игровой процесс в мультиплеере «России» не сильно отличается от синглплеера, поэтому, при всей своей неповторимой атмосфере, он может быстро наскучить. Samp Rp, в свою же очередь, помогает воплотить все самые смелые идеи и мечты. Игроки могут посвятить свое время не только заработку средств на одной из понравившихся работ, но и открывать собственные клубы, вступать в банды, записаться на службу в армию и многое другое.
Мультиплеер и мошенничество
Люди, обожающие проводить время в играх с мультиплеером, не раз сталкивались с таким понятием, как читерство. Что же это означает? Мошенничество в видеоиграх может иметь разные проявления и одну общую цель — получить преимущество над другими игроками.
Многие лиги сами устанавливают допустимые изменения в играх, относя все остальные действия к мошенничеству. Что не рекомендуется?
Когда дело касается игрового читерства, геймерам нужно быть предельно внимательными. Маскировка некоторых мошеннических программ может ввести в заблуждение даже специального наблюдателя, стоящего у монитора. К примеру, «наводчики» могут быть активизированы после одновременного нажатия двух рандомных кнопок.