![]() |
|
Register | Forum Rules | FAQ | Members List | Calendar | Today's Posts | Search |
![]() |
|
Thread Tools |
![]() |
#1 | ||
Дрон01
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} хей! Кто там у нас хвастался ассемблером? Дафай, за луу берись ![]() ![]() Last edited by Ten : 06-23-2006 at 11:23 AM. Reason: мультпостинг |
||
![]() |
![]() |
![]() |
#2 | ||
stalker[fox]
Join Date: Jun 2005
Posts: 411
|
Ответ: Скрипты ai (папка data::ai)
2Дрон01
Смотрел их скрипты... честно, я разочарован ![]() ![]() 00. полная рандомизация, в зависимости от установок "ползунков" в настройках. 01. сбор статиски об игроке(т.е. тебя им любимого ![]() 02. подбор тактик и всего остального для каждого типа корабля на основе собранной статистики во время игры. 03. деление кораблей на отдельные группы в оптимальном сочитании защита/нападение. 04. возможность ведения командной игры с другим AI. 05. х.з. зачем, но так же сбор инфы о других AI и о том как они тебе или же ты им налил. 06. постоянное наблюдение за твоими действиями. 07. ресурсная война. 08. просчёт своих действий наперёд. ... перечислять можно ещё долго... там скриптов на 1,3 Метра в архиве по максимальному сжатию... в общем давай мыло ![]() ЗЫ: Респект товарищу Страннику за ссылу на исходники хомки ![]() |
||
![]() |
![]() |
![]() |
#3 | ||
Дрон01
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. |
||
![]() |
![]() |
![]() |
#4 | ||
stalker[fox]
Join Date: Jun 2005
Posts: 411
|
Ответ: Скрипты ai (папка data::ai)
offtop:
2 Дрон01: выслал тебе на мылце архивчик ![]() ![]() а теперь по сабжу... переделать AI из первого хомяка под второй та ещё трабла, учитывая специфику LUA... довольно забавно выходит ![]() ![]() ![]() |
||
![]() |
![]() |
![]() |
#5 | ||
Дрон01
Faction: Кушане - киит Наабал Join Date: Jul 2005
Location: Israel
Posts: 977
|
Ответ: Скрипты ai (папка data::ai)
Идеи...тут смотреть и смотреть! обожди ещё погляжу, но что-то уже зреет...
кстати, насчёт как перевести. на домашнем сайте lua есть компиляторы-переводчики кода из одного языка в другой. А ты кстати, чем занимаешься щас? Last edited by Дрон01 : 11-07-2005 at 04:44 AM. |
||
![]() |
![]() |
![]() |
#6 | ||
stalker[fox]
Join Date: Jun 2005
Posts: 411
|
Ответ: Скрипты ai (папка data::ai)
я на данный момент сидю за компом и пялюсь в монитор в поисках знакомых букв!
![]() ![]() ГЫ)) вобщем неважно)) но факт остаётся фактом ![]() ![]() ![]() ЗЫ: так что имхо ты меня зря пока редактором AI назначил... могу лишь вам в нём указывать на ваши же баги ![]() ![]() ![]() Сталк, я повыкусил здесь и ниже весь оффтоп, благо ты сам создал соответствующую ветвь ![]() Тут оно тяжело смотрится, да и отвлекает от основной темы дискуссии, а вот там можно и продолжить... ![]() =T= Last edited by Ten : 06-23-2006 at 11:37 AM. |
||
![]() |
![]() |
![]() |
#7 | ||
Ten
Faction: Стражи Садов Кадеша Join Date: Feb 2004
Location: Great Nebula
Posts: 2,550
|
![]() St@lkeR, эт ты из РДНовских исходников первого хомы файлы с АИ выковыривал? Скажи, плз, какие именно. Там вроде каски были (kas), в сингле, по крайней мере (конечный автомат, который ведал, куда/как отправлять корабли в зависимости от действий игрока). Как устроен интеллект в мульти, я не знаю, но сбор статистики с соответствующим анализом точно есть. Хотя, с точки зрения игрока, АИ в ХВ2 сильнее, если в первом я в лучшие времена
![]() ![]() Last edited by Ten : 06-23-2006 at 11:39 AM. Reason: вырезал оффтоп |
||
![]() |
![]() |
![]() |
#8 | ||
stalker[fox]
Join Date: Jun 2005
Posts: 411
|
Ответ: Скрипты ai (папка data::ai)
оффтоп не спорю, но всёже...
2Ten ссыла с исходниками мертва... если хочешь, вышлю на мыльце полный эдишн, только мыло дай... и это, отошлю как карточку новую куплю... на этой инета всего ничего ![]() ЗЫ: там порядка 78 метров исходников... кароче, в ихнем сетапе где-то около 20 ![]() ![]() Last edited by stalker[fox] : 11-07-2005 at 05:53 PM. |
||
![]() |
![]() |
![]() |
#9 | |||
Ten
Faction: Стражи Садов Кадеша Join Date: Feb 2004
Location: Great Nebula
Posts: 2,550
|
Ответ: Скрипты ai (папка data::ai)
Quote:
Last edited by Ten : 06-23-2006 at 11:30 AM. Reason: вырезал оффтоп |
|||
![]() |
![]() |
![]() |
#10 | ||
stalker[fox]
Join Date: Jun 2005
Posts: 411
|
Ответ: Скрипты ai (папка data::ai)
2Ten
адресок как они у меня живуть: c:\Program Files\Relic Developer's Network\Homeworld Source\src\Game\ файлики которые начинаются естессна с AI ![]() ![]() ![]() Last edited by stalker[fox] : 11-08-2005 at 03:42 PM. |
||
![]() |
![]() |
![]() |
#11 | ||
Хранитель
Faction: Предтечи Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
|
Re: Скрипты ai (папка data::ai)
так, Дрон давай рассказывай мне всё, буду руководство делать))) а то нельзя так чтобы ничо ничо не было на форуме про ИИ
З.Ы. и самому надо очень))) Добавлено через 2 минуты ууу... да вас тут никого нету... беда пичаль горе огорчение.. ну в общем напишите как зайдёте Last edited by Хранитель : 11-20-2013 at 12:12 PM. Reason: добавлено сообщение |
||
![]() |
![]() |
![]() |
#12 | ||
Дрон01
Faction: Кушане - киит Наабал Join Date: Jul 2005
Location: Israel
Posts: 977
|
Re: Скрипты ai (папка data::ai)
Ну вы, батенька, даёте.
Тишь да гладь на Верфях, позабыто всё. Эти скрипты, которые я написал в 2005-м, были первым, что я вообще самостоятельно сделал на ниве программирования, от совершенства они далеки. Но насколько я помню в паке с RDN (официальное SDK от Релика для HW2) был гайд по созданию своей расы - и в том числе ИИ для неё. Найдёте? |
||
![]() |
![]() |
![]() |
#13 | ||
Хранитель
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: добавлено сообщение |
||
![]() |
![]() |
![]() |
#14 | ||
Хранитель
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 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 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 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: добавлено сообщение |
||
![]() |
![]() |
![]() |
#15 | ||
karak
Faction: Налториане Join Date: May 2010
Location: Sol system, SS 13
Posts: 234
|
Re: Скрипты ai (папка data::ai)
Хранитель, нашёл похожую тему на форуме реликов, и там предлагают использовать полностью декомпилированную папку со скриптами. А ещё от себя рекомендую пользоваться notepad++ или другим подобным редактором вместо стандартного блокнота. Попробуй, вдруг этот решит твою проблему.
|
||
![]() |
![]() |
![]() |
#16 | ||
Дрон01
Faction: Кушане - киит Наабал Join Date: Jul 2005
Location: Israel
Posts: 977
|
Re: Скрипты ai (папка data::ai)
Гайды по работе со скриптами шли в комплекте к RDN! Там же внутри как раз полностью декомпилированная папка с ai есть.
Я предупреждаю - не стоит пихать декомпилированные вручную файлы обратно в игру - от этого очень часто всё ломается. Если хоть немного знаете английский, я думаю, разберётесь с архивом. Пишите, что ещё непонятно, поможем. |
||
![]() |
![]() |
![]() |
#17 | ||
Chimas
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. |
||
![]() |
![]() |
![]() |
#18 | ||
Хранитель
Faction: Предтечи Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
|
Re: Скрипты ai (папка data::ai)
ого О_О, спасибо огромное, думаю поможет
Добавлено через 1 минуту а интересно как самому ПОЛНОСТЬЮ декомпилировать, а?) Last edited by Хранитель : 03-21-2014 at 11:09 AM. Reason: добавлено сообщение |
||
![]() |
![]() |
![]() |
#19 | ||
Дрон01
Faction: Кушане - киит Наабал Join Date: Jul 2005
Location: Israel
Posts: 977
|
Re: Скрипты ai (папка data::ai)
Никак. Все декомпиляторы не могут восстановить исходный код в точности таким, каким он был. Затираются имена переменных, типы, классы, инлайнятся многие функции, оптимизируется прогонами код.
LuaDC вообще очень хороший декомпилятор, в 90% случаев получаешь то, что и было на входе. Но порою съедает таблицы и функции, на которые, по его мнению, нет ссылок. А на INITы как раз и нет, поскольку их вызывает движок игры, а не другие LUA-файлы. |
||
![]() |
![]() |
![]() |
#20 | |||
Хранитель
Faction: Предтечи Join Date: Feb 2013
Location: Нижневартовск
Posts: 51
|
Re: Скрипты ai (папка data::ai)
Quote:
Добавлено через 1 минуту так. я намерен писать гайд по созданию ИИ. мне можно создать новую тему или прям тут писать? Last edited by Хранитель : 03-22-2014 at 05:58 AM. Reason: добавлено сообщение |
|||
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|