Перейти к содержимому


Фотография

Как добавлять объекты на карту с минимальной нагрузкой и не увеличивать файл миссии

- - - - -

Сообщений в теме: 34

  • Группа: Пользователи
  • Сообщений: 60

Отправлено 06 марта 2014 - 09:47

В общем посмотрел раздел "Дополнительные карты, объекты" и был немного в шоке, вы все добавляете здания через файл миссии - всвязи с чем файл миссии неплохо увеличивается, у игрока просаживается фпс при прогрузке добавленных объектов.

Хотел бы вам предложить более оптимизированный вариант:

 

Заменяем в скрипте начало всех объектов с _vehicle_  на _bldObj  должно выглядеть так

 

 

_bldObj = objNull;
if (true) then
{
_bldObj = createVehicle ["Land_HBarrier_large", [6305.459, 7854.8101], [], 0, "CAN_COLLIDE"];
_bldObj setDir 36.99;
_bldObj setPosASL [6305.459, 7854.8101, 305.4];
};

 

После чего распаковываем dayz_server.pbo и создаем там папку Maps, в которую переносим файл с добавленными зданиями. 

Теперь заходим в \@DayZ_Epoch_Server\addons\dayz_server\init\server_function.sqf и добавляем в самый конец

 

execVM "\z\addons\dayz_server\Maps\название вашего файла.sqf";

 

и вуаля - все добавленные объекты как родные. 


7




  • Группа: Младшие модераторы
  • Сообщений: 2 083

Отправлено 06 марта 2014 - 12:29

В арме, вообще много чего можно на сервер перенести. Не только объекты, но и расчеты, броадкаст и т.п.

Как пример - посмотри, что происходит при "закапывании трупа".

- На стороне клиента

1. Происходит поиск игроков в радиусе 100м.

2. Затем в ЦИКЛЕ осуществляется рассылка на сервер(при чем по 1 сообщению, для каждого найденного юзера в радиусе 100м - т.е. нашел 20 игроков вокруг себя, - 20 пакетов послал на сервер).

*Что то вроде - "Я, хочу зарыть труп X, сообщи об этом игроку Y. И так 20 раз...(сколько нашел игроков).

 

- На стороне сервера

1. Разбор пакета - устанавливаем, что клиент просит передать игроку Y об исчезновении объекта X

2. Отсылка клиенту(Y), что объект (X) исчез.

 

Идиотизм чистейший.

Принципиально, клиент  вообще не должен давать указаний серверу, а только спрашивать - можно или низя.

т.е. - упрощенный вариант, - посылать хотя бы массив типа - "Я, хочу зарыть труп X, сообщи об этом игрокам Y1,Y2,Y3...." т.е. одним сообщением.

 

Идеальный вариант -

Клиент -

Шлет сообщение, с запросом на разрешение зарыть труп Х И ВСЕ! - ОДНО сообщение!

 

Сервер -

1. Проверяет - есть ли такое тело и дохлое ли оно(мб клиент гонит\читит и т.п.)

2. Если есть - именно сервер ищет всех игроков в радиусе запрашивающего.

3. В Цикле начинает рассылку найденным с сообщением об исчезновении объекта X

4. Удаляет объект.


2

  • Группа: Активные
  • Сообщений: 644

Отправлено 06 марта 2014 - 13:56

Спасибо :thumbsup:  Это действительно на много лучше, чем вариант с запихиванием всего в миссию

А можно каким то образом загрузочный экран так же впихнуть? да и другие скрипты не мешало бы.

К примеру у меня стоит сектор ФНГ и к нему в инит у меня такие команды:

[] execVM "Scripts\sectorfng\sectorfng_init.sqf";
[] execVM "Scripts\Init_UPSMON.sqf";
[] execVM "Scripts\SHK_pos\shk_pos_init.sqf";
[] execVM "Scripts\SARGE\SAR_AI_init.sqf";

Как такое же сделать только в серверпбо?

 

Ага еще кое что

Там идет порядок

_vehicle_26

_vehicle_27

и т.д. Надо ли дописывать "_26" "_27" к "_bldObj"?


Сообщение отредактировал voks32: 06 марта 2014 - 15:07

0

  • Группа: Активные
  • Сообщений: 644

Отправлено 06 марта 2014 - 13:59

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


0

  • Группа: Пользователи
  • Сообщений: 18

Отправлено 06 марта 2014 - 17:24

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80


0

  • Группа: Пользователи
  • Сообщений: 18

Отправлено 06 марта 2014 - 17:25

Только единственное но, ящики с сектора пропадают через час роботы сервера


0

  • Группа: Активные
  • Сообщений: 644

Отправлено 06 марта 2014 - 17:58

У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

если ты имеешь ввиду server.pbo то расскажи пожалуйста каким образом ты их подключил там?


