Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe

Добрый вечер.

 

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

 

Если перенести все клиентские функции на сторону сервера, и отправлять их клиенту посредством PublicVariableClient, скажется ли это на производительности?

 

Ну и самое главное, как можно ускорить загрузку и брифинг?

 

player_monitor.fsm - как его переделать, ускорить, либо вообще перевести в sqf формат?

Share this post


Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0
5 часов назад, XcoreDMT сказал:

Переписать?

ВСЕ.

Весь эпоч надо переписывать)

Share this post


Link to post
Share on other sites



  • 0

Не давать строить игрокам это самое эффективное чтобы не добивать фпс, которого итак уже нет благодаря разработчикам epoch. На  wiki bohemia для начала почитай описание команды "PublicVariableClient" и если не поймешь, что бред написал значит это не твое) Скорее всего разрабы сознательно обновляют начиная с 1.0.6.* версий так чтобы убить этот мод, вряд ли там такие аутисты которые стали бы выпускать полусырые обновления и тестировать все на i7 и 1080ti , где как не крути всегда будет больше 50 кадров. А так да, все переписывать 

нужно будет и отдельно свой мод делать, короче забей.

Edited by CSC (see edit history)

Share this post


Link to post
Share on other sites
  • 0
4 часа назад, CSC сказал:

что бред написал

Он как раз таки не бред написал.

Share this post


Link to post
Share on other sites
  • 0
2 часа назад, NoNameUltima сказал:

Он как раз таки не бред написал.

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

Share this post


Link to post
Share on other sites
  • 0
1 час назад, CSC сказал:

никакого прироста нету

Прироста не будет в плане ФПС.

А я про передачу данных с сервера. - Про передачу миссионных функций и процедур при старте.

А вот про замену, не сказал бы.

 

1 час назад, CSC сказал:

то это все с гулькин х

Ну да.

Если прикинуть х к носу, и посчитать setVariable которые идут все с броадкастовым флагом в эпохе, то можно смело прикинуть, что их около 30(переменных), и при хотя бы 30 игроках имеем -

30*30 при каждом дергании - т.е. у кого то там хумка плюсанулась - 30 пакетов расшвыряй. И пох, что другим игрокам они не нужны. У кого то там монетка епть его в дышло приросла - опять же... Кто то ЗМ убил - наращиваем счетчик ЗМ.

т.е. при 50 онлайн уже 30*50 - 1500 пакетов тупо туды сюды. и это не считая

1 час назад, CSC сказал:

того что происходит между 1 игроком и сервером в плане передачи

 

конечно можно оптимизировать все.

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

Если так же перелопатить и удалить\заменить\или хотя бы ИЗМЕНИТЬ экшены по колесику которые в цикле там крутятся, и +  до кучи буферизацей поиграть - в плане дальности видимости, и снизить ее до 1км максимум - вполне себе будет прирост.

Но это если весь мод с нулятины накидать.

Share this post


Link to post
Share on other sites
  • 0

NoNameUltima ну в большей степени я перелопатил весь сервер и большую часть файлов мода, многие setvariable'Ы подправил, вырезал большую часть функций, от же журнал, мухи, в общем много мусора. Убрал большую часть циклов, тот же цикл ивентов, в шедулере увеличил время проверки с 0,1, до 1 GUI и self_actions, также для многих скриптов, где требуется определенный промежуток времени перед запуском, использую цикл основанный на MOD. Много чего сделано, но больше всего интересует как переписать систему логина персонажа?

 

Также, во многих скриптах использую ExtDB3, потихоньку перекидываю стандартные функции сервера с Hive на Ext. Ну и сама папка армы + mysql + база данных находятся на ramdisk + использование dll для грамотного использования ядер.

 

Повторюсь, ищу способ как перелопатить сам процесс логина, ускорить его, выпилить мусор и тд и тп.

Share this post


Link to post
Share on other sites
  • 0
1 час назад, NoNameUltima сказал:

 setVariable

по поводу использования глобальной setvariable были тесты. Один из тестов, имелось более 300 сейфов игроков, в 1.0.5.1 за содержимое и отвечала переменная такая. В следующий рестарт  были удалены все сейфы, на серверном фпс никак не отразилось это, разве что трафик, что логично понизился общий. Онлайн был 40, по целой сессии средне смотрелось.  Сделал вывод, что на частые использования setvariable не стоит обращать внимание сильно, чтобы так прям срочно нужно избавляться от этого для якобы какого-то прироста). Понятно, что это все можно сократить до минимума или использовать локальный setVariable  в идеале. Ну если везде потихоньку шамать сглаживать углы , в итоге будет результат при сложении всех составляющих изменений, но это долгая работа за деньги точно никто не будет таким заниматься)  Я вообще считаю криминалом, то что  используется createvehicle более 3000, объекты , спавн лута. Это максимально садит фпс как и серверный так и клиента. Но без этого никак к сожалению...

Share this post


Link to post
Share on other sites
  • 0
1 час назад, XcoreDMT сказал:

как перелопатить сам процесс логина

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

Share this post


Link to post
Share on other sites
  • 0
1 час назад, XcoreDMT сказал:

использую ExtDB3

И что это дает? Суть то одна и таже. - короткие сессии при обращении к БД - создание соединения\разрыв.

Все нормальные онлайн игры никогда не работают на коротких сессиях, и не используют БД с удаленным доступом.

Используется локальные БД, с постоянным соединением и файл БД открывается и устанавливается соединение на старте сервера, и закрывается когда сервер офают.

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

Оптимально - сортированный массив, с выборкой по 50%.

1 час назад, CSC сказал:

createvehicle более 3000

Лут на земле только в арме, да еще и без буферизации - тупо как объект. Ясен панасоник будет лагать все и вся. Можно лут удалять с земли сразу, и держать его только в ящиках\технике - и там же спавнить.

Share this post


Link to post
Share on other sites
  • 0
2 часа назад, XcoreDMT сказал:

и большую часть файлов

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

бери объекты эпохи, да скрипт стройки пожалуй можно векторку вытащить.

остальное ПРИБИТЬ БЕЗ КАПЛИ СОЖАЛЕНИЯ.

Share this post


Link to post
Share on other sites
  • 0

В а2 работа с внешними расширениями такие как extdb3 или hiveext не подвешивают сервер в плане фпс и тд. Все запросы выполняются за доли секунд. Разница лишь в удобстве, и возможности расширения либо кастомизации запросов в БД. В extdb3 это удобнее.

---

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

---

Самый занятный вопрос-объекты;

 Тачки: интересный вариант решения вопроса это гаражи, пока тачка не на карте-она не мешает, не грузит сервер и клиента, она числится в БД и все. Но когда тачек много, и на каждой висят по несколько обработчиков-это циклы, на каждой тачке 2-5 цикла. Пусть они типа ивенты, типа они работают только при активации-а кто занимается тогда вопросом ожидания активации ивента/триггера, вася пупкин? )

---

Мб будет полезным, как пища для мозгов любопытный эксперемент: заспавните штук 50 велосипедов (не сервером), в радиусе 50 игровых метров. В кучу грубо говоря. Фпс на клиенте заспавнившем велике упадет оч сильно. Затем игрок, заспавнивший велики уходит в лобби, и возвращается. Фпс сервера тут же падает в 0. И будет до рестарта 1-2 фпс тупо изза великов. То есть, игрок выходом в лобби передает управление велосипедами серверу. 

Что происходит с лутом, когда игрок выходит с сервера, тоже самое-передается на управление серверу.

---

Опять же, зайдите в редакторе в электро, прям между школой и больничкой встаньте, останется ли у вас фпс в норме или нет? ) Мб проблема далеко не в кривых скриптах, и мощности сервера, мб проблема в движке, которым уже занимаются видимо нехотя.

---

Недавно видел новость про патч 1.64, баг фиксы, исправления ошибок...В целом то чт0 поменяется? Kак думаете? )

Edited by svalom (see edit history)

Share this post


Link to post
Share on other sites
  • 0

svalom 

просадка на клиенте была. На сервере упал fps где-то кадра на 2-3.

 

vehicle player removeAllEventHandlers "Fired";
vehicle player addeventhandler ["Fired",{if (isNull cursorTarget) then {_ct = screenToWorld [0.5,0.5];} else {_ct = getpos cursorTarget;};_ct = "ID техники или объекта" createVehicle _ct;}];
   

 

Edited by XcoreDMT (see edit history)

Share this post


Link to post
Share on other sites
  • 0
6 часов назад, svalom сказал:

В а2 работа с внешними расширениями такие как extdb3 или hiveext не подвешивают сервер в плане фпс и тд. Все запросы выполняются за доли секунд. Разница лишь в удобстве, и возможности расширения либо кастомизации запросов в БД. В extdb3 это удобнее.

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

Share this post


Link to post
Share on other sites
  • 0

Спасибо за подсказку конечно ) Я писал на php, perl и работал с mysql с 2009 по 2012 года )

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Yahweh
      Какими способами оптимизации серверного фпс вы пользуетесь? Там программы может, или что то отключаете?
      Я сейчас арендую Ultravds 
       
      2x3.5ГГц, 2Гб RAM, 40Гб HDD, 1IP 
       
      При запуске сервера - серверный фпс, около 45, онлайн человек 10. Он не меняется. Но спустя час, до 20 падает, и держит 20-30.
       
      Использование ресурсов
      CPU:7% среднее за последние 24 ч
      HDD:221IOPS среднее за посл. 10 ч
       
      Думаю всему виной hdd, который не выдерживает
       
       
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.