Как много нам открытий чудных...
Добавлено: 11 сен 2009, 22:49
Сел в третий раз переписывать САБ. Решил в этот раз аккуратно использовать то, что уже написано для меня. Для этого внимательно перечитал боевой код... Господа! Это - пиздец!
Начнем с того, что я наконец-то понял, почему неправильно работает грабеж планет. Потому, что код, расчитывающий емкость флота, берет емкость не итогового флота (того, что остался после нападения), а емкость начального флота (того, что прилетел на планету). Это помимо того, что сами формулы расчета тупо неверные.
Продолжим тем, что в том виде, в котором сейчас написан САБ, он не мог правильно работать в принципе. Например, такой веселый момент - при расчете грабежа планет, список флотов берется из таблицы aks (таблица САБов). И все бы ничего, но сотней строк ранее другой фрагмент кода чистит данные в это таблице, относящиеся к текущей атаке! Так что ресурсы получает только флот, инициировавший нападение...
Закончим тем, что в процедуре присоединения флота к САБу есть несколько грубых ошибок.
Про оптимизацию я вообще молчу ибо сказать о ней просто нечего - она отсутствует как класс. Например, как в текущем коде увеличивается количество рейдов? Первый запрос - узнаем количество рейдов, потом в теле кода прибавляем единицу и получившееся число записываем в таблицу. И это вместо того, что бы сразу средствами MySQL увеличить значение поля на единицу! Про то, что количество побед/поражений и общее количество рейдов (которые находятся в одной таблице) изменяются двумя разными запросами - про это вообще говорить не стоит.
Откровенно говоря, я вообще с трудом понимаю, как сейчас работает боевка в оГейме...
Начнем с того, что я наконец-то понял, почему неправильно работает грабеж планет. Потому, что код, расчитывающий емкость флота, берет емкость не итогового флота (того, что остался после нападения), а емкость начального флота (того, что прилетел на планету). Это помимо того, что сами формулы расчета тупо неверные.
Продолжим тем, что в том виде, в котором сейчас написан САБ, он не мог правильно работать в принципе. Например, такой веселый момент - при расчете грабежа планет, список флотов берется из таблицы aks (таблица САБов). И все бы ничего, но сотней строк ранее другой фрагмент кода чистит данные в это таблице, относящиеся к текущей атаке! Так что ресурсы получает только флот, инициировавший нападение...
Закончим тем, что в процедуре присоединения флота к САБу есть несколько грубых ошибок.
Про оптимизацию я вообще молчу ибо сказать о ней просто нечего - она отсутствует как класс. Например, как в текущем коде увеличивается количество рейдов? Первый запрос - узнаем количество рейдов, потом в теле кода прибавляем единицу и получившееся число записываем в таблицу. И это вместо того, что бы сразу средствами MySQL увеличить значение поля на единицу! Про то, что количество побед/поражений и общее количество рейдов (которые находятся в одной таблице) изменяются двумя разными запросами - про это вообще говорить не стоит.
Откровенно говоря, я вообще с трудом понимаю, как сейчас работает боевка в оГейме...