дум и слопы |
[May. 21st, 2019|03:35 am] |
Кармак очень не зря не стал их делать. вот совершенно не зря. но нет: какой-то тупой мудак решил, что он дохуя умный, и давайте запилим слопы. а они совершенно не работают в думофизике. вообще.
короче, думофизика работает так: бежим строго горизонтально. пизданулись апстену? проверяем изменение высоты. если это ступенька — бежим дальше. если пизданулись башкой об потолок или высоко — всё, отбегались, начинаем слайд по стене.
видите, в чём проблема? ВСЕ перемещения СТРОГО 2д. что работает хуёво, но терпимо для случая axial planes. и тут, блядь, в комнату врывается слоп. который ни горизонтальный, ни вертикальный. что имеем в итоге? а нихуя больше не работает. и если спуск со слопа хуй с ним — тупо бежим вперёд, а там гравитация решает, то подъём — это адский пиздец адского пиздеца. потому что физон или ударяется об слоп, подпрыгивает на пиксель, ударяется, подпрыгивает — и так овердохуя раз (с соответствуюшими тормозами), или трэйс пердолит до стены конца слопа, а потом аналитически высчитываем, на сколько ящик мог подняться, и не застрял ли по дороге.
ладно, казалось бы: аналитическое решение оки-оки, не самое страшное. а вот хуй тут был! в думе НЕТ апи `traceBox()`. вообще нет. попытки ломиться вперёд всегда реально двигают mobj. собирая по дороге предметы, и активируя триггеры. поэтому хуй тебе, а не аналитика: вдруг ты по дороге застрянешь задолго до конца сектора? а всё, уже собрал и активировал. (кстати, баг с «item grabbing» — это вот оно, да, только в меньших масштабах: думчик сначала двигает ящик, потом собирает предметы, а только потом проверяет, не залип ли в стене.)
в общем, вся фигня кое-как решаема, но очень через жопу. к сожалению, просто перейти на 3d движения нельзя: во-первых, структур данных для этого не хватает (что, конечно, решаемо), а во-вторых, это окончательно доломает некоторые карты. и в нулевых — игра больше будет ощущаться думом. ну, не знаю, вот тот самый Дат Фил не такой.
впрочем, у меня есть огромное желание тупо забить на тёплый ламповый датфил. и сделать, блядь, нормально, а не кучей говнохаков. |
|
|