Разработка и ромхакинг > Ромхакинг

[SMD] Неполноценный хак FIFA 96

<< < (4/13) > >>

Razuka:

--- Цитата: perfect_genius от 27 Февраль 2024, 02:13:41 ---В моём случае на каждую проверку изменений порой уходило секунд 5 - нажать цифру в программе, тыкнуть на эмулятор, нажать F5 (перезапустить игру) и 4 (ускорить), и ещё пара нажатий в меню игры, чтобы уже проверить. Как робот, автоматически
--- Конец цитаты ---
А, так надо было еще и перезапускать игру!
Я просто прогнал Глитчер пару раз в работающем Роме без перезапусков и удивился, что ничего не произошло  :lol:
Ок, тогда еще буду тестировать! Спасибо тебе за подробное разъяснение  :drinks:

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 02:13:41 ---Может же быть, что нет кода травмирования в игре, кроме пункта меню? Почему бы тогда нужное из 96 не перенести в 97 или 98? Тогда не придётся создавать систему травм.
--- Конец цитаты ---

Ох, тут все, что угодно может быть. Но я надеюсь, что код все же есть, просто по какой-то причине он не срабатывает.
В теории скрестить лучшее из 96 и 97 возможно, но я даже боюсь представить, сколько это займет времени и ведь нужно еще найти толкового программиста, а лучше нескольких. И, важно, чтобы они хотя бы немного понимали суть самой игры и ее правил. Т.е. тут еще нужно некое вдохновение.
Но я уверен, что в недалеком будущем это станет возможным.

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 02:13:41 ---2 и 4 - как можно быстро устроить это? В Практике можно? Или достаточно сразу при старте матча бежать с мячом к краю?
--- Конец цитаты ---
Этим даже не буду тебя мучить, так как данные моменты являются плавающими.
Тут, вероятно, нужно делать заранее сейвы, чтобы было проще отследить нужные инструкции.
Я постараюсь хотя бы по некорректному вбрасыванию мяча скинуть сэйв и ссылку на видео, чтобы было понятнее.

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 02:13:41 ---3 Т.е. достаточно поменять букву? Как мне увидеть это в игре? Куда заходить? Там можно всех сделать G/D или же только менять местами? Есть ещё другие буквы?
--- Конец цитаты ---

В игре у каждого игрока есть характеристики (Skill, Speed, Shooting, Passing, Ball Control, Aggression, Agility, Reaction, Fitness).
За значение каждой хар-ки отвечают параметры от 1 до 16, где 1 (min) = 50, а 16 (max) = 95.
Если у вратаря или любого другого игрока снизить хар-ки до минимума (до 50 в игре), то вратарь все равно будет хорошо отбивать мяч, а остальные игроки уже начнут более охотно пропускать голы.
Всего есть 4 буквы:
G- голкипер
D - защитник
M - полузащитник
F - форвард (нападающий)

Но, в принципе, для тестирования совсем не обязательно искать игрока с самыми низкими параметрами. Можно брать любого игрока в составе команды и менять его с голкипером местами.
Есть еще способы:
- можно создать игрока с любыми хар-ми через внутренний редактор игры, а затем сделать его трансфер в любую команду;
- можно воспользоваться внешним редактором игроков, который я тут выше выкладывал.

Игре вроде бы все равно, сколько в составе будет защитников, нападающих или вратарей. Можно хоть весь состав сделать защитниками или вратарями  o_0

Добавлено позже:

--- Цитата: Vurzum от 26 Февраль 2024, 07:57:03 ---Вчера пару часов потратил на попытки найти, где меняется кол-во клубов в лиге, но к своему изумлению, я не нашел. Это провал.
Помню, что вроде недалеко возле списка составов.
Там каждый клуб под своим значением, и значением лиги.
--- Конец цитаты ---

Vurzum, есть хорошие новости.
Je$TeR вышел на связь и пообещал, что сможет подсказать, где меняются составы лиг и т.д.
Так что будем ждать :)

Беларус учит русский:

--- Цитата: Razuka от 27 Февраль 2024, 09:20:22 ---А, так надо было еще и перезапускать игру!
--- Конец цитаты ---
Значит, инструкцию как пользоваться, ты не читал? Вот и выявился первый баг интэрфэйса - моя программа должна быть понятной без инструкции, поэтому изменил текст в самой программе, добавил про перезапуск :thumbup:


--- Цитата: Razuka от 27 Февраль 2024, 09:20:22 ---В теории скрестить лучшее из 96 и 97 возможно
--- Конец цитаты ---
Между этими тремя много отличий? Ни одна не имеет больше всего фишек из остальных?


--- Цитата: Razuka от 27 Февраль 2024, 09:20:22 ---Я постараюсь хотя бы по некорректному вбрасыванию мяча скинуть сэйв и ссылку на видео, чтобы было понятнее.
--- Конец цитаты ---
Вот тут у тебя уже есть сохранения и видео ниже.
Я пытаюсь донести до тебя принцип работы с моей программой. Мне (тебе) надо будет воспроизводить этот баг часто, постоянно. Думал, что сохранение перед багом не совместимо с порчей рома. Но сейчас проверил на своих хаках, и это сработало! :wow: Надо теперь убедиться в надёжности такого способа.
По той ссылке ты вводишь дополнительные коды. Можно ли от них избавиться, если сохраниться после их введения, чтобы каждый раз не вводить? Проверь.
Ещё рекомендую записать рэплэй до бага, чтобы потом по нему можно было сохраниться где удобно. Сохраняться желательно не прямо перед багом, а перед включением режима с ним. Например, во время матча сработал триггер на переход в режим штрафного удара. Нужно сохраниться в этот момент, пока игра ещё не перешла в режим. Тебе надо сделать сохранения до бага по твоим пунктам 2, 4 и 5, значит.
Так в Практике есть эти режимы или нет?
А ещё я вижу, что в игре есть свои рэплэи - они сохраняются даже после сброса? Например, из-за батарейки на картридже.
Тоже могут помочь, если в них сохранить баг. В той моей теме тебе записали видео как раз по рэплэю игры, как я понял.

Пункт 3 пока сложный. У меня мысль такая: в памяти есть массив по количеству игроков. Он заполняется этими буквами. Потом проверка проходит по нему, видит букву и указывает на ряд указателей, связанных с этой буквой: среди них указатель на картинку буквы и указатель на логику поведения.
Если это верно, то надо просто изменить указатель на логику поведения у G на указатель на логику поведения D. Тогда все остальные указатели, включая на картинку буквы, сохранятся.
Глитчер пока меняет только "да/нет", поэтому пока подумаю, что ей надо добавить далее - поиск всяких значений, структур и т.д.

Представь, что у G изменилось поведение на неизвестно какую из букв:

--- Цитата: Razuka от 27 Февраль 2024, 09:20:22 ---D - защитник
M - полузащитник
F - форвард (нападающий)
--- Конец цитаты ---
Как скоро ты определишь, что за буква была выбрана? Только во время матча или можно как-то уже в начале? Узнаётся только по количеству пропущенных/пойманных мячей?

Razuka:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Значит, инструкцию как пользоваться, ты не читал?
--- Конец цитаты ---
Читал в той теме, где Глитчер прикреплен. Но, возможно, что я не совсем понял принцип работы в тот раз. :neznayu:

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Между этими тремя много отличий? Ни одна не имеет больше всего фишек из остальных?
--- Конец цитаты ---

Да, отличия есть, и порой весьма существенные.
Хоть они и похожи структурно, но все же - это три разные игры. Особенно это касается темпа игрового процесса.

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Вот тут у тебя уже есть сохранения и видео ниже.
--- Конец цитаты ---
По данному пункту вопрос уже решен. Его Марат помог исправить, за что ему огромное спасибо!
Этот момент был основным багом - выбивание мяча игроком своей команды в свои же ворота или на угловой. Этот пункт мы уже успешно преодолели.

А я имел ввиду другой момент, который еще предстоит решить - это когда игрок руками после аута выкидывает мяч ("Вбрасывание мяча") из за боковой линии поля ровно по линии (кромке) этого поля.
Иногда комп. игрок зацикливается на этом неудачном вбрасывании и до 5-6 раз может все в том же одном направлении кидать мячик, пока не сменит угол вбрасывания и не попадет наконец таки в поле для игры.  :lol:

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Если это верно, то надо просто изменить указатель на логику поведения у G на указатель на логику поведения D. Тогда все остальные указатели, включая на картинку буквы, сохранятся.
--- Конец цитаты ---

Вот я тоже логически к этому склоняюсь, что у G и D - разные формулы (уровни) при обороне ворот.

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Так в Практике есть эти режимы или нет?
--- Конец цитаты ---
"Практику" я не использовал, так как мне этот режим особо не был интересен.
Но попробую сегодня вечером поизучать и его.

Добавлено позже:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Представь, что у G изменилось поведение на неизвестно какую из букв.
 Как скоро ты определишь, что за буква была выбрана? Только во время матча или можно как-то уже в начале? Узнаётся только по количеству пропущенных/пойманных мячей?:
--- Конец цитаты ---

Думаю, что на глаз определить будет невозможно.
Я лишь могу с большой долей уверенности предположить, что бонус за защиту ворот имеет только буква G, а остальные 3 буквы обладают одинаковым "весом" (одинаковые значения, показатели) при парировании ударов противника.

Я понимаю, что очень заморочился этим вопросом. Но... рано или поздно эта игра покорится.
На финише нужно будет разложить всю логику поведения игроков, улучшив им AI. Звучит, конечно, забавно.

Je$TeR:
А вот и я.
Если бы я знал, что к ковырянию FIFA появится такой энтузиазм, давно бы выложил всё, что знаю и некоторым здесь не пришлось бы потеть. Никаким, кроме хекс редактора, я не пользовался, но изложенная инфа всё равно будет полезна для написания редактора команд, например, если это кому-то будет нужно.
По хорошему, всё это было бы неплохо закрепить в шапке, но мне неохота заморачиваться, уж извините.

Редактирование Команд

Команды начинаются по адресу 1314DA и занимают 38 байт каждая, сейчас я их разберу:

Первые 16 байт - это название команды. Тут всё долнжно быть понятно.

Следующие 3 байта (17, 18, 19) - цвета табличек. Если вы хотите сделать двухцветную табличку - 18 и 19 байт должны быть одинаковыми.
Список цветов табличек:
00 - Зелёный
01 - Голубой
02 - Синий
03 - Красный
04 - Жёлтый
05 - Коричневый
06 - Оранжевый
07 - Чёрный
08 - Смесь двух зелёных (в оригинале использовался только на табличках лиг)
09 - Светло-зелёный (практически нигде не используется)
0A - Серый
0B - Белый
0C - Фиолетовый

Следующие 4 байта отвечают за покрытие (Coverage) и менять их крайне не желательно
Первый - Defender
Второй и третий - Midfield
Четвёртый - Forward

У всех команд покрытие прописано одинаково, даже если в роме байты выглядят по другому. Если вы задались целью сделать свои команды настолько уникальными, чтобы отдельно прописывать покрытие - это ваша головная боль. Но если накосячили, стандартное покрытие - 28 12 57 25

Следующие 6 байт - цвета формы  и идут они в таком порядке:
1 - футболка (основная)
2 - футболка (гостевая)
3 - шорты (основная)
4 - шорты (гостевая)
5 - голкипер (основная)
6 - голкипер (гостевая)

В оригинале, чтобы у второй команды форма поменялась на гостевую, идут проверки по индексам 1 и 3,
если они совпадают - форма меняется.
Чтобы проверка шла только по 1, у меня в хаке было прописано 4E 71 по адресу 7BF80, чтобы было как в оригинале - нужно поменять обратно на 66 1С

Список цветов формы:
00 - Голубой
01 - Синий
02 - Зелёный
03 - Оранжевый
04 - Бледно-Розовый
05 - Фиолетовый
06 - Ярко-Розовый
07 - Красный
08 - Малиновый
09 - Жёлтый
0A - Белый
0B - Серый
0C - Чёрный

Однако, если вы пропишете 0D \ 0E \ 0F \ 10 - вам выдаст телесный цвет, а если 11 - то коричневый, и об этом чуть будет ниже:

Следующие 2 байта - это цвета кожи и волос.
Первый байт - кожа, где 00, 01, 02 - белая кожа, а 03 - чёрная, соответственно.
И если учесть написанное выше, то у меня есть подозрение, что через индексы форм можно читать палитру кожи и телесных палитр - три, а то и четыре.
Это если кто-то захочет добавить новые цвета форм или тип кожи - осталось только поискать саму палитру в роме, но я этим не занимался.
Второй байт - цвет волос, где:
00 - светлые волосы
01 - коричневые
02 - рыжие (нигде не используется)
03 - чёрные

