![]() |
|
|||||||
| 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
Смотрел их скрипты... честно, я разочарован надо же так облажатся. Товаришч. я тебе вот что скажу... давай мыло, я те исходники AI первого хомки скину... вот там AI так AI... расписываю что он там и как, ибо долго долго копался в файликах итак: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... довольно забавно выходит я конечно посмотрю что можно сделать, но что-то сильно сомневаюсь что выйдет что-либо дельное... ибо адаптированием AI одной версии под другую ещё не приходилось заниматся ну чтож)) где наша не пропадала?) наша пропадала везде ![]() |
||
|
|
|
|
|
#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,563
|
St@lkeR, эт ты из РДНовских исходников первого хомы файлы с АИ выковыривал? Скажи, плз, какие именно. Там вроде каски были (kas), в сингле, по крайней мере (конечный автомат, который ведал, куда/как отправлять корабли в зависимости от действий игрока). Как устроен интеллект в мульти, я не знаю, но сбор статистики с соответствующим анализом точно есть. Хотя, с точки зрения игрока, АИ в ХВ2 сильнее, если в первом я в лучшие времена
разрывал всю семёрку (которая в союзе, все ползунки в max правом положении), то во втором больше двух не получалось (впрочем, не особо и стремился ).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 так что, Ten, заводи мыло соответствующих размеров ![]() Last edited by stalker[fox] : 11-07-2005 at 05:53 PM. |
||
|
|
|
|
|
#9 | |||
|
Ten
Faction: Стражи Садов Кадеша Join Date: Feb 2004
Location: Great Nebula
Posts: 2,563
|
Ответ: Скрипты 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 ну и там глянешь какие директивой include подрубаются к ним... кароче почти вся папка Game ![]() 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) | |
|
|
|||||