PDA

Просмотр полной версии : Рейтинг Aeson'a



IgrOK
24.04.2004, 13:11
Перед началом официальной игры в ГОТМы, хотелось бы понять, как считается их рейтинг. И выложить здесь, более простым для понимания языком. Вот материал:

Scoring Formula Calculations
posted by Aeson – January 24, 2003</span>

The scoring system built into Civ III is good for rating 2 things, population and territory. The bonus for early victories is next to useless though, as an &#39;early&#39; conquest will almost always come well before an &#39;early&#39; spacerace victory played with comparable skill. The bonus formula treats all victory conditions equally, and doesn&#39;t compensate nearly enough to compete with milking except on very small maps. For this reason, the in-game bonus for all victories is disregarded entirely, and a new method of rating early victories is put in it&#39;s place.

Based on the map factors described in the summary, each victory condition is given a &#39;best&#39; date. This is the date which is expected to be close to the earliest possible date which the victory condition would be attainable. By taking the date of victory from the player&#39;s game, and comparing it to the &#39;best&#39; date, the resulting ratio is then multiplied by a curve developed to approximate the amount of in-game score being passed up by the player for finishing early. This curve is based off the &#39;max&#39; score for the map. For the purposes of all calculations, the actual turn number for each date is used.

Here is the actual formula for determining the date bonus:

DateBonus = ((540 - PlayerTurn) / (540 - BestTurn)) * Curve
Curve = (MaxScore - (((PlayerTurn / 593)^2 + (PlayerTurn / 3200))* MaxScore))

PlayerTurn: The turn which the player achieves victory.
BestTurn: The predicted &#39;best&#39; turn for that victory type.
MaxScore: The predicted score for a fully milked game.
Curve: This roughly mimics the scoring progression in a milked game.

A graphical representation of the curve: <a href=\'http://gotm.civfanatics.net/games/curve.jpg\' target=\'_blank\'>http://gotm.civfanatics.net/games/curve.jpg</a>

MaxScore is determined by taking the domination limit, figuring out how many citizens that many tiles can support, and then using those numbers to calculate the upper limit for TurnScore. Then a modifier based on map characteristics is applied to the TurnScore to determine what the MaxScore would be. The formula is:

MaxTurnScore = (HappyCitizens * 2) + ContentCitizens + Specialists + Territory
MaxScore = MaxTurnScore * MapModifier

HappyCitizens: An estimate based off of territory. Each tile can be worked by one citizen, so the maximum happy citizens would be one per tile, or the domination limit. Each city &#39;eats up&#39; one of these citizens, so the number of cities will slightly decrease this count.
ContentCitizens: For the purposes of this prediction, all citizens are considered as happy, which would be the case in a well run &#39;milked&#39; empire.
Specialists: The number of specialists is currently predicted based off the average food per tile. The support cost of the tile worker is subtracted from the average, and then the result is multiplied by the domination limit and divided by 2, as each specialist requires 2 food.

The DateScore is then added to the BaseScore to give a total. This total is then compared to the MaxScore prediction to get a percentage, which is then multiplied by 10000 to give the FinalScore.

<span style=\'color:red\'>FinalScore = ((DateScore + BaseScore) / MaxScore) * 10000
BaseScore = (2050 - PlayerScore) * Difficulty

There are several modifiers used to predict the final MaxScore and the condition &#39;best&#39; dates. An excel file with all the modifiers can be found here: http://gotm.civfanatics.net/games/modifier.zip

Sardukar
24.04.2004, 14:58
Если будет время, постараюсь перевести.

IgrOK
24.04.2004, 15:17
Нужен не перевод, а грамотное разьяснение, типа:
"1) Смотрим туда, записываем СМ, смотрим туда, записываем ЛД..."
"2) Счет = (СМ/ЛД+...)"

Beetle
24.04.2004, 15:48
Запускаем civreplay, смотрим рейтинг по Aeson&#39;у :harhar:

IgrOK
24.04.2004, 16:48
Запускаем civreplay, смотрим рейтинг по Aeson&#39;у
Нужно знать как он считается, чтобы планировать какие действия принесут лучший результат.

UniqueUnit
24.04.2004, 23:46
Забавно… Я перед залётом сервера хотел поднять тот же вопрос, но решил, что это никому интересно не будет.

Да, изложение оставляет желать… Как, впрочем, и вся идея.