И последние 6 байт - это рейтинги команд в перемешку с остальными свойствами. Идут они в таком порядке:
Shooting - только shooting занимает целый байт, остальные по половине байта
Running | Passing
Defense | Tackling
Goalies | Overall
дальше чуть запутанее:
Strategy | ???  первая половина байта - номер тактики у команды, вторая мне неизвестна, скорее всего не используется
Formation | Midfield первая половина отвечает за расстановку игроков
Attack | ??? еще одна пустая половина байта, но Sharpnull мне говорил это нужно для корректного чтения или вроде того (в конце всегда 0).

Теперь сами номера для рейтингов, тактик и прочего:
Рейтинги:
F *****
E ****"
D ****
B-C ***"
9-A ***
7-8 **"
5-6 **
3-4 *"
1-2 *
0 пусто - никогда не используется, хотя разрабы могли бы пол-звездочки для приличия изобразить.

Тактики:
0 - none
1 - long ball
2 - defend
3 - all out defend
4 - attack
5 - all out attack

Формации:
0 - 3-5-2
1 - 4-4-2
2 - Sweeper
3 - 4-2-4
4 - 4-3-3

Большая простыня получилась, но надеюсь, что читабельно. Чуть позже я распишу остальное.

Добавлено позже:
Редактирование игроков

Следом за командами сразу же идут игроки, по адресу 133854, каждый размером 22 байта, их я тоже сейчас разберу:

Первый байт - инициал (имя), следующие 12 за ним - фамилия игрока. Всего 13 байт на имя, по аналогии с устройством команд.

А дальше уже интересно:
За что отвечает 14 байт? Никто не знает. Sharpnull для написания редактора целенаправленно искал и он не знает тоже.
15 байт - это амплуа и номер, но они читаются не совсем раздельно, а немного пересекаются.
Первая половина обозначает позицию, а именно:
0 - Goalkeeper
2 - Defender
4 - Midfield
6 - Forward

Вторая половина обозначает номер игрока, но дело в том, что номера игроков начинаются от 0 и заканчиваются 31, что  00 и 1F соответственно. Следовательно, первая половина байта влияет на номер тоже.
Таким образом, 40 - это полузащитник с 0 номером (да, есть нулевой номер), а 3F - это защитник с 31 номером потому, что 20 + 1F = 3F

Соответственно все возможные позиции с номерами:
00-1F - Goalkeeper
20-3F - Defender
40-5F - Midfield
60-7F - Forward
Но если прописать 80-9F, то у игрока будет позиция X - я не думаю, что это баг, скорее всего разрабы хотели добавить позицию вне амплуа. В игре она нигде не встречается и я не тестировал это.

16 байт, на первый взгляд тоже не отвечает ни за что, но как оказалось, он зачем-то дублирует номер игрока. Более того, у игроков американской лиги номера читаются с 16 байта, а не с 15. Я не знаю с чем это связано.

Все остальные байты, кроме последнего - скиллы игроков, занимающие половину байта каждый, вот они:

Skill | Speed
Agility | Reaction
Shot Acc | Passing
Aggress | Ball Ctl
Fitness | ??? - последнее значение всегда 0

Соответственно величиной от 0 до F каждый:
F - 95
E - 92
D - 89
C - 86
B - 83
A - 80
9 - 77
8 - 74
7 - 71
6 - 68
5 - 65
4 - 62
3 - 59
2 - 56
1 - 53
0 - 50

Однако, в игре можно увидеть, что помимо вышеприведённых 9 скиллов есть еще 5, но они являются производными от первых 9, и чтобы их не пришлось кому-то узнавать методом тыка, я их, пожалуй, тоже распишу:

Awareness = Passing + Ball Ctl
Accel = Speed + Reaction
Bicycles = Agility + Fitness
Headers = Aggress + Agility
Shot Pwr = Speed + Ball Ctl

Для примера, (Passing 95 + Ball Ctl 50) / 2 = Awareness 71 т.к. (F + 0) / 2 = 7

Последний байт всегда пустой - видимо тоже для корректного чтения, но здесь 2 нуля а не один, как у команд, а с предпоследним байтом даже 3.
На этом по внутренннему устройству игроков, пожалуй, всё. Дальше потом про составы и лиги напишу.

Razuka:

--- Цитата: Je$TeR от 27 Февраль 2024, 17:04:26 ---Дальше потом про составы и лиги напишу.
--- Конец цитаты ---
Браво! Как все красиво и четко оформил  :thumbup:
Спасибо тебе огромное за такой подробный комментарий. Про составы и лиги обязательно будем ждать!

Добавлено позже:

--- Цитата: Je$TeR от 27 Февраль 2024, 17:04:26 ---Следующие 4 байта отвечают за покрытие (Coverage) и менять их крайне не желательно
--- Конец цитаты ---

А вот интересно все же, почему не рекомендуется менять Coverage?
Я тестировал этот момент, но так и не заметил каких либо изменений. Может коррекция этого аспекта введена чисто для визуального оформления?
В свое время разрабы могли его просто добавить для некоего "тактического" элемента игры, но так и не реализовали полноценный механизм использования в геймплее. :neznayu:

Razuka:

--- Цитата: Je$TeR от 27 Февраль 2024, 17:04:26 ---16 байт, на первый взгляд тоже не отвечает ни за что, но как оказалось, он зачем-то дублирует номер игрока. Более того, у игроков американской лиги номера читаются с 16 байта, а не с 15. Я не знаю с чем это связано.
--- Конец цитаты ---
Вполне может быть, что разрабы придумали 2 номера игрока в тех случаях, когда игрок помимо Клуба заявлен еще и в Сборной.
Но, видимо, до конца не смогли реализовать этот механизм.

В реальной жизни все так и есть: за статусными игроками закрепляется конкретный номер и в Клубе и в Сборной. Они могут как совпадать, так и различаться.
Но в плане игры - это лишь мое предположение.

Je$TeR:
Редактирование составов команд и лиг

Сразу же после списка игроков следом идут составы команд, по адресу 146ADE в таком формате записи:
XX 00 YY YY
Где XX - это номер команды, 00 всегда два нуля полсе него (опять для корректного чтения?) и YY YY - что есть номер игрока соответственно.

И первый же вопрос: как узнать какой номер у команды или игрока?
Все просто и сложно одновременно.
Просто потому, что у командов и игроков номера в том порядке, в котором они записаны в роме. Соответственно 00 - это 1860 Munchen, 01 - это A Mineiro, 02 - это AC Milan и т.д. Потому как где-то есть код, который начинает считывать команды по порядку начиная с 1314DA, то же самое с игроками.
А сложно все потому, что если нужно найти команду не 00, а 7B например, то придётся доставать калькулятор каждый раз, когда вам нужно будет найти команду или игрока.

А теперь сами вычисления:
Предположим, нам нужно найти состав сборной России
Первое, что нам нужно помнить - адрес начала блока с командами 1314DA
Второе - адрес команды внутри блока, в данном случае Russia - 132FDE
Третье, что нам нужно помнить - это количество байт у каждой команды, которое равно 38 байт, но поскольку все вычесления будут шестнадцатеричные, то 38 = 0x26

Итак, чтобы узнать какой ID у Russia нам нужно:
От адреса команды отнять адрес начала блока, и результат поделить на размер байт, а именно:
132FDE - 1314DA = 1B04
1B04 / 26 = B6

Переходим к 146ADE и спускаемся ниже пока не найдем B6, а именно 14985E и видим 16 игроков списком.
Но, допустим, я ошибся и B6 - это не Russia, тогда проверим что за игроки в составе у команды. И теперь я буду вычислять не ID по адресу, а адрес по ID и не у команды, а у игрока.

Для этого нам нужно, как и в случае с командами:
Первое - адрес начала блока с игроками 133854
Второе - ID игрока, которого хотим найти, в данном случае - 00 8A
Третье - количество байт у игроков в шестнадцатеричном значении, а именно 22 = 0х16

Теперь наш ID нужно не поделить а умножить на количество байт:
8A * 16 = BDC
Прибавляем результат к адресу начала блока с игроками:
BDC + 133854 = 134430 - адрес нашего игрока. Идем по этому адресу в роме и видим, что это A.Kanchelskis, который играет за сборную России.

То же самое работает в обратном направлении и для команд и для игроков.
Чтобы найти адрес команды по ID надо B6 * 26 = 1B04 + 1314DA = 132FDE
Для поиска ID игрока по адресу нужно соответственно 134430 - 133854 = BDC / 16 = 8A

Чуть позже про лиги напишу и про остальное

Добавлено позже:
Теперь что касается составов лиг

