08.05.2020, 17:08 | #1 |
Зловред
Регистрация: 10.06.2008
Сообщений: 2,417
|
Новая практика
Выбираем 4-5 трасс (с учетом что их число позже увеличится) Такие которые можно проехать на ЛЮБОЙ машине (без необходимости иметь технику определенного уровня только чтоб добраться до финиша)
Эти трассы в практике выводим отдельным списком и проводим на них заезды с призовым фондом. В списке указываем: размер призового фонда, число уже проехавших и время через которое фонд будет разыгран. Призовой фонд для каждой трассы свой и он разыгрывается каждые N- Минут - что составляет один цикл (15 минут - цикл). Если трассу за "цикл" никто не ехал её базовый призовой фонд удваивается (но не больше 3-х раз подряд - при базовом фонде 5 см через час призовой фонд станет 40 см Все последующие циклы базовый фонд больше не растет) Игрок каждую из трасс может проехать за "цикл" только один раз, но может ездить другие трассы и перемещаться по игре как ему вздумается (участие в таких заездах его не заставляет находиться в локации до окончания цикла). Когда игрок "проезжает" трассу к призовому фонду автоматически добавляется сумма кратная его уровню (для простоты равная его уровню но позже можно скорректировать). В конце цикла для каждой из трасс имеем три варианта что нужно сделать. Первый Никто не ехал и тогда удваиваем призовой фонд (или не меняем если это происходит больше 4х раз) Второй Проехало от одного до 3-х игроков - весь фонд делим на число участников (алгоритм деления ниже). Третий Игроков 4 и больше - делим всех на 2 команды (можно использовать алгоритм из "заездов") Вычисляем для каждой из получившихся команд средний результат и распределяем призовой фонд между игроками команды с лучшим результатом по тому же алгоритму что между Участвовать могут все уровни на любой технике. Для определения размера выигрыша результат каждого игрока которому полагается часть выигрыша сравниваются не с другими игроками его "команды" а с "виртуальным" средним результатом показанном за всё время на этой трассе на машине его комплектации. Для этого машина и ее комплектация сводится к некоторому коду (он выводится из конечных характеристик таких как максимальная скорость / управляемость / мощность / ограничение коробки передач ... может быть марка авто) если эту трассу на технике с таким "кодом" никто не ехал значит первый же проезд становится эталонным и с ним будут сравниваться остальные (и корректировать эталонное значение) Определения "кода комплектации" Нужны параметры
Собираем текстовую строку txtComplex = IDCar_IDTrans_Ss_Pp_Dd IDComplex = md5( txtComplex ); // Для удобства пользования можно оставить только 8 цифр Комплектацию автомобиля так же сохраняем (временно, если результат окажется "рекордным" эта комплектация заменит предыдущую сохраненную. Если же на этой комплектации "рекорда" не поставлено - "забываем" Пишем в БД для связки (IDComplex_IDMap) результаты для каждого типа трансмиссии статистика результатов проезда по IDComplex в которой записываем
newMidRez = (rez + CntRez * MidRez) / (CntRez+1) Увеличиваем счетчик CntRez, сравниваем предыдущий средний результат с новым. Если они одинаковые значит на даной конфигурации автомобиля вероятно больше не будет изменений "среднего" времени на данной трассе и теоретически можно больше не проводить расчетов. Если это новый рекорд - фиксируем его, с пересохранением "рекордной" конфигурации (мы не удаляем предыдущую а меняем только ссылку на файл с новой конфигурацией (потому что на одной конфигурации могут быть "рекорды" на разных трассах Получаем таким образом данные по трассам на всем парке который используют игроки с учётом их "переконфигурирования" Алгоритм распределения призового фонда Имеем размер призового фонда (в СМ) Список игроков среди которых надо распределить выигрыш (кроме идентификатора игрока и его результата сохраняем "код комплектации" его автомобиля), базу с накопленными данными по трассам. Делим призовой фонд (PF) на число участников (победившей команды - cnt) Для каждого из них сравниваем его результат (uRez) со средним (MidRez) и лучшим(BestRez). Считаем что Лучший результат который записан в БД это 100%(призовых на данного игрока) средний результат в БД это 50% и мы можем расчитать сколько из той призовой доли можем начислять игрок uPriz = PF / cnt Доля на которую может расчитывать игрок (если она не рекордная) d = BestRez - MidRez Дельта между лучшим и средним результатами которая составляет половину от uPriz uD = BestRez - uRez Дельта для рассчета призовых полагается игроку realPriz = uPriz * (2d - uD) / 2d Если uD отрицательное значит у нас новый рекорд и realPriz окажется больше uPriz Некоторые результаты могут в этой схеме оказаться отрицательными. Т.е. игрок ещё и доплатить должен - разумеется ничего он не платит. В большинстве случаев его призовые (realPriz) будут менее 100% от полагающейся игроку доли (uPriz) а если это новый рекорд для этой конфигурации автомобиля призовые окажутся больше чем "возможные" но это не важно - в целом призовые в подавляющем количестве случаев не будут распределять все 100% призовых (и можно остатки использовать как начальное значение для нового цикла. ==== более поздний вариант ==== uPriz = PF / cnt Доля на которую может расчитывать игрок (если она не рекордная) BestRez Рекордный результат составляет 100% от uPriz realPriz = uPriz * uRez / BestRez при таком расчете призовых не будет проблем в случае если рекорд и средний результат одинаковые (или очень близкие)
__________________
http://formula-n2o.ru/user-rating-ch...tour&UserId=40 Последний раз редактировалось MouseR; 13.05.2020 в 14:24 |
08.05.2020, 17:36 | #2 |
Senior Member
Регистрация: 07.07.2008
Сообщений: 340
|
Я бы попробовал. Приблизительно понял идею)))
Сергей! Респект! |
10.05.2020, 00:04 | #3 |
Senior Member
|
Нифига не понял. Но мне уже нравится)))
|
10.05.2020, 21:02 | #4 |
Senior Member
Регистрация: 11.11.2009
Сообщений: 598
|
Идея не плохая,надо обкатать.
__________________
Темных людей ожидает конец света, а светлых людей - конец тьмы. |
11.05.2020, 23:17 | #5 |
Senior Member
Регистрация: 10.06.2008
Сообщений: 1,647
|
по поводу варианта "первый" я так понимаю забирает все один игрок, который проехал сам (это сума умноженная на 3 от стартового капитала). Кто ее оплатит и кто проспонсирует?
по поводу варианта "третий" если игроков 5, как их разделить на две команды? (и вообще там не законченная мысль) |
12.05.2020, 11:38 | #6 | |
Зловред
Регистрация: 10.06.2008
Сообщений: 2,417
|
Цитата:
Если проехал один он может расчитывать на ту базовую ставку которая была + СМ в размере его уровня (это призовой фонд разигрываемый) и дальше возможно опять же несколько вариантов развития. Если на этой трассе на такой комплектации никто не ехал. это будет означать что сравнивать несчем и он получит весь призовой фонд. если ктото (например он сам в предыдущих циклах) ездил эту трассу ранее и есть уже какой то средний и "лучший" результаты тогда его последний результат будет сравниваться относительно среднего и от призового фонда будет взято больше (если он новый рекорд поставит) и меньше если результат будет не призовым... Если результат будет меньше среднего для этой машины игрок получит меньше половины суммы.. а если новый рекорд тогда больше имеющегося призового фонда (и вот тут я кстати обнаружил проблемц которой не "видел" ранее (Проблема в том что для второго проезда невозможно оценивать в процентах сколько надо платить.. ведь средний и рекордный результаты идентичны на этот момент.. Надо будет думать) по поводу "кто платит и кто спонсирует" это всегда административные бабки поэтому в ваш карман в этом процессе вообще никто не лезет ни в каком виде (разве что ремонт и бензин вы оптатите сами) Вся эта афера призвана повысить число заездов и собрать данные по тому какие трассы на машинах разных комплектаций какую имеют статистику результатов "средний и лучший"
__________________
http://formula-n2o.ru/user-rating-ch...tour&UserId=40 Последний раз редактировалось MouseR; 12.05.2020 в 11:41 |
|
15.05.2020, 10:52 | #7 |
Senior Member
Регистрация: 10.06.2008
Сообщений: 1,647
|
все так запутано)) но попробовать что-то новенькое всегда интересно
|
15.05.2020, 17:39 | #8 |
Зловред
Регистрация: 10.06.2008
Сообщений: 2,417
|
в практике список трасс .. (не всех) которые можно проезжать .. результат с котрым выпроезжаете сравнивается не с теми кто его проезжал (в раз в 15 сек) а со средним результатом который был показан на машинке с вашей комплектацией машины (или близкой к ней) - разигрываемый призовой фонд определяется из накопленных денег (если трассу редко ездили) и от количества участников и их уровня (без ставок) Если поучаствовало игроков больше 4х тогда их делят на 2 команды как и в обычных заездах.. считают среднее командное время и выигрыш делят только среди игроков победившей команды
это коротко без деалей
__________________
http://formula-n2o.ru/user-rating-ch...tour&UserId=40 |
18.06.2020, 16:34 | #9 |
Зловред
Регистрация: 10.06.2008
Сообщений: 2,417
|
Вопрос...
если "новая практиака" готва и работает.. если одну из трасс проехало больше 3х игроков призовой фонд делится между не на всех а только на "виртуальную" половину.. кого то интересует как поделились команды .. с каким "средним" временем одна команда выиграла у другой или это можно не показывать ? (проблема не в том что это хочется скрыть а в том что это по сути никому не нужная информация ниначто не влияющая.. в итоге всеравно выигрыш при таком делении это в большей степени лотерея Но для того чтоб "вывести" все результаты и деления на команды и результаты подсчётов нужно както это всё визуализировать .. а "как" пока нет мыслей даже (куда вывести, как в заездах на время не получится)
__________________
http://formula-n2o.ru/user-rating-ch...tour&UserId=40 |
19.06.2020, 09:19 | #10 |
Senior Member
Регистрация: 04.07.2008
Сообщений: 149
|
не обязательно
|