

В чем минус эволюционной разработки?
Эволюционная разработка - работа над проектом волнами, когда один блок заменяется другим. Для более быстрой проверки работоспособности создаются заглушки или код на первое время
Минус в том, что могут появляется ошибки(глюки) на стыке двух модулей, т.е. по отдельности они нормально работают, а вот их объединили - и не работают оба.
В моем случае - появился глюк при исполнении команды retreat. Команда выполнялась в случае гибели персонажа или его победы в лабиринте (выполнения условий).
Код команды была примитивен - проверялись условия, и создавалась событие LEAVE_MAZE (для Flash составляющей) и в структуре TUser переменная mazeid обнулялась (игрок возвращался на локацию из лабиринта).
Так вот в этот примитивный код закралась критическая ошибка, которая выгружала серверную часть.
Искал довольно долго, раз двадцать бесстрашный игрок 123 гиб от руки ветерана - дабы по логам вычислить глюк.
Собственно вот глючный код:
for (TCreatureList::iterator cc=m->creatures.begin();cc!=m->creatures.end();cc++)
if (cc->Id == userid) break;
if (cc==m->creatures.end())
{
...
ошибка - нет игрока в лабиринте
}
... далее код
Тут проверяется есть ли персонаж в стеке существ в лабиринте (TMazeMap *m) и брался итератор на персонаж (чтобы проверить его HP или флажок WinBattle).
Короче самые глазастые поняли что переменная cc объявляется дважды до цикла и внутри.
Причем сложность отладки в том что, следующее выражение срабатывало и не выпадало, хотя было уже вне цикла:
if (hp<=0 || cc->WinBattle)
Еще была одна странность, хоть в самом начале серверной части происходила рандомизация srand((int)time(0)), то лабиринты всегда строились одинаковые, т.к. очевидно переменная для rand() своя в каждом отдельном потоке, либо вообще не safe-thread (что хуже, но не критично).
Спас вызов сброса перед каждым построением лабиринта.
Комментарии
SDA
Спасибо, интересно! Будем читать дальше.
_http://infoprog.tk – программирование для начинающих и программирование для чайников
info
И вам спасибо!
Листал ваш сайт info..tk и много плакал.
Смешать VB, HTML, PHP и MySQL в коктейле "языки программирования" может не каждый ;)
Может стоит более внимательно выбирать контент? Или площадки для спама?
Ага
Креативно, а не только познавательно, спасиб
спамерам
Спамеры. вы задолбали уже