Сразу же после составов команд на 14A69E идут составы лиг
ID команд в лигах вычисляется точно так же, как я и расписывал выше, вычислять ID лиг не нужно и я не уверен, что они существуют как объекты, поскольку есть лиги без ID и есть не-совсем-лига с ID лиги

ID лиг (соответствуют порядку в игре)
00 - американская
01 - бразильская
02 - английская
03 - французская
04 - немецкая
05 - итальянская
06 - малайская
07 - голландская
08 - шотландская
09 - испанская
0A - шведская
0B - сборные мира
0C - трансферы
0D - кастомные???

В конце списка можно заменить кое-что интересное. 0С использует для трансферных игроков 2 невидимые команды Zrezerve и Zrezerve2 по 16 игроков каждая (32 игрока с именами разрабов - ничего особенного). В своем европейском хаке я их переделал и засунул в португальскую лигу ибо + 2 халявные команды. Но трансферы теперь забагованы, что не беда лично для меня.

А теперь стоит упомянуть всевозможные проблемы:
1. Поскольку размер ID для команд в 2 значения (несмотря на 2 нуля в конце), то следовательно, максимальное число команд в игре FF = 256, у игроков больше, но на то они и игроки.
2. С добавлением (а не переписыванием) в игре сейчас проблема, из 256 сейчас занято где-то 239 + как оказалось, 4 кастомные команды тоже занимают ID итого 243. Но даже эти 13 команд добавить не так просто, потому как нужно двигать блоки, указывать размеры блоков и чёрт еще знает чего. При этом, в FIFA 98 каким-то образом команд больше 256.
3. Как можно увидеть из всего написанного выше про вычисления, поиск\перетаскивание команд\игроков туда-сюда постоянно вынуждает заморачиваться с калькулятором.
4. Игроки не всегда привязаны только к одной команде, в некоторых случаях игроки играют за сборные, и соответственно, две команды могут использовать один и тот же ID. Можно начать переделывать команды и зацепить какую-то сборную, как это было с Сингапуром в моем случае.
5. Вы можете отвязать ненужного вам игрока от сборной в процессе и если вы его никак не пометили, вы можете забыть за него. Тем временем, он будет неиспользованным и занимать место в списке, а вы про него даже знать не будете.

Теперь по поводу разбора рома и всяких вспомогательных программ:
Возможность выставлять цвета футболок не залезая в хекс - это, наверное, замечательно, НО... Самая трудная трудность сейчас - это постоянные вычисления, и невозможность видеть кто к какой команде привязан. Кроме того, если кто-то додумается расширять ром и перетаскивать блоки, то программе нужно будет читать данные с других адресов. Что не сделает ее универсальной для всех хаков.

Razuka:

--- Цитата: Je$TeR от 27 Февраль 2024, 19:47:32 ---Сразу же после составов команд на 14A69E идут составы лиг
--- Конец цитаты ---
Круто!  0_0
Действительно получилось по твоей инфе урезать Английскую лигу с 22 команд до текущих 20-ти.
Это же... при желании можно теперь сделать несколько разных ROM (фактически разные модули), в каждом из которых реализовать не только главные лиги, но и второстепенные.
Например, можно теперь хоть всю Английскую лигу сделать, включая низшие дивизионы (лишь бы только статистика по ним была и время на все это ремесло).

Столько информации собрал, не поленился. Респектище тебе за такой труд!

Je$TeR:

--- Цитата ---А вот интересно все же, почему не рекомендуется менять Coverage?
Я тестировал этот момент, но так и не заметил каких либо изменений.
--- Конец цитаты ---
Я говорю про Coverage в коде команды. В игре он нужен, чтобы обозначать как далеко могут игроки от своих позиций забегать.
А касательно изменений в коде, трудно объяснять. Возьми да и введи рандомные цифры в Coverage сам увидишь, что будет.


--- Цитата ---Это же... при желании можно теперь сделать несколько разных ROM (фактически разные модули), в каждом из которых реализовать не только главные лиги, но и второстепенные.
--- Конец цитаты ---
Да, не совсем ясно только, зачем это, если между командами из разных стран играть нельзя будет, а большинство команд - однозвёздочные. В оригинале есть лига чемпионов, все же.

Я еще забыл рассказать, как таблички у лиг менять, но один чёрт спрайты стран поменять не получается.

Беларус учит русский:

--- Цитата: Je$TeR от 27 Февраль 2024, 23:54:15 ---спрайты стран поменять не получается
--- Конец цитаты ---
Это явно просто указатели. И с буквами G и D тоже. Так что попробую в Глитчер добавить перемешиватель указателей.

Je$TeR, что думаешь насчёт его пункта 3?

--- Цитата: Razuka от 27 Февраль 2024, 16:12:51 ---
--- Цитата ---Представь, что у G изменилось поведение на неизвестно какую из букв.
 Как скоро ты определишь, что за буква была выбрана? Только во время матча или можно как-то уже в начале? Узнаётся только по количеству пропущенных/пойманных мячей?
--- Конец цитаты ---

Думаю, что на глаз определить будет невозможно.
Я лишь могу с большой долей уверенности предположить, что бонус за защиту ворот имеет только буква G, а остальные 3 буквы обладают одинаковым "весом" (одинаковые значения, показатели) при парировании ударов противника.
--- Конец цитаты ---

Razuka:

--- Цитата: perfect_genius от 27 Февраль 2024, 15:38:58 ---Так в Практике есть эти режимы или нет?
--- Конец цитаты ---
Потестил, кстати, режим Практики спустя почти 30-ть лет после выхода игры  :lol:
Да, там есть нужные режимы:
 - Free Kicks (штрафные удары)
 - Throw Ins (вбрасывания)

В первом режиме можно выбрать любое местоположение мяча на поле и сразу же посмотреть, как будут выполняться разыгрывания мяча (главное, чтобы это делал AI-игрок).
И тут можно заметить, что часть из возможных вариантов исполнения штрафного откровенно "слабовата". Особенно печалит вариант с легким пиночком мячика от исполняющего вперед себя, т.е. даже не пас напарнику - а просто касание мяча... И нет, чтобы догнать мячик и ударить по нему сильнее, так исполняющий игрок отворачивается от мяча и бежит обратно в сторону своих ворот, а мячом обычно завладевает соперник.
Найти бы инструкции, отвечающие за логику данных моментов и выпилить самые слабые... Попробую на днях записать видео фрагмента для наглядности и если повезет, то сделать сэйв перед исполнением.

По режиму Вбрасывания минут 30 пытался зафиксировать момент зацикливания вбрасывания, но так и не смог его узреть. Возможно, что не повезло в данном случае. А может быть только в матче это проявляется. Еще потом проведу тесты.

P.S.
Интересный момент заметил! Голкипер противника, если его оставить в Практике без игроков поддержки, начинает более уверенно перемещаться по штрафной линии и даже иногда чуть-чуть выходит за ее пределы, играя ногами.
Т.е. он, как и в реальном мире, становится хозяином штрафной, активно защищая ворота не только на "пятачке", но бегая по всей штрафной. Заметно интереснее становится его поведение.
Если же он играет с защитниками, то резко ограничивает площадь своего перемещения, "привязывается" к линии перед воротами и полностью отдает инициативу своим защитникам.

Razuka:

--- Цитата: Razuka от 28 Февраль 2024, 02:13:58 ---По режиму Вбрасывания минут 30 пытался зафиксировать момент зацикливания вбрасывания, но так и не смог его узреть. Возможно, что не повезло в данном случае. А может быть только в матче это проявляется. Еще потом проведу тесты.
--- Конец цитаты ---

Слушайте, а ведь есть же у меня сэйв, который я ранее когда-то уже делал и на всякий случай оставил его.
Как раз видно там, что игрок вбрасывает мяч ровно по разделительной линии и потом уже происходит следующая попытка вброса.
Тут то еще не так все плохо, со второй попытки у него все получилось, а иногда и раз по 5 к ряду может зарядить с одним и тем же направлением вбрасывания на линию.

Видео

Vurzum:

--- Цитата: Razuka от 28 Февраль 2024, 02:13:58 ---Потестил, кстати, режим Практики спустя почти 30-ть лет после выхода игры  :lol:




--- Конец цитаты ---
Ну ты даешь! Я во времена физической консоли изрядно наигрался в практику. Было залипательно бить с подкруткой с разнообразных точек, и потом покадрово пересматривать, как мяч процарапывает дальнюю крестовину. Что уж говорить, как в Практике вдвоем можно было побалываться.

Je$TeR:

--- Цитата: perfect_genius от 28 Февраль 2024, 01:33:57 ---Это явно просто указатели. И с буквами G и D тоже. Так что попробую в Глитчер добавить перемешиватель указателей.
--- Конец цитаты ---
Я не знаю о каких указателях речь, но вся графика стран в роме запакована и не редактируется.

--- Цитата: perfect_genius от 28 Февраль 2024, 01:33:57 ---Je$TeR, что думаешь насчёт его пункта 3?
--- Конец цитаты ---
Я думаю, что он заморачивается совсем не тем, чем стоило бы. Для изменения поведения ИИ усилий нужно много, а результат незначительный. Да и не замечал я разницу в поведении вратаря от всех остальных, думаю, это очередное "мародер едет быстрее дерт девила в RRR".

Razuka:

--- Цитата: Je$TeR от 28 Февраль 2024, 16:23:11 ---Я думаю, что он заморачивается совсем не тем, чем стоило бы. Для изменения поведения ИИ усилий нужно много, а результат незначительный. Да и не замечал я разницу в поведении вратаря от всех остальных
--- Конец цитаты ---

И все же разница заметна.
Например, такие голевые комбинации (как на видео) в базовой игре без редактирования параметров голкипера крайне редки. Там вратари ловят 99% подобных мячей.
В моей версии получается более реалистично. Я это делаю прежде всего для симуляции футбольного менеджера, когда живой игрок выступает только за тренера и скаута. :neznayu:

Vurzum:

--- Цитата: perfect_genius от 29 Февраль 2024, 12:08:19 ---С помощью Глитчера всего за 30 попыток изменил направление мяча в сохранении. Теперь тебе надо проверить, остался ли этот баг в игре.

--- Конец цитаты ---
Увы, остался

Беларус учит русский:
Он проявляется только в каком-то режиме? Погонял сам и куда кинет зависит от расположения управляемым игроком игрока.
Значит будем ломать, пока баг не пропадёт :)
Жду новое сохранение уже из этого подправленного рома или же объясните куда заходить, чтобы этот баг воспроизвести. Сохранение перед багом было без прямого управления - это что за режим?

Razuka:

--- Цитата: perfect_genius от 29 Февраль 2024, 13:37:25 ---Жду новое сохранение уже из этого подправленного рома или же объясните куда заходить, чтобы этот баг воспроизвести. Сохранение перед багом было без прямого управления - это что за режим?
--- Конец цитаты ---

perfect_genius, спасибо тебе за то, что помогаешь в этом вопросе! Дай Бог тебе здоровья! :drinks:
В ближайший день-два погоняю твое сохранение и обязательно отпишусь. Хотя, если Vurzum уже отписался, то, вероятно, нужно будет ловить новый сэйв.

Да, сохранение было без прямого управления игроком.
Этот режим можно установить во вкладке "Controllers". Нужно установить геймпад (-ы) по центру между названиями команд. В данном случае игроки на поле управляются только компьютером.

Добавлено позже:

--- Цитата: perfect_genius от 29 Февраль 2024, 12:08:19 ---С помощью Глитчера всего за 30 попыток изменил направление мяча в сохранении.
--- Конец цитаты ---

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

Беларус учит русский:
Стало понятнее. Компьютер явно бросает мяч "невидимке", нулевому игроку.
Одно сохранение уже есть, вам надо бы сделать ещё одно. Я сейчас сделал и действительно баг не пропал. На этих трёх и буду проверять.
А пока сегодня попробую хакнуть по первому сохранению ещё несколько раз.

Je$TeR:

--- Цитата: Razuka от 29 Февраль 2024, 00:33:20 ---Например, такие голевые комбинации (как на видео) в базовой игре без редактирования параметров голкипера крайне редки. Там вратари ловят 99% подобных мячей.
--- Конец цитаты ---
Я такие 99% мячей забиваю, с этой же позиции. В твоей версии вратарь будет совсем дырявым.


--- Цитата: Razuka от 29 Февраль 2024, 00:33:20 ---Я это делаю прежде всего для симуляции футбольного менеджера, когда живой игрок выступает только за тренера и скаута.
--- Конец цитаты ---
Главная прелесь FIFA в том, что там можно играть вчетвером за одну команду, а не смотреть, как игра играет сама с собой. Лучше народ собрать и чемпионат какой нибудь пройти.

З.Ы. теперь понятно, почему у тебя "травмы не работают", бот в игре травмы не получает.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии