» TeamX (Архив Форума)«


Форум TeamX » Исследования » Worldmap Patch (for Fallout2 Engine)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 ] Все собщения

 
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Патч

Устанавливается пока только на версии от Фаргуса и оригинальную английскую версии 1.02d
Проверок версии движка в патче пока нет, так что проверяйте на что ставите.
Казалось бы смысла в ещё одном патче, который замедляет передвижение по карте мира, нет, но в отличии от своих "коллег" этот патч также успешно увеличивает количество случайных встреч. Чего не было в других патчах. Проверялось на Athlon 2500+
Я уже не помню как было на слабых машинах, но вроде теперь число случайных встреч приближенно к тому количеству, которое задумывали разработчики.

Что мне хочется услышать - как работает у владельцев более мощьных\слабых компов (да и у всех остальных тоже). Чуть позже я сделаю настраиваемый выбор скорости. Это не сложно.

Установка - распакуйте в папку с файлом fallout2.exe и запустите.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 19:49 - 1 Сент., 2007 | ИСПРАВЛЕНО: Ray - 18:59 - 1 Сент., 2007
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

WorldMap Patch v.1.2

Изменения:

+ добавлен выбор времени задержки (time delay)
+ добавлен выбор коэффициента частоты появления random encounter's
+ патч "подружился" с версией движка, используемой в локализации ЛК
+ совместимость с 1С

Важно: патч правит случайные встречи не нарушая баланса игры (в других замедлялках сдвинута вероятность появления встречи - т.е. все вероятности выставлены в 100%). Данный патч правит только fallout2.exe и не затрагивает баланс.

Комментарии:

Установка - переписать в папку с fallout2.exe и запустить. Необходимо будет ввести два числа. Первое - это время задержки (цикла). Чем выше поставите значение - тем больше будет "тормозить". Не переусердствуйте. Алгоритм перемещения сделан так, что обработка нажатия кнопок и движения мыши вызывается лишь раз в начале каждого "шага" цикла, т.е. задержка будет влиять и на мишь и т.п. Если поставить сильно много, движения мыши будут "дерганные". Значение надо вводить от 0 (без замедления) до 120.
Второе - скорость появления случайных встреч. Тут не всё так просто. Значение от 0 до 1500 (соответствует значению, как если бы патч не применялся, т.е. оригинальный фолл.) Однако если вы введёте 0 - это не означает, что случайные встречи будут идти одна за одной. Тут ещё влияет значение, какая выбрана задержка. Для одного значения случайные встречи действительно будут одна за другой, для другого - не так часто. Но всё же чем меньше число - тем случайных встреч будет больше.
 Для каждого компьютера подбирать значения первого и второго надо индивидуально, ввиду его быстродействия и т.п. Как показывает практика (на моём компьютере) - можно подобрать значения, что игра будет походить как если бы у вас стоял старенький комп и так как предполагали это разработчики. Так что пробуйте.


Что бы хотелось услышать:
1) Багрепорты (не забывайте указывать конфигурацию компа). Причём багрепорты любые - от вылетов и, например, если параметры не будут соответствовать игре, т.е. поставили задержку 30 а разницы никакой. Мало-ли...
2) Поведение на разных компах. Скорость появления случайных встреч, задержка, какие коэффициенты были выбраны и т.п. Отдельно обратите пожалуйста внимание на случайные встречи на машине (скорость появления и т.п.), соответствие встреч "регионам" (т.е. возле наварро должны быть солдаты, а не крестьяне и т.п.), а также интересут появление Spacial encounters. Т.к. это я потестить у себя не успел.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 10:18 - 22 Сент., 2007 | ИСПРАВЛЕНО: Ray - 19:14 - 17 Дек., 2007
mr Az
Пользователь

Регистрация: Сент. 2007

Всего: 12 сообщений

Мама от ecs, P4 3.2, 2gb + Mама от асуса, конро квадро, 4 гига. Все под ХР

Фоллаут от фаргуса, и он же + мод нью вижн.

Не работает, пишет - Wrong fallout2.exe version

Отправлено: 10:37 - 22 Сент., 2007
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

