Помогите Снег из частиц

  • Автор темы Автор темы Kurumi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Всем привет.
Недавно заметил на ваймворолде идущий снег из частиц в лобби. То есть, частицы "снега" (на самом деле, вроде, фейерверка) медленно падают с неба.

Не понимаю способ реализации.
Пните идейкой ^_^
 
spawnParticle Particle.FIREWORKS_SPARK с большим радиусом.
 
Последнее редактирование:
spawnParticle Particle.FIREWORKS_SPARK с большим радиусом.
Хм, эффект не такой, как хотелось бы...
Частицы появляются резко, еще и резковато летают влево-вправо...

Нужно, чтобы они появлялись плавно, можно сказать незаметно, что они просто так вот резко из воздуха появляются. Также нужно, чтобы они просто летели сверху вниз, без всяких движение влево-вправо..
Вроде порылся в доках, но, похоже, что я что-то не так понял или не понял вообще

Код:
    @Override
    public void onEnable() {
        Bukkit.getScheduler().runTaskTimer(this, () ->  {
            for(Player player : Bukkit.getOnlinePlayers()) {
                if(player.getWorld().getName().equals(Bukkit.getWorlds().get(0).getName())) {
                    player.getWorld().spawnParticle(Particle.FIREWORKS_SPARK, player.getLocation(), 500, 20, 40, 20);
                }
            }
        }, 20L, 20L);
    }

Что не так?
 
Скорость установи в 0.
Точно! Спасибо, вроде, все как надо!
Только у меня встает вопрос нагрузки..
Думаю, серверу не очень понравится спавн 500+ частиц каждую секунду, для каждого игрока...
Еще у player есть свой спавн партикл. Как я понял, данные партиклы будут видны только для этого игрока? Возможно, стоит использовать этот метод?
 
Точно! Спасибо, вроде, все как надо!
Только у меня встает вопрос нагрузки..
Думаю, серверу не очень понравится спавн 500+ частиц каждую секунду, для каждого игрока...
Еще у player есть свой спавн партикл. Как я понял, данные партиклы будут видны только для этого игрока? Возможно, стоит использовать этот метод?
Делай асинхронный рунейбл в нем проход по онлайн игрокам и спавн частиц, партиклы нормально спавнит.
 
Только у меня встает вопрос нагрузки..
Думаю, серверу не очень понравится спавн 500+ частиц каждую секунду, для каждого игрока...
Еще у player есть свой спавн партикл. Как я понял, данные партиклы будут видны только для этого игрока? Возможно, стоит использовать этот метод?
С чего ты взял, что на каждого игрока спаунится по 500+ частиц?
Начнем с того, что на сервере частицы вообще не спаунятся, потому что это клиентская фишка.
Единственная задача сервера - отправить пакеты спауна частиц.
И этих пакетов не 500 на игрока, как ты думаешь.
А ровно по одному на игрока, потому что в одном пакете может быть указано произвольное количество частиц.
Т.е. для каждой частицы не создается отдельный пакет в твоём случае.
Еще у player есть свой спавн партикл. Как я понял, данные партиклы будут видны только для этого игрока? Возможно, стоит использовать этот метод?
Более того, как ты отметил, можно пакеты отправлять только тому игроку, вокруг которого эти частицы должны отображаться.
А раз в секунду всем игрокам отправлять по одному легенькому пакету - это мизерная нагрузка.
Единственное, где может лагать - это клиент.
Но, как показывает практика, 500 частиц для клиента - это тоже практически ничто с текущим уровнем оптимизаций.
Короче говоря, не парься, пока не начнутся проблемы (а из-за этих частиц они вряд ли начнутся).
Делай асинхронный рунейбл в нем проход по онлайн игрокам и спавн частиц, партиклы нормально спавнит.
Особого смысла нет для такой легкой задачи. Можно даже хуже сделать - асинхронность тоже не бесплатная )
 
Последнее редактирование:
С чего ты взял, что на каждого игрока спаунится по 500+ частиц?
Начнем с того, что на сервере частицы вообще не спаунятся, потому что это клиентская фишка.
Единственная задача сервера - отправить пакеты спауна частиц.
И этих пакетов не 500 на игрока, как ты думаешь.
А ровно по одному на игрока, потому что в одном пакете может быть указано произвольное количество частиц.
Т.е. для каждой частицы не создается отдельный пакет в твоём случае.

Более того, как ты отметил, можно пакеты отправлять только тому игроку, вокруг которого эти частицы должны отображаться.
А раз в секунду всем игрокам отправлять по одному легенькому пакету - это мизерная нагрузка.
Единственное, где может лагать - это клиент.
Но, как показывает практика, 500 частиц для клиента - это тоже практически ничто с текущим уровнем оптимизаций.
Короче говоря, не парься, пока не начнутся проблемы (а из-за этих частиц они вряд ли начнутся).

Особого смысла нет для такой легкой задачи. Можно даже хуже сделать - асинхронность тоже не бесплатная )
Спасибо!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх