Не, на ТЗ ваша расписка не похожа, скорее похожа на логику работы программы - это страшно! =)
2000 тысячи человек с запасом. Просчёт не столь сложный, как вышел по вашей логике. В том же вов тоже есть AOE спеллы и я видел, как реализована их работа в коде. Даже AOE спеллы имеют строго определённую площадь действия и число целей на ней ограничено. Да даже если нет - элементарно: находим цели в данной области и по всем из них прилетает урон (или лечение) С точки зрения сервера 10 там целей или 2000 - разница во времени полного просчёта так мала, что не может быть критичной.
В ТЕСО АОЕ спеллы конусные и этот конус имеет свои границы - число целей вполне определённое и никак не 2000 (максимум).
а как именно отбираются конкретные цели среди общего числа? Так или иначе, на это тоже уходят ресурсы.
Для АОЕ спеллов есть определённая функция, определяющая цели на площади действия способности. 1 или 10, или 2000 целей - опять-таки для сервера время расчёта меняется мизерно. Дальше эти цели записываются в "буфер"/"память" - пошла нагрузка на память. Тоже, кстати, не великая.
Скорее из расчёта "3 100 на 100, 10 10 на 10 и 50 1 на 1. А больше они вряд ли соберутся, да и запас мощностей у нас ещё есть"
Я пытаюсь донести что взять максимальную ситуацию и просчитать требования для ресурсов не сложно, более того, это вполне по силам серверу.
Это комплекс вычислений вероятности попадания и наносимого урона в зависимости от статов, применённых умений и прочих влияющих факторов. То есть не одно вычисление, а множество.
Дело в том, что ваш комплекс считает ВСЕ возможные комбинации, в то время как при программировании сервера более 50% лишних условий просто отпадёт, поэтому такого заоблочного числа вычислений попросту не будет.
И до сих пор верите в лучшее?
Именно поэтому я и понимаю, что такого сумасшедшего числа вычислений не будет. Не может быть код ТАК неоптимизирован, как вы привели в своём примере и не будет он использовать такой количество условностей и просчитывать ВСЁ для ВСЕХ.
Самая критичная ситуация (увеличим число игроков в Сиродииле до 3000 для ровного счёта):
три фракции в одной точке (перс на персе - многорукое существо, занимающее площадь как один персонаж). Три фракции каждой по 1000 персов. В один момент все совершают бросок (юзают абилку) ну и пошли по программированию:
Для атаки у каждой из 3к способностей - 2к целей, если способность хилерская - 1к целей. Потенциальных. На деле наверняка заклинание будет работать на ограниченное число целей, а не на 2000. Ну давайте возьмём больше число - 20 (наверняка будет меньше). Уже разница есть, не по 2к, а по 20.
(а так и будет, иначе была бы возможно ситуация, когда 1 маг с дистанционными заклинаниями может остановить какую угодно толпу противников, если у него достаточно маны, что, согласитесь, бред).
Тут самое затратное - создать список целей, попадающих под действие. Он тоже не будет больше, чем число целей способности. Т.е. список ну на 100 целей из 2к.
Ещё проверяем условия и часть целей ещё отваливается.
Это пример, как на сервере работает обработка вообще, а теперь ещё немного про мощности и их хватку-нехватку:
В мире, предположим итак бегает 100к игроков пвешров и каждый сражается. И каждый обрабатывается! Чисто на обработку всего ПВЕ уходит больше, чем на одну кампанию в ПВП. Вы до сих пор думаете они не учли мощности своего железа? =)
Всё, дальше я пас по этой теме (число игроков и мощности сервера). Тут можно упереться рогом и не соглашаться ни с какими доводами, а значит и спорить и что-то доказывать смысла уже никакого не будет.
vampv2, о чём и речь - для сервака это проблемой не будет. А вот для конечного пользователя - вполне. Именно поэтому они и говорят о 200 телах
одновременно на экране с приемлемым фпс. Кстати, тут ведь говорили, что оптимизировали уже до 215, как-то так =)