Форумы Homeworld3.RU  

Go Back   Форумы Homeworld3.RU > Сделай сам! > Верфи близ Сарума [HW2 Modding]
Register Forum Rules FAQ Members List Calendar Today's Posts

Reply
 
Thread Tools
Quote
Old 10-06-2005, 12:44 PM   #1
Дрон01
Вице-адмиралAntic1tizen One
 
Дрон01's Avatar
 
Faction:
Кушане - киит Наабал

Join Date: Jul 2005
Location: Israel
Posts: 977
Лампочка

Пролог: "Машина должна работать, человек - думать" (с)International Business Machines
Этот трид, как вы уже, наверное, догадались, посвящен скриптингу AI, я его моддер; язык Lua (см. соседнюю темку). Итак, открываем папку ai. Что мы видим в этой папке? Праильно, файлы. Для тех, кто знает английский хоть чуть-чуть, листинг многих функций в этих файлах не представит труда т.к. имена функций выбраны осмысленно. Пока кратко о самих файлах.
1)Defailt.lua --Файл, исполняемый по умолчанию и, кстати, самый главный, запрос к нему выполняется в игре каждую секунду (у разных степеней сложности этот интервал варьируется по-разному). Подключение различных файлов как хидерных(т.е. главная программа имеет право брать из них функции) имеет вид "dofilepath(path)", вы его в начале многих скриптовых файлов будете видеть.
2)Cpubuild.lua --подключается в default.lua и, в свою очередь, подключает некоторый другие (щас не вспомню, но это не суть важно). Файл предназначен для обеспечения ИИ системами постройки кораблей. Кроме того, определяет типы кораблей для каждой расы в отдельности - что у них считается Батлом, а что перехватчиком. Приставка k (например, kBattleCruiser, kCarrier). Обозначает единственный корабль.
3)Cpuresearch.lua --Исследования, которые проводит комп. Крайне важны функции DoUpgradeDemand()(апгрейды) и DoREsearchTechDemand()(технологии)
4)Cpubuildsubsystem.lua --постройка субсистем. Очень спорный файлик, у многих из-за него проблемы, но мне всё понятно, так что обращайтесь.
5)vaygr_upgrades.lua и hiigaran_upgrades.lua(не помню, правильно назвал?) --Апгрейды кораблей (не технологии, именно апгрейды, не путайте!)
6)cpumilitary.lua --Все военные действия ИИ обеспечиваются здесь.
Ну, вроде всё!
Нет, не всё!
7)classdef.lua --про самое главное и забыл. В этом файле описание типов всех кораблей, кто против чего силён и слаб. Данные используются почти во всех скриптах, приставка e(обозначает не один корабль, целый класс, тут не путайте с приставкой k!) (например, eBuilder, eAntiFighter)

Тут, по-моему, надо небольшое лирическое отступление. Дело в том, что для классов и конкретных значений в Lua, да и в Хоуме, используются разные функции. Например, для класса "eBuilder", можно увидеть такую функцию: "ShipDemandAddByClass(eBuilder)" - типичная классовая фукция. Для конкретных кораблей это выглядит, например, так: "ShipDemandAdd(kScout)". Пояснения по этим функция да и многим другим, будут даны позже.

Итак, дело начато. Хотелось бы, чтоб мне кто-нить помог, да если всё это самому, без руководств осваивать - ИМХО лучше будет запомнить что к чему. So, The Journey Begins...

Ещё есть идея сделать специальную версию ИИ для дебага. В стадии разработки. Выводит каждый шаг ИИ в текстовый файл.

Да, вот вам архивчик, в нём пофиксенный архив ИИ для многострадального EX MODa. Если кто не знает, что с ним делать, см. Тему "Наши моды". Повторяю, архивчик ПОФИКСЕННЫЙ! Все праблы устранены.

З.Ы. St@lker {Fox} хей! Кто там у нас хвастался ассемблером? Дафай, за луу берись !
Attached Files
File Type: zip ai.zip (27.1 KB, 21 views)

