Форумы-->Общий игровой форум--> 1|2|3|4|5|6|7|8|9|10|11
Автор | кодинг, баги и новшества в игре |
Предупреждение. Находящийся ниже текст состоит из двух многобуквенных постов, состоящих из мыслей общего характера, причём относительно непонятных тем, кто никогда не программировал.
Тем, кто не хочет разбираться в многобуковице постов, рекомендую сразу обратиться ко второй половине второго поста, там сформулированы некие прозрачные для понимания выводы.
Я не считаю себя великим прогером, скорее наоборот, я новичок в этом, поэтому конструктивное обсуждение с критикой приветствуются. Я легко могу ошибаться.
<Введение>
Тема навеяна подведением итогов в моей же теме "Сбор игровых багов\фич". Вот ссылка на пост с последним отчётом-итогом. Там же содержатся ссылки на остальные посты. Можно считать это конспектом моей темы:
https://www.heroeswm.ru/forum_messages.php?tid=1019238&page=25#14808611
Судя по описаниям багов, очевидно, что абсолютное большинство из них - это конфликт умений. Причём, чаще всего, конфликтует новое введённое со старым.
Более того, при детальном анализе оказывается, что часто нововведённое было описано при помощи старых алгоритмов. При этом, так как описание несовершенно, то возникают конфликты, которые выявляются в багофичи.
Недавно в разговоре в реале с братом возникла мысль, которую я попытаюсь изложить. Начну издалека.
<Общие мысли о программировании>
Конечно, я никогда не писал проекты, хоть сколько-нибудь близкие к ГВД по размеру. Но какие-то небольшие проекты я писал.
Любая программа обладает архитектурой, то есть строением, планом. Главная часть отвечает за несколько смысловых блоков, каждый из которых,в свою очередь, управляет несколькими подблоками, и так далее.
И вот написал ты какую-то часть программы, то есть построил какую-то архитектуру. Оказывается, что добавить блок "уровнем ниже" довольно несложно, как бы он не влиял на работу остального алгоритма.
Сложнее добавить блок, сопоставимый с текущим уровнем программы. У них будут общие нижние этажи (если их нет, то это просто другая программа, правильно?) и надо сделать так, чтобы достраивание нового блока не повредило старому.
Самой убойный процесс - это обобщение программы. То есть у тебя есть код, который работает в таких-то классах случаев, и надо обобщить программу на более широкий класс случаев.
Простой пример: программа решает любую систему из 3 линейных уравнений. После чего требуется обобщить её на случай любого числа переменных (кол-во переменных ограничено 1000, но заранее неизвестно).
Оказывается, в таких случаях практически невозможно сделать из старого кода новый. Проще всего... Стереть код и написать заново. Ибо ловля багов, совершенно невообразимых и неубиваемых, сожрёт время в разы больше, чем написание новой программы.
Есть ещё один сложный процесс - это когда при добавлении большого числа нижних этажей мелкие блоки начинают конфликтовать. То есть твоя изначальная архитектура не была рассчитана на большое число мелких этажей, и, в конце концов, при чёткой и прозрачной верхушке "нижний ярус" становится захламлённым чердаком, в котором постоянно случаются противоречия в коде. Решений проблемы 2:
1) растащить нижние этажи с помощью добавления верхних - как уже отмечалось выше, процесс сложный и часто просто нетривиальный, творческий. Более того, возможно, придётся даже обобщать какие-то алгоритмы, что уже просто смерти подобно.
2) Ловить и исправлять мелкие ошибки. Код становится всё более неуклюжим, и каждая следующая ошибка исправляется тяжелее предыдущей, ибо мелкие блоки состоят в причудливых и совершенно непрозрачных связях. | первый! [Игрок забанен смотрителем Belousov до 2011-01-26 19:14:17 // Нечего сказать по существу - проходим мимо. Флуд в ОИФ, рецидив] | <об админах>
Мне кажется, что изначально, когда ГВД только затевалась, код не был очень сложным. Вряд ли вполне всерьёз в планах Администрации было введение всего того богатства, что мы имеем сейчас. Писали для себя, писали, как проще, писали с невысокой степенью общности (писать сразу общий случай очень муторно и куда менее наглядно).
Потом проект рос, онлайн быстро рос, успех, надо вводить что-то новое, ну и вводилось. Об архитектуре особо тщательно можно было не думать. Баги мгновенно ловились и быстро фиксились.
То, что мы имеем сейчас, - как мне кажется, классический пример кода, который не затевался, как гигантский, но стал таким по факту. И мы имеем то, что я назвал в предыдущем посте "захламлённым нижним ярусом".
Доказательств, разумеется, нет, есть только косвенные подтверждения, которым можно верить, а можно и не верить:
- То, с чего я начал - практически все баги имеют одну и ту же природу, конфликт "мелких блоков", причём новое конфликтует со старым. Скажем, мы практически не видим багов наподобие достопамятного боя Князя с огненными элементалями - эти крупные прорехи фиксятся надёжно и эффективно.
- Изначальное предположение о проекте (думаю, это надёжный тезис), что изначально администрация ГВД не думала о таком размахе собственного детища.
- Заявление Администрации в первом и последнем отзыве об идеях ИиП: "Мы реализуем не то, что интересно игрокам и красиво описано, а то, подо что мы уже написали интересный код". То есть архитектура сложна и запутана - если хоть что-то встало, уже хорошо.
- Очень малое количество багов в оригинальной пятёрке. И тут, думается, проблема не только в том, что в разработке пятёрки принял участие целый штаб тестеров, но и в том, что при создании пятёрки уже изначально был план, были известны масштабы проекта, и код для этого проекта изначально продумывался как код высокой общности. Поэтому гигансткое количество различных умений не конфликтуют.
<Так в чём профит?>
е с л и (не зря выделил слово) я прав, то из всего вышесказанного можно сделать следующие выводы:
1) Админы не лукавят, когда говорят, что им сложно пригласить нового программиста. При запутанной архитектуре постепенно наращиваемого кода любой чужой человек будет работать в разы хуже того, кто помнит, как он это писал. Интуицию программиста, которая работает как раз тогда, когда надо отладить запутанный код, никто не отменял.
2) То, что у нас много багов - не (с)только лень Администрации, сколько ещё и реальные трудности кодинга.
3) Раздел "Ошибки и сбои" и дальше будет пополняться новыми проблемами. Более того, если кардинально не поменяется метод программирования(а мы об этом можем узнать по таким кардинальным вещам, как временное забивание на игру Администрацией или даже закрытие вообще на бета-тест; перестройка кода в текущей ситуации будет делом делом архисложным), то каждое следующее нововведение будет порождать ещё больше багов.
4) Темп нововведений, по крайней мере, новых существ и новой механики в боях, будет только падать. Опять-таки, проблема не (с)только в лени, сколько в том, что проверить каждое новое введение на баги - всё более усложняющийся труд.
5) Пока код находится в таком состоянии, о продаже проекта можно не волноваться - никто не решится такое взять, несмотря на коммерческий успех))
Я не призываю нанимать новых программистов или закрывать проект для переработки всего кода. Вряд ли нам понравится год только с турнирами, а потом ещё целый год с выправлением новых, возможно, весьма глобальных багов, и всё это ради туманной перспективы относительно безбагового будущего.
Скорее, смысл темы в том, чтобы предложить жителям ОИФ некоторое объяснение медленности нововведений, не использующее тезис "Админ ленивый и ваще".
В любом случае, всё изложенное - моё личное мнение, основанное на не таком уж большом опыте программирования и умозрительных предположениях, поэтому не будем это считать 100% истиной, а лучше просто в | В любом случае, всё изложенное - моё личное мнение, основанное на не таком уж большом опыте программирования и умозрительных предположениях, поэтому не будем это считать 100% истиной, а лучше просто в ыскажемся по этому поводу, если есть, что =)
Спасибо за внимание.
-------------------
не дописалось. | я тут был))0 [Игрок забанен смотрителем Belousov до 2011-01-26 19:24:16 // я тоже тут был. П.7 ОИФ, рецидив] | а в чем смысл темы ?
я думаю это все понимают! | я был бы только если админ решит переписать код игры заново, только им лень, ИМХО | 5) Пока код находится в таком состоянии, о продаже проекта можно не волноваться - никто не решится такое взять, несмотря на коммерческий успех))
Вы видели этот код, чтобы так высказываться?
Скорее, смысл темы в том, чтобы предложить жителям ОИФ некоторое объяснение медленности нововведений, не использующее тезис "Админ ленивый и ваще".
Откуда эта информация?
Вы многого не договариваете сударь!! | [Сообщение удалено смотрителем Lemurian // OFF] | ээээ...Ну да, близко к истине. Вот только мне кажется что админы не расчитывали или до сих пор не расчитывают на долгосрочную перспективу обогащения за счет проекта, так что живут этим днем и радуются. В принципе, даже если прямо сейчас прекратить работать над игрой и оставить все как есть, то у них полюбому будет стабильный онлайн тыщ в 10 а то и больше, т.ч..... Пока мужик не сядет, рак не ляжет... или как-то ттам. | Я не вникал во все термины но в общем смысл понял. Молодец только сильно ты замудренно написал многие не поймут ))) | краткость- сестра таланта, по делу написано совсем немного | [куоте]по этому поводу, если есть, что =)[/куоте] А в чём вопрос темы? То что написано в первой части не архи-сложно и вполне понятно.
[куоте]&куот;Админ ленивый и ваще&куот;. [/куоте] - админ молодец. | А нельзя подготовить параллельно новий сервак, нанять там много программеров (благо бабла море вливается) и написать там все как надо с учетом роста и перебросить базу туда? | для Gray_GuarD:
Вы видели этот код, чтобы так высказываться?
Ответ:
е с л и (не зря выделил слово) я прав, то из всего вышесказанного можно сделать следующие выводы:
Кроме того, специально сделал комментарий:
В любом случае, всё изложенное - моё личное мнение, основанное на <...> умозрительных предположениях, поэтому не будем это считать 100% истиной. | Хм... Масловк внезапно поддержал администрацию? Прямо как-то необычно)
А вообще - я тоже имею крайне скудный опыт программирования, но мне тоже кажется, что у ГВД код кривоват, причем как раз в силу "необщности" блоков)
А вывод какой? Типа "не ждите нововведений скоро"? Ну и так понятно, что скоро эпохальных нововведений и не будет)
Следующие по плану у нас новости какие? 17-й и 7-й ап игрокам? МТ? Ну это все возможно и без переделки кода же. Так что все нормально:) | для maslovk:
Тогда можно тему закрыть по причине:
3. Ваша тема должна соответствовать общеигровым интересам. Попытки выдать личные интересы за общеигровые наказываются длительным баном. | Похоже на правду, да.
Если (если) всё так и есть, то глобальная переработка кода с целью сделать его упорядоченным и масштабируемым либо уже идёт и (или) тестируется параллельно с основным проектом, либо Саша и Максим копят средства, идеи и нервы для такой переработки. | для БандитЪ:
ты не прав ;)
для -ARHIMED-:
Работа над кодом вполне сожрёт всё админское время. Ибо сложно. И они должны присутствовать и активно участвовать, так как чужие программисты тупо не осилят мешанину кода.
если я прав в изначальных посылках, конечно.
Кроме того, после введения в жизнь этого кода нас ожидает год со всякими очень серьёзными багами, ибо, в моей терминологии, будут затрагиваться высокие этажи кода, а ошибки в коде наверху приведут к мощным ошибкам.
В применение к игре можно предположить, что бои типа боя Князя33 станут реальностью, фулстек смертов внезапно начнёт стрелять, некоторые бои вообще будут виснуть, и куча других неприятностей.
На онлайне это, к сожалению, скажется. | для maslovk:
да, все скорее всего так, как ты расписал.
Например, тот же выстрел демонесс скорее всего невозможно пофиксить именно из-за запутанной архитектуры(или это вообще невозможно.) |
Тема давно не обновлялась и считается устаревшей для дальнейшего обсуждения. 1|2|3|4|5|6|7|8|9|10|11К списку тем
|