SDK – повышаем сложность игры
Сложность: Низкая
Всем привет. Как вы уже поняли, в этой статье я хочу
показать вам, как повысить (или облегчить) сложность игры, изменяя маленькие
параметры каждого уровня сложности и некоторых параметров игрока. Для чего это
нужно? Скажем, для новых ощущений в Serious Sam SE при прохождении сначала, или же для кооперативных карт
мапперов, что хотят усложнить приключения Сэма в их маленьком мире. Статья
небольшая, но новичкам может пригодиться.
Внимание: Эта статья
подразумевает, что у вас уже есть настроенная директория для SDK, и вы знаете хотя бы минимум для работы с ней.
Итак, для работы нам понадобятся всего два
исходника – Game.cpp и Player.es.
Сейчас мы разберемся с Player.es.
Моя идея - показать вам, как сделать ограниченный боезапас, уровень здоровья и
брони на уровнях сложности «Турист» и «Новичок» (уровень здоровья и брони как
на «Обычном» и далее), сделать на них же отсутствие защиты от собственных ракет
и гранат и убрать регенерацию здоровья на уровне сложности «Турист».
Ограниченный уровень здоровья и брони на
«Туристе» и «Новичке»:
Здесь работаем с Player.es.
Открываем исходник и находим строчки:
Как видите, здоровье, и броня показаны здесь двумя типами: Top и Max.
Все очень просто. Top –
если рассматривать, как TopHealth –
количество здоровья, выше которого аптечки, колбы и пробирки уже не берутся
(исключением здесь служит таблетка). MaxHealth – максимальное
количество здоровья. Если оно ниже максимума, но все еще больше TopHealth, то аптечки, колбы и пробирки тоже не имеют силы –
повысить здоровье до максимума вы сможете только сердцами или таблетками. Такая
же история и с MaxArmor и TopArmor.
Теперь примемся за настройку этих параметров. У TopHealth и TopArmor в функции return .
«Чего же тут медлить! – воскликнете вы. – Достаточно просто
выставить 100 повсюду и вуаля – уровень здоровья ограничен». Нет, дорогие
друзья, если вы сделаете так, то не сможете брать сердечки, таблетки и т.д – максимальный
уровень здоровья будет равен сотне! (правда, если уровень здоровья будет ниже
нуля, вы все равно сможете восстанавливать его)
Параметрам TopHealth и TopArmor в
функции return ставим
по 100 единиц. Также, не забываем в CSessionProperties GD_EASY поменять на GD_ EXTREME.
Если этого не сделать, наши действия будут равносильны эпосу, описанному выше.
Теперь правим MaxHealth и MaxArmor. И здесь особо париться не
надо – ставим 200 единиц в ту функцию return, что находится
повыше (первую). В итоге у нас получается все так, как и нужно было:
Теперь, в этом же самом исходнике, мы уберем возможность
регенерации здоровья на «Туристе».
Ищем строчки, показанные на изображении:
Выделяем их и удаляем.
Будьте аккуратны, при удалении
не заденьте другие скобки и параметры!
Если рассмотреть удаленный нами код подробней, то получается:
Когда активен уровень сложности «Турист» (GD_TOURIST), игра берет текущее
значение здоровья (GetHealth) и сравнивает его с
минимальным уровнем (не ноль, а TopHealth!). Если текущее
значение здоровья (GetHealth) будет меньше минимального
(TopHealth), к текущему значению (GetHealth) начинает
прибавляться по одной единице (fHealth+) до тех пор,
пока оно не станет минимальным (TopHealth).
Зная код, можно быстро сделать регенерацию здоровья на всех
уровнях сложности (если нужно).
Теперь, опять же в этом исходнике, мы запретим защиту от
собственных гранат и ракет на легких уровнях сложности. Ищем строки:
Удаляем и этот код тоже.
Перейдем теперь к исходнику Game.cpp. В нем нам нужно уменьшить боезапас,
увеличить скорость бега и скорость атаки противников, увеличить повреждения,
наносимые врагами.
В самом начале исходника ищем такие вот строчки:
Пять значений – пять уровней сложности. Опять же, ничего сложного.
В первом параметре gam_afAmmoQuantity смотрим два первых значения. Они равны двум. Если уменьшить
до единицы, боезапас будет таким же, как и на «Обычном» и далее уровнях сложности.
Во втором параметре gam_afDamageStrength значения первых двух уровней сложности разнятся. Значения
первого – 0.25, второго – 0.5. Завысим их чуть–чуть, выставим
первому уровню сложности 0.3, второму
– 0.6. Теперь нас будут чуть –
больнее бить.
В третьем параметре gam_afEnemyAttackSpeed мы видим, что скорость атаки врагов не очень большая,
поэтому первым двум значениям ставим 0.85
вместо 0.75.
И, наконец, четвертый параметр gam_afEnemyMovementSpeed показывает нам,
насколько быстро бегут враги. Здесь можно ничего не менять – зачем нам слишком
уж надоедливые враги?
Сохраняйте два этих исходника и компилируйте. Не забудьте о
том, что сама Visual C++ может проворонить момент и не скомпилировать другую
библиотеку, которую вы еще не выбирали. Обычно она должна видеть изменения в
исходниках и компилировать не одну вами выбранную, а все те, в которых были
изменения.
Вот и закончена наша «опасная» статья. Надеюсь, вам она
понравилась. Если я допустил какие – либо ошибки – сообщайте. Если что
непонятно – спрашивайте.
|