Last edited by Ten : 06-23-2006 at 11:23 AM. Reason: мультпостинг
Дрон01 is offline   Reply With Quote
Old 10-29-2005, 10:04 AM   #2
stalker[fox]
Командир эскадрильиКомандир эскадрильи
 
stalker[fox]'s Avatar
 
Join Date: Jun 2005
Posts: 411
Ответ: Скрипты ai (папка data::ai)

2Дрон01
Смотрел их скрипты... честно, я разочарован надо же так облажатся. Товаришч. я тебе вот что скажу... давай мыло, я те исходники AI первого хомки скину... вот там AI так AI... расписываю что он там и как, ибо долго долго копался в файликах итак:
00. полная рандомизация, в зависимости от установок "ползунков" в настройках.
01. сбор статиски об игроке(т.е. тебя им любимого ).
02. подбор тактик и всего остального для каждого типа корабля на основе собранной статистики во время игры.
03. деление кораблей на отдельные группы в оптимальном сочитании защита/нападение.
04. возможность ведения командной игры с другим AI.
05. х.з. зачем, но так же сбор инфы о других AI и о том как они тебе или же ты им налил.
06. постоянное наблюдение за твоими действиями.
07. ресурсная война.
08. просчёт своих действий наперёд.
... перечислять можно ещё долго... там скриптов на 1,3 Метра в архиве по максимальному сжатию... в общем давай мыло

ЗЫ: Респект товарищу Страннику за ссылу на исходники хомки
stalker[fox] is offline   Reply With Quote
Old 10-30-2005, 04:25 AM   #3
Дрон01
Вице-адмиралAntic1tizen One
 
Дрон01's Avatar
 
Faction:
Кушане - киит Наабал

Join Date: Jul 2005
Location: Israel
Posts: 977
Ответ: Скрипты ai (папка data::ai)

Ну так внедряй во второй!
мыло kairllur@mail.ru
И это...надо с ползунками в UI Хомы второй разобраться - может и там что-нибудь подобное введём

Last edited by Дрон01 : 10-30-2005 at 04:29 AM.
Дрон01 is offline   Reply With Quote
Old 10-30-2005, 01:19 PM   #4
stalker[fox]
Командир эскадрильиКомандир эскадрильи
 
stalker[fox]'s Avatar
 
Join Date: Jun 2005
Posts: 411
Ответ: Скрипты ai (папка data::ai)

offtop:
2 Дрон01: выслал тебе на мылце архивчик сматри, наблюдай изучай))

а теперь по сабжу... переделать AI из первого хомяка под второй та ещё трабла, учитывая специфику LUA... довольно забавно выходит я конечно посмотрю что можно сделать, но что-то сильно сомневаюсь что выйдет что-либо дельное... ибо адаптированием AI одной версии под другую ещё не приходилось заниматся ну чтож)) где наша не пропадала?) наша пропадала везде
stalker[fox] is offline   Reply With Quote
Old 11-07-2005, 04:40 AM   #5
Дрон01
Вице-адмиралAntic1tizen One
 
Дрон01's Avatar
 
Faction:
Кушане - киит Наабал

Join Date: Jul 2005
Location: Israel
Posts: 977
Ответ: Скрипты ai (папка data::ai)

Идеи...тут смотреть и смотреть! обожди ещё погляжу, но что-то уже зреет...
кстати, насчёт как перевести. на домашнем сайте lua есть компиляторы-переводчики кода из одного языка в другой.
А ты кстати, чем занимаешься щас?

Last edited by Дрон01 : 11-07-2005 at 04:44 AM.
Дрон01 is offline   Reply With Quote
Old 11-07-2005, 07:47 AM   #6
stalker[fox]
Командир эскадрильиКомандир эскадрильи
 
stalker[fox]'s Avatar
 
Join Date: Jun 2005
Posts: 411
Ответ: Скрипты ai (папка data::ai)