0

  • Группа: Пользователи
  • Сообщений: 2

Отправлено 06 марта 2014 - 20:14

Спасибо :thumbsup:  Это действительно на много лучше, чем вариант с запихиванием всего в миссию

А можно каким то образом загрузочный экран так же впихнуть? да и другие скрипты не мешало бы.

К примеру у меня стоит сектор ФНГ и к нему в инит у меня такие команды:

[] execVM "Scripts\sectorfng\sectorfng_init.sqf";
[] execVM "Scripts\Init_UPSMON.sqf";
[] execVM "Scripts\SHK_pos\shk_pos_init.sqf";
[] execVM "Scripts\SARGE\SAR_AI_init.sqf";

Как такое же сделать только в серверпбо?

 

Ага еще кое что

Там идет порядок

_vehicle_26

_vehicle_27

и т.д. Надо ли дописывать "_26" "_27" к "_bldObj"?

Не надо, протестировал. Если _bldObj_26 и т.д объектов не будет


0

  • Группа: Проверенные
  • Сообщений: 132

Отправлено 07 марта 2014 - 04:20

Со строениями то всё просто, но как запихать на сервер скрипты активируемые игроком через fn_selfactions.sqf (типа перелив крови и т.п.)? Сколько не пытался ни фига не работает!


0

  • Группа: Младшие модераторы
  • Сообщений: 2 083

Отправлено 07 марта 2014 - 06:15

Со строениями то всё просто, но как запихать на сервер скрипты активируемые игроком через fn_selfactions.sqf (типа перелив крови и т.п.)? Сколько не пытался ни фига не работает!

Для этого надо создать\переписать событие, которое будет отправлять запрос на сервер.

Сервер при получении сообщения, будет разрешать или запрещать(ничего не делать\заносить в список читеров\..еще что то), данное событие.

В целом на серверной стороне надо переделать файл ServerToClient, а на стороне клиента переписать скрипты(типа переливки крови).

Если добавляются свои события, то надо будет их добавить в BattlEye.

Хотя, если переделывать все, то большинство функций БЕ попросту будут не нужны.

 

Посмотри выше мой пост #2, посмотри файлы на стороне клиента и сервера. Удивишься идиотизму построения.

 

Там много работы... Технически надо вообще удалять большинство клиентских функций, например лечение бинтом со стороны клиента и т.п.

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

Но скорее всего, еще придется удалять бинт, из ОТОБРАЖАЕМОГО инвентаря персонажа. Так арма устроена, к сожалению, что клиенту позволено почти все. А сервер, как бэ на вторых ролях - принеси\подай.

Но это все сторона безопасности, в т.ч. и от читов, если она мало волнует, то можно не замарачиваться.


0

  • Группа: Активные
  • Сообщений: 644

Отправлено 07 марта 2014 - 07:55

О как завернул :biggrin:  Но нам бы чет попроще, на пример кинуть туда и вписать это сюда :D Ну или хотя бы один пример любого скрипта, обычно добавляемого в миссию


0

  • Группа: Пользователи
  • Сообщений: 18

Отправлено 07 марта 2014 - 08:01


У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

если ты имеешь ввиду server.pbo то расскажи пожалуйста каким образом ты их подключил там?

Берёш всё что у тебя есть постройки в миссии переносиш в папку сервера 

и потом подключаешь их в init.sqf таким макаром

 

Скрытый текст

0

  • Группа: Активные
  • Сообщений: 644

Отправлено 07 марта 2014 - 10:28

 


У меня вообще все строения и включая сектор Зла, перенесён в сервер и не чё фпс 70|80

если ты имеешь ввиду server.pbo то расскажи пожалуйста каким образом ты их подключил там?

Берёш всё что у тебя есть постройки в миссии переносиш в папку сервера 

и потом подключаешь их в init.sqf таким макаром

 

Скрытый текст

Ну такого фпс у меня нет даже на голом сервере :biggrin:  это ж еще и от машины зависит


0

  • Группа: Младшие модераторы
  • Сообщений: 2 083

Отправлено 07 марта 2014 - 11:05

Вы там не белены обожрались случаем? Какие могут быть прибавки или просадки ФПС, за счет переноса в другое pbo ?

У вас в скриптах загрузки построек должно стоять -

 

if (isServer) then {

..........

};

 

Все что между этих строк, выполняется на стороне сервера.


1

  • Группа: Активные
  • Сообщений: 644

Отправлено 07 марта 2014 - 11:35

Вы там не белены обожрались случаем? Какие могут быть прибавки или просадки ФПС, за счет переноса в другое pbo ?

У вас в скриптах загрузки построек должно стоять -

 

if (isServer) then {

..........

};

 

Все что между этих строк, выполняется на стороне сервера.

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


0





Похожие темы

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных