+ Ответить в теме
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 20 из 30

Тема: Формулы для расчета коррупции в цив4

  1. #1
    Сегодня на работе просматривал статьи по цив4 на их-фанатиках, наткнулся вот на что:
    http://forums.civfanatics.com/showpost.php...83&postcount=89

    Дистанционная коррупция:
    DistanceMaint = (Pop + 7) * 2.5 * Distance/DistanceScale * Building_m * WorldSize_m * Handicap_m

    Distance - расстояние к ближайшему дворцу, в стандартном фираксисовском смысле (шаг по диагонали считается как 1.5, округляем вниз).

    Building_m = .5 if courthouse, 1 otherwise
    Worldsize_m: Duel=.50, Tiny=.60, Small=.70, Standard=.80, Large=.90, Huge=1
    Handicap_m: Settler=.45, Chieftain=.55, Warlord=.65, Noble=.75, Prince=.85, Monarch=.90, Emperor=.95, Immortal=1, Diety=1

    DistanceScale = (MapHeight + MapWidth), причем MapHeight и MapWidth делим пополам если карта замыкается соответственно по высоте и/или ширине.

    Ранговая коррупция:
    CityMaint = N * (Pop + 17)/18 * WorldSize_m * Handicap_m + (1 for some cities, depending on cityrank)
    CityMaint = min(CityMaint, CitiesHandicap) * Building_m, т.е. не может превышать 4-8 в зависимости от уровня

    Worldsize_m: Duel=.45, Tiny=.40, Small=.35, Standard=.30, Large=.25, Huge=.20
    Handicap_m: Settler=.40, Chieftain=.50, Warlord=.60, Noble=.70, Prince=.80, Monarch=.85, Emperor=.90, Immortal=.95, Diety=1
    CitiesHandicap: Settler=4, Chieftain=4, Warlord=5, Noble=5, Prince=6, Monarch=6, Emperor=7, Immortal=7, Diety=8
    Building_m = .5 if courthouse, 1 otherwise

    В первой формуле 1 прибавляем если
    (1 if CityRank/N * 100 > 100 - (N * NumCitiesPercent) % 100)
    из-за операции взятия остатка (%) эта единица появляется рандомно в зависимости от ранга (считается как в цив3). Смысл в том чтобы не было резких скачков при прибавлении города.

    Интересно что значение зависит от населения города (я это и раньше замечал), особенно сильно зависит дистанционная коррупция.

    По всей видимости все вычисления целочисленные, округленя вниз, но точно это неизвестно, так что возможна ошибка +/- одна монета.
    продвинь это сообщение в соцсеть:  

  2. #2
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    <div class='quotetop'>Цитата</div>
    Worldsize_m: Duel=.50, Tiny=.60, Small=.70, Standard=.80, Large=.90, Huge=1[/b]
    Эти коэффициенты в формуле применены неправильно. С увеличением размера карты содержание за удалённость от дворца НЕ МОЖЕТ УВЕЛИЧИВАТЬСЯ. Оно уменьшается -- это проверено мной экспериментально.
    И это логично. Иначе на карте Huge было бы просто невозможно играть из-за огромных расстояний до дворца.

    Да и вообще, что-то не похоже это на правду. Совсем. Сумма содержания, рассчитанного по первой формуле, получается в 3 раза большей, чем на практике.
    продвинь это сообщение в соцсеть:  

  3. #3
    Так оно и по формуле уменьшается. С размером карты растет знаменатель дроби, ее значение, соответственно, уменьшается. Все логично.
    продвинь это сообщение в соцсеть:  

  4. #4
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    Какой дроби? Здесь только одна -- Distance/Distance Scale. Размер карты в ней не учитывается.
    продвинь это сообщение в соцсеть:  

  5. #5
    Да ну? А может ты просто невнимательно посмотрел описание формулы?

    DistanceScale = (MapHeight + MapWidth) : 10x6 на дуэльной, 21x13 на стандартной...

    Именно в этом как раз и учитывается размер карты, что и "проверено тобой экспериментально". А WorldSize_m в данном случае скорее для сглаживания получающихся различий.

    Вот сама функция из SDK.

    [code]int CvCity::calculateDistanceMaintenanceTimes100() const
    {
    продвинь это сообщение в соцсеть:  

  6. #6
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    Блин, я тупак. Сори! Я брал для расчёта не длину и ширину карты, а расстояние до города по горизонтали и по вертикали.
    Спасибо, жизнь снова обрела смысл .
    продвинь это сообщение в соцсеть:  

  7. #7
    Бессмертный Аватар для Линник


    Регистрация
    24.03.2006
    Адрес
    Правый берег Днепра
    Сообщений
    3,589
    <div class='quotetop'>Цитата(Мозговой рыбак * 1.3.2007, 13:27) [snapback]166693[/snapback]</div>
    Блин, я тупак. Сори! Я брал для расчёта не длину и ширину карты, а расстояние до города по горизонтали и по вертикали.
    Спасибо, жизнь снова обрела смысл .
    [/b]
    млин, надо Лиара сюда позвать, а то он терзает себя в гайд-парке...
    продвинь это сообщение в соцсеть:  
    Знаю, подло завелось теперь на земле нашей; думают только, чтобы при них были хлебные стоги, скирды да конные табуны их, да были бы целы в погребах запечатанные меды их. Перенимают черт знает какие бусурманские обычаи; гнушаются языком своим; свой с своим не хочет говорить; свой своего продает, как продают бездушную тварь на торговом рынке. Милость чужого короля, да и не короля, а паскудная милость польского магната, который желтым чеботом своим бьет их в морду, дороже для них всякого братства. Но у последнего подлюки, каков он ни есть, хоть весь извалялся он в саже и в поклонничестве, есть и у того, братцы, крупица русского чувства. И проснется оно когда-нибудь, и ударится он, горемычный, об полы руками, схватит себя за голову...
    Н.В. Гоголь, "Тарас Бульба"

  8. #8
    <div class='quotetop'>Цитата(Obormot * 11.7.2006, 17:44) [snapback]109162[/snapback]</div>
    Ранговая коррупция:
    CityMaint = N * (Pop + 17)/18 * WorldSize_m * Handicap_m + (1 for some cities, depending on cityrank)
    [/b]
    Итак CityMaint = N * С
    Получается при основании нового города для каждого города CityMaint += С (N штук)
    и для нового города CityMaint = (N+1) * С
    То есть затраты приблизительно увеличиваются на 2N.
    Как Вы думаете, можно ли пользоваться этим предположением?
    продвинь это сообщение в соцсеть:  

  9. #9
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    <div class='quotetop'>Цитата</div>
    То есть затраты приблизительно увеличиваются на 2N.
    Как Вы думаете, можно ли пользоваться этим предположением?[/b]
    Это только про Number Of Cities Maintenance. А есть ещё Distance Based Maintenance, которое своё для каждого случая.
    продвинь это сообщение в соцсеть:  

  10. #10
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    <div class='quotetop'>Цитата</div>
    DistanceScale = (MapHeight + MapWidth)[/b]
    Вот эта часть неверна. На самом деле нужно максимально возможное расстояние между городами - для плоской это между углами - 1 (1 = длина клетки, на которой стоит столица; если карта квадратная, должно быть 1,5, по логике), для цилиндра по склеенному измерению берется половина размера карты, и т.д.
    продвинь это сообщение в соцсеть:  
    Krieg души

  11. #11
    Полководец Аватар для razer


    Регистрация
    25.12.2006
    Адрес
    Moscow City
    Сообщений
    282
    <div class='quotetop'>Цитата(Obormot * 11.7.2006, 19:44) [snapback]109162[/snapback]</div>
    Интересно что значение зависит от населения города (я это и раньше замечал), особенно сильно зависит дистанционная коррупция.
    [/b]
    При числе городов 28 и больше (для Emperor и карты Standart), суммарный маинтейнс (CityMain) равен:
    7*N и не зависит от населения Pop.

    При 15 городах и среднем населении 15+ также 7*N

    При 20 городах и среднем населении 7+ на один город также имеем насыщение: 7*N

    Получается, что суммарный маинтейнс растет квадратично с N (вначале) а потом достигает своего насыщения: 7*N.

    Рентабелность города определяется 1 тауном без банков и рынков

    Интересно было бы еще глянуть как считается CivicUpkeep



    А при каких условиях вы начинаете строить суды?
    продвинь это сообщение в соцсеть:  
    [civ]christianity[/civ]In baks we trast.

  12. #12
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    А мне вот интересно, как кто-нибудь может жить без них. Я играю на Аристократе и не перехожу на следующий уровень именно потому, что с трудом выбираюсь из технологической ямы после третьего города. У меня просто кончаются деньги.
    Без святых храмов моих религий, которые (кроме судов) меня только и спасают, наука колеблется на уровне 10-30%. Без судов и святых храмов -- совсем никак.
    Обычно я беру Оракулом Свод законов, получаю вторую религию конфуцианство, срочно строю суды и Тай-Мяо (или чё там у них, у конфуциев ), распространяю конфуцианство и только потом получаю возможность продолжить экспансию.
    продвинь это сообщение в соцсеть:  

  13. #13
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    <div class='quotetop'>Цитата(Lexad * 5.4.2007, 0:27) [snapback]173998[/snapback]</div>
    <div class='quotetop'>Цитата
    DistanceScale = (MapHeight + MapWidth)[/b]
    Вот эта часть неверна. На самом деле нужно максимально возможное расстояние между городами - для плоской это между углами - 1 (1 = длина клетки, на которой стоит столица; если карта квадратная, должно быть 1,5, по логике), для цилиндра по склеенному измерению берется половина размера карты, и т.д.
    [/b][/quote]
    Lexad, а ты в игре или в билдере это проверял? Это действительно так? Что-то я сомневаюсь.
    Я решил было написать типо обзор про содержание городов. Этакая компиляция всего известного по теме. Он у меня сейчас готов. Но формулы, которые я там привёл (формулы из заглавного поста этого топика) на карте Huge, уровне Noble НЕ работают.
    Сумма содержания от удалённости от дворца, которая рассчитывается по приведённой формуле, примерно в 1,58 раз больше, чем на практике. Причём это число (1,58) практически не изменяется при увеличении расстояния до дворца. То есть с небольшой натяжкой можно сказать, что все суммы, рассчитанные по формуле, равны реальным, умноженным на 1,58.
    Я предполагаю, что в формуле либо не хватает какого-то уменьшающего коэффициента, либо Distance Scale действительно считается как-то по-другому. Но не так, как пишет Lexad. Тогда цифра выходит ещё больше реальной.
    Кроме того, на ихфанатиках некто Glundberg заявил в апреле прошлого года, что он работает над масштабным трудом по содержанию городов и привёл его начало. Не скажу, что я хоть что-то понял из этого начала, но совершенно точно, что он считает, что содержание в зависимости от расстояния до дворца зависит от количества зданий в городе.
    http://forums.civfanatics.com/showpost.php...mp;postcount=93
    Обещанного им труда я не обнаружил (похоже на меня ).
    продвинь это сообщение в соцсеть:  

  14. #14
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    <div class='quotetop'>Цитата</div>
    Lexad, а ты в игре или в билдере это проверял? Это действительно так? Что-то я сомневаюсь.[/b]
    Именно потому, что в игре не совпадало, и проверил, и нашел верную зависимость.

    <div class='quotetop'>Цитата</div>
    он считает, что содержание в зависимости от расстояния до дворца зависит от количества зданий в городе[/b]
    - он неверно понял модификатор от зданий - он не равен 1 только при наличии дворца/ЗД/Версаля/суда/Икханды.
    продвинь это сообщение в соцсеть:  
    Krieg души

  15. #15
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    <div class='quotetop'>Цитата</div>
    Я решил было написать типо обзор про содержание городов. Этакая компиляция всего известного по теме. Он у меня сейчас готов[/b]
    Если в заглавном посте исправить то, что я добавил, все уже и так есть; впрочем, можешь подробнее написать про здания и цивики, уменьшающие содержание.
    продвинь это сообщение в соцсеть:  
    Krieg души

  16. #16
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    Lexad, а на каком примере ты считал, не скажешь? Интересует размер карты. Ты расстояние (от угла до угла -1) считал сам по тайлам? Или взял за основу данные из файла?
    Ни фига у меня не получается повторить расчёт так, чтобы сошлось.
    продвинь это сообщение в соцсеть:  

  17. #17
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    Считал на примере СГОМТ-4, ветка на civru.com. У меня все работает, если у тебя нет - выкладывай сэйв, будем смотреть.
    продвинь это сообщение в соцсеть:  
    Krieg души

  18. #18
    Полководец Аватар для Мозговой рыбак


    Регистрация
    17.01.2007
    Адрес
    Российская Федерация
    Сообщений
    126
    Сэйв притараню завтра. Ужасно неудобно -- инет на работе, а цива дома. Клеймёный XP...
    То есть, я понимаю, ты считал расстояние руками... Я брал за основу для DistanceScale данные из файла Civ4WorldInfo.xml. Причём то, что там указано как <iGridWidth> и <iGridHeight> -- на самом деле не размеры карты. Для карт Duel и Tiny эти цифры нужно умножить на 4 (Duel по файлу -- 10х6, Duel в игре -- 40х24). Я предположил то же самое и для карты Huge, для которой я считаю, но глядя на твою, Lexad, уверенность, чтой-то засомневался. Ещё раз проверю, посчитаю руками.
    продвинь это сообщение в соцсеть:  

  19. #19
    Божество

    Аватар для Lexad


    Регистрация
    29.12.2005
    Адрес
    Новосибирск-Москва
    Сообщений
    7,396
    <div class='quotetop'>Цитата</div>
    То есть, я понимаю, ты считал расстояние руками... [/b]
    Нет, добрые люди посчитали за меня, я воспользовался, но де факто "руками". На ихфанатиках есть темка Sirian-а, правда, забыл адрес.
    продвинь это сообщение в соцсеть:  
    Krieg души

  20. #20


    А зулусская иканда складывается с судом просто или как?
    продвинь это сообщение в соцсеть:  
    Капитан команды RUS.

+ Ответить в теме
Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru

free counters