я на данный момент сидю за компом и пялюсь в монитор в поисках знакомых букв! вооот)) а если совсем серьёзно то я щас занят написанием некоего подобия учебника для студентов родного универа по асьме... к тому же на той же асьме занимаюсь ярко выраженным геморроем типа обработчик мыши и клавы писякаю... точнее сказать я его уже написякал бякаю теперь эти функшены в дэлелельку

ГЫ)) вобщем неважно)) но факт остаётся фактом а фактически я сейчас с кое-каким народом разрабатываю новое ядро новой ОС... х.з. чё из этого получицЦа лиж бы не линух
ЗЫ: так что имхо ты меня зря пока редактором AI назначил... могу лишь вам в нём указывать на ваши же баги и объяснять чё и куда ибо занять

Сталк, я повыкусил здесь и ниже весь оффтоп, благо ты сам создал соответствующую ветвь
Тут оно тяжело смотрится, да и отвлекает от основной темы дискуссии, а вот там можно и продолжить...
=T=

Last edited by Ten : 06-23-2006 at 11:37 AM.
stalker[fox] is offline   Reply With Quote
Old 11-07-2005, 11:58 AM   #7
Ten
Главнокомандующийp2ambassador
 
Ten's Avatar
 
Faction:
Стражи Садов Кадеша

Join Date: Feb 2004
Location: Great Nebula
Posts: 2,550
Подмигивание Ответ: Скрипты ai (папка data::ai)

St@lkeR, эт ты из РДНовских исходников первого хомы файлы с АИ выковыривал? Скажи, плз, какие именно. Там вроде каски были (kas), в сингле, по крайней мере (конечный автомат, который ведал, куда/как отправлять корабли в зависимости от действий игрока). Как устроен интеллект в мульти, я не знаю, но сбор статистики с соответствующим анализом точно есть. Хотя, с точки зрения игрока, АИ в ХВ2 сильнее, если в первом я в лучшие времена разрывал всю семёрку (которая в союзе, все ползунки в max правом положении), то во втором больше двух не получалось (впрочем, не особо и стремился ).

Last edited by Ten : 06-23-2006 at 11:39 AM. Reason: вырезал оффтоп
Ten is offline   Reply With Quote
Old 11-07-2005, 05:51 PM   #8
stalker[fox]
Командир эскадрильиКомандир эскадрильи
 
stalker[fox]'s Avatar
 
Join Date: Jun 2005
Posts: 411
Ответ: Скрипты ai (папка data::ai)

оффтоп не спорю, но всёже...
2Ten
ссыла с исходниками мертва... если хочешь, вышлю на мыльце полный эдишн, только мыло дай... и это, отошлю как карточку новую куплю... на этой инета всего ничего
ЗЫ: там порядка 78 метров исходников... кароче, в ихнем сетапе где-то около 20 так что, Ten, заводи мыло соответствующих размеров

Last edited by stalker[fox] : 11-07-2005 at 05:53 PM.
stalker[fox] is offline   Reply With Quote
Old 11-08-2005, 09:40 AM   #9
Ten
Главнокомандующийp2ambassador
 
Ten's Avatar
 
Faction:
Стражи Садов Кадеша

Join Date: Feb 2004
Location: Great Nebula
Posts: 2,550
Ответ: Скрипты ai (папка data::ai)

Quote:
Originally Posted by St@lkeR{FoX}
ссыла с исходниками мертва... если хочешь, вышлю на мыльце полный эдишн, только мыло дай... и это, отошлю как карточку новую куплю...
Спасибо, но не надо, я себе эти исходники ещё год назад скачал - ссылка вполне рабочая, только что проверил. Я имел ввиду, какие именно файлы отвечают за ИИ (эти 17Мб разворачиваются в 76, пойди найди, где и что).

Last edited by Ten : 06-23-2006 at 11:30 AM. Reason: вырезал оффтоп
Ten is offline   Reply With Quote
Old 11-08-2005, 03:34 PM   #10
stalker[fox]
Командир эскадрильиКомандир эскадрильи
 
stalker[fox]'s Avatar
 
Join Date: Jun 2005
Posts: 411
Ответ: Скрипты ai (папка data::ai)