C NV патч работать не будет. По всей видимости не мне одному пришла в голову здравая мысль использовать ф-ию регистрации игры. С чистым Фаргусом всё ок.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 23:57 - 25 Сент., 2007
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Работая над WMT я вынужден был разбираться с проблемой случайных встреч. И мне это наконец удалось. Но я предстал перед выбором. В чём суть. Я сейчас понимаю, что решение, которое используется в патче 1.2 не слишком элегантное. Хоть я и заявлял, что баланс случайных встреч не нарушается, однако это верно но не на все 100%. Сейчас я могу добиться абсолютного соответствия того, что было на старых машинах. И я могу сделать это в патче 1.3. Но ... "лучшее - враг хорошего", вот я и задумался - может передалть случайные встречи по другому. А именно как это было в Ф1. Это не долго и времени много это не займёт. И есть ещё один вариант. Вас попрошу выбрать один из них.

Вариант 1(так, как это было в Ф2): Вероятность случайной встречи зависит от времени появления последней случайной встречи. Т.е. во время определённой случайной встречи на карте, в определённую переменную записывается время встречи (результат ф-ии GetTickCount). При следующей встрече значение этой переменной сравнивается с текущем временем и стоит проверка. Если результат мал (меньше 1500), то случайная встреча не происходит. Если прошедшее время достаточно, то тогда уже идёт проверка на вероятность самой встречи. На быстрых же компьютерах цикл передвижения по карте мира выполняется за меньшее количество времении (т.к. производительность ПК выше), а соответственно разница во времени меньше. Но проверка оставалась прежней, а поэтому больше времени проходило между встречами. И чем быстрее ПК - тем больше разница по времени между каждой встречей. В патче 1.2 я уменьшал проверку (не 1500 а меньше). Сейчас же я просто могу вычислить эталонное время цикла перемещения и поставить задержку там где нужно. По сути все патчи что были до этого (кроме sfall) имели верную идею, но не точную реализацию. Задержку то они ставили правильно, да не в том месте. Надо было не вначале цикла, а перед случайными встречами. Ну и другие мелкие огрехи, которые не позволяли добиться правильного результата на разных компьютерах (Если кому интересно - могу расказать позже). Короче, я могу исправить положение.
Вариант 2(как в Ф1): Тут всё просто - вероятность случайной встречи зависит от пройденного пути (потому то и не было проблем на быстрых компах. Думаю ясно почему).
Вариант 3: Случайная встреча не зависит от пройденного пути или времени, а лишь от её вероятности. Этого можно добиться если в патче 1.2 второй параметр выставить в 0.

Прошу высказаться. Если ответов не будет я реализую первый вариант.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 23:16 - 7 Янв., 2008
Freeman
Пользователь

Регистрация: Февр. 2007

Всего: 24 сообщения

Третий вариант попробовал, встреч стало очень много, так что мне как-то не нравится. А вот первые два варианта чем будут отличаться с точки зрения конечного пользователя, а не механизма реализации?

По поводу того, что происходит на карте мира. Я так понял, что перемещение и проверка встреч расположены последовательно в одном цикле, а в проверку встреч не заходит ,потому что должно пройти определенное время реального мира, а за это время успевает насчитаться куча времени игрового мира. Если так то на мой взгляд условием входа в проверку встречи должно являться определенное число выполнения цикла перемещения т.е. в нем увеличивается определенный счетчик и когда он достигает определенного значения происходит проверка встречи где счетчик сбрасывается. По сути мне это кажется похожим на вариант два, но как мне кажется за один цикл может проходится разное расстояние на карте, в зависимости например от наличия автомобиля. А при втором варианте получается, что автомобилист и пешеход будут иметь одинаковое число встреч?

Отправлено: 11:29 - 8 Янв., 2008
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Цитата:
По поводу того, что происходит на карте мира.


Если не вдаваться в подробности, то в целом ты понял правильно.
Спасибо, за машину я действительно забыл. Тогда вариант №2 немного видоизменится, так как сказал ты. Это вполне логично.
Кстати, нет, пешеход и автомобилист будут иметь разное количество встреч. Я немного опишу алгоритм перемещения, а потом объясню почему это так.

