+ Ответить в теме
Показано с 1 по 20 из 517

Тема: "1492: Global Colonization. Глобальная Колонизация"

Комбинированный просмотр

  1. #1
    Цитата Сообщение от kabjans Посмотреть сообщение
    Вроде бы нашел нечто подходящее в исходных кодах.
    Еще вчера вечером, когда я писал эти строки, у меня было подозрение, что найденное решение неверно. Поэтому я и написал "вроде бы".

    Кроме того меня смeщало и другое:

    Цитата Сообщение от kabjans Посмотреть сообщение
    Странно, но эту строку

    Код:
    if (kLoopPlayer.getCivilizationType() == 1)
    игра принимает за данность и абсолютно все европейские цивилизации имеют Threshold = 900, кроме Англии, у которой, как и положено Threshold = 1200. Я думал, что для каждой нации надо прописывать свое условие.
    После проверки все встало на свои места.

    Найденный вариант работает только если играть за Англию.

    Причина тоже ясна. Перебор идет через номер игрока (Player), а не порядковый номер цивилизации из CIV4CivilizationInfos.xml, как я ранее думал. Если я начну за Францию или любую другую страну, то именно у меня будет самым высоким iThreshold. Все остальные нации получат 25% снижение для iThreshold. что неверно.

    Цитата Сообщение от kabjans Посмотреть сообщение
    В принципе, для конкретно данного приложения меня это вполне устраивает, но хотелось бы понять логику программы, поскольку есть идеи как этот же трюк применить в других случаях. ....
    Увы, но найденное мной псевдо-"решение" не годится и вопрос остается открытым.

    Как правильно прописать условие в данном примере:
    Код:
    if
                              //если игрок - Франция, Испания или Голландия
    
                              //то
    {
          iThreshold = (iBASE_BIRTH_POINTS_THRESHOLD - 100);
       } 
    
    else 
       { 
          iThreshold = iBASE_BIRTH_POINTS_THRESHOLD;
       }
    

    продвинь это сообщение в соцсеть:  

  2. #2
    Цитата Сообщение от kabjans Посмотреть сообщение
    Увы, но найденное мной псевдо-"решение" не годится и вопрос остается открытым.
    Вопрос снимается.

    Мне удалось найти предельно простое и элегантное решение. Теперь каждая нация, включая аборигенов, имеет свой собственный NationalPopulationCoefficient, который определяет величину Threshold, при достижении которого в городе данной нации рождается новый житель.

    Вот снимок из игры:



    Параметры:

    - скорость нормальная,
    - BASE_BIRTH_POINTS_THRESHOLD = 400

    - NationalPopulationCoefficient:
    -- для Англии 500
    -- Франции 200
    -- Испании 100
    -- Голландии 300

    -- для аборигенов из племени Arawak 40.

    На снимке видим значения Threshold. Они равны 400 + NationalPopulationCoefficient. У каждой нации свое значение Threshold.

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

  3. #3
    Вот это ты намудрил!!
    Скорость набора крестов завистит от CvPlayer::immigrationThreshold(). А она в свою очередь зависит от GC.getTraitInfo(eTrait).getImmigrationThresholdModifier(). Так что надо было просто убрать TRAIT_TOLERANT из Assets\XML\Civilizations\CIV4TraitInfos.xml и все его упоминания в других файлах.
    продвинь это сообщение в соцсеть:  
    Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
    Мой мод

  4. #4
    Цитата Сообщение от NeseryozniyVET Посмотреть сообщение
    Вот это ты намудрил!!
    Скорость набора крестов завистит от CvPlayer::immigrationThreshold(). А она в свою очередь зависит от GC.getTraitInfo(eTrait).getImmigrationThresholdModifier(). Так что надо было просто убрать TRAIT_TOLERANT из Assets\XML\Civilizations\CIV4TraitInfos.xml и все его упоминания в других файлах.
    Ты абсолютно прав относительно параметра, влияющего на скорость набора крестов, а следовательно и на скорость иммиграции из Европы. Именно эти 25% и привлекли мое внимание при тестировании. Они прописаны в CIV4TraitInfos.xml в строке:

    Код:
       <iImmigrationThresholdModifier>-25</iImmigrationThresholdModifier>
    Если ставится задача уровнять скорости роста населения для всех наций, то простейшее решение - элементарно обнулить все значения iImmigrationThresholdModifier, заменив в этой строке -25 на 0:
    Код:
       <iImmigrationThresholdModifier>0</iImmigrationThresholdModifier>
    При этом отпадает необходимость убирать TRAIT_TOLERANT.

    Но что мы получим в результате?

    Как известно сейчас рост населения города происходит по двум причинам:

    Рост населения города = за счет рождаемости внутри города + за счет прибытия иммигрантов из Европы
    1. за счет рождаемости внутри города (набор очков рождаемости). Эта величина постоянна для всех наций.
    2. за счет прибытия иммигрантов из Европы. Обнулив iImmigrationThresholdModifier, мы уровняем и этот параметр для всех наций.

    В итоге скорости роста населения у всех наций будут равны, поскольку равны скорости естественного прироста населения в городах Нового Света и равны скорости иммиграции из Европы.

    Это простейшее из возможных решений. Но, увы, далеко не самое лучшее.

    В игре разработчики нагородили массу глупостей и несуразностей. Но в вопросе иммиграции поселенцев из Европы они были совершенно правы, по крайней мере английских. Достаточно вспомнить религиозные распри в Англии, унесшие жизни почти четверти всего населения. Или опять-таки религиозные (так называемые гугенотские) войны между католиками и протестантами (гугенотами), которые раздирали Францию при последних королях династии Валуа (1562-1598). Именно данные события в этих странах и были основной движущей силой иммиграции их граждан в Новый Свет. Люди просто бежали из стран, где их убивали из-за их религиозных взглядов.

    Собственно возможно поэтому в игре разработчики в качестве символа иммиграции и избрали значок креста. Учитывая сказанное выше, было бы исторически неправильным обнулять значения iImmigrationThresholdModifier для английских и французских королей, уравнивая скорость иимиграции из этих стран с Испанией и Португалией, которые те времена были сравнительно более моноконфессиональными государствами, а следовательно иммиграция их жителей в Новый Свет имела иную причину.

    Отсюда следует, что iImmigrationThresholdModifier должны быть различными для различных наций. К примеру, -25 для Англии и Франции, и 0 для Испании и Португалии. Но как раз это и приводит к той неувязке в скоростях роста народонаселения для различных наций, с которой я начал обсуждение этой проблемы. Второе слагаемое различно для разных наций:

    Рост населения города = за счет рождаемости внутри города + за счет прибытия иммигрантов из Европы
    Полностью решить проблему прекрасно позволяет введение iNationalPopulationCoefficient. Каждая их наций в игре - не только европейские поселенцы, но и местные аборигены - имеют свой собственный предел iThreshold, при достижении которого в городе данной нации рождается новый житель. Здесь мы корректируем первое слагаемое:

    Рост населения города = за счет рождаемости внутри города + за счет прибытия иммигрантов из Европы
    В итоге сейчас мы можем подобрать такие комбинации для iImmigrationThresholdModifier и iNationalPopulationCoefficient, при которых ни одна из европейских наций не получит бонусов в росте населения.

    Одновременно, iNationalPopulationCoefficient позволяет корректировать скорость роста наций местных аборигенов. Причем для каждой нации iNationalPopulationCoefficient может быть своим. Выше я уже приводил пример, когда поселения народностей Крайнего Севера растут медленне, чем у их более южных собратьев. Причина - более суровый климат на севере. Одновременно поселения всех без исключения местных аборигенов должны расти несколько быстрее, чем города европейцев в Новом Свете. Причина также очевидна: аборигены живут в данной местности веками, прекрасно адаптировались к местным условиям, имеют иммунитет против местных болезней и т.д. У только что прибывших европейцев ничего этого нет.

    Значения <iNationalPopulationCoefficient> выведены в CIV4CivilizationInfos.xml, поэтому их легко править, если при тестировании что-то пойдет не так.

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

  5. #5
    Вождь Аватар для kirgre


    Регистрация
    31.08.2010
    Адрес
    1/8 часть Суши, Северная Столица
    Сообщений
    40
    Kabjans, решение с населением технически и логически верно, но так ведь у Англии в оригинальной игре таким образом (за счёт +25% к эмиграции) и появлялось преимущество в населении... По крайней мере, на начальных этапах игры, когда колонистов в Европе массово не купишь. В твоём варианте получается, что преимущество Англии скомпенсировано в 0. Таки в чём цимес?
    продвинь это сообщение в соцсеть:  

  6. #6
    Цитата Сообщение от kirgre Посмотреть сообщение
    Kabjans, решение с населением технически и логически верно, но так ведь у Англии в оригинальной игре таким образом (за счёт +25% к эмиграции) и появлялось преимущество в населении... По крайней мере, на начальных этапах игры, когда колонистов в Европе массово не купишь. В твоём варианте получается, что преимущество Англии скомпенсировано в 0. Таки в чём цимес?
    У тех стран, к примеру той же Англии, преимущество в более быстром росте населения на начальном этапе как было, так и останется. Ведь +25% к эмиграции в Новый Свет предложенный мной вариант никак не отменяет. Однако это преимущество верно только для начального этапа игры.

    Проблема в неравномерности роста населения возникает при длительной игре, поскольку эти "+25% к эмиграции" работают на протяжении всей игры. И вот именно здесь - на продвинутых этапах игры - и требуется небольшая компенсация для наций, у которых нет плюса к эмиграции. Именно эту функцию и выполняет NationalPopulationCoefficient.

    Значения <iNationalPopulationCoefficient> выведены в CIV4CivilizationInfos.xml, поэтому их любой сможет поправить по своему желанию. Лезть для этого в исходные коды игры и компилировать заново CvGameCoreDLL.dll не потребуется. Достаточно уметь пользоваться Блокнотом (Notepad).
    продвинь это сообщение в соцсеть:  

  7. #7
    Э, разработчики мода, подайте знак.
    Мы переживаем за Вас. Вдруг чего случилось?
    продвинь это сообщение в соцсеть:  

  8. #8
    Мод спёкся, на замену давно вышел новый мод еще круче называется Religion and Revolution
    Мод почти полностью заменяет этот.

    Скриншоты и описание http://forums.civfanatics.com/showthread.php?t=473251

    Качаем тут http://www.infracta.de/wbb/forum/ind...baseItem&id=33

    продвинь это сообщение в соцсеть:  

  9. #9
    Ух ты! А я и не знал, что альтернатива разрабатвается. Причем kabjans (aka KJ Jansson) в числе основных мододелов мода. Интересно, почему он нас не предупредил?
    продвинь это сообщение в соцсеть:  
    Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
    Мой мод

  10. #10
    Вышла новая версия мода Religion and Revolution v 1.7

    описание тут http://forums.civfanatics.com/showthread.php?t=473251
    качаем здесь http://www.infracta.de/wbb/forum/ind...baseItem&id=33
    продвинь это сообщение в соцсеть:  

  11. #11
    Цитата Сообщение от SimpleBoy Посмотреть сообщение
    Мод спёкся, на замену давно вышел новый мод еще круче называется Religion and Revolution
    Мод почти полностью заменяет этот.

    Скриншоты и описание http://forums.civfanatics.com/showthread.php?t=473251

    Качаем тут http://www.infracta.de/wbb/forum/ind...baseItem&id=33
    Что значит - мод спёкся?! Куда подевался kabjans? Его 1492: Global Colonization. Глобальная Колонизация - интереснейшая работа! Если кто обладает
    какой-либо информацией по поводу этого мода и его автора, будьте любезны, сообщите. Заранее благодарю.
    продвинь это сообщение в соцсеть:  

  12. #12
    дайте новую ссылку на мод, в шапке не работает ничего
    продвинь это сообщение в соцсеть:  

  13. #13
    скачал последнюю версию революция и религия 2.5.1 и игра виснет где-то к 1600 году, уже 2 раза подряд. (сборка от 1С со всеми аддонами цивы и тд) лечится ли это зависание? p.s. зашел в редактор карты во время игры, стер все города противников с лица земли, пропустил ход и игра пошла дальше..значит баг связан с ИИ..геморой короче
    p.p.s. понял, что баг заключается в каком-то здании, вычислил какой город виснет игру, удалил там все здания и ход пошел, сейчас попытаюсь вычислить какое именно здание даёт ошибку
    p.p.p.s. и так, выяснил, что крашит игру storage house и warhouse, причем если отдельно их удалять, то проблема не проходит, а если оба сразу, то игра работает. Если кто знает, в чем тут магия, пожалуйста отпишитесь. Еще читал в описании версии мода, что нужно ставить на версию 1.0.1f, у меня же просто версия 1.0.1 от 1С, что это за f и где её взять? подозреваю, что баг как раз из-за этой версии в f заключается
    продвинь это сообщение в соцсеть:  
    Последний раз редактировалось Bonpoc; 27.02.2017 в 10:24.

+ Ответить в теме

Ваши права

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

free counters