Вернуться   Форум игры Formula O2 > Игра > Предложения и вопросы

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.05.2020, 17:08   #1
MouseR
Зловред
 
Аватар для MouseR
 
Регистрация: 10.06.2008
Сообщений: 2,417
MouseR отключил(а) отображение уровня репутации
По умолчанию Новая практика

Выбираем 4-5 трасс (с учетом что их число позже увеличится) Такие которые можно проехать на ЛЮБОЙ машине (без необходимости иметь технику определенного уровня только чтоб добраться до финиша)
Эти трассы в практике выводим отдельным списком и проводим на них заезды с призовым фондом. В списке указываем: размер призового фонда, число уже проехавших и время через которое фонд будет разыгран. Призовой фонд для каждой трассы свой и он разыгрывается каждые N- Минут - что составляет один цикл (15 минут - цикл). Если трассу за "цикл" никто не ехал её базовый призовой фонд удваивается (но не больше 3-х раз подряд - при базовом фонде 5 см через час призовой фонд станет 40 см Все последующие циклы базовый фонд больше не растет)

Игрок каждую из трасс может проехать за "цикл" только один раз, но может ездить другие трассы и перемещаться по игре как ему вздумается (участие в таких заездах его не заставляет находиться в локации до окончания цикла). Когда игрок "проезжает" трассу к призовому фонду автоматически добавляется сумма кратная его уровню (для простоты равная его уровню но позже можно скорректировать). В конце цикла для каждой из трасс имеем три варианта что нужно сделать.


Первый Никто не ехал и тогда удваиваем призовой фонд (или не меняем если это происходит больше 4х раз)
Второй Проехало от одного до 3-х игроков - весь фонд делим на число участников (алгоритм деления ниже).
Третий Игроков 4 и больше - делим всех на 2 команды (можно использовать алгоритм из "заездов") Вычисляем для каждой из получившихся команд средний результат и распределяем призовой фонд между игроками команды с лучшим результатом по тому же алгоритму что между


Участвовать могут все уровни на любой технике. Для определения размера выигрыша результат каждого игрока которому полагается часть выигрыша сравниваются не с другими игроками его "команды" а с "виртуальным" средним результатом показанном за всё время на этой трассе на машине его комплектации. Для этого машина и ее комплектация сводится к некоторому коду (он выводится из конечных характеристик таких как максимальная скорость / управляемость / мощность / ограничение коробки передач ... может быть марка авто) если эту трассу на технике с таким "кодом" никто не ехал значит первый же проезд становится эталонным и с ним будут сравниваться остальные (и корректировать эталонное значение)

Определения "кода комплектации"
Нужны параметры
  • Авто (IDCar) - Идентификатор автомобиля
  • Трансмиссия (IDTrans) - максималка по трансмиссии (он присутствует в названии)
  • Скорость (S) - суммарная максимальная скорость
  • Мощность (P) - суммарная мощность
  • Управляемость (D) - суммарная управляемость
  • Комплексный индекс (IDComplex)
  • Карта (IDMap)
Параметры S P D преобразуем в Ss Pp Dd округляя каждый из параметров до ближайшего большего целого числа кратного 25 (Например фактическая сумма управляемости D = 497 преобразуется в Dd = 500, Суммарная мощность P = 77 дает Pp = 100 а P = 75 -> Pp=75... )


Собираем текстовую строку txtComplex = IDCar_IDTrans_Ss_Pp_Dd
IDComplex = md5( txtComplex ); // Для удобства пользования можно оставить только 8 цифр


Комплектацию автомобиля так же сохраняем (временно, если результат окажется "рекордным" эта комплектация заменит предыдущую сохраненную. Если же на этой комплектации "рекорда" не поставлено - "забываем"




Пишем в БД для связки (IDComplex_IDMap) результаты для каждого типа трансмиссии статистика результатов проезда по IDComplex в которой записываем
  • IDMap
  • IDComplex
  • BestRez Лучший результат
  • MidRez Средний результат
  • CntRez Число проездов на которых получено среднее значение
  • bStab Признак того что среднее значение перестало меняться от добавления новых данных (да/нет)
  • fComplect Ссылка на файл с реальной комплектацией (XML) на которой был показан лучший результат
  • txtProperty Справочное текстовое поле (txtComplex) - для понимания человеком без "копания" в коде на чём показан результат
Проехав трассу (IDMap) для данной "конфигурации" авто (IDComplex) если ещё не зафиксировано результатов считаем что результат игрока "Лучший" (BestRez ) и он же средний(MidRez ) и устанавливаем количество результатов равным 1 и сохраняем в файл конфигурацию авто с записью ссылки на неё в базу (txtProperty). При последующих проездах этой трассы (rez) на аналогичной конфигурации среднее значение пересчитываем следующим образом:
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

при таком расчете призовых не будет проблем в случае если рекорд и средний результат одинаковые (или очень близкие)

Последний раз редактировалось MouseR; 13.05.2020 в 14:24
MouseR вне форума   Ответить с цитированием
Старый 08.05.2020, 17:36   #2
Kavalergard
Senior Member
 
Регистрация: 07.07.2008
Сообщений: 340
Kavalergard на пути к лучшему
По умолчанию

Я бы попробовал. Приблизительно понял идею)))
Сергей! Респект!
Kavalergard вне форума   Ответить с цитированием
Старый 10.05.2020, 00:04   #3
Sergei969
Senior Member
 
Аватар для Sergei969
 
Регистрация: 26.04.2009
Сообщений: 1,026
Sergei969 на пути к лучшему
Отправить сообщение для Sergei969 с помощью ICQ
По умолчанию

Нифига не понял. Но мне уже нравится)))
Sergei969 вне форума   Ответить с цитированием
Старый 10.05.2020, 21:02   #4
WoLf DoY
Senior Member
 
Регистрация: 11.11.2009
Сообщений: 598
WoLf DoY на пути к лучшему
По умолчанию

Идея не плохая,надо обкатать.
__________________
Темных людей ожидает конец света, а светлых людей - конец тьмы.
WoLf DoY вне форума   Ответить с цитированием
Старый 11.05.2020, 23:17   #5
Howk
Senior Member
 
Аватар для Howk
 
Регистрация: 10.06.2008
Сообщений: 1,647
Howk на пути к лучшему
По умолчанию

по поводу варианта "первый" я так понимаю забирает все один игрок, который проехал сам (это сума умноженная на 3 от стартового капитала). Кто ее оплатит и кто проспонсирует?
по поводу варианта "третий" если игроков 5, как их разделить на две команды? (и вообще там не законченная мысль)
Howk вне форума   Ответить с цитированием
Старый 12.05.2020, 11:38   #6
MouseR
Зловред
 
Аватар для MouseR
 
Регистрация: 10.06.2008
Сообщений: 2,417
MouseR отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от Howk Посмотреть сообщение
по поводу варианта "первый" я так понимаю забирает все один игрок, который проехал сам (это сума умноженная на 3 от стартового капитала). Кто ее оплатит и кто проспонсирует?
по поводу варианта "третий" если игроков 5, как их разделить на две команды? (и вообще там не законченная мысль)
Не так.
Если проехал один он может расчитывать на ту базовую ставку которая была + СМ в размере его уровня (это призовой фонд разигрываемый) и дальше возможно опять же несколько вариантов развития. Если на этой трассе на такой комплектации никто не ехал. это будет означать что сравнивать несчем и он получит весь призовой фонд.
если ктото (например он сам в предыдущих циклах) ездил эту трассу ранее и есть уже какой то средний и "лучший" результаты тогда его последний результат будет сравниваться относительно среднего и от призового фонда будет взято больше (если он новый рекорд поставит) и меньше если результат будет не призовым... Если результат будет меньше среднего для этой машины игрок получит меньше половины суммы.. а если новый рекорд тогда больше имеющегося призового фонда (и вот тут я кстати обнаружил проблемц которой не "видел" ранее (Проблема в том что для второго проезда невозможно оценивать в процентах сколько надо платить.. ведь средний и рекордный результаты идентичны на этот момент.. Надо будет думать)

по поводу "кто платит и кто спонсирует" это всегда административные бабки поэтому в ваш карман в этом процессе вообще никто не лезет ни в каком виде (разве что ремонт и бензин вы оптатите сами)

Вся эта афера призвана повысить число заездов и собрать данные по тому какие трассы на машинах разных комплектаций какую имеют статистику результатов "средний и лучший"

Последний раз редактировалось MouseR; 12.05.2020 в 11:41
MouseR вне форума   Ответить с цитированием
Старый 15.05.2020, 10:52   #7
Howk
Senior Member
 
Аватар для Howk
 
Регистрация: 10.06.2008
Сообщений: 1,647
Howk на пути к лучшему
По умолчанию

все так запутано)) но попробовать что-то новенькое всегда интересно
Howk вне форума   Ответить с цитированием
Старый 15.05.2020, 17:39   #8
MouseR
Зловред
 
Аватар для MouseR
 
Регистрация: 10.06.2008
Сообщений: 2,417
MouseR отключил(а) отображение уровня репутации
По умолчанию

в практике список трасс .. (не всех) которые можно проезжать .. результат с котрым выпроезжаете сравнивается не с теми кто его проезжал (в раз в 15 сек) а со средним результатом который был показан на машинке с вашей комплектацией машины (или близкой к ней) - разигрываемый призовой фонд определяется из накопленных денег (если трассу редко ездили) и от количества участников и их уровня (без ставок) Если поучаствовало игроков больше 4х тогда их делят на 2 команды как и в обычных заездах.. считают среднее командное время и выигрыш делят только среди игроков победившей команды

это коротко без деалей
MouseR вне форума   Ответить с цитированием
Старый 18.06.2020, 16:34   #9
MouseR
Зловред
 
Аватар для MouseR
 
Регистрация: 10.06.2008
Сообщений: 2,417
MouseR отключил(а) отображение уровня репутации
По умолчанию

Вопрос...
если "новая практиака" готва и работает.. если одну из трасс проехало больше 3х игроков призовой фонд делится между не на всех а только на "виртуальную" половину.. кого то интересует как поделились команды .. с каким "средним" временем одна команда выиграла у другой или это можно не показывать ? (проблема не в том что это хочется скрыть а в том что это по сути никому не нужная информация ниначто не влияющая.. в итоге всеравно выигрыш при таком делении это в большей степени лотерея
Но для того чтоб "вывести" все результаты и деления на команды и результаты подсчётов нужно както это всё визуализировать .. а "как" пока нет мыслей даже (куда вывести, как в заездах на время не получится)
MouseR вне форума   Ответить с цитированием
Старый 19.06.2020, 09:19   #10
bvt65
Senior Member
 
Регистрация: 04.07.2008
Сообщений: 149
bvt65 на пути к лучшему
По умолчанию

не обязательно
bvt65 вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +4, время: 19:35.


Работает на vBulletin® версия 3.7.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot