-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Иногда при приземлении происходит "тупняк" на 1 микротик. #44
Comments
Мнение: это ненормально. |
Итак, я запустил в режиме {"ticks_per_second": 6000, "updates_per_tick": 1}. Лог первой игры (microtick, y):
Лог второй игры:
В первом случае мы засыпаем 1 раз на y=1. В чём отличие этих двух кейсов? В том, что в первом время прыжка закончилось, и canJump, соответственно, стал fasle, а во втором время ещё есть, и и canJump=true. |
Это из-за того, что при ударе об стену, игрок отодвигается от стены на EPS = 1e-9. Лучше механику игры не менять, так как может все сломать, плюс некоторые люди уже зареверсили то, как работает сейчас. |
В один апдейт игровой логики движение происходит лишь один раз. Если юнит вплотную к земле и падает вниз, он упрется в нее, и перейдет в состояние прыжка. Сам прыжок будет происходить лишь в следующий апдейт |
Да я уже благодаря @ud1 понял, что y+eps и y-eps - это разные координаты. Это очень тупо, и непрерывность движений сломана. Но что поделать, остаётся смириться. |
Как раз благодаря eps при отскоке от стен ошибки округления почти нигде себя не проявляют (кроме самого начала игры, когда игрок выставляется по круглым координатам). Хотя стоило бы размеры юнита сделать менее круглыми. |
Ничто не мешает мне сдвинуться на 1e-9, и костыль перестанет работать (принадлежность тайлам станет неопределенной). И да, хотя бы в начале игры сдвинули бы на 1e-9 уже. |
После фикса телепортов, кажется, стали проявлять - выталкивает теперь на |
Мдя... с такими "фиксами" никаких багов не надо. |
Такие изменения никуда не годятся. |
Нельзя, все величины слишком круглые и делятся нацело друг на друга, будет только хуже. |
Почему нельзя? |
Где конкретно хранить eps, явно в координате или неявно в положении стены, — это без разницы. Важно, чтобы координата проверки на пересечение отличалась от координаты отскока. |
Как минимум разница в том, что это сбивает с толку. Проверка на равенство предположительно целого float-числа c интом - это внутренняя кухня движка, и я не хочу видеть артефакты её работы в виде непонятного смещения, тем более, что это смещение потом на что-то ещё повлияет. |
Не понимаю, почему упарываются настолько. Смысл соревнования в написании ИИ, который ориентируется и побеждает в игре, а не в таком tryhard'e, что все пытаются устроить :-( |
Карта дефолтная.
Псевдокод стратегии:
Суммарное передвижение равно (1.00333 - 1) + (1.16167 - 1) = 0.165, что не соответствует заявленным 10 / 60 = 0.16666666 (т.к. скорости падения и прыжка равны).
Другой пример, где всё ожидаемо:
(1.06667 - 1) + (1.1 - 1) = 0.16667
В чате написали, что это нормально, но я так не считаю. Хотелось услышать мнения.
The text was updated successfully, but these errors were encountered: