Приветствуем, геймер! Ты можешь или
16+
Member2

Геймер radzh 13

15

Некоторое улучшение производительности

Графическая составляющая не тормозит, нет.

Тормозит ИИ, так называемый "искусственный интеллект".

ИИ в "Дне Победы 3" написан большей частью на языке программирования Lua. Язык сам по себе совершенно гениальный, - маленький, простой и поразительно элегантный, - почему и завоевал такую высокую популярность в игрострое.

К сожалению, Парадоксы несколько неправильно его используют: например, оригинальная реализация ИИ устроена таким образом, что каждая страна пытается пять раз в секунду заключить торговую сделку. Хоть с кем-то. Хоть какую-то.

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

Откройте любым текстовым редактором файл scripts/ai_foreign_minister.lua, найдите в нём функцию ForeignMinister_Tick и замените её следующей:

function ForeignMinister_Tick(minister)

local score = math.mod(CCurrentGameState.GetAIRand(), 5)

minister:ExecuteDiploDecisions()

if score > 0 then

return 0

end

ForeignMinister_HandlePeace(minister)

if minister:GetCountry():IsAtWar() then

ForeignMinister_HandleWar(minister)

end

end

Красивые отступы добавьте по вкусу.

Сходным образом поступим и с файлом scripts/ai_intelligence_minister.lua, только менять будем функцию IntelligenceMinister_Tick:

function IntelligenceMinister_Tick(minister)

local ministerTag = minister:GetCountryTag()

local ministerCountry = minister:GetCountry()

local ai = minister:GetOwnerAI()

local score = math.mod(CCurrentGameState.GetAIRand(), 2)

if score > 0 then

return 0

end

ManageSpiesAtHome(minister, ministerTag, ministerCountry, ai)

ManageSpiesAbroad(minister, ministerTag, ministerCountry, ai)

end

Всё. Теперь ИИ научился думать гораздо быстрее.

15
Еще в блоге
Интересное на Gamer.ru

1 комментарий к «Некоторое улучшение производительности»

    Загружается
Чат