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


Фотография

Отладка сетевой части скриптов


Лучший Ответ SteelRat , 08 August 2015 - 18:33

 

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

Данная функция прекрасно работает в таком раскладе, так что ищите проблему у себя

 

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

"myPubVar2" addPublicVariableEventHandler 
{
	hint format ["Получили данные. myPubVar2 = %1", myPubVar2]
};


while {true} do 
{
	sleep 1;
	
	myPubVar = [123, "456", true];
	publicVariable "myPubVar";
	
	systemChat format ["Скрипт Test_Exit, загружен. Передаем данные  = %1", myPubVar];
};

Соответственно каждую секунду передаем данные, и принимаем их на каждом клиенте. Высвечиваем подсказку. Уж не знаю, где тут можно накосячить.

 

 

Отправлено Сегодня, 13:17

Sledo сказал(а) 08 Ауг 2015 - 02:18:snapback.png

Уж не знаю, где тут можно накосячить.

А в коде нет косяков. Проблема в чём-то другом.

Как запускали код? Где отчёт из RPT-файла?

 

 

Что значит нет косяков!?

Человек объявляет публичную переменную myPubVar

myPubVar = [123, "456", true];
publicVariable "myPubVar";

А евантхандлер выписывает переменной myPubVar2

"myPubVar2" addPublicVariableEventHandler 

И чего вы ожидаете в таком случае!?

Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 29

#1 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 05 August 2015 - 23:27

Вот написал я скрипт которому нужно передавать значения через сеть и работать с ними, а как его отладить? Если запустить два клиента на одном компе, ругается Батлнет, если с одного акка запускать игру но с разных компьютеров, то стим блокирует сеть. Может БИСы сделали что то иное для отладки сетевой части скриптов?


  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 06 August 2015 - 00:14

Запускаем игру >> Идем в корень Arma 3 >> Запускаем server.exe >> Ждем когда создастся сервер (Появится окошечко с ip и портом) >> Возвращаемся в игру >> Сетевая игра >> LAN >> Заходим на единственный сервер >> В чат пишем #vote admin Свой_ник (Нужно что бы стать администратором и выбирать миссии) >> Опять в чат пишем #missions >> Выбираем свою миссию >> Запускаем и тестируем


  • 1

#3 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 06 August 2015 - 00:29

Запускаем игру >> Идем в корень Arma 3 >> Запускаем server.exe >> Ждем когда создастся сервер (Появится окошечко с ip и портом) >> Возвращаемся в игру >> Сетевая игра >> LAN >> Заходим на единственный сервер >> В чат пишем #vote admin Свой_ник (Нужно что бы стать администратором и выбирать миссии) >> Опять в чат пишем #missions >> Выбираем свою миссию >> Запускаем и тестируем

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


  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 06 August 2015 - 01:27

А для того что бы как бы сам с собой поиграть? Так же запускать еще один клиент, и заходить на сервер?

Нужно иметь две лицензии.
  • 0

#5 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 06 August 2015 - 02:08

Нужно иметь две лицензии.

Печалька. Как же тогда игроки отлаживают сетевые решения в скриптах?? Неужели постоянно с кем то кооперируются, и тестят?? А если надо несколько человек... В девелоперской версии это тоже не предусмотрено?


  • 0

#6 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 сообщений

Отправлено 06 August 2015 - 05:39


Неужели постоянно с кем то кооперируются, и тестят? Неужели постоянно с кем то кооперируются, и тестят?? А если надо несколько человек

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


  • 0

#7 OFFLINE   Snap

Snap

    Старшина

  • Пользователи (ВсВт-В)
  • 352 сообщений
  • Откуда:Чебоксары
  • Отряд:Black Badges

Отправлено 06 August 2015 - 12:11

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


  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 06 August 2015 - 12:38

ни разу не было проблем с запуском двух копий игры.

Каким это вы образом на двух компах зашли в одну учётную запись Steam?
  • 0

#9 OFFLINE   Snap

Snap

    Старшина

  • Пользователи (ВсВт-В)
  • 352 сообщений
  • Откуда:Чебоксары
  • Отряд:Black Badges

Отправлено 06 August 2015 - 13:06

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


Сообщение отредактировал Snap: 06 August 2015 - 13:08

  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 06 August 2015 - 13:33

Snap, несколько копий игры я и сам запускал и подключался к одному серверу с отключённым BattlEye. Я спрашивал, как получилось зайти в одну учётку Steam с разных компов?

Сообщение отредактировал Schatten: 06 August 2015 - 13:34

  • 0

#11 OFFLINE   Snap

Snap

    Старшина

  • Пользователи (ВсВт-В)
  • 352 сообщений
  • Откуда:Чебоксары
  • Отряд:Black Badges

Отправлено 06 August 2015 - 14:46

Snap, несколько копий игры я и сам запускал и подключался к одному серверу с отключённым BattlEye. Я спрашивал, как получилось зайти в одну учётку Steam с разных компов?

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


Сообщение отредактировал Snap: 06 August 2015 - 18:08

  • 0

#12 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 06 August 2015 - 15:47

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

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

 

 

Два игрока более менее достаточно для теста на работоспособность.

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

 

 

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

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

 

В общем ясно, спс за ответы. Будем мучиться.


  • 0

#13 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 06 August 2015 - 16:55

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

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

- здесь есть такой параметр как kickduplicate. Если я не ошибаюсь, по умолчанию ему присваивается 1, т. е. подключающийся к серверу игрок с ID, который совпадает с уже играющим на сервере ID другого игрока, будет исключён.


  • 0

#14 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 06 August 2015 - 18:47

Поднимаете выделенный сервер, или хостите из игры, лучше видимо выделенный, с гарантией так сказать.

 

Предварительно настраиваете Безголового клиента

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

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

 

Кратко о главном, Headless client, это такой же обыкновенный клиент армы, только без графической оболочки, просто консоль, и не смотря на это, он вполне себе играющий клиент! И его вполне себе можно инициализировать как и любого игрока!

 

Итого, при наличии определённой гибкости ума, вполне реализуем виртуальный

player

  • 0

#15 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 06 August 2015 - 19:56

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

- здесь есть такой параметр как kickduplicate. Если я не ошибаюсь, по умолчанию ему присваивается 1, т. е. подключающийся к серверу игрок с ID, который совпадает с уже играющим на сервере ID другого игрока, будет исключён.

Почти в точку.

 

Совместными усилиями, получился такой алгоритм действий (на всякий случай, надо приготовить бубен и знать хотя бы один танец):

 

1) Качаем девелоперский билд как написано тут тынц. Если не переключается на бета версию, надо заново проверить целостность кэша.

2) Создаем файл server.cfg в папке с exeшником игры (если конечно его еще нет).

3) В него прописываем loopback = true; от сюда

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

. Я прописал на всякий случай еще kickduplicate = 0;

BattlEye = 0;

4) Для удобства создаем ярлык на рабочем столе arma3server.exe, в него прописываем как написано здесь

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

.

5) Запускаем сервер.

6) Запускаем клиент.

7) Заходим во вкладку ЛВС или LAN, в сетевых играх. Там должен быть ваш созданный сервер, с пометкой [DEV].

8  ) Заходим в него, стольким количеством клиентов, сколько требуется, или сколько выдерживает железо.

9) Выкидываем все костыли.


Сообщение отредактировал Sledo: 06 August 2015 - 19:57

  • 0

#16 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 07 August 2015 - 17:11

Совместными усилиями, получился такой алгоритм действий (на всякий случай, надо приготовить бубен и знать хотя бы один танец):

 

1) Качаем девелоперский билд как написано тут тынц. Если не переключается на бета версию, надо заново проверить целостность кэша.

2) Создаем файл server.cfg в папке с exeшником игры (если конечно его еще нет).

3) В него прописываем loopback = true; от сюда

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

. Я прописал на всякий случай еще kickduplicate = 0;

BattlEye = 0;

4) Для удобства создаем ярлык на рабочем столе arma3server.exe, в него прописываем как написано здесь

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

.

5) Запускаем сервер.

6) Запускаем клиент.

7) Заходим во вкладку ЛВС или LAN, в сетевых играх. Там должен быть ваш созданный сервер, с пометкой [DEV].

8  ) Заходим в него, стольким количеством клиентов, сколько требуется, или сколько выдерживает железо.

9) Выкидываем все костыли.

 

В общем то не обязательно запускать сервер и клиенты в девелоперской версии, как это указано в справке, вполне прокатывает и обычная версия с включенным параметром на сервере, loopback = true.

 

Проблема в том, что это локальные соединения, и в нем не работает функция 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

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

 

 

 

Поднимаете выделенный сервер, или хостите из игры, лучше видимо выделенный, с гарантией так сказать.

 

Предварительно настраиваете Безголового клиента

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

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

 

Кратко о главном, Headless client, это такой же обыкновенный клиент армы, только без графической оболочки, просто консоль, и не смотря на это, он вполне себе играющий клиент! И его вполне себе можно инициализировать как и любого игрока!

 

Итого, при наличии определённой гибкости ума, вполне реализуем виртуальный

player

Насколько я понял из справки, таким образом создаются боты на стороне сервера. Это совсем не то что надо.


  • 0

#17 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 07 August 2015 - 19:52

 

Насколько я понял из справки, таким образом создаются боты на стороне сервера. Это совсем не то что надо.

 

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

 

 

Проблема в том, что это локальные соединения, и в нем не работает функция 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

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

 

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


  • 0

#18 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 07 August 2015 - 20:00


Проблема в том, что это локальные соединения, и в нем не работает функция publicVariable, поэтому отладить ее работу, таким образом не получится.

 

Данная функция прекрасно работает в таком раскладе, так что ищите проблему у себя


Насколько я понял из справки, таким образом создаются боты на стороне сервера. Это совсем не то что надо.

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


  • 0

#19 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 07 August 2015 - 20:27

 

 

Насколько я понял из справки, таким образом создаются боты на стороне сервера. Это совсем не то что надо.

 

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

 

 


  • 0

#20 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 сообщений

Отправлено 08 August 2015 - 03:18

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

Данная функция прекрасно работает в таком раскладе, так что ищите проблему у себя

 

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

"myPubVar2" addPublicVariableEventHandler 
{
	hint format ["Получили данные. myPubVar2 = %1", myPubVar2]
};


while {true} do 
{
	sleep 1;
	
	myPubVar = [123, "456", true];
	publicVariable "myPubVar";
	
	systemChat format ["Скрипт Test_Exit, загружен. Передаем данные  = %1", myPubVar];
};

Соответственно каждую секунду передаем данные, и принимаем их на каждом клиенте. Высвечиваем подсказку. Уж не знаю, где тут можно накосячить.


  • 0




Яндекс.Метрика