Помощь У вас "тормоза" в игре? Низкий FPS? Вы всё ещё вините БП? Тогда вам сюда!

Тема в разделе 'Технические вопросы', создана пользователем =Катёнок=, 25 Декабрь 2013.

Уважаемый/ая гость/я нашего форума!

Вы можете принимать активное участие в жизни форума только, если сначала зайдёте на Ваш игровой аккаунт и уже оттуда перейдёте на наш форум. Если у Вас всё ещё нет игрового аккаунта, пожалуйста, зарегистрируйтесь как новый пользователь в нашей игре. Мы будем рады приветствовать Вас на нашем форуме! „Перейти по ссылке“
Статус темы:
Закрыта.
  1. I. Ещё так же слышал мнение одного господина, мол по FPS зависит от скорости интернет-канала... В пример этот человек приводил потоковое видео, например, с youtube, rutube, vkontakte и т.д. Так вот, это не так! Почему?

    А потому, что мы играем на уровне кода. Компьютер (в данном случае игровой сервер) не знает, что такое Galiaf, Vengeanse, LF3, RSB75 и т.д... Для него это классы объектов, которые в ActionScript выглядят совсем иначе, нежели в интерфейсе игры.
    Что такое сервер?
    Нас интересует игровой сервер, а это ПО.
    Начнём читать начало (Роль), а дальше и не надо:
    Основное выделил бордовым цветом. Как можно понять из текста, сервер отправляет данные клиенту (а клиент, который мы грузим и играем при помощи браузера, написан на связке Flash + ActionScript) получает данные по определённому протоколу и обрабатывает их.
    Что такое протокол:
    Почему я взял именно сетевой протокол объяснять, думаю, не нужно.
    Так, к вышесказанному могу добавить вот что:
    Ну, тут взят на пример обычный HTTP протокол. Кстати, сама инф-я взята отсюда. Можете почитать на досуге и сделать себе свою онлайн игру.

    Основное выделил!
    Теперь понятно в чём отличие игры от потокового видео?
    Думаю, теперь вы поняли, что производительность клиента не менее важна, чем производительность сервера (хотя и в разумных пределах).

    Вывод: игрок получает не видео с сервера а пакеты с информацией о состоянии его корабля и окружающих его объектов (другие игроки, мобы, ресы, коробочки и т.д.).

    ==============================================
    II. От чего зависит производительность клиента игры DarkOrbit?

    Как я уже писал, клиент для игры DarkOrbit написан на Flash. ActionScript является языком обработки сценариев для Flash. (ох, чувствую, сейчас меня за пинают за эту фразу...)

    Получая из сети пакеты, ActionScript их обрабатывает, генерирует необходимые объекты, которые выводятся на экран при помощи Flash.
    Кстати, тут есть и обратный момент. Всё, что вы делаете в окне с Flash, обрабатывается в AC и отправляется на сервер. Например, когда вы пытаетесь взять кого-то в лок, происходит примерно следующая цепочка действий:
    1. Получение ID объекта на карте.
    2. Отправка запроса на получения информации об объекте (это может быть значение прочности, щита...)
    3. Получение информации.
    4. Обработка информации.
    5. Генерирование визуальных элементов (полоски прочности, рамка вокруг корабля)
    6. Прорисовка элементов во Flash.
    Насчёт добавления ника и окошка группы, умолчу...

    Про нажатие на атаку и смену боеприпасов расписывать не буду. Алгоритм примерно схож.

    Подробнее остановимся на пунктах 2 и 3. Точнее на том, что я пропустил между ними. Правильно - это ожидание ответа!
    Клиент не может начать обработку данных, пока их не получит. А сервер их не передаст, пока не получит запрос.

    Простой пример

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

    То есть, пока выполнится какое-то действие, должно пройти время. Оно завесит от того, насколько быстро реагируют сервер и клиент на запросы от друг-друга.
    А вот тут надо ломать стереотипы...

    Ибо можно сказать, что у меня канал в 400 мбит/с и пакеты должны летать мгновенно... Чтож, это почти так. Но вот только 400 мбит/с - это мера измерения скорости, которая говорит, что за одну секунду ваш компьютер максимально сможет принять данные в 400 мбит (то есть в ~50 мегабайт). У вас может быть хоть 10*21^10 мегабит, это не превысит скорость света... Нет...

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

    Более подробно читаем про Ping. (необязательно)

    Вывод: время построения объекта зависит от времени реакции вашего компьютера.

    А отчего же зависит время реакции?
    1. От расстояния до сервера. Ибо из физики мы знаем t=S/V, то есть от отношения расстояния к скорости. Скорость зависит от материала, из которого изготовлен проводник. Например по оптико волоконной сети пакет придёт быстрее, чем по обычной. дело в том, что скорость света во много раз превышает все остальные.
    2. От нагрузки интернет-канала. Дело в том, что если ваш канал сейчас используется другим приложением, то пакеты ставятся в очередь. Пока до нужного пакета не дойдёт очередь, он не будет отправлен, так же и в получении - пропускная способность получателя и отправителя примерно схожа, иначе бы половина информации терялась бы. Кстати, отсюда возможность D-DOS атаки. Так вот, пока нужный пакет отправится, обработается, вернётся и будет обработан (прочтён) пройдёт некоторое время. Чем оно меньше, тем лучше для вас.
    3. От количества серверов, которые пройдёт ваш пакет, пока достигнет цели. Трассировка, как все привыкли. Дело в том, что каждый провайдер не может дотягивать кабели до DataCentr-ов каждой страны. Отсюда и название "Всемирная паутина". Всё взаимосвязано.
    4. Загруженности этих промежуточных серверов.
    Ну думаю, хватит для начала. Если у кому ещё интересно почитать, можете спросить у этого дяди. Он вас ответит.

    Вывод: что бы был хороший Ping, надо выбирать качественного провайдера.
    ==============================================

    III. От чего зависит скорость отрисовки объектов во Flash?

    Повторюсь с алгоритмом:
    Пункт №6.
    Скорость от рисовки (FPS) будет зависеть:
    1. Мощности вашего процессора (цп, разрядность (хотя, в основном это относится к производителю плагина), кеш) - ~ 70%
    2. ОЗУ - ~ 10%
    3. видеопамяти ~ 10%
    4. набора ПО (а это: ОС, браузер, плагин FlashPlayer (или другие) и т. д.) ~ 5%
    5. другое ~ 5%
    Вывод: FPS зависит только от железа вашего компьютера и его ПО.

    Внимание! Если вы хотите убедиться в том, что FPS НЕ зависит от вашего интернета, сделайте следующее:
    1. Зайдите на звёздную карту.
    2. Нажмите F, что бы в левом верхнем углу появилось окошко вывода количества FPS.
    3. Запомните среднее значение FPS.
    4. Отключите кабель интернета от компьютера или просто выключите все интернет-соединения, что бы клиент не мог связаться с сервером!
    5. Наблюдайте за FPS.
    Что вы увидите? FPS не изменился! Почему? А потому, что Flash продолжает отрисовывать объекты, которые он получил ранее каждый кадр. Он не получает никаких сведений и них, он не создаёт новых объектов. Он лишь использует данные, полученные из последних пришедших.


    Подведём итог:
    В этих трёх не больших пунктах я попытался донести до вас следующие сведения:
    • Как получают друг от друга информацию клиент и сервер
    • Что это за информация и доказал, что это не видео в формате FLV.
    • Объяснил, почему иногда долго корабли берутся в лок и долго "думает" клиент.
    • Что такое Ping и что он значит для игр.
    • Чем отличаются миллисекунды от мегабит/с.
    • От чего зависит FPS.
    • Влияет ли скорость интернета на FPS.

    ==============================================

    Понимаю, что сейчас тут появятся посты, типа: "многабукф! неасилил!" и прочее... это и не удивительно, ибо этот текст содержит около 10 500 букв, 1500 слов, не считая дополнительной литературы.

    Всё же надеюсь, что кто-то извлечёт из него какой-то урок.

    автор Линуксоид_Егор
     
    -=!exx=-, †Zaraki_†_Kenpachi†, Ozols и 5 других отметили, что им это нравится.
  2. Данные программы выполняют лишь автоматизируют работу пользователя.
    Что они делают:
    • Чистят реестр
    а реестр это база данных, где ОС хранит важные для неё данные (ссылки к объектам, ключи и т.д.) Чем больше там записей, тем сложнее найти нужную. Отсюда необходимость чистки реестра, что бы ОС "соображала" быстрее.
    • удаляют временные файлы программ, в частности, относящимся непосредственно к ОС
    Ну тут роль ПО. Чем быстрее будет работать ОС, тем лучше. Во первых, вам приятнее, во-вторых, она будет меньше жрать ресурсов процессора, например, во время игры... Или, по крайней мере, выполнит свои действия быстрее, не растянет их на полчаса.

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

    Например у меня стоит локальный кеширующий прокси-сервер Squid.

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

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

    Что можно сказать за этой темы:

    FlashPlayer - это закрытый (проприетарный) продукт. Некоторые его алгоритмы не понятны. Все знают, что он что-то кеширует. Однако, флэш-ролики кэшируются в папку с кэшем браузера, отсюда необходимость чистить кеш браузера, а что-то он кладёт в свою папку. Что там, не знаю... Знаю только то, что там лежат настройки для каждого сайта индивидуально... Поэтому при появлении каких-либо глюков это может, конечно, помочь.

    = = = = = = = = = = = =

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

    автор Линуксоид_Егор
     
  3. Скорее, это вызвано тем, что из-за большой нагрузки на сетевой канал, накопится большое количество пакетов в очереди, что вызывает нагрузку на процессор и ОЗУ. Причём, ввиду того, что ОС семейства DOS имеют тьму тьмущую служб и ОС пытается ещё и разобраться что, какой пакет, куда и когда отправить, они и вызывают нестабильность в FPS.

    Это первый этап.

    Второй этап, когда интернет канал "разгрузиться" от мусора, начинается массовая бомбардировака AC пакетами с устаревшей информацией, которую он начинает обрабатывать, так как рассчитан на непрерывный поток данных. А так как всё это нужно ещё и отрисовать, он вызывает нестабильность уровня FPS.

    Что происходит, когда нет связи с сервером? Мобы/корабли останавливаются, коробки не берутся. Как только связь появляется, сразу "мордоны начинают летать по карте со скоростью веника", вылезает куча сообщений, что коробка уже загружается на борт и т.д.

    А это и есть пример второго этапа. Отсюда и проседание FPS.

    Поэтому можно сказать, что FPS напрямую не зависит от связи.

    автор Линуксоид_Егор
     
  4. Э-э-э-э... А у вас ОС вообще как работает? Не тормозит? Просто у свисты минимальные требования отмечены на 512 мб ОЗУ...
    Потом файл подкачки у вас всего 813 мб и свободно 675 мб, то есть ОС активно юзает СВОП.
    Я бы посоветовал перейти на ХР, если вам привычны ОС того семейства, которыми вы пользуетесь.
    Она будет меньше жрать ресурсов, тем самым лагов будет меньше... Хотя я вам не обещаю, что будите спокойно летать в куче из 100 кораблей... Сам с таким раньше жил.

    Что касается разрешение, так с этим делом труднее... как её решить - не знаю. У самого скидывается разрешение... Если только через FastOrbit...
    автор Линуксоид_Егор
     
    Чужой[Русь] и Ромка_Летчик нравится это.
Статус темы:
Закрыта.