Самое простое – скачть предложенные экселевские файлы
http://gotm.civfanatics.net/games/gotm6to15.zip
http://gotm.civfanatics.net/games/modifier.zip
и в первом из них - в формулах ячеек любой строки - посмотреть весь расчет.

Засим я не буду переводить всё дословно, попробую изложить только идею, насколько я её понял, параллельно со своми комментариями.

Концептуально автор базируется на нескольких (далеко не бесспорных) положениях

1. Очки, начисляемые за досрочную победу (ранее 2050AD) не должны быть меньше, чем очки получаемые при идеально применённом милкинге, начатом в год победы и доведенном до 2050AD. (Это единственное, с чем можно безоговорочно согласиться). СМ, якобы, этого не обеспечивает. Поэтому автор вводит дополнительные бонусы за год победы.

2. Бонус этот кладется равным отношению результатов милкинга при «идеальном» BestTurn и фактическом PlayerTurn годе победы с некоторым «поправочным» коэффициентом curve, учитывающем помимо номера хода победы некий MaxScore - максимальный результат, который можно выжать из карты, т.е. по сути дела – общую пищевую продуктивность всех клеток карты при проведении всех возможных улучшений.

3. Curve от номера хода автор оценивает эмпирической кривой – квадратным трёхчленом от номера победного хода (в рабочей зоне весьма мало отличающейся на глаз от прямой) – см. рисунок

4. При прочих равных (т. е. при «одинаково хорошей» игре) каждый вид победы должен быть одинаково поощряем. Но поскольку конквест, очевидно, требует меньше ходов, чем космос, то и бонусы для этих побед различны. Это достигается различным «идеальным» годом победы. (Мне эта идея - поперёк горла. По мне - победил так победил. Забавно было бы, если бы в шахматах за мат пешкой давали бы на пол-очка больше, чем за мат ферзём. А здесь мы имее нечто подобное.)

5. Эти «идеальные» годы победы, имеющие определяющее влияние на конечный результат, устанавливаются эмпирическим путем (читай – «высосаны из пальца»).

6. Полученные таким образом очки складыываются с «базовыми» очками BaseScore, учитывающими СМ на год победы (в тексте опечатка, получается чем больше СМ, тем меньше «базовые» очки; это уже АиГ – ахунея и галиматня, реально формула для BaseScore другая – установлено из эксель-файла – не намного, впрочем, лучше) и сложность карты.

7. Полученый результат (total) нормируется тем же самым MaxScore и для борьбы с сотыми умножается на 10000. На классе ГОТМ «conquest» этот результат уменьшается на 15%. На «Open» и «Predator» берётся как есть.

Не знаю, имеет ли смысл после всеё этой эмпирической бредятины разбираться в деталях формул, но всё-таки очистки совести ради излагаю.

Формулу надо читать с конца, тогда всё (в том числе - глупость) становиться яснее.

В конечном счете, дело сводится к такой вот кракозябле (пункты 6-7 моего изложения):

FinalScore = ((DateScore + BaseScore) / MaxScore) * 10000

Где:
FinalScore – окончательные очки (по Ясону)
DateScore – очки начисляемые за год победы (судя по всему, те же самые, которые чуть выше автор называет DataBonus)
BaseScore - очки начисляемые счасть и территорию перерасчетом из СМ.
MaxScore – полуэмпирическая оценка максимального результата, достигаемого путем милкинга на данной карте.


В этой части MaxScore работает исключительно на сравнение результатов из разных ГОТМ, поэтому вместе с десятью тысячами опускаем для ясности.

Базовые очки вычисляются по формуле:
BaseScore = PlayerScore – (2050 - PlayerYear) * Difficulty
(Установлено из эксель-файла)
где –
PlayerScore – послепобедный СМ
PlayerYear – год победы (именно год!)
Difficulty – 1…6 – для Chieftain…Deity (играем в PTW, Сида нету)

Сдаётся мне, что это не более чем неудачная попытка сделать обратный пересчет послепобедного СМ в допобедный и тем самым убить временной бонус Сида (объективно говоря – тоже лажовый). Но даже если идея была другая, эта формула ничего, кроме ощущения перегрузки от набравшей вторую космическую крыши не вызывает. Базовые очки тем меньше, чем выше сложность и чем раньше победа достигнута??? Так что на этой части можно смело ставить крест.

