что такое lan в играх
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Что такое LAN и чем отличается от WAN?
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Видео: разница между LAN и WAN?
В контексте домашнего использования, в LAN порты роутера подключаются пользовательские устройства: компьютеры, ноутбуки, телевизоры, игровые консоли нового поколения чтобы, играть в Red Dead Redemption 2, отличная игра кстати, и прочие домашние радости, которым нравится для стабильной работы подключаться к сети через кабель.
А с точки зрения корпоративного использования, в LAN находятся рабочие станции сотрудников, принтеры, сканеры и сервера. Кстати, в офисной сети существует множество локальный сетей, которые, как правило, делят по назначению: отдельный LAN для бухгалтерии, свой LAN для продаж, операционного департамента, отдельную сеть делают для принтеров и серверов.
В корпоративном использовании, WAN подключение, это подключение к глобальной сети провайдера. Это может быть сеть, которая связывает офисы компании в Москве и Владивостоке, а может быть подключение к интернету на большом корпоративном маршрутизаторе.
С точки зрения модели OSI, ключевые отличия LAN от WAN кроются на физическом и канальном уровне. В LAN царит стандарт Ethernet, а в WAN, например, живут такие стандарты как Frame Relay, HDLC или PPP (Point-to-Point-Protocol).
Итоговая разница
Закрепим и подытожим все ключевые различия между LAN и WAN:
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Чем отличается киберспорт на LAN и в онлайне?
Для ставок на киберспорт важно знать, где проходит турнир — на LAN или в онлайне. Множество различных факторов могут как помочь игроку показать свой лучший перфоманс, так и сыграть хуже обычного. И понимание этих факторов может помочь вам побеждать на ставках куда чаще.
Чем отличаются LAN и онлайн турниры?
Перед тем, как разбираться в отличиях, нужно разобраться, что под собой кроют термины LAN и онлайн. Термин LAN (Local Area Network) означает, что игроки находятся в одном помещении и связаны локальной сетью, а не играют из дома через интернет.
Большинство LAN турниров проходят на крупных аренах со зрителями и прямыми трансляциями на Twitch ил Youtube. На LAN перфоманс игрока могут влиять непривычные для него стул, стол, комната или просто место проведения турнира.
На онлайн турнирах игроки связаны через интернет и один единый сервер, который находится где-то в другом месте. Игроки также могут находиться где угодно, а играть им придется на своем собственном компьютере и через домашний интернет.
Ставя на онлайн турниры, беттеры могут быть уверены: игроки будут выступать в комфортных условиях на привычных девайсах с привычных компьютеров. На LAN турнирах же, в свою очередь, компьютеры, мониторы и остальные девайсы игроков могут отличаться от привычных, а иногда, пусть и в редких случаях, игроки просто получают дефолтные дейвасы и устройства без права выбрать что-то еще.
Но есть у онлайн турниров и проблемы. Например, пинг (время, которое требуется серверу, чтобы принять информацию от игрока). В зависимости от того, на каком сервере идет игра, и где находятся игроки команд, этот фактор может влиять на игру коренным образом.
Еще несколько факторов, которые нужно учитывать тем, кто хочет ставить на LAN турниры:
В свою очередь, ставя на онлайн турниры, важнее всего помнить про то, где находятся две противостоящие команды. Командам из России и СНГ вроде Natus Vincere и Virtus.pro будет сложнее играть на западноевропейских серверах против, например, mouz или Fnatic, которые базируются в Европе.
Понимание предпочтений игроков
Предпочтения киберспортсменов к разным видам турниров отличается от игрока к игроку. Онлайн турниры позволяют игрокам выступать из своей зоны комфорта: из дома или с буткемпа, где они уже ко всему привыкли и всё настроили под себя.
В свою очередь, на LAN турнирах игрок обязан приспосабливаться как к окружению, так и к оборудованию. Какие-то слетевшие при переносе на другой компьютер настройки или драйвера в играх вроде CS:GO, где важен идеальный аим, могут решить выиграешь ты или проиграешь.
Да, игра из дома менее стрессовая, но иногда этот фактор может сыграть с профессионалами злую шутку. Играя из дома, человек может не быть полностью сфокусированным на игре, слишком расслабиться и, как итог, не показать своей лучшей игры. Арена, заполненная людьми, может зарядить игрока и дать ему дополнительную мотивацию играть лучше.
Анализ выступлений команд на разных турнирах
Из-за того, что LAN турниры часто играются перед шумной публикой, иногда умение команды общаться между собой, невзирая на шум, может стать одним из главных факторов успеха или неуспеха. Серьезные беттеры пред ставками на LAN турниры узнают национальности игроков команды, потому что коммуникация на LAN крайне важна. Да, игроки, сидя в будке, могут видеть мониторы своих тиммейтов, но хорошо выстроенная коммуникация всё еще является краеугольным камнем любой успешной команды.
Команды с игроками разных национальностей могут страдать от этого фактора, потому что большинство игроков будет общаться на неродном для них языке. Это может привести к неразберихе или ошибкам в ключевых моментах матчей. В Dota 2, например, таких интернациональных команд много, но на турнирах вроде The Internaional игры идут в звуконепроницаемых будках, которые почти полностью нивелируют шум толпы.
Также беттерам важно знать, как ведут себя тренеры в различных киберспортивных дисциплинах. Например, в CS:GO тренеры всегда находятся за спинами игроков и имеют право переговорить с игроками во время тактических пауз. В то же время, в LoL или Dota 2 тренеры находятся в кабинке лишь во время стадии драфтов. Это значит что их вклад в тактическую составляющую команды строго ограничен.
Разные турниры играются перед разной публикой. Например, в League of Legends каждый регулярный сезон лиги играется на LAN, но находится место проведения в студии, где игроки выступают перед небольшой по размерам аудиторией. Главный турнир по LoL Worlds Finals всегда проходит на куда больших аренах перед огромным количеством людей.
Справиться с давлением толпы
С давлением сталкиваются все игроки, когда они выступают на профессиональной сцене, но каждый с ним справляется по-разному. На некоторых игроков давление может повлиять серьезно, и они начинают допускать ошибку за ошибкой лишь из-за того, что стоит на кону.
Исследование статистики игрока после допущенной им грубой ошибки может дать вам понимание, как он справится с похожей ошибкой, если допустит её еще раз. Если за важным промах или неудачным разминированием бомбы в CS:GO идёт ухудшение статистики игрока, это скорее всего означает, что он психически слабее остальных. На это беттерам стоит обращать внимание при ставках на LAN турнирах, потому что там давление еще сильнее.
Команды, которые играют в свою игру, несмотря на давление, иногда могут переиграть более сильные команды на LAN ивентах. Если некоторым игрокам сложно играть перед публикой, то другие используют давление в качестве мотивации, которая заставляет их сфокусироваться на игре еще сильнее и, как итог, показать свою лучшую игру.
Почему переезды и расположение турнира — это важно?
Переезды могут серьезно повлиять на игру команды, поэтому об этом серьезным беттерам тоже нужно задумываться. Обычно команды приезжают на турнир заблаговременно, чтобы у них было время акклиматизироваться и пережить джетлаг, потому что если этого не сделать, эти факторы могут поставить крест на чемпионских амбициях той или иной команды. Заранее обычно приезжают все, но бывают исключения у команд с загруженным расписанием, так что это следует держать в уме.
Поиск места, где будет проходить LAN и сравнение места с тем, откуда туда поедут команды, даст информацию, которая вам может пригодиться. Способность игрока приспосабливаться к разным культурам, языкам и даже к местной еде — примеры факторов, о которых беттерам стоит думать перед тем, как поставить.
Из менее очевидного, статистически доказано, что команды, которые играют в родной стране, имеют небольшое преимущество и обычно играют на домашнем турнире лучше остальных. На таких ивентах чаще всего болельщики топят за родную команду, и это вселяет в неё уверенность в своих силах. Также ей просто не нужно тратить время на переезды. Их соперники, в свою очередь могут встретиться с враждебно настроенной толпой, которая может деморализовать игрока и подорвать его уверенность.
Информация в данной статье показывает, как важно понимать, что разные игроки играют лучше на разных видах турниров. Думать, что команды будут играть одинаково на LAN и в онлайне — ошибка, которую допускают многие беттеры. Если же брать во внимание вещи, о которых мы рассказывали выше и заниматься простейшим сбором информации, вы сможете избежать множество ошибок и потенциально обыграть букмекера.
О сетевой модели в играх для начинающих
Последние две недели я работал над сетевым движком для своей игры. До этого я вообще ничего не знал о сетевых технологиях в играх, поэтому прочитал множество статей и провёл множество экспериментов, чтобы уяснить все концепции и иметь возможность написать собственный сетевой движок.
В этом руководстве я хотел бы поделиться с вами различными концепциями, которые вам нужно изучить перед написанием собственного игрового движка, а также самыми лучшими ресурсами и статьями для их изучения.
В целом существует два основных типа сетевых архитектур: peer-to-peer и клиент-серверная. В архитектуре peer-to-peer (p2p) данные передаются между любыми парами подключенных игроков, а в клиент-серверной архитектуре данные передаются только между игроками и сервером.
Хотя архитектура peer-to-peer по-прежнему используется в некоторых играх, стандартом является клиент-серверная: она проще в реализации, требует канал меньшей ширины и облегчает защиту от читерства. Поэтому в этом руководстве мы сосредоточимся на клиент-серверной архитектуре.
В частности, нас больше всего интересуют авторитарные серверы: в таких системах сервер всегда прав. Например, если игрок думает, что находится в координатах (10, 5), а сервер говорит ему, что он в (5, 3), то клиент должен заменить свою позицию той, которую передаёт сервер, а не наоборот. Использование авторитарных серверов упрощает распознавание читеров.
В игровых сетевых системах есть три основных компонента:
Транспортный протокол
Первый шаг заключается в выборе протокола для транспортировки данных между сервером и клиентами. Для этого существует два Интернет-протокола: TCP и UDP. Но вы можете создать и собственный транспортный протокол на основе одного из них или применить библиотеку, в которой они используются.
Сравнение TCP и UDP
И TCP, и UDP основаны на IP. IP позволяет передавать пакет от источника получателю, но не даёт гарантий, что отправленный пакет рано или поздно попадёт к получателю, что он доберётся до него хотя бы раз и что последовательность пакетов придёт в правильном порядке. Более того, пакет может содержать только ограниченный размер данных, задаваемый величиной MTU.
UDP является всего лишь тонким слоем поверх IP. Следовательно, он имеет те же ограничения. В отличие от него, TCP обладает множеством особенностей. Он обеспечивает надёжное упорядоченное соединение между двумя узлами с проверкой на ошибки. Следовательно, TCP очень удобен и используется во множестве других протоколов, например, в HTTP, FTP и SMTP. Но все эти функции имеют свою цену: задержку.
Чтобы понять, почему эти функции могут вызывать задержку, надо разобраться, как работает TCP. Когда узел-отправитель передаёт пакет узлу-получателю, он ожидает получить подтверждение (ACK). Если спустя определённое время он не получает его (потому что пакет или подтверждение было утеряно, или по каким-то другим причинам), то отправляет пакет повторно. Более того, TCP гарантирует получение пакетов в правильном порядке, поэтому пока утерянный пакет не получен, все остальные пакеты не могут быть обработаны, даже если они уже получены узлом-получателем.
Но как вы наверно понимаете, задержка в многопользовательских играх очень важна, особенно в таких активных жанрах, как FPS. Именно поэтому многие игры используют UDP с собственным протоколом.
Собственный протокол на основе UDP может быть эффективнее TCP по различным причинам. Например, он может помечать некоторые пакеты как надёжные, а другие — как ненадёжные. Поэтому его не волнует, добрался ли ненадёжный пакет до получателя. Или он может обрабатывать несколько потоков данных, чтобы потерянный в одном потоке пакет не замедлял остальные потоки. Например, может существовать поток для ввода игрока и ещё один поток для сообщений чата. Если сообщение чата, которое не является срочными данными, потеряно, то оно не замедлит срабатывание ввода, который является неотложным. Или же собственный протокол может реализовать надёжность иначе, чем в TCP, чтобы быть более эффективным в условиях видеоигр.
Итак, если TCP такой отстойный, то мы будем создавать свой транспортный протокол на основе UDP?
Всё немного сложнее. Даже хотя TCP почти субоптимален для игровых сетевых систем, он может вполне хорошо работать конкретно в вашей игре и сэкономить ваше драгоценное время. Например, задержка может и не быть проблемой для пошаговой игры или игры, в которую можно играть только в сетях LAN, где задержки и утеря пакетов намного меньше, чем в Интернете.
Во многих успешных играх, в том числе World of Warcraft, Minecraft и Terraria, используется TCP. Однако в большинстве FPS применяются собственные протоколы на основе UDP, поэтому ниже мы поговорим о них подробнее.
Если вы решите использовать TCP, то убедитесь, что отключен алгоритм Нейгла, потому что он буферизует пакеты перед отправкой, а значит, увеличивает задержку.
Чтобы подробнее узнать о различиях между UDP и TCP в контексте многопользовательских игр, можно прочитать статью Гленна Фидлера UDP vs. TCP.
Собственный протокол
Итак, вы хотите создать собственный транспортный протокол, но не знаете, с чего начать? Вам повезло, ведь Гленн Фидлер написал об этом две потрясающие статьи. В них вы найдёте множество умных мыслей.
Первая статья, Networking for Game Programmers 2008 года, проще, чем вторая, Building A Game Network Protocol 2016 года. Рекомендую вам начать с более старой.
Учтите, что Гленн Фидлер — большой сторонник использования собственного протокола на основе UDP. И после прочтения его статей вы наверняка переймёте у него мнение о том, что TCP имеет в видеоиграх серьёзные недостатки, и захотите реализовать собственный протокол.
Но если вы новичок в работе с сетями, то сделайте себе одолжение и используйте TCP или библиотеку. Для успешной реализации собственного транспортного протокола нужно предварительно многому научиться.
Сетевые библиотеки
Если вам нужно что-то более эффективное, чем TCP, но вы не хотите заморачиваться реализацией собственного протокола и вдаваться во множество подробностей, то можете воспользоваться сетевой библиотекой. Их очень много:
Транспортный протокол: заключение
Подведём итог: существует два основных транспортных протокола: TCP и UDP. TCP обладает множеством полезных особенностей: надёжность, сохранение порядка пакетов, обнаружение ошибок. У UDP всего этого нет, зато TCP по своей природе обладает повышенными задержками, недопустимыми для некоторых игр. То есть для обеспечения низких задержек можно создать собственный протокол на основе UDP или использовать библиотеку, реализующую транспортный протокол на UDP и адаптированную для многопользовательских видеоигр.
Выбор между TCP, UDP и библиотекой зависит от нескольких факторов. Во-первых, от потребностей игры: нужны ли ей низкие задержки? Во-вторых, от требований протокола приложения: нужен ли ему надёжный протокол? Как мы увидим из следующей части, можно создать протокол приложения, для которого вполне подойдёт ненадёжный протокол. Наконец, нужно ещё учитывать опытность разработчика сетевого движка.
У меня есть два совета:
Протокол приложения
Теперь, когда мы можем обмениваться данными между клиентами и сервером, нужно решить, какие именно данные передавать и в каком формате.
Классическая схема заключается в том, что клиенты отправляют серверу ввод или действия, а сервер отправляет клиентам текущее игровое состояние.
Сериализация
Первым шагом будет преобразование данных, которые мы хотим отправить (ввод или игровое состояние), в подходящий для передачи формат. Этот процесс называется сериализацией.
В голову сразу приходит мысль использовать человекочитаемый формат, например JSON или XML. Но это будет совершенно неэффективно и впустую займёт большую часть канала.
Вместо этого рекомендуется использовать двоичный формат, который намного более компактен. То есть пакеты будут содержать только несколько байтов. Здесь нужно учитывать проблему порядка байтов, который на разных компьютерах может отличаться.
Для сериализации данных можно использовать библиотеку, например:
Альтернативным решением может быть самостоятельная реализация, она не особо сложна, особенно если в коде вы используете ориентированный на данные подход. Кроме того, она позволит вам выполнять оптимизации, которые не всегда возможны при использовании библиотеки.
Сжатие
Количество данных, передаваемых между клиентами и сервером, ограничено пропускной способностью канала. Сжатие данных позволит передавать в каждом снэпшоте больше данных, увеличить частоту обновления или просто снизить требования к каналу.
Битовая упаковка
Первая техника — это битовая упаковка. Она заключается в использовании ровно того количества битов, которое необходимо для описания нужной величины. Например, если у вас есть перечисление, которое может иметь 16 различных значений, то вместо целого байта (8 бит) можно использовать всего 4 бита.
Гленн Фидлер объясняет, как реализовать это, во второй части статьи Reading and Writing Packets.
Битовая упаковка особенно хорошо работает с дискретизацией, которая будет темой следующего раздела.
Дискретизация
Дискретизация — это техника сжатия с потерями, которая заключается в использовании для кодирования величины только подмножества возможных значений. Проще всего реализовать дискретизацию округлением чисел с плавающей запятой.
Гленн Фидлер (опять!) показывает, как применять дискретизацию на практике, в своей статье Snapshot Compression.
Алгоритмы сжатия
Следующей техникой будут алгоритмы сжатия без потерь.
Вот, на мой взгляд, три самых интересных алгоритма, которые нужно знать:
Дельта-сжатие
Последняя методика сжатия — это дельта-сжатие. Она заключается в том, что передаются только различия между текущим игровым состоянием и последним состоянием, полученным клиентом.
Впервые она была применена в сетевом движке Quake3. Вот две статьи, объясняющих способ её использования:
Шифрование
Кроме того вам может понадобиться шифровать передачу информации между клиентами и сервером. На это есть несколько причин:
Протокол приложения: заключение
На этом мы закончим с протоколом приложения. Я считаю, что сжатие совершенно необязательно и решение о его использовании зависит только от игры и требуемой пропускной способности канала. Шифрование, на мой взгляд, обязательно, но в первом прототипе можно обойтись без него.
Логика приложения
Теперь мы способны обновлять состояние в клиенте, но можем столкнуться с проблемами задержек. Игроку, выполнив ввод, нужно ждать обновления состояния игры от сервера, чтобы увидеть, какое воздействие он оказал на мир.
Более того, между двумя обновлениями состояния мир совершенно статичен. Если частота обновления состояний низка, то движения будут очень дёрганными.
Существует несколько техник, позволяющих снизить влияние этой проблемы, и в следующем разделе я о них расскажу.
Техники сглаживания задержек
Все описанные в этом разделе техники подробно рассмотрены в серии Fast-Paced Multiplayer Габриэля Гамбетты. Я настойчиво рекомендую прочитать эту великолепную серию статей. В ней также есть интерактивное демо, позволяющее увидеть, как эти техники работают на практике.
Первая техника заключается в том, чтобы применять результат ввода напрямую, не ожидая ответа от сервера. Это называется прогнозированием на стороне клиента. Однако когда клиент получает обновление от сервера, он должен убедиться, что его прогноз был верным. Если это не так, то ему нужно просто изменить своё состояние согласно полученному от сервера, потому что сервер авторитарен. Эта техника впервые была использована в Quake. Подробнее о ней можно прочитать в статье Quake Engine code review Фабьена Санглара [перевод на Хабре].
Второй набор техник используется для сглаживания движения других сущностей между двумя обновлениями состояния. Существует два способа решения этой задачи: интерполяция и экстраполяция. В случае интерполяции берутся два последних состояния и показывается переход из одного в другое. Её недостаток в том, что она вызывает небольшую долю задержки, потому что клиент всегда видит то, что происходило в прошлом. Экстраполяция заключается в прогнозировании того, где сейчас должны находиться сущности на основании последнего состояния, полученного клиентом. Её недостаток в том, что если сущность полностью меняет направление движения, то возникнет большая погрешность между прогнозом и реальной позицией.
Последняя, самая продвинутая техника, полезная только в FPS — это компенсация лага. При использовании компенсации лага сервер учитывает задержки клиента, когда он стреляет в цель. Например, если игрок выполнил хедшот на своём экране, но в реальности его цель из-за задержки находилась в другом месте, то было бы нечестно отказывать игроку в праве на убийство из-за задержки. Поэтому сервер выполняет перемотку времени назад, на тот момент, когда игрок выстрелил, чтобы симулировать, что видел игрок на своём экране, и проверить коллизию между его выстрелом и целью.
Гленн Фидлер (как всегда!) написал в 2004 году статью Network Physics (2004), в которой заложил фундамент синхронизации симуляции физики между сервером и клиентом. В 2014 году он написал новую серию статей Networking Physics, в которой описал другие техники для синхронизации симуляции физики.
Предотвращение читерства
Существует две основные техники предотвращения читерства.
Первая: усложнение отправки читерами вредоносных пакетов. Как сказано выше, хорошим способом её реализации является шифрование.
Вторая: авторитарный сервер должен получать только команды/ввод/действия. Клиент не должен иметь возможности изменять состояние на сервере, кроме как отправкой ввода. Тогда сервер каждый раз при получении ввода должен перед его применением проверять его на допустимость.
Логика приложения: заключение
Рекомендую вам реализовать способ симуляции больших задержек и низких частот обновления, чтобы иметь возможность протестировать поведение своей игры в плохих условиях, даже когда клиент и сервер запущены на одном компьютере. Это сильно упростит реализацию методик сглаживания задержек.
Другие полезные ресурсы
Если вы хотите изучить другие ресурсы, посвящённые сетевым моделям, то их можно найти здесь:
Как играть по локальной сети? Подробная инструкция
Если вы любите компьютерные игры и дома или в офисе уже налажена локальная сеть, тогда вам нужно обязательно узнать, как играть по локальной сети.
Принцип создания игр в локальной сети у большинства одинаков.
Давайте рассмотрим этот самый принцип на примере одной из самых популярных игр за последние десятилетия – Counter Strike.
Проверяем сеть
Прежде чем играть в игры по локальной сети, вы должны убедиться, что ваши компьютеры объединены в сеть.
В этом помогут стандартные инструменты операционной системы.
Откройте любой файловый менеджер и посмотрите сколько машин в папке Сетевое окружение.
В компьютерные сети входят в группы, которые называются MSHOME или WORKGROUP.
Если они в сетке, можно приступать к началу игры.
Создание сервера
Нужно ее запустить и выбрать человека, который займется созданием новой игры. Его компьютер и будет сервером.
После чего появится окошко, где можно будет поставить нужные опции будущей игры.
Здесь можно выставить пароль, защитившись от непредвиденного доступа к игре ненужных участников.
Везде можно установить ограничение по участникам.
Запускаем игру и ждем, когда она полностью загрузится.
Подключение к серверу
Остальным игрокам, чтобы попасть в игру и подключится к ней, в главном меню нужно найти пункт Поиск сервера (Find Servers) и нажать его левой кнопкой мыши.
Далее в подменю необходимо зайти на вкладку с названием — Локальная сеть (LAN) и кликнуть по ней.
Именно там отображаются все только что созданные игры в локальной сети.
После этого последует загрузка данных и присоединятся остальных игроков.
Выводы
Следует иметь ввиду, что зачастую игры, имеющие многопользовательский режим, создаются по сходному принципу.
Поэтому в случае, когда компьютер, выполняющий роль сервера, закончит игру, все остальные игроки также отключатся.
Главный компьютер может менять игровые настройки прямо в процессе игры, но для этого нужно знать специальные команды, прописываемые в меню Console.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.