История Бага: неумирающая нежить

Sep 30, 2021 12:43

Оригинал в нашем сообществе в ВК

Компьютерные игры - своего рода магия, а хороший магический трюк не обходится без дыма, зеркал, спрятанных люков и очаровательных идентичных близнецов-ассистенток. Но иногда дым засасывает в люк, а ассистентка в потёмках врезается головой в зеркало. В случае игр, это обычно приводит к появлению очередного сообщения ( Read more... )

pathfinder, the story behind the bug, геймдев, wrath, программирование

Leave a comment

Comments 10

lj_frank_bot September 30 2021, 09:46:16 UTC
Здравствуйте!
Система категоризации Живого Журнала посчитала, что вашу запись можно отнести к категориям: IT, Здоровье.
Если вы считаете, что система ошиблась - напишите об этом в ответе на этот комментарий. Ваша обратная связь поможет сделать систему точнее.
Фрэнк,
команда ЖЖ.

Reply

maxsavenkov September 30 2021, 09:59:59 UTC
Здоровье - не в тему

Reply

lj_frank_bot September 30 2021, 10:05:20 UTC
Спасибо, ваш ответ делает нас лучше

Reply


kirillkrm September 30 2021, 11:28:53 UTC
Прикольно.

Reply


oltopeteeh September 30 2021, 12:27:58 UTC
Занятно)
У меня был похожий случай, с поддельными статами и случайным наследованием качеств "болванчика" одним из видов мобов.
Поэтому они никогда не проигрывали, какими бы сильными не приходили герои, чтобы наказать "неубиваемых" негодяев))
После исправления ошибки, в честь реакции сообщества, на том месте поставили как бы случайную встречу с "зеркальным боем", имитирующий столкновение с той самой ошибкой, за одним исключением - в новом бою можно было победить, хоть и с огромным трудом :-)

Reply

maxsavenkov September 30 2021, 14:19:00 UTC
Иногда баги превращаются в фичи, да :)

Reply


alll September 30 2021, 13:28:07 UTC
То-есть в силу каких-то оставшихся за кадром обстоятельств не провели декомпозицию и поставили телегу даже не впереди, а вперемешку с лошадью: вместо того, чтобы написать код, который вычисляет урон и выдавать результат его работы коду, который отыгрывает нанесение урона (а потом и коду, который показывает характеристики), написали монолитный код, который сразу отыгрывает нанесение урона, одновременно его вычисляя. Казалось бы, что может пойти не так... ;)

Reply

maxsavenkov September 30 2021, 14:17:35 UTC
Вычисление и нанесение урона как раз разделены, и там всё хорошо. Вычисление броска на атаку тоже вынесено в отдельный код, который потом может быть использован первыми двумя.

Но вот сигнал о результатах броска - он живёт в рамках кода вычисления. Хотя возможно логично было бы его переместить в код, ответственный за нанесение дамага, но пришлось бы его сдублировать в нескольких местах, поскольку этот код в нескольких местах и используется, например в оружии и в заклинаниях. Сигнал этот туда добавили, скорее всего, впопыхах (как всё, что делается в геймдеве :) ), просто как в самое очевидное место чтобы поймать все броски.

Правда, у меня есть вопросы к тому, кто при вычислении дамага для тултипов делает это самое вычисление броска на атаку - если мне не врут глаза, вычислить всё можно и без него, но пока я туда не полезу, ибо работает - не трогай.

Reply

alll September 30 2021, 16:11:03 UTC
> Но вот сигнал о результатах броска - он живёт в рамках кода вычисления.

Reply

alll September 30 2021, 16:21:54 UTC
> но пришлось бы его сдублировать в нескольких местах

Вообще говоря нет, условно говоря пишется функция Damage() в которой вызываются и CalcDamage(), и ApplyDamage() - и уже Damage() вызывается отовсюду, где не хочется дублировать.

Reply


Leave a comment

Up