Рассмотрим второе слагаемое DateScore – временной бонус самого Ясона.
DateBonus = ((540 - PlayerTurn) / (540 - BestTurn)) * Curve;
Curve = (MaxScore - (((PlayerTurn / 593)^2 + (PlayerTurn / 3200))* MaxScore))
где
PlayerTurn – фактический ход победы
BestTurn – «идеальный» ход победы
Curve – поправочный коэффициент, вычисляемый по приведённой формуле
MaxScore – полуэмпирическая оценка максимального результата, достигаемого милrингом на данной карте, формулу для которой см. ниже.

Само по себе принятие за характеризующую величину не количества сделанных ходов, а ходов, оставшихся до некоторого условного барьера непонятно. Получается, что если игрок потерял по сравнению с идеальным графиком 1 ход на дистанции, предположим, в 100 ходов, то бонусная добавка микроскопически мало отличается от той, какая была бы без этой потери, а на дистанции в 539 ходов потеря одного хода превращает эту добавку из максимально возможной в нулевую. Это что – так надо???

Аналогично, curve-поправка тоже ничего кроме вопросов не вызывает. В удобной для анализа форме ее можно записать так:

Curve =(- PlayerTurn / 593)^2 - PlayerTurn / 3200 + 1) * MaxScore

Непонятно, откуда что здесь берётся и чем это качественно отличается от прямой Curve = (1 - PlayerTurn/540) * MaxScore. А если уж есть какая-то высшая правда в квадоатичной зависимости то почему не взять
Curve =(1 – (PlayerTurn / 540)^2) * MaxScoreРазница во втором-третьем знаке!!!
N curve1 curve2
1 0,999685 0,99999657
2 0,999364 0,99998628
10 0,996591 0,99965706
50 0,977266 0,99142661
100 0,940313 0,96570645
150 0,889141 0,92283951
200 0,82375 0,86282579
250 0,744141 0,78566529
300 0,650313 0,69135802
350 0,542266 0,57990398
400 0,420001 0,45130316
450 0,283517 0,30555556
500 0,132814 0,14266118
540 0,002014 0


В этой табличке N – номер ходя, curve1 – по Ясону, curve2 – по предложенной формуле Curve =1 – (PlayerTurn / 540)^2; в обоих случаях принято MaxScore = 1. Почувствуйте разницу. Но последнее хоть понятно.

Наконец остаётся еще MaxScore, вычисляемая как
MaxScore = MaxTurnScore * MapModifier
MaxTurnScore = (HappyCitizens * 2) + ContentCitizens + Specialists + Territory

Последняя строка, похоже, единственная объективная вещь во всей этой фигне, а MapModifier вычисляется по такой заумной формуле, что её и разбирать лень. Не случайно автор предпочёл сделать предопределённую табличку (см. вторую из приведенных выше ссылок) Если кто-нибудь разберётся, почему там всё так, а не иначе – можно медаль давать. Или сразу – в психушку.

Вывод – если начать разбираться в том, как играть на результат по Ясону, то о Циве можно забыть сразу.

Хорошие законы пишутся для люде


й, умные – для судей. (Не помню кто).

IgrOK
25.04.2004, 00:09
Ого... Ты меня прямо испугал. :nerves: Я, кстати, первого из предложеных тобой файлов не видел. Сейчас посмотрю.

EsatP
25.04.2004, 11:56
Чего ты взъелся на Язона? Очевидно, что вместо поправки СМ на досрочную победу берется поправка на номер хода, а не год. В любом случае, она лучше самого СМ, но все равно ориентирована скорее на душегубов, чем на строителей. Коэффициенты зависящие от карты очень разумны. А вот соответствие типов побед сомнительно. Посмотри результаты игр - впереди душегубы, потом чуть-чуть дипломаты с космонавтами, а после 20-30 появляются любители культуры.
Хотя я пробовал отыграть одну карту с разными типами победы и получилось что результаты по СМ очень разные, а по Язону почти идентичны. Так что, мне кажется, что этот подход более точно отражает класс игры.

UniqueUnit
25.04.2004, 13:31
Originally posted by EsatP+25.04.2004 - 11:56--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (EsatP * 25.04.2004 - 11:56)</td></tr><tr><td id='QUOTE'>
Чего ты взъелся на Язона?
[/b]
За дурь в формуле. Его подход ни в какие ворота не лезет, я это вроде как достаточно подробно и растолковал. Чего еще ожидать, если Ясон пишет одно, считает по другому, а обещает при этом третье?


Originally posted by EsatP*25.04.2004 - 11:56

Очевидно, что вместо поправки СМ на досрочную победу берется поправка на номер хода, а не год.

