Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Как правильно определить использовать п2п или клиент-сервер? (http://www.flasher.ru/forum/showthread.php?t=170596)

Dukobpa3 28.10.2011 08:00

Как правильно определить использовать п2п или клиент-сервер?
 
Собственно сабж.

Genzo 28.10.2011 11:06

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

Dukobpa3 28.10.2011 11:28

Ну допустим ртс какой-то или аркадка мультиплей? То что требует ежесекундного или чаще согласования с отображением на экране.

И что имеется в виду под: "раздача статического контента".

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

Genzo 28.10.2011 12:12

Цитата:

Ну допустим ртс какой-то или аркадка мультиплей?
Тут однозначно клиент-сервер, либо вам на всех клиентах делать проверки возможности действий пользователя, для предотвращения "шулерства". С п2п забудьте по Math.random() и т.п. вещи.

Цитата:

И что имеется в виду под: "раздача статического контента".
Это если вы собираетесь использовать п2п например для раздачи видео и т.п., ну или каких-нибудь карт "тяжеловесных" для игры и т.п.

Dukobpa3 28.10.2011 12:51

Цитата:

С п2п забудьте по Math.random() и т.п. вещи.
Так с ртс то же самое поидее будет. Так как если обновлять с частотой фпс тонуевонафиг, нагрузка на сеть будет больше чем на видео.

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

Ну или какие варианты? Сервер то не загнется?

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

Короче я хз. Для меня это не то чтобы темный лес но вариантов море, выбрать сложно.

Genzo 28.10.2011 13:44

Проверка логики и общение пускай идет на сервера, на клиенте отрисовка и передача новых действий на клиент.

Например так :
Игрок-1(И1) и Игрок-2(2) играют в ртс. И1 послал свои солдат в какую-то координату и передал это серверу(С), с проверил что такая координата существует, что у И1 есть солдаты и записал действие, потом в свою очередь С послал И2 параметры перемещения солдат И1, с учетом всяких "туманов войны" и т.п., И2 получил данные и отрисовывает перемещение. Потом И2 атаковал своими солдатами солдат И1 и послал на сервер, сервер просчитал результаты боя или удара и передает каждому клиенту, просто если эта логика будет на клиентах им придется синхронизировать данные и делать проверки и т.п., да и рандом туда не добавить...

Dukobpa3 01.11.2011 23:35

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

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

crazyone 02.11.2011 02:15

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

Это как стандарт, тут нечего думать.

Genzo 02.11.2011 10:52

Если например у вас будет п2п передвижение героев, то один из них может спокойно послать не :
Код AS3:

newX += mySpeed;

A :
Код AS3:

newX += mySpeed*10;

И просто передвигаться в 10 раз быстрее соперников.
Так-же в случае п2п вам придется отказаться от NPC, когда тогда их логику будет обрабатывать? Если вы хотите игру без элементов mmo, а просто возможность играть по сети, например как Warcraft 3(правда там есть battle.net, но не об этом). Там есть 1 игрок который создает игру, у он выступает в роли сервера, конечно он сам может на читерить и нпс будут за него, но тогда он потеряет авторитет в глазах игроков и к нему, не будут подключаться.

Dukobpa3 02.11.2011 11:39

Та это я понимаю, я не о том слегка.

Допустим покадрово клиенты считают newX += mySpeed; сервер тоже это считает. Но синхронизация с сервером происходит только если клиент поменял направление к примеру или выполнил какое-то действие ну или дополнительно еще раз в пару секунд профилактически.

Получается и клиенты не лагают, так как математика считается на клиенте и они могут в случае чего нормально среагировать визуально, и в то же время сервер дополнительно контролирует. И даже если кто-то зачитерил что-то там, то при следующей синхронизации все-равно всё станет на свои места.


Часовой пояс GMT +4, время: 11:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.