Если сделать подобие алгоритма перемещения на "псевдо"-Си то это будет выглядить так:

Цитата:

if(L004C2324() == esi) // карта мира: отрисовка, создание кнопок, проигрывание музыки и пр.
{
       ... выход из-за ошибки
}
else
{
eax = L004C8B78(); // обработка событий (от игрока): нажатие клавиш, действия мыши и т.п.
...
ebx = M00672e1c; // возвращает состояние, движится ли игрок по карте
if(ebx == 1) // проверка, движится ли игрок по карте (надо ли увеличивать дату, проверка
   остатка топлива в машине)
{
        L004C1F90(); // перемещает игрока по карте мира на определённое растояние
        if(ebx == M00672e64) // M00672e64 - флаг, движется ли игрок на машине
        {
           L004C1F90(); // перемещает игрока по карте мира на определённое растояние
           ....
           // разные проверки - если топливо и т.п.
        }
        ...
        // увеличение даты
        if(ebx == 1 && L004C0634() != 0)  // L004C0634 - обработка случайных встреч
       {  
              goto L004c0113;
       }
 ...
}


В ф-ии L004C2324 - создании карты мира переменной M0051dea0 (используется ниже) присваивается значение GetTickCount

обработка случайных встреч:
Цитата:

edx = M0051dea0;      
//L004C9400 - здесь происходит вычитание из edx значения GetTickCount
if(L004C9400() >= 0x5dc)
{
 M0051dea0 = GetTickCount;
 ... //проверка срабатывания случайных встреч
}



Таким образом, если игрок идёт пешком, то ф-ия L004C1F90 выполнится лишь раз, а на машине - несколько. Т.е. на машине и пешком при переходе из точки А в точку B будет разное количество циклов, а значит и разное количество проверок выполнения случайных встреч. Т.е. количество встреч на машине будет меньше, как и должно быть.
Честно сказать, второй вариант (изменённый) мне нравиться больше, т.к. не надо привязываться к времени и не будет неожиданных проблем. Но тем не менее - жду теперь комментарии

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 12:30 - 8 Янв., 2008
Pavel
Модератор

Откуда: Одесса Украина
Регистрация: Май 2004

Всего: 368 сообщений

Вообще данный вариант (второй), на мой взгляд, является наиболее целесообразным. Так, как по мимо отсуствия привязки ко времени, не будет необходимости привязываться к производительности ПК, а так же не нужно использовать лишь одну вероятность случайной встречи. И к тому же нет зависимости от наличия/отсутсвия машины, и на алгоритм приятно посмотреть .

-----
В жизни нельзя быть уверенным на 100%, ведь никогда не знаешь когда...

Отправлено: 14:26 - 8 Янв., 2008
Freeman
Пользователь

Регистрация: Февр. 2007

Всего: 24 сообщения

Цитата:
Кстати, нет, пешеход и автомобилист будут иметь разное количество встреч.

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

Ещё я попробовал твой патч версии 1.2 с задержкой 0мс. Так вот задержка всё равно была примерно как при 10мс. Из чего делаю два предположения: 1. В цикле проверки времени если текущее время равно расчетному, то он не выходит из цикла, а должен. 2. Либо ты всё-таки используешь GetTickCount а не timeGetTime, либо timeGetTime тоже решил обновлять своё значение, как и GetTickCount, где-то через 10 мс.

Отправлено: 14:36 - 8 Янв., 2008
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

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

К слову, фактически на случайную встречу влияет лишь её вероятность. Просто в двиге есть проверка, которая не давала выпадать случайным встречам слишком часто. Она то и глючила на быстрых ПК.

Добавлено:

Freeman

Написал ответ ещё до твоего

Я проверю алгоритм задержки. Всё равно его надо переделывать. Возможно я использовал GetTickCount (не возможно, а точно ) С перками я ещё не разбирался, но пока с ними проблем не будет точно.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 14:39 - 8 Янв., 2008 | ИСПРАВЛЕНО: Ray - 13:49 - 8 Янв., 2008
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com