В последнее время было несколько обновлений, не сопровождающихся новостями. Просуммирую все изменения.
Последние осады показали, что сервер слабоват для боев такого масштаба и, пока не доставлен новый, я покопался в коде и нашел несколько мест, которые потенциально помогут решить проблему:
- генерация рандомов занимала невероятное количество времени (что для меня оказалось удивительным открытием). Заменил алгоритм на в 100+ раз более быстрый. Это ускоряет все аспекты боя, а в особенности автоход ботов, который в процессе раунда подвешивал все довольно серьезно.
- при очень долгой обработке ходов игроков могла возникнуть ситуация с повторным запуском этого же процесса, что во-первых удваивало нагрузку, во-вторых могло приводить к двойной обработке одного хода (4 удара вместо одного например). Эта проблема устранена.
- Параличи, трансы и вирусы теперь не выводятся для каждого игрока по отдельности, вместо этого выводится одна строчка лога вида "Команда красных парализована". Это сильно уменьшит объем логов во время масштабных боев, что позволит видеть больше полезной информации и меньше нагружать сервер.
- Максимальное количество выводимых строчек лога увеличено до 600 (было 300), что, вместе с предыдущим пунктом, должно решить проблему с невозможностью оценить лог последнего раунда.
- Зависающие КПК и невозможность кинуть клона были вызваны очень частыми запросами к серверу (в основном когда игроки часто кликают кнопку обновления в бою, участники боя и смотрящие). Это приводило к организации большой очереди запросов, в которую и становился КПК в долгом ожидании. Ограничил вызов этой функции до одного раза в 3 секунды, это сильно сократит очередь запросов и улучшит отклик более важных операций.
- Время на ход в осадах теперь составляет 5 минут, просто на всякий случай.
Все эти изменения, безусловно, улучшают работу алгоритомв и уменьшают нагрузку на сервер, однако проверить решена ли проблема полностью возможно только на реальном сервере в реальном бою. В целом самой долгой операцией оказалась отработка ходов и в ее рамках ничего конкретного, что тормозит сильно, обнаружено не было. Просто очень много действий, каждое занимает немного времени, а все вместе они занимают довольно приличное количество милисекунд. Ждем более мощного сервера.
Кроме этого это обновление меняет следующие игровые моменты:
- Первый раунд на турнирах больше не закрыт для вмешательств.
- Закрытие боя теперь действует со следующего раунда.
- Если в раунде N был использован парализующий газ и усыпляющий газ на одном игроке - в раунде N+1 он будет парализован, а в раунде N+2 спать.
- Если в раунде N был сначала использован парализующий газ, а потом вспышка - действие вспышки переносится на раунд N+1. При этом если вспышка была использована до парализующего газа - все будет работать как раньше.
- Программа "Удар с воздуха" была полностью переработана. Теперь она действует так: на каждые 5 игроков в команде противника выбирается одна случайная цель и в нее производится атака (если игроков 10 - выбирается две цели, если 16 - 3 цели, если 20 - 4 цели и т.п.). Сила атаки по цели - 130-160 хит поинтов, сила атаки увеличивается с каждым уровнем персонажа (+10 к минимальной и +20 к максимальной). Кроме самой цели, поражаются также все игроки противника в радиусе от нее, сила урона для них составляет 30-50 хит поинтов, урон также увеличивается с уровнем (+5 к минимальному и +10 к маскимальному). Кроме того с вероятностью 50% цель атаки будет оглушена (невозможность использовать карманный компьютер в текущем раунде).
- Изменена начальная расстановка команд на клановых турнирах: команда красных смещена на клетку вправо. Таким образом световую гранату в первом раунде уже будет не бросить, как и не достать огнестрельным оружием с радиусом поражения в 3 клетки. Поскольку голоса в последнем голосовании разделились поровну, я решил, что такое решение будет самым правильным. К сожалению измененная расстановка внесла небольшой дизбаланс в команды: у красных теперь за спиной всего одна клетка, что дает им преимущество в защите. Мы уже работаем над новой картой турниров (будет 9x11), что решит эту проблему. А пока учитывайте эти сведения в планировании следующего турнира.
- Участники кланового и персонального турниров теперь открываются для всех за 5 минут до начала, в этот же момент закрывается запись на турнир. Это позволит скорректировать обколы и тактику в последний момент, но также не даст изменить состав.
- Скорректирована логика дисквалификации в персональных турнирах: теперь дисквалификация происходит в момент начала боя, что позволит ожидающим окончания долгих боев ходить в другие бои и заниматься крафтом.
Кроме того в новой версии есть прием платежей через PayPal. Теперь это можно сделать прямо в локации Банк.
Знаю, что крафтеры снова возмутятся отсутствием новостей в этой области. Ребята, мне уже самому перед вами за это стыдно. Рук реально на все не хватает, приходится расставлять приоритеты. Поэтому я решил взять в команду еще одного программиста и обещаю первой же задачей ему дать разработку лагерей. Прямо сейчас нахожусь в активном поиске .
И да, sedluve, починил лодку после выхода последнего участника из группы.
Ник, по газу и вспышке - для этого есть очки и противогаз, кажется) там хороший процент срабатывания...учитывая малочисленность команд, довольно накладно по 5 человек юзать газ, что бы один кто то уснул на раунд....ну а если расходников нет...это залёт, воин))
в этом не могу понять
по профе если лезть... без записи в состав - как я понимаю)
в таком случае - смысл лиг несколько ... даж не знаю как это назвать... топы становятся двойными топами что-ли))
насколько сильно?
ShamaN999
В противном случае один найм может ходить за обе команды, что убивает смысл лиг.
AlexeyS05
насколько сильно?
ShamaN999
В противном случае один найм может ходить за обе команды, что убивает смысл лиг.
ощутимо, прям пошагово в конце хода у ворон "складывались" крылья, полторы-две секунды, и раунд кончался
конец раунда подвисал секунд на 5, может и более
и еще момент окошко исполнения проги клонирования (из-за большого поля) нельзя ли как-то увеличить фиксированный размер по умолчанию... не удобно просто тыкать и колесиком вертеть...
А если например суперблиц (хаот с ходом 30 сек ) - при большом хаоте, многих просто вморозит, особенно када выбранная клетка под клон занята, то опять жмешь прогу, расширяешь окно и т.п. - время уходит и итог - эврика, если ты не мороз...