Пришла тут в голову одна идея. У нас есть почти рабочий компилятор ИИ из билда 2215. По словам Zeed-a поменялись форматы, в связи с этим у меня возникла идея переписать уже существующий компилятор на нынешние форматы, хватит ждать у моря погоды и терпеть неуважение руководства ПЫС к комьюнити, надо брать ситуацию в свои руки.
Zeed постучи в аську, обсудим.
Присоединяйтесь все, кто считает, что может чем то помочь, например: разбором новых форматов, особенно приветствуются бывшие и нынешние крэкеры и просто программисты, пишите в личку, обсудим.
[empr]
12.07.2007, 12:54
Программист, сделаю нормальный интерфейс.
Was added in 15 seconds:
В icq договоримся...
dev1ce
12.07.2007, 13:08
Empro Тут нужны знания ассемблера и реверс-инженеринга. Сдался им твой васик -)
Mechanic
12.07.2007, 17:08
Ну...инфы маловато. IDA в руки и гоу изучать.
з.ы Чего тут программировать-то? Разьве что DLL с WriteProccessMemory.
Neo][
12.07.2007, 17:11
Цитата
Empro Тут нужны знания ассемблера и реверс-инженеринга. Сдался им твой васик -)
dev, в точку.
Цитата
Программист, сделаю нормальный интерфейс. Was added in 15 seconds: В icq договоримся...
Empro, по крайней мере пока, мы не собираемся писать компилятор полностью с нуля.
[empr]
12.07.2007, 18:58
dev, перестань меня смешить... На том же vb были написаны многия выдающиеся проекты.
Neo][, а собираетесь дизассемблировать существующий?
Mechanic
12.07.2007, 20:01
Цитата
а собираетесь дизассемблировать существующий?
А есть другие предложения?
NOsoft
13.07.2007, 17:25
Идея Оч хороша, особенно на фоне отношения разрабов ((( Главное чтоб у Вас руки неопустились !!!
Заметьте СДК вышел чуть раньше, чем закончилась работа над редактором карт (Batya)
мож и с компилером ИИ также будет
dev1ce
13.07.2007, 22:07
Мое мнение таково "Для определенных целей - определенные средства решения" Поэтому небудем флеймить по языкам. Мои знания IDA и MASM'а назвать удовлетворительными - сложно, поэтому практически помочь несмогу. Поэтому нужны программисты, пищущие на низкоуровневых языках. kasper, отзовись. При отсутствия пионерского задора у товарища, можно будет одарить символической денюжкой. Хотя, у профессионала много времени это не должно отнять...
Мона и так, другой выход есть? Думаю нет. Хорошо если компилятор ничем не ужат, без протекторов, врапперов и прочих морферов. Жаль что PDB файла к нему нет, иначе-бы в IDA было просто разобрать.
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { char _anykey; cout << endl << "Press any key to continue..."; _anykey = getch(); return 0; } ... а потом скомпилировать и посмотреть, что получится.
Neo][
15.07.2007, 20:57
Цитата
Можно попробовать smile1.gif
kasper, проверь личку.
Mechanic
16.07.2007, 01:44
Гы...я когда правил проги некоторые, то не компилил, а сразу. Грузил в ollydbg и писал голыми руками код И о чудо, работает... ))
centrino
16.07.2007, 02:15
Ну, в общем я это и имел в виду. Ollydbg или Microsoft DDK - не принципиально. Можно SoftICE.
Последний, правда лишился поддержки и перспектив не имеет, а жаль.
centrino
16.07.2007, 11:29
Ладно! Хватит загадочность напускать. Колитесь, SP SDK уже на подходе?
dev1ce
16.07.2007, 11:33
Прочитай и тему и потри флуд...
Neo][
16.07.2007, 19:29
Цитата
Грузил в ollydbg и писал голыми руками код rofl.gif И о чудо, работает... ))
Mechanic, хм, интересно... У меня получалось только раз и то неправильно потом работало.
Цитата
Ну, в общем я это и имел в виду. Ollydbg или Microsoft DDK - не принципиально. Можно SoftICE.
Centrino, зачем же нам этот монстр? Оля тут рулит однозначно
Цитата
Ладно! Хватит загадочность напускать. Колитесь, SP SDK уже на подходе? smile.gif
Centrino, если бы мы знали что-то об этом, то не мучались бы с разбором старого компилятора. По поводу СДК, можешь почитать мой пост в соседней теме(Чистое небо).
Mechanic
17.07.2007, 00:27
Цитата
хм, интересно... У меня получалось только раз и то неправильно потом работало.
Через что я только не прошел. Это действительно "охрененно" трудная работка. Как вспомню - 2 дня бился почему там где мне надо получаеться -2^32. Как оказалось EAX перезаписывался туеву кучу раз.
Имхо мое мнение - врядли кто из нас осилит реверсинг компилятора. На крайняк если хорошо с С++ кто-то дружит - можно попробовать фокус с хуками (VirtualProtect итд). Это тож не просто, но проще чем "чатица с процессором" и выяснять отношения с регистрами
Для начала давайте разберемся, что мы должны получить в итоге .
Чтобы все было в одном месте, повторю сам процесс использования компилятора xrai.exe. Ключи в порядке использования.
xrai.exe -draft -f <level> - черновое компилирование сетки ai [b]xrai.exe -g <level> - компилируем off-line ai, graph и cross table xrai.exe -m - получаем game.graph (микс из level.graph и level.gct) xrai.exe -s - объединение level.spawn, level.ai, level.game в all.spawn
Для успешной компиляции, сам компилятор должен быть интегрирован с игрой (или должны быть папки с конфигами и скриптами - gamedata\config и gamedata\script). Сам компилятор xrai.exe от беты 2215, качаем ]]>отсюда]]> или ]]>отсюда]]>(если у кого то его нет). После чего распаковываем в папку с игрой, соглашаясь на замены. При компиляции загружаются следующие скрипты: gamedata\scripts... class_registrator.script script _G.script smart_terrain.script se_respawn.script se_switcher.script se_stalker.script se_car.script se_zones.script se_item.script- с оригинальным почему то работать не хочет. Но начинает, если удалить несколько значений из него - надо разбираться. se_artefact.script se_monster.script game_registrator.script
Новый уровень обязательно надо добавить в следующие файлы, чтобы компилятор (и игра потом) их видели: gamedata\config... game_levels.ltx - секция [levels] и [levelXX], по образу и подобию существующих . game_graphs.ltx game_maps_single.ltx
Теперь, вкратце, о самом использовании xrAI.exe Создадим, для примера, два уровня, чтобы точки перехода были друг на друга. Возьмем, например, уровени из sdk (или создадим свои, кому как проще ). Добавим их в выше указанные файлы (game_levels.ltx, game_graphs.ltx, game_maps_single.ltx) Удалим все объекты секции spawn.
Добавим graph_point - точку, где будет появляться актер, при переходе на этот уровень с другого, где указываем текущий уровень и название точки, на которую будет ссылаться level_changer с другого уровня. Добавим level_changer - где указываем, на какой уровень должен осуществляться переход и название точки, где он появляется. Сгенерируем сетку проходимости AI. Скомпилируем уровни из редактора. Скомпилируем уровень, используя xrLC и xrDO_light.
Теперь очередь xrAI: По идее, мы должны были добавить еще и актера на первый уровень. Но тут, при компиляции с ключом -g, выдается ошибка. Видно чего то не хватает в конфигах - надо разбираться. xrai.exe -draft -f <level> xrai.exe -g <level>
тоже самое и для второго уровня.
После чего: xrai.exe -m - получаем game.graph
с ключом -s выдается ошибка - тоже надо разбираться.
Теперь о том, что получаем в итоге: level.ai - формат не изменился, по сравнению с 2215. level.graph - изменился заголовок, сам формат, на первый взгляд, не поменялся. level.gct.raw - 100% дубликат level.gct level.gct - надо разбираться, формат вроде тот же, но при компиляции выдает, что версии не совместимы. game.graph - на первый взгляд поменялся только тип данных (с integer на int16), но тут надо смотреть подробнее.
Есть еще кое что: не хватает многих классов в xrai от 2215, поэтому при компиляции с ключом -s, он ругается на их отсутствие. Компилятор с ключом -m использует level.gct.raw, переименовывая его потом в level.gct
Ну а дальше - дополняем, поправляем, разбираемся дальше .
P.S. Думаю, проще будет сделать конвертер, но надо подробно разбирать game.graph.
Zeed
17.07.2007, 20:34
Для начала давайте разберемся, что мы должны получить в итоге .
Чтобы все было в одном месте, повторю сам процесс использования компилятора xrai.exe. Ключи в порядке использования.
xrai.exe -draft -f <level> - черновое компилирование сетки ai [b]xrai.exe -g <level> - компилируем off-line ai, graph и cross table xrai.exe -m - получаем game.graph (микс из level.graph и level.gct) xrai.exe -s - объединение level.spawn, level.ai, level.game в all.spawn
Для успешной компиляции, сам компилятор должен быть интегрирован с игрой (или должны быть папки с конфигами и скриптами - gamedata\config и gamedata\script). Сам компилятор xrai.exe от беты 2215, качаем ]]>отсюда]]> или ]]>отсюда]]>(если у кого то его нет). После чего распаковываем в папку с игрой, соглашаясь на замены. При компиляции загружаются следующие скрипты: gamedata\scripts... class_registrator.script script _G.script smart_terrain.script se_respawn.script se_switcher.script se_stalker.script se_car.script se_zones.script se_item.script- с оригинальным почему то работать не хочет. Но начинает, если удалить несколько значений из него - надо разбираться. se_artefact.script se_monster.script game_registrator.script
Новый уровень обязательно надо добавить в следующие файлы, чтобы компилятор (и игра потом) их видели: gamedata\config... game_levels.ltx - секция [levels] и [levelXX], по образу и подобию существующих . game_graphs.ltx game_maps_single.ltx
Теперь, вкратце, о самом использовании xrAI.exe Создадим, для примера, два уровня, чтобы точки перехода были друг на друга. Возьмем, например, уровени из sdk (или создадим свои, кому как проще ). Добавим их в выше указанные файлы (game_levels.ltx, game_graphs.ltx, game_maps_single.ltx) Удалим все объекты секции spawn.
Добавим graph_point - точку, где будет появляться актер, при переходе на этот уровень с другого, где указываем текущий уровень и название точки, на которую будет ссылаться level_changer с другого уровня. Добавим level_changer - где указываем, на какой уровень должен осуществляться переход и название точки, где он появляется. Сгенерируем сетку проходимости AI. Скомпилируем уровни из редактора. Скомпилируем уровень, используя xrLC и xrDO_light.
Теперь очередь xrAI: По идее, мы должны были добавить еще и актера на первый уровень. Но тут, при компиляции с ключом -g, выдается ошибка. Видно чего то не хватает в конфигах - надо разбираться. xrai.exe -draft -f <level> xrai.exe -g <level>
тоже самое и для второго уровня.
После чего: xrai.exe -m - получаем game.graph
с ключом -s выдается ошибка - тоже надо разбираться.
Теперь о том, что получаем в итоге: level.ai - формат не изменился, по сравнению с 2215. level.graph - изменился заголовок, сам формат, на первый взгляд, не поменялся. level.gct.raw - 100% дубликат level.gct level.gct - надо разбираться, формат вроде тот же, но при компиляции выдает, что версии не совместимы. game.graph - на первый взгляд поменялся только тип данных (с integer на int16), но тут надо смотреть подробнее.
Есть еще кое что: не хватает многих классов в xrai от 2215, поэтому при компиляции с ключом -s, он ругается на их отсутствие. Компилятор с ключом -m использует level.gct.raw, переименовывая его потом в level.gct
Ну а дальше - дополняем, поправляем, разбираемся... .
P.S. Думаю, проще будет сделать конвертер, но надо подробно разбирать game.graph.
Avel
17.07.2007, 21:01
Но ведь если мы удалим все из секции spawn, то не сможем первый раз откомпилировать (build) ,будет ругаться что нужен rpoint
Neo][
19.07.2007, 08:14
Zeed, а почему не компилируешь сетку ИИ в финальном варианте, т.е. так. xrai.exe -draft -f <level> - черновое компилирование сетки ai ******** -verify <level> - проверим на правильность ******** -f <level> - финальное компилирование xrai.exe -g <level> - компилируем off-line ai, graph и cross table xrai.exe -m - получаем game.graph (микс из level.graph и level.gct) xrai.exe -s - объединение level.spawn, level.ai, level.game в all.spawn
Цитата
с ключом -s выдается ошибка - тоже надо разбираться.
Zeed, а что за ошибка? Пока нет возможности самому посмотреть. Возможно связано с тем, что точка спавна актёра обязательна?
Zeed
19.07.2007, 11:24
Neo][, Забыл об этом упомянуть .
Верификация проходит успешно, причем проверяя уровни из финальной версии!!! тоже все читает и выдает положительный результат , но при окончательном компилировании (-f) ошибка не выдается - просто висит на загрузке уровня.
Цитата
а что за ошибка?
* New phase started: Loading AI map ! Sector graph doesn't correspond to the level graph : rebuilding... * Navigation info : 117662 nodes, 108 sectors, 402 edges 117662 nodes loaded
* New phase started: Loading graph points | Vertices read : 0 | Vertices read : 0 | Vertices read : 0 | Vertices read : 0 | Vertices read : 0 ***STOP*** file '(null)', line 0. ***Reason***: *** Internal Error *** Без актера все нормально. Скорее всего его надо как то по особенному ставить - не хватает конфига или нет нужной секции, хотя в 2215 и финале они идентичны. Вообщем - надо разбираться.
Zeed
19.07.2007, 11:32
Neo][, Забыл об этом упомянуть .
Верификация проходит успешно, причем проверяя уровни из финальной версии!!! тоже все читает и выдает положительный результат , но при окончательном компилировании (-f) ошибка не выдается - просто висит на загрузке уровня.
Цитата
а что за ошибка?
При компиляции с ключом -g <level> - с актером.
* New phase started: Loading AI map ! Sector graph doesn't correspond to the level graph : rebuilding... * Navigation info : 117662 nodes, 108 sectors, 402 edges 117662 nodes loaded
* New phase started: Loading graph points | Vertices read : 0 | Vertices read : 0 | Vertices read : 0 | Vertices read : 0 | Vertices read : 0 ***STOP*** file '(null)', line 0. ***Reason***: *** Internal Error *** Без актера все нормально. Скорее всего его надо как то по особенному ставить - не хватает конфига или нет нужной секции, хотя в 2215 и финале они идентичны.
***STOP*** file '(null)', line 0. ***Reason***: *** Internal Error ***
Вообщем - надо разбираться.
Woland
26.08.2007, 11:11
Смотрю, тема ушла на вторую страницу. Так с xrAI и не разобрались?
[empr]
26.08.2007, 11:29
Не пробовали заспаунить ботов в МП, получив level.ai?..
GOLOD55
30.08.2007, 16:57
Цитата
xrai.exe -m - получаем game.graph (микс из level.graph и level.gct)
похоже что тут level.gct ни при чем. в game.graph компилируются только соотв-нные level.graph от каждой зоны(список зон - в начале game.graph)
jamakasi
18.09.2007, 15:29
Получилось ли запустить карту с скомпиленым ии?если да то можете собрать рабочий компилер.ЗЫ пусть ии даже тупит бьётся головой о стены,главно что-бы карта запустилась.
[empr]
19.09.2007, 19:49
jamakasi, не получится, а как же game.graph и all.spawn?
jamakasi
20.09.2007, 17:37
Возможно интеграция содержимого в аллспавн ненужна,в некоторых мапах есть спавн файл ,вот только так неполучится уровень присобачить к другим картам но мне это пока ненадо.
macron
11.10.2007, 21:49
Народ, сейчас пытаюсь добавить сингл в 2215, добавляя недостающие ресурсы из финалки. Сейчас конкретно уперся в all.spawn - из финалки подставить не удается. С помощью xrai.exe создать новый пока не получается - то ошибки в конфигах, то еще чего. Поэтому вопрос - у кого-нибудь реально получалось компилить all.spawn в 2215 или в финалке с помощью xrai.exe, или затея совсем дохлая? (команда xrai.exe -s)
jamakasi
12.10.2007, 12:42
macron Надо долбить зеда и емпыча(у него вроде спсдк или он реанимировал храи из 2215). НАРОД давайте объединимся и добьём аллспавн и геймграф. ЗЫ на портале я димана90.
Добавлено через 1 минуту 28 секунд:
EmpR /Эмпрыч/ аим сори за очапатку
[empr]
12.10.2007, 13:48
Меня долбить не надо.
Ждите в ближайшее время видеоматериал по новым локациям в сингл-режиме. (от 2215 не прокатит 100%, не мучайтесь , сам давненько пытался)
Sergey81
12.10.2007, 18:18
EmpR_/Эмпрыч/,
Цитата
Ждите в ближайшее время
В ближайшее время это когда? Завтра? Через год?
[empr]
12.10.2007, 18:24
Не могу ничего пока обещать. Раз уж так торопите, пара фактов: - сингл СДК для "Тени Чернобыля" выпущен не будет. - без него добавлять новые локации в сингл невозможно (не имея собственного инструментария). - сборка компилятором от билда 2215 невозможна.
Sergey81
12.10.2007, 19:34
EmpR_/Эмпрыч/,
Цитата
- сингл СДК для "Тени Чернобыля" выпущен не будет.
эээ, пысы ведь обещали...
Цитата
- без него добавлять новые локации в сингл невозможно (не имея собственного инструментария).
А у тебя есть собственный инструментарий? Вобще добавлять локации можно будет когда-нибудь?
macron
12.10.2007, 20:41
EmpR_/Эмпрыч/, раз уж даже у тебя не вышло с 2215 - расскажи хотя бы до чего дошел, на чем дело застопорилось. Поделись, так сказать, опытом. Я добился следующих результатов: -возможность запуска любых мультиплеерных или сингловых в режиме эмуляции мультиплеера уровней из финалки -полный фикс всех графических багов с уровнями из финалки (в dx8 разумеется) -подстановка game.graph с измененным заголовком из финалки (все mp нормально грузит) -примерное понимание связи all.spawn и game.graph - в аллспавне одной строчкой прописано 16 байт из game.graph -специальный батник для запуска сингла в обход меню(проверен на финалке) -возможность (пока не проверено) загрузки скриптов из файла level.ltx, что в каждом уровне
На данный момент при подстановке аллспавна из финалки уперся в ошибку: * Loading spawn registry... ***STOP*** file 'P:\xr_3da\xrGame\alife_spawn_registry.cpp', line 92. ***Reason***: *** Assertion failed *** Expression: header().graph_guid() == ai().game_graph().header().guid() Spawn doesn't correspond to the graph : REBUILD SPAWN! ***STOP*** file '(null)', line 0. ***Reason***: *** Internal Error ***
Предполагаю, что формат all.spawn изменился и xrgame.dll просто не находит там нужной строчки. Пытался использовать game.graph из 2215 + аллспавн из финалки 1.0000-1.0003 (с измененными 16 байтами для совместимости с game.graph). Также пытался использовать game.graph из финалки с измененным заголовком + нормальный аллспавн из финалки. Ошибка одна и таже. Ты до этого доходил?
[empr]
12.10.2007, 21:09
macron, а тут и предполагать не нужно - ошибка будет именно эта и именно всегда. Суди сам - за последние два месяца (в период разработки Чистого Неба) формат файлов уровней (в том числе и графы и спаун) менялся несколько раз. Не кардинально, но менялся. Теперь представь себе, насколько он изменился за несколько лет. Проблема даже не в том, что он не такой, он очень похож. Но компилятор не поймёт, что такое "похож". Ему нужен чётко такой спаун, как в 2215. Предлагаю прекратить попытки играться с xrAI из 2215. Максимум на что он способен - скомпилировать АИ-карту. Как сборщик он не годен и точка.
Добавлено через 1 минуту 50 секунд:
Цитата
эээ, пысы ведь обещали...
И что?
macron
12.10.2007, 21:36
EmpR_/Эмпрыч/, благодарю за разъяснения. Приятно осознавать, что дошел "до упора". С экспериментами над синглом пока завяжу. Ну может еще над добавлением шейдеров r2 из финалки поковыряюсь - хотя особо в них не смыслю.
Лохотрон
12.10.2007, 21:38
не до упора ты дошел) нео и каспер это дело обошли, а вот дальше траблы, вылетает без объяснений, если чешешь в ассемблере, с++ дерзай... формат поменяли как надо, хз почему непашет по поводу "завяжу", емпро просто убирает конкурентов))) без обид)
macron
12.10.2007, 22:03
Loxotron,ну спасибо, попробую с ними связаться. Просто интересно, как обошли. Пусть форматом делятся
jamakasi
13.10.2007, 00:39
Цитата
- сингл СДК для "Тени Чернобыля" выпущен не будет. - без него добавлять новые локации в сингл невозможно (не имея собственного инструментария).
-буду надеяться на лучшее. -а как-же ты карту лепишь?(ответь в пм если так немогешь или нельзя)
macron
21.10.2007, 20:55
Neo][, Можешь просветить, как вы с Каспером сумели подставить правильный аллспавн в 2215? (Знаю, что дальше будут новые ошибки, хотя бы до них добратьтся бы...) А то мы пока только ворон вручную спавнить научились.
macron
03.11.2007, 15:15
Поправка. Ворон уже спавним через скрипт.
[empr]
03.11.2007, 16:03
macron, если ты о 2215, то скачай патчер от Нео][ и в консоли g_spawn m_crow и всё .
macron
03.11.2007, 16:46
EmpR_/Эмпрыч/, спасибо. Пропатченный xrgame.dll для разблокировки спавна мы уже юзаем (за изначальную идею спавна именно ворон - спасибо Diablo). Фишка была именно заставить ворон спавнится автоматически через скрипт, без ввода g_spawn m_crow. К тому же теперь можно разом заспавнить хоть 10000 ворон.
Если кому интересно - вот патч для автоматического спавна ворон для десматча в 2215 (1mb)