Вопросы по RPC!

Программирование на Юнити.

Вопросы по RPC!

Сообщение Multirezonator 26 фев 2010, 16:26

1. Можно ли на стороне Сервера наверняка определить какой Клиент(с какого IP или его NetworkPlayer) вызвал RPC функцию на Сервере, если не передавать NetworkMessageInfo?

2. Можно ли сделать чтобы Клиенты, подключенные к Серверу, могли вызывать RPC функции только на Сервере (запретить RPCMode.All, RPCMode.Others и др.)?

Уважаемые ГУРУ жду ваших советов :-w
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Вопросы по RPC!

Сообщение Neodrop 26 фев 2010, 20:30

1. Можно ли на стороне Сервера наверняка определить какой Клиент(с какого IP или его NetworkPlayer) вызвал RPC функцию на Сервере, если не передавать NetworkMessageInfo?

Это вы так собрались поэкономить трафик? Передавайте NetworkViewID и по нему определяйте.

2. Можно ли сделать чтобы Клиенты, подключенные к Серверу, могли вызывать RPC функции только на Сервере (запретить RPCMode.All, RPCMode.Others и др.)?

А это сложно сделать в коде? Зачем вам понадобились такие "запреты"?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вопросы по RPC!

Сообщение Multirezonator 28 фев 2010, 10:21

Я думал это очевидный для Вас вопрос,Neodrop.

Например, делаю я многопользовательскую игру на Unity. Любой вминяемый злоумышленник вскрывает код клиента, и видет на какие RPC вызовы реагируют клиенты, и вызываает их с параметром RPCMode.All. Таким образом можно заставлять делать других клиентов, все что может заставить делать сервер. В худшем случае, если сделать дополнительные параметры, которые будут знать только отдельный клиент и сервер: злоумышленник будет засорять "эфир" + это дополнительные проверки на сервере -> забираем драгоценное процессорное время.

Это вы так собрались поэкономить трафик? Передавайте NetworkViewID и по нему определяйте.

Можно запонить NetworkViewID сервера и делать все от имени сервера, вставляя запомненный NetworkViewID в качестве параметра(пробовал лично - получается, не получается только NetworkMessageInfo подделывать, нужно копать на уровне библиотек юнити ;) ).

Можно ли на стороне Сервера наверняка определить какой Клиент(с какого IP или его NetworkPlayer) вызвал RPC функцию на Сервере, если не передавать NetworkMessageInfo?

Если не использовать в NetworkMessageInfo в качестве параметра, на стороне сервера вычислить злоумышленника не получится!А сам NetworkMessageInfo довольно тяжолый(большой по размеру) чтобы добавлять его в каждый вызов RPC, при количестве в 1000чи подключенных игроков использование трафика увеличится значительно, и любые оптимизации по использованию трафика сойдут на нет: мне нужно Vector3 передать, а я передаю NetworkMessageInfo + Vector3!

2. Можно ли сделать чтобы Клиенты, подключенные к Серверу, могли вызывать RPC функции только на Сервере (запретить RPCMode.All, RPCMode.Others и др.)?

А это сложно сделать в коде? Зачем вам понадобились такие "запреты"?

если сделать это в коде, это также в коде можно исправить. Нужно чтобы можно было устанавливать возможные RPCMode только на сервере или запрещать объщаться клиентам между собой (авторитарный сервер).

:-? Получается что используя технологии RPC без NetworkMessageInfo, для читерства открываюся огромные просторы..
А с NetworkMessageInfo - значительно трафик увеличивается -> замкнутый круг какой-то.
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Вопросы по RPC!

Сообщение Neodrop 28 фев 2010, 10:30

Абфускатор в руки и не маятся больше.

Вы копаете там где светлее, а не там, где потеряли. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вопросы по RPC!

Сообщение Multirezonator 28 фев 2010, 10:40

Обфускатор это в любом случае :)

Да я в теории еще не решил до конца для себя что использовать RPC или Socket, вот и копаем.
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Вопросы по RPC!

Сообщение Neodrop 28 фев 2010, 10:52

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

Полагаю, что лучше хорошей обфускации ничего не придумать.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15