Это как прикажешь понимать? Не верь глазам своим? В формуле для BaseScore (а только в связи с ней я и говорил про год, а не номер хода) явственно стоит год. Или ты предполагаешь, что из 2050 надо вычитать номер хода? Тогда посмотри эксель-файл.


Originally posted by EsatP*25.04.2004 - 11:56

В любом случае, она лучше самого СМ, но все равно ориентирована скорее на душегубов, чем на строителей.

Хуже. СМ хоть понятно откуда берется. А тут всё - полная лажа.


Originally posted by EsatP*25.04.2004 - 11:56

Коэффициенты зависящие от карты очень разумны


Ну объясни мне, что разумного в коэффициенте 1,036914144 для ГОТМ6???
Вообще это не по адресу. Эти коэффициенты работают в основном на сравнение результатов разных ГОТМ, а это вообще - недостижимая цель, если формула непонятно как сравнивает результаты одного ГОТМ для разных видов побед.


Originally posted by EsatP*25.04.2004 - 11:56

Посмотри результаты игр - впереди душегубы, потом чуть-чуть дипломаты с космонавтами, а после 20-30 появляются любители культуры.

Вот именно. Ясон провозгласил по сути единственную цель - поставить в равные условия разные виды побед. И этой цели абсолютно не достиг. И ты еще спрашиваешь за что я на него взъелся?


Originally posted by EsatP*25.04.2004 - 11:56

Хотя я пробовал отыграть одну карту с разными типами победы и получилось что результаты по СМ очень разные, а по Язону почти идентичны.

А кто тебе сказал, что это хорошо? Не говоря уж о то, что ты сам себе противоречишь. Двумя фразаи выше ты говорил о то, что душегубы всегда впереди (что кстати, мне совершенно не очевидно). Как это согласуется с тем, что у тебя результы почти идентичные?
Да и вообще в твой результат верится с трудом - очень уж нестбильны результы участников по ГОТМ6-14. Конкретно - карту какого ГОТМ ты играл и какие результатов достиг?

<!--QuoteBegin-EsatP*25.04.2004 - 11:56

Так что, мне кажется, что этот подход более точно отражает класс игры.
[/quote]
Угу. Сам же Ясон прыгает по своей формуле с 1-ого места в 6-м ГОТМ до 21-го в 10. Результаты в сводной табличке у одного участника в разных ГОТМ вообще несопоставимы. Какое уж тут "отражает класс".

IgrOK
25.04.2004, 14:24
BaseScore = (2050 - PlayerScore) * Difficulty
И здесь PlayerScore - это СМ??? Где логика?

IgrOK
25.04.2004, 14:49
Что не получается у меня считать Best Dates по второму файлу так, чтобы получалось как в первом файле... Вот смотрите:

GOTM15 BestDate for Conquest
Base = 150
Russia (Exp. Sci.) = 0-5=-5
Continent 57% (60%) = 0
Standard = 0
Monarch = 0

BestDate = 150-5 = 145.
А в первом файле - 180!

UniqueUnit
25.04.2004, 16:17
Originally posted by IgrOK*25.04.2004 - 14:24
BaseScore = (2050 - PlayerScore) * Difficulty
И здесь PlayerScore - это СМ??? Где логика?
Ну здесь-то явная опечатка. Я об этом говорил.
Реально (по эксел-файлу) он считает так:

BaseScore = PlayerScore – (2050 - PlayerYear) * Difficulty

Хрен, врочем, редьки не слаще.

A c BestDate даже разбираться не хочется, настолько всё мудрёно-притянуто.

Beetle
25.04.2004, 19:34
Это как прикажешь понимать? Не верь глазам своим? В формуле для BaseScore (а только в связи с ней я и говорил про год, а не номер хода) явственно стоит год. Или ты предполагаешь, что из 2050 надо вычитать номер хода? Тогда посмотри эксель-файл.



BaseScore = PlayerScore – (2050 - PlayerYear) * Difficulty


Сдаётся мне, что это не более чем неудачная попытка сделать обратный пересчет послепобедного СМ в допобедный и тем самым убить временной бонус Сида (объективно говоря – тоже лажовый). Но даже если идея была другая, эта формула ничего, кроме ощущения перегрузки от набравшей вторую космическую крыши не вызывает. Базовые очки тем меньше, чем выше сложность и чем раньше победа достигнута??? Так что на этой части можно смело ставить крест.

Сам же себе ответил :applau2:

Бонус сида считается именно в связи с годами, а не ходами, чтобы сделать обратный перерасчет, надо его же почситать - тоже с годами. Он просто восстанавливает СМ, но только не предпобедный, а именно в ход победы
Что вполне логично, просто немного поднял точность.
Почему просто не посмотреть СМ в послепобедном сейве ? Не знаю :lol:
Наверное, есть причины.

UniqueUnit
25.04.2004, 22:37
Originally posted by Beetle*25.04.2004 - 19:34

Это как прикажешь понимать? Не верь глазам своим? В формуле для BaseScore (а только в связи с ней я и говорил про год, а не номер хода) явственно стоит год. Или ты предполагаешь, что из 2050 надо вычитать номер хода? Тогда посмотри эксель-файл.



BaseScore = PlayerScore – (2050 - PlayerYear) * Difficulty


Сдаётся мне, что это не более чем неудачная попытка сделать обратный пересчет послепобедного СМ в допобедный и тем самым убить временной бонус Сида (объективно говоря – тоже лажовый). Но даже если идея была другая, эта формула ничего, кроме ощущения перегрузки от набравшей вторую космическую крыши не вызывает. Базовые очки тем меньше, чем выше сложность и чем раньше победа достигнута??? Так что на этой части можно смело ставить крест.

Сам же себе ответил :applau2:

Бонус сида считается именно в связи с годами, а не ходами, чтобы сделать обратный перерасчет, надо его же почситать - тоже с годами. Он просто восстанавливает СМ, но только не предпобедный, а именно в ход победы
Что вполне логично, просто немного поднял точность.
Почему просто не посмотреть СМ в послепобедном сейве ? Не знаю :lol:
Наверное, есть причины.
Ничо не понял. :no:
1. Я-то как раз и настаивал, что у Ясона именно год победы, а мне возражали.
2. Я подозревал, что это попытка восстановить СМ в год победы, но без бонуса
(ну назвал "предпобедным" всето "добонусного", это готов признать)
3. Попытку эту я назвал неудачной потому как ни фига не получается. У меня по крайней мере не сходится. У Сида явно посложнее будет.
4. Самое-то главная непонятка не с тем, как Ясон считает базовые очки, а с тем, что они для него значат. Еще можно было бы понять при его подходе, если бы он как и Сид умножал СМ на какую-то функцию от года или номера хода. Но у него вообще "восстановленный" СМ складывется с бонусом Язона. Т. е. вклад BaseScore в общий результат вообще не зависит года победы и сложности. Это серьёзно?

Насчёт "вполне логично поднял точность". Кто поднял и точность чего?

Gektor
26.04.2004, 15:39
Лучше напишите, что это дает народу в прикладном плане так сказать, какой тактики придерживаться? Я так понял конквестить при самом тщательном микроменджменте?

IgrOK
26.04.2004, 17:07
ВЫВОД

В принципе, выбор остается такой же, как при стандартном СМ. Либо как можно более ранняя победа (только теперь ЛЮБЫМ способом) либо милкинг до 2050АД. Среди победителей ГОТМ6-15 доли выбравших первый и второй способ приблизно равны. Какой тип победы является оптимальным - зависит от карты.

Beetle
26.04.2004, 18:14
3. Попытку эту я назвал неудачной потому как ни фига не получается. У меня по крайней мере не сходится. У Сида явно посложнее будет.

Я исходил (и Aeson тоже скорее всего) из
http://www.civfanatics.com/civ3acad_maxscore.shtml

Там написана лажа ?


Score calculation

The scoring works by averaging your per-turn scores throughout the game. For each turn a (hidden) per-turn score is calculated as:

(Territory + HappyCitizens*2 + ContentCitizens + Specialists) * Difficulty

The total of all your per-turn scores is divided by the number of turns played so far to get your actual game score. I.e. your actual score is the average of your per-turn scores.

"Territory" is the number of tiles which are within your sphere of influence.
"Difficulty" is 1 for Chieftain, 2 for Warlord, 3 for Regent, 4 for Monarch, 5 for Emperor, 6 for Deity.

Early win Score Bonus

If you win before 2050AD, you get a bonus which is added to your regular score. The bonus is calculated as:

(2050 - FinishYear) * Difficulty

If you finish before 10AD, use the year as a negative number in the calculation.


Почему я и говорю, что это восстановление CM&#39;a без бонуса.
В наших теминах (предполагается, что формула верна)

BaseScore = PlayerScore – (2050 - PlayerYear) * Difficulty
при этм Player Score = CM+(2050 - FinishYear) * Difficulty
получаем BaseScore = CM