Skip to content

Posts from Smart Messiah

4.0 (1 rating)
User Avatar
19 years ago
Auto-translated
This article examines how to change enemy intelligence and game difficulty

The game is based on the Source engine, the same one used for Half-Life 2. Therefore, it is not surprising that in both games, the main game settings are written in the same configuration files (those with the .cfg extension). First, we will look at those located in the <game directory>\scripts folder, specifically — mm_game_settings.txt. Here you will find the basic Gameplay parameters, including AI characteristics in the section of the same name. For those who haven't opened HL2 with us, be aware that the block name is placed immediately before its content, and the content itself is enclosed in curly brackets. Go to the mentioned section and begin editing.

The first two parameters in this block — NPCFieldOfViewRatioWhenStealth and NPCRangeOfViewRatioWhenStealth — set the width of the game characters' field of vision. Do not be confused by the presence of the abbreviation NPC in the name; in files for games on the Source engine, this denotes not only peaceful civilians but also the main character's enemies. To make opponents more alert, set these characteristics to values 0.6 and 0.8, respectively.

Slightly lower are two settings that determine the maximum distance at which enemies can hear each other's cries (to arrive to help their comrades if necessary). Call4helpdist refers to normal situations, ouchcall4helpdist — to the death screams of monsters. Change the value of the first to 800 and the second to 900. After this, your opponents will not only hear better but also learn to emit a piercing death scream that attracts creatures from almost all around.

The next four attributes determine how quickly enemies react to signals arriving via various, shall we say, paths. The auditory path is handled by the delayhear and DelayNoHearInSearch parameters (the second attribute works when the opponent is in search mode), and the visual path — by delaysee and delaysee_stealth (in the latter case, it is assumed that the player is sneaking up on the opponent). Set the first indicator in this list to 0, the second to 1, and the fourth to 4. Your rivals will react instantly to what is happening. There is no longer any trace of sluggishness in their reactions.

As for the TimeToRevertToAlertLevelQuietWhenInAlertLevelAwared and TimeToRevertToAlertLevelAwaredWhenInAlertLevelVeryAwared indicators, their values should be increased to 15 and 10, respectively. The first sets the time (here and hereafter — in seconds) that an enemy who has raised an alarm waits before canceling it (if, of course, they do not notice anything suspicious during this period). The second is the time your extremely concerned foe waits in enhanced alert mode before calming down slightly and returning to normal. These changes will slightly improve the opponents' memory so that they do not forget about danger too quickly.

Enemies in our mod attack more decisively and unexpectedly.

Another characteristic from the current section — SquadAwarnessDist — sets the distance at which your enemies can pass information about the player's location to each other. We recommend increasing this to 600; then the creatures will interact better with each other and coordinate effectively.

The HelpWhenCaughtByTelekinesisMinTime and HelpWhenCaughtByTelekinesisMaxTime attributes determine the minimum and maximum delay before a creature manages to shout "Help!" upon falling under the effect of telekinesis. We advise setting the first value to 2 and the second to 5.

It would be useful to lower the number corresponding to the mul_damages_Npc_Not_alerted setting (damage multiplier for a character who has not yet raised an alarm) to 2. After this, foes will always be ready for your attack. Surprise alone will now fool very few.

For the SearchRadius and SearchRadiusAfterAttack parameters, which set the radius of a monster's patrol area (in the second case, one that has been attacked), it is better to set values 700 and 150 respectively. This change will slightly expand your opponents' movement routes.

Further down you will find the MaxCall4HelpNPCAgainstPlayer characteristic, denoting the maximum number of cries an enemy will emit upon noticing the player. Indeed, why do most opponents ask for help only three times? Do they swallow their tongues afterward? Let's raise the number written here from 3 to 5-6.

The PlayerParryTimeToBreakIt characteristic is no less important. It affects combat tactics. It works as follows: while the player blocks hits (holding the right mouse button), the enemy uses an attack that does not break the block for the duration specified by the characteristic. If you hide behind a block for too long, your opponent will attempt to crush the defense with a powerful blow or outsmart you using deceptive movements. It is best to lower the value of this attribute to 3, so that you stop being attacked by the same hits at the start of an attack and they change tactics after three hits.

Let's look at three attributes that set monster evasiveness: DodgeDelay — minimum time between dodging your attacks, PreventiveDodgeDelay — minimum delay between effective strike evasions, PreventiveDodgeChance — chance to perform a maximally effective evasion instead of a normal one. To make opponents perform this simple but very useful combat move more often, lower the values of the first two parameters to 10-12 and increase the value of the third to 0.3-0.5. Then enemies will have more freedom for maneuvers, and consequently — their behavior during battle will become unpredictable.
Difficulty Control

The Dynamic difficulty comment opens a group of twelve attributes that directly affect game difficulty. Here is what the first three parameters are responsible for:

DifficultyEasyNpcDmgMul — damage multiplier caused by the player to enemies and NPCs on easy difficulty level.

DifficultyEasyPlayerDmgMul — damage multiplier dealt to the player by his enemies and NPCs on easy difficulty level.

DifficultyEasyDifficultyMul — general game difficulty on easy level. Just keep in mind that the lower the value of this attribute, the higher the difficulty.

Next are six more similar indicators. Three of them, where "Hard" stands instead of "Easy" in the name, describe medium game difficulty. Another three, where "HardCore" appears instead of "Easy", relate to high difficulty.

Slightly lower you will find another three parameters determining combat difficulty: DifficultyCombatEasy — on easy level, DifficultyCombatAverage — on medium, DifficultyCombatHard — on high.

The group of attributes described above allows you to properly distribute the difficulty by lowering or raising the same. If you are already an experienced gamer for whom the game is manageable even on the highest difficulty, it would be logical to slightly increase the values of most characteristics. Try, for example, increasing the values of DifficultyHardCoreNpcDmgMul, DifficultyHardCorePlayerDmgMul, DifficultyHardCoreDifficultyMul and DifficultyCombatHard to 0.5-0.6, 1.6-1.7, 0.5-0.6 and 0.6-0.7 respectively. Set the highest difficulty in the game and prepare for serious challenges. Beginners, on the other hand, can make their lives a bit easier.
Monsters vary...

So far we have only worked with general AI characteristics. Naturally, each type of monster has its own set of parameters. You will find such attributes in files with the .qct extension, sorted by the following subdirectories (each is dedicated to a specific variety of undead and contains only one file) within the <game folder>\mm\models\npc directory: \bone_dragon (bone dragon), \cyclope_undead (cyclops), \deathknight (Death Knight), \ghoul (vampire), \goblin (goblin), \lich (lich), \lich_king (lich king), \menelag (sorcerer Menelag), \necroguard (Necromancer guard), \necromancer_lord (Necromancer lord), \orc_chief (orc chief), \undead (undead). In any of the files, you will encounter the following settings:

difficulty — enemy level (the characteristic value varies between 0 and 1). This manifests mainly in the enemy's behavior during combat. The higher the number, the more often the enemy attacks.

strength — enemy strength.

dexterity — agility.

life_regen — regeneration speed. For warriors not endowed with this valuable ability, a zero is placed here.

A kick to the head is now not only a sure way to knock an enemy off their feet but also an effective combat move that, however, consumes quite a bit of energy.

AttackCoolMinTime — minimum time interval between two attacks by a monster if it was in a calm state before. Reduce the value of this and the next indicator (say, by one and a half times), and the monster will conduct the fight at a faster pace.

AttackBersekerMinTime — minimum interval between two attacks performed by an opponent driven mad by rage.

AttackBersekerMaxTime — maximum interval.

cowardice — cowardice (in percent). With a high attribute value, the opponent will avoid battle with the player in every way if the latter is armed. Many enemies turn out to be absolute cowards — this is evidenced by the number 100 indicated here. To influence the situation, it is enough to lower the attribute value to 50-75. There is no place for cowards in our modification!

arrow_impal — this attribute determines whether Saref can impale a monster with an arrow (1 — yes, 0 — no).

charmable — determines if the "Charm" spell works on the character, temporarily turning the enemy into an ally.

Defeating a cyclops was not easy before, and now it's practically impossible. But he has an Achilles' heel; you just have to find it.

maxsightdistancequiet — maximum sight distance of the creature in a calm state.

maxsightdistancealerted — same for an enemy that has raised an alarm.

fieldofviewquiet — field of view for a calm state.

fieldofviewalerted — field of view for an alert state.

TimeKnockedDownByPhysics — the time during which an enemy is in knockdown after a strong hit by any object. The standard value for this parameter is 3, which gives the main character quite a lot of time to finish off the victim. But if you write a value of 2, very fast reaction will be required from you — there will be no time for reflection at all after an accurate hit.

max_jump_rise — jump height.

max_jump_drop — maximum height from which a monster can fall without pain.

max_jump_dist — jump length.

mana_drainable — here it is determined whether the player can steal mana from this character (1 — yes, 0 — no).

npc_health — health.

ChanceToFreeze — chance to freeze an enemy using the "Freeze" spell. Minimum value (at which the enemy cannot be frozen) is 0, maximum is 1.

By changing the values of these parameters, you can influence the strength and abilities of your foes. It is quite simple to manage the speed-combat characteristics of enemies, their survivability, and even qualities such as agility, evasiveness, alertness, and aggressiveness. Skilled players can easily increase the values of the corresponding settings.NPC


In the ai section you will find attributes relating to NPCs. With their help, you can change their behavior.

Spontaneousalerted_min_time — minimum time during which an agitated character (i.e., currently participating in a battle or in search mode), whether an NPC or your enemy, chats with a hero friendly toward them.

Spontaneousspeech_min_time — minimum time during which a character in a normal state speaks.

Spontaneousspeech_max_time — maximum time a character is capable of speaking.

Spontaneousspeech_max_dist — maximum distance at which an NPC (or your foe) can start a conversation with their comrade (including you, if referring to peaceful citizens).

These four characteristics control the talkativeness of the inhabitants of the game world. In the original, they are, frankly speaking, laconic. If you want to fix this situation, raise the values of all these indicators. You can make it so that characters practically never shut their mouths, becoming true demagogues. True, their speeches will not be particularly refined in any case, but they certainly will be more meaningful.

NbFriendPlayerAttackBeforHateHim — number of attacks after which a neutral or friendly character begins to treat the main hero negatively. Initially in the game, all characters become enemies after the very first hit.

Saref

In a separate block — player — in the mm_game_settings.txt file, player parameters are listed. It is possible that as a result of all the above transformations, the game will prove to be excessively difficult for you. In this case, it would be logical to slightly strengthen the main hero, Saref. His characteristics can be increased by adjusting the following indicators:

poison_resistance — protection against poison.

kick_damage — kick damage. If you have properly upgraded the enemies, it will be useful to increase the value here to 3-5.

stamina_kick_npc — energy (stamina) consumption when the player kicks an opponent.

stamina_kick_all — energy consumption when Saref kicks a piece of scenery. If you strengthen the kick, it is also logical to slightly increase the energy costs for it. The stamina_kick_npc parameter should be set to a value between 4 and 6, and stamina_kick_all — between 2 and 3.

PlayerTakeDist — maximum distance from which Saref can pick up an object.

PlayerTelekinesisDist — same for the telekinesis spell.

CloseArrowDist — maximum distance at which a shot is considered to be fired from close range (meaning the next attribute's effect is activated), and therefore, it is more dangerous for the victim.

CloseArrowDmgScale — damage multiplier for a short-range shot. Initially, there is a one here, meaning a close-range shot is completely identical to a long-range shot. However, this, you'll agree, is not entirely correct. It's better to put a number around 1.2-1.5 here.

Work on the mod is finished. In our expansion, monsters fight and move very quickly, hear better, and see each other and approaching danger better. Intelligent, tough, fast, fearless, unpredictable in battle, moderately inventive, agile and evasive, they are capable of providing serious competition even to the most skilled gamer.

Additionally, many additional parameters will allow you to choose opponents that most accurately match your skill level and gaming experience. Do not forget about NPCs. A couple of simple transformations — and now they are capable of delivering the longest tirades. After all these changes, the inhabitants of the game world will simply be unrecognizable.

P.S. article taken from Igromania
Все сюда,будем готовится к новому году
User Avatar
19 years ago
Auto-translated
What's your point? Or did you just stumble upon it online and decide to copy it?
Без пафоса и найденых через поисковик цитат: Ухахахахаха...:smile40:
User Avatar
19 years ago
Auto-translated
Then, please indicate where you copied it from and provide a link to the resource. Otherwise, plagiarism will be punished.
Тьма - это то, что позволяет смертным не забывать, как ярок бывает свет.
User Avatar
19 years ago
Auto-translated
Well, considering that in Igromania, the world of M&M6-8 is called Xeen, and the Ancients are from Cron... But this isn't about the plot.
In reply to XEL
User Avatar
19 years ago
Auto-translated
XEL;96509
Well, considering that in Igromania, the world of M&M6-8 is called Xeen, and the Ancients are from Cron... But this isn't about the plot.
And what was the point of that, if I may ask?;)
Без пафоса и найденых через поисковик цитат: Ухахахахаха...:smile40:
User Avatar
19 years ago
Auto-translated
Just like Igromania, mistakes happen. Although, it really was off-topic.

Statistics

Welcome our newest member: recijeb