2Ten
адресок как они у меня живуть:
c:\Program Files\Relic Developer's Network\Homeworld Source\src\Game\
файлики которые начинаются естессна с AI ну и там глянешь какие директивой include подрубаются к ним... кароче почти вся папка Game

Last edited by stalker[fox] : 11-08-2005 at 03:42 PM.
stalker[fox] is offline   Reply With Quote
Old 11-20-2013, 12:09 PM   #11
Хранитель
МичманВ запасе
 
Хранитель's Avatar
 
Faction:
Предтечи

Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
Re: Скрипты ai (папка data::ai)

так, Дрон давай рассказывай мне всё, буду руководство делать))) а то нельзя так чтобы ничо ничо не было на форуме про ИИ
З.Ы. и самому надо очень)))

Добавлено через 2 минуты
ууу... да вас тут никого нету... беда пичаль горе огорчение.. ну в общем напишите как зайдёте

Last edited by Хранитель : 11-20-2013 at 12:12 PM. Reason: добавлено сообщение
Хранитель is offline   Reply With Quote
Old 11-24-2013, 01:29 PM   #12
Дрон01
Вице-адмиралAntic1tizen One
 
Дрон01's Avatar
 
Faction:
Кушане - киит Наабал

Join Date: Jul 2005
Location: Israel
Posts: 977
Re: Скрипты ai (папка data::ai)

Ну вы, батенька, даёте.

Тишь да гладь на Верфях, позабыто всё.
Эти скрипты, которые я написал в 2005-м, были первым, что я вообще самостоятельно сделал на ниве программирования, от совершенства они далеки.

Но насколько я помню в паке с RDN (официальное SDK от Релика для HW2) был гайд по созданию своей расы - и в том числе ИИ для неё. Найдёте?
Дрон01 is offline   Reply With Quote
Old 03-17-2014, 07:29 AM   #13
Хранитель
МичманВ запасе
 
Хранитель's Avatar
 
Faction:
Предтечи

Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
Re: Скрипты ai (папка data::ai)

Code:
   1:  function `oninit' at line 38 [string ""]
 CPUPLAYER -- error in CPUPlayer: oninit() function was not found in CPU script -- FATAL EXIT --
помогите пожалуйста, что это значит?

Добавлено через 36 секунд
что за onint такой? что он делает?

Добавлено через 5 минут
охохо) только что нашел вашу папку с комментами) вот я слепошара) смпасибо) есть над чем работать)

Last edited by Хранитель : 03-17-2014 at 07:35 AM. Reason: добавлено сообщение
Хранитель is offline   Reply With Quote
Old 03-20-2014, 07:36 AM   #14
Хранитель
МичманВ запасе
 
Хранитель's Avatar
 
Faction:
Предтечи

Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
Re: Скрипты ai (папка data::ai)

вот блин.. боюсь я не смогу один разобраться..

Добавлено через 7 часов 42 минуты
Code:
stack traceback:
   1:  function `dofilepath' [C]
   2:  main of string "" at line 9
 parameter: attempt to call global `CpuBuild_Init' (a nil value)
stack traceback:
   1:  function `oninit' at line 38 [string ""]
 CPUPLAYER -- error in CPUPlayer: oninit() function was not found in CPU script -- FATAL EXIT --
объясните чо он ноет а(( я вроде все как надо делал(
вот в cpubuild начало:
Code:
function CreateBuildDefinitions()
    if  s_race==Race_Hiigaran then
        kCollector = HGN_RESOURCECOLLECTOR
        kRefinery = HGN_RESOURCECONTROLLER
        kScout = HGN_SCOUT
        kInterceptor = HGN_INTERCEPTOR
        kBomber = HGN_ATTACKBOMBER
        kCarrier = HGN_CARRIER
        kShipYard = HGN_SHIPYARD
        kDestroyer = HGN_DESTROYER
        kBattleCruiser = HGN_BATTLECRUISER
    elseif s_race==Race_Vaygr then
        kCollector = VGR_RESOURCECOLLECTOR
        kRefinery = VGR_RESOURCECONTROLLER
        kScout = VGR_SCOUT
        kInterceptor = VGR_INTERCEPTOR
        kBomber = VGR_BOMBER
        kCarrier = VGR_CARRIER
        kShipYard = VGR_SHIPYARD
        kDestroyer = VGR_DESTROYER
        kBattleCruiser = VGR_BATTLECRUISER
    else
        kCollector = TBR_RESOURCECOLLECTOR
        kRefinery = TBR_RESOURCECONTROLLER
        kScout = TBR_SCOUT
        kInterceptor = TBR_INTERCEPTOR
        kBomber = TBR_BOMBER
        kCarrier = TBR_CARRIER
        kShipYard = TBR_SHIPYARD
        kDestroyer = TBR_DESTROYER
        kBattleCruiser = TBR_BATTLECRUISER
    end

end
вот начало cpubuildsubsystem :
Code:
function CpuBuildSS_Init()
    if  s_race==Race_Hiigaran then
        CpuBuildSS_DefaultSubSystemDemandRules = DoSubSystemDemand_Hiigaran

    elseif  s_race==Race_Vaygr then
        CpuBuildSS_DefaultSubSystemDemandRules = DoSubSystemDemand_Vaygr
    else
        CpuBuildSS_DefaultSubSystemDemandRules = DoSubSystemDemand_Tobari
    end

    sg_lastSpecialSubSysTime = 0
    sg_specialSubSysDelayTime = (150 + Rand(100))
    sg_retireCountCheck = 0
    sg_buildBCHyperspace = 1
end
а вот начало в cpuresearch:
Code:
function CpuResearch_Init()
    if  s_race==Race_Hiigaran then
        dofilepath("data:ai/hiigaran_upgrades.lua")
        DoUpgradeDemand = DoUpgradeDemand_Hiigaran
        DoResearchTechDemand = DoResearchTechDemand_Hiigaran
    elseif  s_race==Race_Vaygr then
        dofilepath("data:ai/vaygr_upgrades.lua")
        DoUpgradeDemand = DoUpgradeDemand_Vaygr
        DoResearchTechDemand = DoResearchTechDemand_Vaygr
    else
        dofilepath("data:ai/tobari_upgrades.lua")
        DoUpgradeDemand = DoUpgradeDemand_Tobari
        DoResearchTechDemand = DoResearchTechDemand_Tobari
    end

    sg_lastUpgradeTime = gameTime()
    sg_upgradeDelayTime = (180 + Rand(80))
    cp_researchDemandRange = 0.5
    if  g_LOD==1 then
        cp_researchDemandRange = 1
    end

    if  g_LOD==0 then
        cp_researchDemandRange = 2
    end

    if  Override_ResearchInit then
        Override_ResearchInit()
    end

end
это tobari_upgrades.lua :
Code:
-- LuaDC version 0.9.20
-- 20.11.2013 14:58:48
-- LuaDC by Age2uN
-- on error send source file (compiled lua) and this outputfile to Age2uN@gmx.net
--
aitrace("LOADING TOBARI UPGRADE INFO")
rt_mothership =
    {}
rt_capital =
    {}
rt_fighter =
    {}
rt_corvette =
    {}
rt_frigate =
    {}
rt_platform =
    {}
rt_collector =
    {}
в класдефе я все прописал, ну чего этой ныте еще надо сам цпубюлд цпублюдсубсистем и цпуресерч я потом прописывать буду не думаю что это надо щас ( помогите плиз пож(

Last edited by Хранитель : 03-20-2014 at 03:18 PM. Reason: добавлено сообщение
Хранитель is offline   Reply With Quote
Old 03-20-2014, 10:14 PM   #15
karak
Командир эскадрильиБезмолвный Страж
 
Faction:
Налториане

Join Date: May 2010
Location: Sol system, SS 13
Posts: 234
Re: Скрипты ai (папка data::ai)

Хранитель, нашёл похожую тему на форуме реликов, и там предлагают использовать полностью декомпилированную папку со скриптами. А ещё от себя рекомендую пользоваться notepad++ или другим подобным редактором вместо стандартного блокнота. Попробуй, вдруг этот решит твою проблему.
karak is offline   Reply With Quote
Old 03-20-2014, 11:16 PM   #16
Дрон01
Вице-адмиралAntic1tizen One
 
Дрон01's Avatar
 
Faction:
Кушане - киит Наабал

Join Date: Jul 2005
Location: Israel
Posts: 977
Re: Скрипты ai (папка data::ai)

Гайды по работе со скриптами шли в комплекте к RDN! Там же внутри как раз полностью декомпилированная папка с ai есть.

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

Если хоть немного знаете английский, я думаю, разберётесь с архивом.

Пишите, что ещё непонятно, поможем.
Дрон01 is offline   Reply With Quote
Old 03-21-2014, 06:16 AM   #17
Chimas
РядовойВ запасе
 
Chimas's Avatar
 
Join Date: Mar 2014
Location: Rio Grande do Sul
Posts: 11
Re: Скрипты ai (папка data::ai)

The link KARAK provided are the decompiled files most of the modders use as a base for editing HW2. I noticed that many ppl use notepad++, but I use SCITE for editing LUA files.

Also, sometimes HW2.log (that is created using -luatrace parameter in the command line) warns you about the lack of ONINIT function although the function is there where it's supposed to be. Don't wahy it happens.

And eventually, if HW2.LOG doesn't tell you clearly why it is crashing, might be a recent edit inside a HOD file, so check for the last HOD files edited, there might be something missing in there.
Chimas is offline   Reply With Quote
Old 03-21-2014, 11:08 AM   #18
Хранитель
МичманВ запасе
 
Хранитель's Avatar
 
Faction:
Предтечи

Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
Re: Скрипты ai (папка data::ai)

ого О_О, спасибо огромное, думаю поможет

Добавлено через 1 минуту
а интересно как самому ПОЛНОСТЬЮ декомпилировать, а?)

Last edited by Хранитель : 03-21-2014 at 11:09 AM. Reason: добавлено сообщение
Хранитель is offline   Reply With Quote
Old 03-21-2014, 04:39 PM   #19
Дрон01
Вице-адмиралAntic1tizen One
 
Дрон01's Avatar
 
Faction:
Кушане - киит Наабал

Join Date: Jul 2005
Location: Israel
Posts: 977
Re: Скрипты ai (папка data::ai)

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

LuaDC вообще очень хороший декомпилятор, в 90% случаев получаешь то, что и было на входе. Но порою съедает таблицы и функции, на которые, по его мнению, нет ссылок.

А на INITы как раз и нет, поскольку их вызывает движок игры, а не другие LUA-файлы.
Дрон01 is offline   Reply With Quote
Old 03-22-2014, 05:56 AM   #20
Хранитель
МичманВ запасе
 
Хранитель's Avatar
 
Faction:
Предтечи

Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
Re: Скрипты ai (папка data::ai)

Quote:
Originally Posted by Дрон01 View Post
Никак. Все декомпиляторы не могут восстановить исходный код в точности таким, каким он был. Затираются имена переменных, типы, классы, инлайнятся многие функции, оптимизируется прогонами код.

LuaDC вообще очень хороший декомпилятор, в 90% случаев получаешь то, что и было на входе. Но порою съедает таблицы и функции, на которые, по его мнению, нет ссылок.

А на INITы как раз и нет, поскольку их вызывает движок игры, а не другие LUA-файлы.
но ведь та папка полностью декомпилирована. значит как то это сделали.. вот я и спрашиваю как сделали..

Добавлено через 1 минуту
так. я намерен писать гайд по созданию ИИ. мне можно создать новую тему или прям тут писать?

Last edited by Хранитель : 03-22-2014 at 05:58 AM. Reason: добавлено сообщение
Хранитель is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +3. The time now is 06:48 AM.

Page generated: 0.145 seconds (90.52% - PHP and 9.48% - MySQL), 12 queries total