Rare loot droped in=)
-
Народ, по моему мнению, карта или шмотка упадет только тогда когда она уйдет из мира (Вставят в шмот, или шмотку, поломают, продадут NPC).
-
@tass:
Блин, еще раз, 99% что так:Когда ты убиваешь поринга, кидается случайное число в диапазоне например 1-10000. Если выпадает меньше 20, дропается карта нарпимер.
Т.е. составлена шкала дропа из моба в зависимости от этого случ. числа, при убийстве несчастного поринга это число выбирается случ. образом, по шкале смотрим - оппа, карта! А 0,2% - это собсна шанс попадания этого числа в место шкалы, которое соответствует карте.
Иными словами, если ты проведешь бесконечную серию экспериментов с порингами (какого рода, объяснять не надо?), то в среднем карта будет у тебя падать в 0,2% случаев. И баста
самое печальное что именно так и есть!, мало того надеятся на глючный и недоделанный машинный генератор слу чисел, который ни одна инженерная программа не использует (если это нужно), только лиш потомучто общая картина этих "рандомных" чисел , которые сами по себе совершенно не рандомны, довольно некорректна.
В игре как вы понимаете все основано на этой недоделке.
И именно берется 1 к 1
10000(число)
и если выпадет < 1 тоесть число "ноль" дропается вещ 0.01 вероятностью.блее корректно было бы увеличить шкалу до 10^(4+2)
и при рассчете раскидывать хотябы эти 100 свободных чисел по шкале 10^6, для вероятности 0.01, для больших вероятностей это будет больше колличество чисел.
да эта операция увеличит колличество вычислений на этапе обработки дропа(события) на ~3*10^5 вычислений.
Но будет уже более корректной. -
могу заявить что выпадение для каждого свое генератор случайных чисел считает а там как повезет т.к выбил 2 гоблин арчер карты за 4 мин из 5 гоблин арчеров а за 4 мин как ни старайся 10000 гоблинов не положеш
-
@Spacoom:
Линейный конгруэнтный генератор, используемый в нашем сервере, вполне достаточен для наших целей.Кроме того использование его на массе игроков значительно повышает его вероятностные характеристики применительно к одному игроку.
Проще говоря, генератор может быть и не совсем случаен, но поскольку он вызывается по большому количеству событий в игре, то число для каждого конкретного случая выпадения лута выходит практически неотличимое от случайного. Или кто-то способен предсказать, когда именно вся масса игровых событий подведет генератор в определенную точку его цикла?
-
Keincross бесспорно это относится к порингам, и массе других массово истребляемых монстрах...
но есть и значительно более редкие события, то как убивания МВП, минибоссы
это говоря о луте!но почему никто не говорит о заточке... заточке брони с +7 на +8... врятли можно назвать массовой... да и +6+7 также.. и даеляется это в 1000 а то и 10000 раз меньше чем обычное выбивание лута...
есть еще масса различных событий, то как ковка...и всеже предлагается хоть для таких более редких событий, изменить работу генератора увеличивающая детализированность и случайность процедуры выбора, конкретного события
-
ZaaZy, а ты что, считаешь, будто на МОТРе для заточки один генератор используется, а для порингов другой? Не будь наивным, это та же самая функция на сервере, и ее цикл общий для порингов и точильщиков. :mrgreen: И если ты думаешь, будто способен поймать неслучайную последовательность заточек, то ты так больше не думай - за долю секунды перед твоей заточкой новис шарахнет поринга - и ты сломаешь вещь, так и не сделав ее +10, а он получит карту. :mrgreen:
-
эм.. я собственно и предлагаю разделить рандом для массовых событий и рандом для еденичных событий, всего лиш на 2 разные функции
пусть для массовых так и останется нечто вроде if x<rnd(10000) then тратата (x- вероятность)
а для еденичных весь "if... then..." меняется на отдельную функцию примерно описанную выше
-
А смысл??? Случайность в заточке и выпадении раров сейчас обеспечивается случайностью вызовов - ведь когда онлайн 3к+ игроков и каждый заставляет генератор срабатывать по 20+ раз в минуту, причем в непредсказуемые моменты времени, вот именно тогда последовательность чисел, выпадающих одному игроку, становится практически безупречно случайной. Даже будь там не линейный конгруэнтный генератор, а линейная возрастающая последовательность (например: 1,2,3,4..., 10000), все равно, вызванная в произвольные моменты времени, такая функция дала бы для одного игрока близкие к случайным результаты.
Так что улучшать качество случайных чисел как раз не надо - оно и так более чем достаточное. Даже не факт, что предложенная тобой схема даст лучший результат. А если и даст - какой ценой, стоит ли оно того? ИМХО, не стоит.
-
Keincross, 20+ в минуту это сильно
реально например атака арчера
это вызов 2х рнд на саму атаку
+2х на фли\лакидоджесли атакует монстр то тоже 4+ вызовов рнд
если учесть количество одновременно проводимых боёв
+вызовы рнд для просчёта "движения" мобов
то получиться тысячи( десятки) вызовов рнд в СЕКУНДУ
т.ч. даже в случае замены рнд на 1,2,3... будет довольно сложно подобрать "счастливый" момент -
Pret, во-первых, 1к это тоже 20+.
Во-вторых, число взято с запасом. В третьих, я говорил про среднее количество вызовов на игрока. Кто-то ведь просто сидит и ничего не делает.
Ну а в целом по серверу действительно будут тысячи и десятки тысяч вызовов в секунду. Именно это я и пытался объяснить и именно об этом говорил Спакум.