![]() |
1 Attachment(s)
Пролог: "Машина должна работать, человек - думать" (с)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} хей! Кто там у нас хвастался ассемблером? Дафай, за луу берись :p :) ! |
Ответ: Скрипты ai (папка data::ai)
2Дрон01
Смотрел их скрипты... честно, я разочарован :( надо же так облажатся. Товаришч. я тебе вот что скажу... давай мыло, я те исходники AI первого хомки скину... вот там AI так AI... расписываю что он там и как, ибо долго долго копался в файликах :) итак: 00. полная рандомизация, в зависимости от установок "ползунков" в настройках. 01. сбор статиски об игроке(т.е. тебя им любимого :)). 02. подбор тактик и всего остального для каждого типа корабля на основе собранной статистики во время игры. 03. деление кораблей на отдельные группы в оптимальном сочитании защита/нападение. 04. возможность ведения командной игры с другим AI. 05. х.з. зачем, но так же сбор инфы о других AI и о том как они тебе или же ты им налил. 06. постоянное наблюдение за твоими действиями. 07. ресурсная война. 08. просчёт своих действий наперёд. ... перечислять можно ещё долго... там скриптов на 1,3 Метра в архиве по максимальному сжатию... в общем давай мыло :) ЗЫ: Респект товарищу Страннику за ссылу на исходники хомки :) |
Ответ: Скрипты ai (папка data::ai)
Ну так внедряй во второй!
мыло kairllur@mail.ru И это...надо с ползунками в UI Хомы второй разобраться - может и там что-нибудь подобное введём ;) |
Ответ: Скрипты ai (папка data::ai)
offtop:
2 Дрон01: выслал тебе на мылце архивчик :) сматри, наблюдай :) изучай)) а теперь по сабжу... переделать AI из первого хомяка под второй та ещё трабла, учитывая специфику LUA... довольно забавно выходит :) я конечно посмотрю что можно сделать, но что-то сильно сомневаюсь что выйдет что-либо дельное... ибо адаптированием AI одной версии под другую ещё не приходилось заниматся :) ну чтож)) где наша не пропадала?) наша пропадала везде :) |
Ответ: Скрипты ai (папка data::ai)
Идеи...тут смотреть и смотреть! обожди ещё погляжу, но что-то уже зреет...
кстати, насчёт как перевести. на домашнем сайте lua есть компиляторы-переводчики кода из одного языка в другой. А ты кстати, чем занимаешься щас? |
Ответ: Скрипты ai (папка data::ai)
я на данный момент сидю за компом и пялюсь в монитор в поисках знакомых букв! :D вооот)) а если совсем серьёзно то я щас занят написанием некоего подобия учебника для студентов родного универа по асьме... к тому же на той же асьме занимаюсь ярко выраженным геморроем типа обработчик мыши и клавы писякаю... точнее сказать я его уже написякал бякаю теперь эти функшены в дэлелельку :)
ГЫ)) вобщем неважно)) но факт остаётся фактом :) а фактически я сейчас с кое-каким народом разрабатываю новое ядро новой ОС... х.з. чё из этого получицЦа :) лиж бы не линух :D ЗЫ: так что имхо ты меня зря пока редактором AI назначил... могу лишь вам в нём указывать на ваши же баги :) и объяснять чё и куда :) ибо занять :( Сталк, я повыкусил здесь и ниже весь оффтоп, благо ты сам создал соответствующую ветвь ;) Тут оно тяжело смотрится, да и отвлекает от основной темы дискуссии, а вот там можно и продолжить... :D =T= |
Ответ: Скрипты ai (папка data::ai)
St@lkeR, эт ты из РДНовских исходников первого хомы файлы с АИ выковыривал? Скажи, плз, какие именно. Там вроде каски были (kas), в сингле, по крайней мере (конечный автомат, который ведал, куда/как отправлять корабли в зависимости от действий игрока). Как устроен интеллект в мульти, я не знаю, но сбор статистики с соответствующим анализом точно есть. Хотя, с точки зрения игрока, АИ в ХВ2 сильнее, если в первом я в лучшие времена :rolleyes: разрывал всю семёрку (которая в союзе, все ползунки в max правом положении), то во втором больше двух не получалось (впрочем, не особо и стремился ;)).
|
Ответ: Скрипты ai (папка data::ai)
оффтоп не спорю, но всёже...
2Ten ссыла с исходниками мертва... если хочешь, вышлю на мыльце полный эдишн, только мыло дай... и это, отошлю как карточку новую куплю... на этой инета всего ничего :) ЗЫ: там порядка 78 метров исходников... кароче, в ихнем сетапе где-то около 20 :) так что, Ten, заводи мыло соответствующих размеров :) |
Ответ: Скрипты ai (папка data::ai)
Quote:
|
Ответ: Скрипты ai (папка data::ai)
2Ten
адресок как они у меня живуть: c:\Program Files\Relic Developer's Network\Homeworld Source\src\Game\ файлики которые начинаются естессна с AI ;) :) ну и там глянешь какие директивой include подрубаются к ним... кароче почти вся папка Game :) |
Re: Скрипты ai (папка data::ai)
так, Дрон давай рассказывай мне всё, буду руководство делать))) а то нельзя так чтобы ничо ничо не было на форуме про ИИ
З.Ы. и самому надо очень))) Добавлено через 2 минуты ууу... да вас тут никого нету... беда пичаль горе огорчение.. ну в общем напишите как зайдёте |
Re: Скрипты ai (папка data::ai)
Ну вы, батенька, даёте.
Тишь да гладь на Верфях, позабыто всё. Эти скрипты, которые я написал в 2005-м, были первым, что я вообще самостоятельно сделал на ниве программирования, от совершенства они далеки. Но насколько я помню в паке с RDN (официальное SDK от Релика для HW2) был гайд по созданию своей расы - и в том числе ИИ для неё. Найдёте? |
Re: Скрипты ai (папка data::ai)
Code:
1: function `oninit' at line 38 [string ""] Добавлено через 36 секунд что за onint такой? что он делает? Добавлено через 5 минут охохо) только что нашел вашу папку с комментами) вот я слепошара) смпасибо) есть над чем работать) |
Re: Скрипты ai (папка data::ai)
вот блин.. боюсь я не смогу один разобраться..
Добавлено через 7 часов 42 минуты Code:
stack traceback: вот в cpubuild начало: Code:
function CreateBuildDefinitions() Code:
function CpuBuildSS_Init() Code:
function CpuResearch_Init() Code:
-- LuaDC version 0.9.20 |
Re: Скрипты ai (папка data::ai)
Хранитель, нашёл похожую тему на форуме реликов, и там предлагают использовать полностью декомпилированную папку со скриптами. А ещё от себя рекомендую пользоваться notepad++ или другим подобным редактором вместо стандартного блокнота. Попробуй, вдруг этот решит твою проблему.
|
Re: Скрипты ai (папка data::ai)
Гайды по работе со скриптами шли в комплекте к RDN! Там же внутри как раз полностью декомпилированная папка с ai есть.
Я предупреждаю - не стоит пихать декомпилированные вручную файлы обратно в игру - от этого очень часто всё ломается. Если хоть немного знаете английский, я думаю, разберётесь с архивом. Пишите, что ещё непонятно, поможем. |
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. |
Re: Скрипты ai (папка data::ai)
ого О_О, спасибо огромное, думаю поможет
Добавлено через 1 минуту а интересно как самому ПОЛНОСТЬЮ декомпилировать, а?) |
Re: Скрипты ai (папка data::ai)
Никак. Все декомпиляторы не могут восстановить исходный код в точности таким, каким он был. Затираются имена переменных, типы, классы, инлайнятся многие функции, оптимизируется прогонами код.
LuaDC вообще очень хороший декомпилятор, в 90% случаев получаешь то, что и было на входе. Но порою съедает таблицы и функции, на которые, по его мнению, нет ссылок. А на INITы как раз и нет, поскольку их вызывает движок игры, а не другие LUA-файлы. |
Re: Скрипты ai (папка data::ai)
Quote:
Добавлено через 1 минуту так. я намерен писать гайд по созданию ИИ. мне можно создать новую тему или прям тут писать? |
All times are GMT +3. The time now is 10:55 PM. |