Снова потратил время на попытки это исправить, и снова неудача.
Тут две проблемы в одной. И как это ни парадоксально, исправление одной ломает другую и наоборот.
Проблема 1: Если снаряд на сервере вылетает позже, чем на клиенте (точнее если до клиента доходит пакет сообщающий об этом), то на клиенте будет сломанная анимация снаряда. Выход, казалось бы, прост - выпускать снаряд на сервере раньше (что бред, потому что не будет соблюдаться касттайм, но не будет сейчас об этом думать). Нооооо...
Проблема 2: Не реализована фича, позволяющая клиенту сообщать о том, куда должен вылететь снаряд ПОД КОНЕЦ КАСТА. Сейчас как работает: игрок тыкает на кнопку наведя прицел на, скажем, стену ОЛО -> запускается каст -> игрок во время каста отворачивается от стены в другую сторону -> снаряд всё равно вылетит в первоначальном направлении - в сторону стены. Если же реализовать фичу, то под конец каста клиент должен уведомлять сервер о ТЕКУЩЕМ прицеле, и снаряд должен вылететь туда, куда СЕЙЧАС клиент нацелился.
И вот парадокс: исправив проблему №2 мы, считай, гарантируем что сервер будет выпускать снаряд ПОСЛЕ клиента (ему надо будет дождаться инфы о нацеливании под конец каста от клиента), а значит мы гарантируем, что проблема №1 будет возникать ВСЕГДА. А исправив проблему №1, реализовать №2 становится просто невозможно.
По всей видимости - мы просто чего-то не знаем о спеллсистеме близзов, что в данном случае помогло бы исправить обе проблемы сразу.