просчитывается на сервере, и после 5+ одновременно выпущенных снарядов начинало сильно лагать. Я думал проблема в производительности, и частично это оказалось так. Дело было в том, что я выводил позицию каждого снаряда в консоли каждый тик. Как только я это убрал работать стало просто великолепно. Неужели console.log так сильно режет производительность?
Странно что об этом никто не говорит) Я бы сам не подумал что это прям так сильно влияет)
Сам расчёты реализуешь или физический движок используешь?
хочешь логи есть перенаправление в файл, ну или в кафку
Сам. У меня там простейшая 2д графика. Я толком не слышал про готовые движки...
Их много, Box2D, Matter.js, Rapier, Bullet и тд.
Спасибо, надо будет посмотреть. Потому что самому ничего серьезного не написать если просто реализовывать игровые механики а не изначально пытаться сделать движок, и на нем уже строить...
У тебя снаряды удалялись когда нибудь? И ввод вывод может резать производительность, да.
Matter.js проще всего, если для клиентской части не используется фреймворк в котором по дефолту другой движок встроен
А причем тут фреймворк?
В некоторых фреймворков может быть уже встроен движок, а встроенный обычно проще юзать
Вывод в консоль всегда тормозит
если мне память не изменяет, вывод в консоль через console.log - блокирующая операция, поэтому будут фризы.. могу ошибаться, поправьте
Да, как и любая синхронная операция
Спасибо всем за объяснение!
Если я не ошибаюсь, зависит от ОС, вроде, в доке ноды написано, что на windows вывод в stdout асинхронный, на Linux нет.
хм.. я подумал, а если вывод в консоль будет неблокирующим, то в выводе же может быть вообще чушь редкостная, если логировать всякую асинхронщину
Я не эксперт по выводам в консоль, но выскажу предположение, что если stream, в который ты пишешь один и тот же, то порядок вывода нарушаться не должен
Writes may be synchronous depending on what the stream is connected to and whether the system is Windows or POSIX: Files: synchronous on Windows and POSIX TTYs (Terminals): asynchronous on Windows, synchronous on POSIX Pipes (and sockets): synchronous on Windows, asynchronous on POSIX
Да, я об этом кусочке и писал
а ты попробуй через пино логать и потом скажи насколько улучшилась ситуация
Там понятное дело что будет в разы лучше, так как там логи копятся и батчем выгружаются обычно)
Да мне нет необходимости логать, просто убрал и все)
да вроде не копятся так чтобы сильно ну могут задержаться да на пару секунд но потом по timestamp можно понять где какая последоваттельность
И пино вроде в браузере не работает?
ну он же писал что на сервере логал
А, может, помню что до этого про браузер рисали
Я к тому, что каждый лог не пишется по отдельности в стдаут, а они все разом отгружаются одним выводом обычно
Обсуждают сегодня