Friday, May 6, 2016

примерный набросок турнира "win the death"

для начала донатят только участники в приз фонд(позже придумаю, чтобы донатили зрители, но это примерно будет так , как будто они донатят своему любимому игроку)

например у нас есть 5  участников, [p1,p2,p3,p4,p5]
каждый внес такие суммы
p1:1000р, p2:1000,p3:800,p4:700,p5:600

кратко запишем так
[1000,1000,800,700,600]

призовой фонд 4100р

каждый играет с каждым, если кто-то отказыватеся играть с другим, очки уходят предложившему
каждый может играть сколько угодго матчей с определенным игроком, просто будет браться среднее количество очков за все игры

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

на базе донатов можем посчитать силу каждого игрока(или рейтинг)
[1,1,0.8,0.7,0.6]
уточнения по рейтингу: рейтинг каждого игрока это количество очков в турнире(а очки пропорциональны деньгам в призовом фонде), рейтинг можно увеличить , добавив в призовой фонд какое-то количество рублей/уе/коинов
например 3 игрока
один внес 2000р, второй 4000, третий 6000
1: 2000/sum=2000/12000=1/6
2) 4000/12000=1/3
3) 6000/12000=0.5

если я первому добавлю 10000 то у него рейтинг будет 12/22
у других 4/22 и 6/22


итак, если играют игроки с рейтингом 1 и 1 , то количество очков , который получит первый будет пропорционально 1 и у второго тоже
если играют игроки с рейтингом 1 и 0.8
то если побеждает первый , он получает пропорционально 0.8
 а если второй , то он получит пропорционально 1

как считаются очки , я описал в посте выше

например
если берется шаблон спайдер и первый игрок говорит , что выиграет к 40 дню, второй на 50 день, но если первый выигрывает на 60 день, он примерно получит 661 очков, проигравший 333
это базовый коэффициент расчета очков
еще влияет, кто назвал дату выигрыша раньше, коэфф будет (d1-d2)/(d1+d2)+1
в данном случае 1+1/9, если первый выигрывает , то его очки умножаются на 1.111
если у второго игрока рейтинг 0.8, то очки умножаются на понижающий коэфф , то есть на 0.8

в итоге
первый игрок А1, рейтинг 1
второй игрок А2, рейтинг 0.8
первый выиграл на 60й день, значит он получит 667 очков-это базовая награда

так как он назвал день победы раньше(40й день  против 50 дня), то его призовые  очки умножаются на 1.1
но так как он играл с соперником с меньшим рейтингом
, базовая награда умножается на 0.8(рейтинг слабого игрока)
в итоге, выигрыш будет 667*1.1111*0.8=592 очка(тут надо подумать чтобы приз не улетал ниже 500, если рейтинг у лузера в два раза ниже, то приз очки у победителя например будут 501 при условии что получается ниже 500)

схема расчет очков выигрыша по дням

"day:40 loser prize:0 winner prize: 1000"
"day:41 loser prize:45 winner prize: 955"
"day:42 loser prize:83 winner prize: 917"
"day:43 loser prize:115 winner prize: 885"
"day:44 loser prize:143 winner prize: 857"
"day:45 loser prize:167 winner prize: 833"
"day:46 loser prize:187 winner prize: 813"
"day:47 loser prize:206 winner prize: 794"
"day:48 loser prize:222 winner prize: 778"
"day:49 loser prize:237 winner prize: 763"
"day:50 loser prize:250 winner prize: 750"
"day:51 loser prize:262 winner prize: 738"
"day:52 loser prize:273 winner prize: 727"
"day:53 loser prize:283 winner prize: 717"
"day:54 loser prize:292 winner prize: 708"
"day:55 loser prize:300 winner prize: 700"
"day:56 loser prize:308 winner prize: 692"
"day:57 loser prize:315 winner prize: 685"
"day:58 loser prize:321 winner prize: 679"
"day:59 loser prize:328 winner prize: 672"
"day:60 loser prize:333 winner prize: 667"
"day:61 loser prize:339 winner prize: 661"
"day:62 loser prize:344 winner prize: 656"
"day:63 loser prize:348 winner prize: 652"
"day:64 loser prize:353 winner prize: 647"
"day:65 loser prize:357 winner prize: 643"
"day:66 loser prize:361 winner prize: 639"
"day:67 loser prize:365 winner prize: 635"


код расчета выигрыша

win_day=40
score=500

(0..50).each do |day|
    ff = 1+day*0.1
    winning = (1.0/ff * score).round
    p "day:#{win_day+day} loser prize:#{score-winning} winner prize: #{score+winning}"


end



Friday, April 15, 2016

Схема игры на деньги в HoMM3
 например мы насобирали на игру 1000 единиц денег

 если игрок А называет крайний день победы на шаблоне Х 30
то выигрыш будет распределяться по дням так

"day:30 waste money:500 prize: 1000"
"day:31 waste money:455 prize: 955"
"day:32 waste money:417 prize: 917"
"day:33 waste money:385 prize: 885"
"day:34 waste money:357 prize: 857"
"day:35 waste money:333 prize: 833"
"day:36 waste money:313 prize: 813"
"day:37 waste money:294 prize: 794"
"day:38 waste money:278 prize: 778"
"day:39 waste money:263 prize: 763"
"day:40 waste money:250 prize: 750"
"day:41 waste money:238 prize: 738"
"day:42 waste money:227 prize: 727"
"day:43 waste money:217 prize: 717"
"day:44 waste money:208 prize: 708"
"day:45 waste money:200 prize: 700"
"day:46 waste money:192 prize: 692"
"day:47 waste money:185 prize: 685"
"day:48 waste money:179 prize: 679"
"day:49 waste money:172 prize: 672"
"day:50 waste money:167 prize: 667"
"day:51 waste money:161 prize: 661"
"day:52 waste money:156 prize: 656"
"day:53 waste money:152 prize: 652"
"day:54 waste money:147 prize: 647"
"day:55 waste money:143 prize: 643"
"day:56 waste money:139 prize: 639"
"day:57 waste money:135 prize: 635"
"day:58 waste money:132 prize: 632"
"day:59 waste money:128 prize: 628"
"day:60 waste money:125 prize: 625"


если игрок Б называет день победы 32, то вслучае победы ,
он получит немного меньше чем игрок А, который назвал день победы 30, коэффициент разницы будет 32/62=0.5161
умножим его приз на 0.5161+0.5=1.0161
если А выигрывает к 47 дню, то приз = 696