|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
Цитата:
|
|
|||||
Цитата:
Плюс к тому, довольно проблематично собирать все это и симулировать, если это не какие-нибудь нарды, а, скажем, World Of Wartanks. Звучит утопически Цитата:
Второе решение было - послать направление выстрела и положение игрока при начале стрельбы, а так же количество патронов, которое есть на клиенте, а потом событие завершения стрельбы, так же с количеством патронов. Это дало некоторые преимущества: сеть перестала забиваться и сервер смог без проблем обрабатывать стрельбу и считать возможные попадания без особых напрягов. Но тут же всплыли и недостатки: 1) Так как сервер теперь сам считал расход патронов, а клиент сам, то появились рассинхроны. Я решил, что можно сделать допущение, если расхождение в контрольных суммах патронов будет + / - 5, то считать что клиент не читер и можно верить тому количеству, которое пришло с него. А если больше, то сервер шлет клиенту апдейт и количество патронов у него корректируется. Казалось бы, все круто, проблема решена. Но не тут то было. Ситуации со сбоями в сети и тормозами железа никто не отменял. Стали всплывать ситации, когда событие завершения стерльбы просто где-то терялось и сервер не прекращал стрельбу, пока не кончались патроны, а клиент даже не подозревал об этом и бегал где-то в другом месте локации. Пришлось делать каждую секунду дополнительную проверку со стороны сервера. Он слал клиенту доп. сообщение heart_beat и если не получал ответа, то прекращал стрельбу и на всякий случай слал клиенту апдейт с текущим состоянием его боепрпасов. Это улучшило положение, но проблему рассинхронов не решило на 100%. Так что для некоторых видов игр, (особенно с активной движухой) никак нельзя быть уверенным, что всё на 100% синхронизировано. А значит и нельзя на 100% избежать читеров
__________________
Ко мне можно и нужно обращаться на ты) Последний раз редактировалось caseyryan; 24.05.2017 в 10:59. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
caseyryan,nooob отстаивает позицию что для стратегий с небольшим числом участников "тонкий" сервер незнающий ситуацию на поле, дает некие преимущества. Т.е. отслеживать каждую пульку не требуется. Собственно основной тезис почему лучше на сервере стейт не держать: из-за разных реализаций арифметики на клиенте и сервере неизбежно будут накапливаться расхождения между серверной симуляцией и клиентской.
Последний раз редактировалось undefined; 24.05.2017 в 08:44. |
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
так клиент как ни крути тоже должен считать симуляцию,с чего сервер с этим не справится?
Последний раз редактировалось undefined; 24.05.2017 в 14:24. |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Цитата:
Цитата:
__________________
RocketJump |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
|
|
|||||
Цитата:
Я делал симуляцию боя на сервере по упрощенной схеме. Если на клиенте, скажем, вся физика считалась с учетом форм объектов (например при полете пули), то на сервере это были просто круги, и пересечения считались очень приближенно, по радиусу, то есть все сводилось к расчету вроде "а мог ли он вообще хотя бы теоритически попасть туда-то, оттуда-то". И даже такая схема начинала тормозить на дедике с двумя 4х ядерными процессорами Intel Xeon по 3.9 и 16Гб оперативки уже при 30 - 40 одновременных боях по 16 игроков в каждом. Конечно, многое еще зависит от реализации самой программы. Не думаю, что у меня было все очень круто реализовано) Но тем не менее, это все равно большая нагрузка на сервер. Я придерживаюсь позиции, что в подобных играх максимально возможное количество логики нужно передавать клиентам. На сервере считать только самые критические моменты. Цитата:
__________________
Ко мне можно и нужно обращаться на ты) Последний раз редактировалось caseyryan; 25.05.2017 в 08:02. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
на сервере ничего не происходит т.к. он вообще не в курсе что в игре творится.
|
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Цитата:
но проблема такой схемы что она не может стать e-sport игрой, где действия пользователя определенно имеют вычисляемое/предположительное/сбалансированное последствие для остальных. и чем больше деталей симуляции (SimCity например) тем глубже геймплей
__________________
RocketJump Последний раз редактировалось Nooob; 25.05.2017 в 23:30. |
Часовой пояс GMT +4, время: 13:57. |
|
« Предыдущая тема | Следующая тема » |
|
|