Намученная боль лагов на ауте привела меня к этому посту.
Скажу сразу у меня нет понимания как устроена клиент-серверная часть этой игры, и моё предложение скорее выстрел в воздух, в надежде попасть в птичку, и всё же, я попробую...
Насколько я понимаю, "зависания" на ауте происходит от количества обрабатываемой информации на сервере. Связано ли это с ограничениями лвс или скорости обработки на бэке, я не знаю, будем считать, что "основная нагрузка" приходится именно на бэк и из-за количества пакетов отправленных с легкого клиента, почему бы именно это и не попытаться оптимизировать? мои предложения:
1. Фильтр собираемого лута. Идея проста и не нова, в настройках персонажа, создаётся новый раздел, в котором можно указать тип лута(вода, трава, гб и т.п.), который будет собираться автоматически.
1.1 При выполненном условии п.1 лут собирается, даже если персонаж не стоит на соседней клетке от лута, лут забирается после победы персонажа над поком.
2. При проведении быстрых боёв есть интерактив, можно выбрать основную цель, прожать умение на нпс, значит сервер обрабатывает информацию и отправляет данные каждый ход.
Можно поменять логику, в настройках персонажа добавить функционал для проведения "автономных быстрых боев", в данном режиме во время проведения быстрых боёв нельзя будет выбрать основную цель или воспользоваться скилами своего нпс.
Логика: При выполнении п.1, п.1.1, п.2
В начале боя, на сервер сразу же отправляется данные:
а. В настройках на ауте выбран функционал автоматический сбор лута
б. В настройках персонажа указан фильтр собираемого лута
в. В настройках персонажа выбран пункт "автономные быстрые бои"
Идёт один пакет от легкого клиента -> обработка на сервере -> возвращается пакет на легкий клиент содержащий данные:
1. Результат боя(список ходов сгенерированных бэков)
2. Необходимость собрать лут, который стоит рядом(да/нет)
Для пользователя в этот момент как обычно идёт бой, который обновляется каждый ход. Для этого на легком клиенте задать правило обновление страницы боя из лога каждый 1-2 секунды, параметр можно захардкодить на сервере(возможно необходимо будет менять значение, если на сервере нагрузка)
Тем самым мы ограничим 1 бой на ауте двумя пакетами.
С учётом, что большая часть нагрузки на сервер ведут именно бои на ауте в режиме быстрых боёв, идея мне кажется актуальной.
Писал быстро, идея пришла на ходу.
Здравая критика приветствуется.
Могу оформить в виде задачки на разработку, если потребуется, естественно там будет описано на более детальном уровне логики. |