Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 09.03.2011, 12:29   #1 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard Stärke der KI-Einheiten

Stellt man zwei feindliche Infanterie KI-Gruppen gegenüber auf, dann wird meist die Gruppe siegen, in welcher sich der Spieler befindet.

Das weist darauf in, das ArmA sichtlich einer Gruppe, in welcher sich der Spieler befindet, bessere Eigenschaften zuweist.

Für diese Einstellungen gibt es mehrere Parameter. Hier ein Skript, mit welchem alle Eigenschaften einzelner KIs auf das Maximum gestellt wird.

Code:
//Setzt bei einer Gruppe alle Skills auf Maximum [Vienna  09.03.2011]
//
//Aufruf: Gruppe execVM "GruppenSkill.sqf";
//  Beispiel für Auslöser: temp1 = Gruppe1 xecVM "GruppenSkill.sqf"
//
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// Beim gleichzeitigen Aufrufen des Skripts ist zu beachten, dass die vorgestellte
// Variable (hier temp1) jeweils einen anderen Namen hat!! Sonnst kommt es zu Fehlern!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

private ["_gruppe","_skillsMax"];

_gruppe = _this;

//Funktion alle Skills auf Maximum. Aufruf: Unit call _skillsMax;
_skillsMax = 
  {
    {_this setSkill [_x, 1]}
    forEach
    [
      "aimingAccuracy",
      "aimingShake",
      "aimingSpeed",
      "endurance",
      "spotDistance",
      "spotTime",
      "courage",
      "reloadSpeed",
      "commanding",
      "general"
    ]
  };

{_x call  _skillsMax} forEach units _gruppe
Hiermit wird allen Einheiten einer Gruppe die maximale Stärke zugewiesen. Ich habe nicht getestet, ob es reichen würde die Funktion nur für den Leader einer Gruppe aufzurufen.

Im Anhang eine Testmission, in welcher vorerst die vom System vorgegebene Stärke in den Gruppen vorhanden ist. Damit kann getestet werden, wie im überwiegenden Anteil die Gruppe des Spielers gewinnt, egal auf welcher Seite er spielt.

Wenn danach der Auslöser, der das Skript aktiviert, auf true gestellt wird. Dann ist zu sehen, dass die Gruppen eine ausgeglichene Gewinnwahrscheinlichkeit haben.
Angehängte Dateien
Dateityp: zip ___Test_KI-utes.zip (4,0 KB, 117x aufgerufen)
Vienna ist offline  
Alt 09.03.2011, 14:29   #2 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Ich habe das Skript so abgeändert, dass man als Parameter auch den Wert (0-1) einstellen kann. So ist es möglich den Gruppen unterschiedliche Werte zu geben.

Am besten sieht man wie enorm die Auswirkungen sind, wenn man einer Gruppe den Wert 1 und der anderen den Wert 0 gibt.

Code:
//Setzt bei einer Gruppe alle Skills auf einen Wert (0-1)               [Vienna  09.03.2011]
//
//Aufruf: [Gruppe,Wert von 0-1] execVM "GruppenSkill.sqf";
//  Beispiel für Auslöser: temp1 = [Gruppe1,1] xecVM "GruppenSkill.sqf"
//
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
// Beim gleichzeitigen Aufrufen des Skripts ist zu beachten, dass die vorgestellte
// Variable (hier temp1) jeweils einen anderen Namen hat!! Sonnst kommt es zu Fehlern!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

//"aimingAccuracy" = Zielgenauigkeit
//"aimingShake"    = Verwackeln beim Zielen
//"aimingSpeed"    = Zielerfassung
//"endurance"      = Ausdauer
//"spotDistance"   = Feindwahrnehmung
//"spotTime"       = Wahrnehmungszeit
//"courage"        = Mut
//"reloadSpeed"    = Nachladegeschwindigkeit
//"commanding"     = Kommandierfähigkeit
//"general"        = allgemeine Spielstärke

private ["_gruppe","_wert","_skillsMax"];

_gruppe = _this select 0;
_wert   = _this select 1;

//Funktion alle Skills auf Maximum. Aufruf: Unit call _skillsMax;
_skillsMax = 
  {
    {_this setSkill [_x, _wert]}
    forEach
    [
      "aimingAccuracy",
      "aimingShake",
      "aimingSpeed",
      "endurance",
      "spotDistance",
      "spotTime",
      "courage",
      "reloadSpeed",
      "commanding",
      "general"
    ]
  };

{_x call  _skillsMax} forEach units _gruppe
Bei entsprechender Abänderung, oder überhaupt Einzelaufruf des Befehls, ist individuelles Einstellen jeder Eigenschaft möglich.
Vienna ist offline  
Alt 09.03.2011, 14:36   #3 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Hab mal detailliert die Skills jeder einzelnen Einheit ausgeben lassen.
Folgendes kam dabei für East raus:
Code:
===================
Unit: O 1-1-A:1
aimingAccuracy: 0.6
aimingSpeed: 0.6
aimingSpeed: any
endurance: 0.6
spotDistance: 0.6
spotTime: 0.6
courage: 0.6
reloadSpeed: 0.6
commanding: 0
general: 0.6
===================

===================
Unit: O 1-1-A:2
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: O 1-1-A:3
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: O 1-1-A:4
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:5
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:6
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:7
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:8
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:9
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: O 1-1-A:10
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: O 1-1-A:11
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: O 1-1-A:12
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================
Und für West:
Code:
===================
Unit: B 1-1-A:1
aimingAccuracy: 0.6
aimingSpeed: 0.6
aimingSpeed: any
endurance: 0.6
spotDistance: 0.6
spotTime: 0.6
courage: 0.6
reloadSpeed: 0.6
commanding: 0
general: 0.6
===================

===================
Unit: B 1-1-A:2
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: B 1-1-A:3
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: B 1-1-A:4
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: B 1-1-A:5
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:6
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:7
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:8
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:9
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:10
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:11
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: B 1-1-A:12
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================
Hier das Skript:
Code:
private ["_aimingAcc", "_aimingShake", "_aimingSpeed", "_endurance", "_spotDistance",
		 "_spotTime", "_courage", "_reloadSpeed", "_commanding", "_general"
		];

_group = _this select 0;

{
	_aimingAcc = _x skill "aimingAccuracy";
	_aimingShake = _x skill "aimingShake";
	_aimingSpeed = _x skill "aimingSpeed";
	_endurance = _x skill "endurance";
	_spotDistance = _x skill "spotDistance";
	_spotTime = _x skill "spotTime";
	_courage = _x skill "courage";
	_reloadSpeed = _x skill "reloadSpeed";
	_commanding = _x skill "_commanding";
	_general = _x skill "general";

	diag_log text format [""];
	diag_log text format ["==================="];
	diag_log text format ["Unit: %1", _x];
	diag_log text format ["aimingAccuracy: %1", _aimingAcc];
	diag_log text format ["aimingSpeed: %1", _aimingSpeed];
	diag_log text format ["aimingSpeed: %1", _aiminingSpeed];
	diag_log text format ["endurance: %1", _endurance];
	diag_log text format ["spotDistance: %1", _spotDistance];
	diag_log text format ["spotTime: %1", _spotTime];
	diag_log text format ["courage: %1", _courage];
	diag_log text format ["reloadSpeed: %1", _reloadSpeed];
	diag_log text format ["commanding: %1", _commanding];
	diag_log text format ["general: %1", _general];
	diag_log text format ["==================="];
} forEach units _group;
Man sieht hier, dass beide Seiten die gleichen Skills haben.
Und anscheinend wirken die Schwierigkeitsgradskills nicht, sondern die Editorskills.
Ansonsten hätten alle Einheiten einen Skill von 1.
Die Frage ist trotzdem, warum die eigene KI trotz gleichem Skill jedes Mal gewinnt.

Wenn man den Skill auf 1.0 durch dein Skript hochschraubt, dann sind beiden Seiten gleich stark.
Es sieht aber meistens so aus, dass der EastLeader als erstes stirbt, dadurch verliert das East Squad natürlich den besten Mann und die anderen Soldaten haben einen commanding Skill von 0. Kann also schon damit zusammenhängen.
Durch dein Skript setzt du ja auch den commanding Skill von jeder Einheit auf 1, sodass eigentlich fast jeder Soldat ein perfekter Leader ist
Vordefinierte Gruppen im Editor ist zu setzen ist doof, da jede Einheit einen unterschiedlichen Skill hat :]
Man müsste das mal mit einzeln gesetzten Einheiten mit jeweils einem Skillwert von 0.5 testen.

Hab den Skill mal manuell auf 1.0 bei jeder Einheit im Editor gesetzt.
Selber Effekt wie mit deinem Skript, denn deins macht ja auch nichts anderes.
Ich sehe das Problem darin, dass vordefinierte Gruppen unterschiedliche Skills haben. Und wenn der Feind es schafft zuerst die "gut geskillten" Soldaten zu erschießen ist es logisch, dass der Feind gewinnt.

Geändert von Cyborg11 (09.03.2011 um 14:48 Uhr).
Cyborg11 ist offline  
Alt 09.03.2011, 15:23   #4 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Es kommt auch auf das Gelände an auf denen sich die Einheiten jeweils bewegen. Auch wie schnell die Einheiten eine vorteilhafte Stellung einnehmen. Man weiß ja, wie irr sich die KI z.B. beim Lenken eines Fahrzeuges aufführt. Wenn sich die Soldaten gegenseitig im Weg stehen, oder vielleicht gar einen Busch oder Baum in der unmittelbaren Umgebung haben, dann bringt das einige Verwirrung, die bei einer Gruppe 50% Verluste verursachen kann, bevor sie aktiv am Kampfgeschehen teilnimmt.

Auch ist sicher ein weiterer Zufallsfaktor eingebaut, sonst würde bei Einstellung 1 alles 100% sein.

In den Klassen sind anscheinend noch andere Werte vorhanden, die man mit setSkill gar nicht einstellen kann.
CfgAISkill - Bohemia Interactive Community
Vienna ist offline  
Alt 09.03.2011, 15:41   #5 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Lester
 
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
Standard

Hast du mal manuell (via Texteditor) die Ost- bzw. Westeinheiten ausgetauscht und geguckt ob die Spielerseite dann immer noch die Gewinnerseite ist ?
Kleinste Geländeunterschiede können schon für enorme Vor- bzw. Nachteile sorgen, dies gilt insbesondere weil das Gleichgewicht sehr schnell kippen kann.

Bei 0 Abschüssen werden z.B. Einheiten mit höheren Thread und Cost Werten als Ziele bevorzugt.
Steht ein Soldat mit durchschlagenderer Waffe etwas günstiger für die eine Partei zum Abschuß, ist oftmals der Lavineneffekt bereits losgetreten.
Aufgrund der angesammelten "Abschusskosten" wird dann zb. der Bursche der den gekillt hat wiederum recht schnell bevorzugt aus "Rache" unter Feuer genommen.
Im Gegenzug kann dessen Seite es wiederum schaffen jemand mit stärkerer Waffe abzuschießen der noch deutlicher auf sich aufmerksam gemacht hat.


Tauscht man die Einheiten exakt aus sollten wiederum zwar statistisch umgekehrte Ergebnisse dabei herauskommen, aber da ist dann noch Väterchen Waffenqualität am Werk.
Wenn Da nur ein Thread/Cost/etc. Wert besser ist kann es wiederum ständig ungleich enden.

Genaugenommen müßte man identische Truppen mit identischer Ausrüstung wählen und dann die Seite in der Missionsdatei verbiegen um wirklich sicher zu sein.
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547
Lester ist offline  
Alt 09.03.2011, 15:46   #6 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 17.02.2011
Beiträge: 116
Standard

man muss hierbei auch immer bedenken, dass die Spieler KI auf niederen Schwierigkeitsgraden immer besser ist, als die Gegner KI.
Code:
class Difficulties
{
    class recruit
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=0.55000001;
        precisionFriendly=1;
        precisionEnemy=0.55000001;
    };
    class regular
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=0.69999999;
        precisionFriendly=1;
        precisionEnemy=0.69999999;
    };
    class veteran
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=0.89999998;
        precisionFriendly=1;
        precisionEnemy=0.89999998;
    };
    class mercenary
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=1;
        precisionFriendly=1;
        precisionEnemy=1;
    };
};
mhh...also nich nur auf niederen, sondern eher immer
$CHLUCKi ist offline  
Alt 09.03.2011, 15:49   #7 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von INNOCENT&CLUELESS
 
Registriert seit: 16.11.2006
Ort: Paris-Rom-Erkner
Alter: 53
Beiträge: 6.205
Standard

QUOTE]Ich sehe das Problem darin, dass vordefinierte Gruppen unterschiedliche Skills haben. Und wenn der Feind es schafft zuerst die "gut geskillten" Soldaten zu erschießen ist es logisch, dass der Feind gewinnt.[/quote]

Ist doch ok, wie im wahren Leben! Leg den Offizier um und danach knallst du die kopflosen Hühner ab. CommandSkill = 0 ist natürlich sinnlos.

Ist 1-1-A:1 jeweils der Commander oder die erste Einheit unter dem Commander? Weil der auch commanding=0 hat.

Egal wie, normale Einheiten haben immer begrenzte Commandofähigkeiten und dies könnte man ja auch so abbilden.
__________________
INNOCENT&CLUELESS ist offline  
Alt 09.03.2011, 17:03   #8 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

O/B 1-1 A:1 sind jeweils die Squadleader. Die Leader sind Truppanführer.
Ich glaub, dass der commanding Skill entweder nur bei Offizieren auf 1 oder niemals bei den Standardeinstelllungen auf 1 ist D:
Aber trotzdem dürfte das bei diesem KI Gefecht ja eigentlich egal sein, da beide Leader auf beiden Seiten nicht kommandieren können.
Ist der Skill beider Seiten auf 1 sind es spannende Gefechte, die sehr selten gleich ausgehen. Lässt man den Skill aber standardmäßig und lässt die KI gegeneinander kämpfen, dann gewinnt komischerweise immer das Squad, in dem der Spieler ist. Das bezieht sich jetzt aber nur auf die BLUFOR Seite, wenn der Spieler im West Squad ist.
Bin gerade mal dem East Squad beigetreten und jedes Mal wurde mein Squad geschlagen (ohne Skilländerung).

@$CHLUCKi: Man kann den Skill der Einheiten aber auch selber definieren und ist nicht an eine Standardschwierigkeit gebunden.

Geändert von Cyborg11 (09.03.2011 um 17:05 Uhr).
Cyborg11 ist offline  
Alt 09.03.2011, 17:25   #9 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Ich habe immer, bei gleichbleibender Aufstellung, die Seite gewechselt und einen einfachen Schützen als Spieler gewählt. Dabei war eben zu bemerken, dass die Seite mit dem Spieler, bei annähernd gleichen Chancen, öfter siegte. Da sowieso immer ein geringfügig anderer Ablauf erfolgt, wird es kaum einen Unterschied machen,wenn man die Seiten im "Missionstext" umdreht. Ich habe auf 10 Meter Plazierungsspielraum eingestellt, um etwaige gleichbleibende Zufälle auszuschließen.

Mit der Skill-Einstellung ist ein erheblicher Einfluss auf das Verhalten der KIs möglich. Aber wie man sieht gibt es noch viele andere unbeeinflussbare Parameter, die oft den Ausgang entscheiden, wenn die Skill-Einstellungen nicht extrem unterschiedlich sind. Diese kleinen unbeeinflussbaren Parameter wirken sich aber anscheinend weniger aus, wenn Skill auf 1 steht.
Vienna ist offline  
Alt 10.03.2011, 11:58   #10 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Wie sich herausstellte, setzt der Befehl <Unitname> setskill 1 alle oben angeführten Skills auf 1. Die einzelnen Skills anzuführen macht also nur Sinn, wenn man den einzelnen Skills unterschiedliche Werte zu weisen will.

Um die alle Skills aller Seiten auf 1 zu stellen reicht folgende Zeile:

call {{_x setskill 1} foreach allUnits};
Vienna ist offline  
Alt 10.03.2011, 13:30   #11 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Man kann im Fenster "Einheiten bearbeiten" mit dem Schieberegler die "Fähigkeiten" einer Einheit einstellen. Dabei ergeben sich für alle Skill-Fähigkeiten die gleichen Werte von 0,2 bis 1.

Es ist kein Unterschied gegenüber der Einstellung mit dem Befehl setSkill zu sehen!

Das Skript zum Anzeigen der Werte:

Skill.sqf
Code:
//Auslesen und Anzeigen der Skills einer Einheit mit hintC.
//
//Aufruf in Auslöser: temp = <Unit> execVM "Skill.sqf";

private ["_Ux","_tx"];

_Ux = _this;

_tx = format["Skill von %1\n\n",name _Ux];
_tx=_tx + "Zielgenauigkeit: "   + str(_Ux skill "aimingAccuracy") + "\n";
_tx=_tx + "Zittern: "           + str(_Ux skill "aimingShake")    + "\n";
_tx=_tx + "Zielerfassung: "     + str(_Ux skill "aimingSpeed")    + "\n";
_tx=_tx + "Ausdauer: "          + str(_Ux skill "endurance")      + "\n";
_tx=_tx + "Feindwahrnehmung: "  + str(_Ux skill "spotDistance")   + "\n";
_tx=_tx + "Wahrnehmungszeit: "  + str(_Ux skill "spotTime")       + "\n";
_tx=_tx + "Mut: "               + str(_Ux skill "courage")        + "\n";
_tx=_tx + "Nachladen: "         + str(_Ux skill "reloadSpeed")    + "\n";
_tx=_tx + "Kommandieren: "      + str(_Ux skill "commanding")     + "\n";
_tx=_tx + "allgemein: "         + str(_Ux skill "general");

hintC _tx
Wer sich in der arma.RPT die Werte einer Gruppe anzeigen lassen will, hier nochmals das Skript von Cyborg11, wo sich bei ihm einige Fehler eingeschlichen haben (z.B. bei commanding, dort gibt es auch bei allen KIs Werte von 0-1):

SkillAuslesen.sqf
Code:
//Liest von einer Grupp die Skill-Werte aus
//
//Aufruf: temp = <Gruppenname> execVM "SkillAuslesen.sqf"
// 
// Die Daten sind in der Datei arma2.rpt abgespeichert
//Pfad: C:\Dokumente und Einstellungen\.....\Lokale Einstellungen\Anwendungsdaten\ArmA 2\

private 
  ["_aimingAcc", "_aimingShake", "_aimingSpeed",
   "_endurance", "_spotDistance","_spotTime",
   "_courage", "_reloadSpeed", "_commanding", "_general"];

{
	_aimingAcc    = _x skill "aimingAccuracy";
	_aimingShake  = _x skill "aimingShake";
	_aimingSpeed  = _x skill "aimingSpeed";
	_endurance    = _x skill "endurance";
	_spotDistance = _x skill "spotDistance";
	_spotTime     = _x skill "spotTime";
	_courage      = _x skill "courage";
	_reloadSpeed  = _x skill "reloadSpeed";
	_commanding   = _x skill "commanding";
	_general      = _x skill "general";

	diag_log text format [""];
	diag_log text format ["==================="];
	diag_log text format ["Unit: %1", _x];
	diag_log text format ["aimingAccuracy: %1", _aimingAcc];
	diag_log text format ["aimingShake: %1",    _aimingShake];
	diag_log text format ["aimingSpeed: %1",    _aimingSpeed];
	diag_log text format ["endurance: %1",      _endurance];
	diag_log text format ["spotDistance: %1",   _spotDistance];
	diag_log text format ["spotTime: %1",       _spotTime];
	diag_log text format ["courage: %1",        _courage];
	diag_log text format ["reloadSpeed: %1",    _reloadSpeed];
	diag_log text format ["commanding: %1",     _commanding];
	diag_log text format ["general: %1",        _general];
	diag_log text format ["==================="];
} forEach units _this
Vienna ist offline  
Alt 10.03.2011, 13:30   #12 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Frage zwischendurch, wieso benutzt du dafür call und nicht spawn, damit es parallel mit anderen Sachen läuft? :]
Cyborg11 ist offline  
Alt 10.03.2011, 13:40   #13 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Spawn verlangt in einem Auslöser eine Variable vorgestellt. Ich glaube bemerkt zu haben, wenn man z.B. in einem Auslöser für zwei hintereinander stehende Aufrufe die selbe Variable voranstellt (temp = ......; temp = .....), dass es bei solchen Routinen zu Fehlern kommt.
Vienna ist offline  
Alt 27.04.2011, 14:12   #14 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.192
Standard

Gibt es mittlerweile eine Lösung für die peinliche "KI gewinnt nur, wenn der Spieler auf IHRER Seite ist" Sache?

Mal so ganz nebenbei: was denken die sich dabei sowas einzustellen? Steht auf der Verpackung nicht Millitärsimulation? Denke das ist ein billiger Markttrick, weil die genau wissen das sie wenig Kunden haben... damit sich die Kunden wie Helden fühlen, weil sie immer gewinnen. Was auch immer - dafür verdienen sie wiedermal ein geschlossenes Studio.

Mir fällt auf das die Gegner einfach immer ne andere Taktik haben. Habe grade Pakistanische Soldaten gegen US Soldaten kämpfen lassen. Wenn ich US Soldat spiele, bewegen sich die Pakistaner in unserer Richtung und schiessen, die US Soldaten bleiben einfach liegen und schiessen... wenn ich Pakistani bin ist es halt genau umgekehrt, die US Soldaten bewegen sich und die Pakistanis bleiben liegen und feuern.... Wurde NIE abgeschossen. Das Gefecht lief auf ca. 500 Metern distanz auf offener Wüste...

Wie kann man da noch Spaß haben wenn man sowieso weiß das man gewinnt. Ist doch total fail sowas.

Zudem gerät man in Arma selten unter Beschuss... KI EInheiten werden deutlich bevorzugt. Aber naja, was will man von Programmierern erwarten die im erbärmlichen Zustand leben und Sat 1 Actionfilme und CoD als Kontrast sehen.
JSR ist offline  
Alt 27.04.2011, 14:35   #15 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Buccs
 
Registriert seit: 03.10.2006
Ort: Aus dem Oooosten
Alter: 53
Beiträge: 1.286
Standard

Ich dachte das Thema KI und damit ArmA2 wäre für dich erledigt. Jetzt kommst du wieder mit der alten Leier und streust darin ein paar unqualifizierte Behauptungen

Du bist ein Troll. Das ist alles.
Buccs ist offline  
Alt 27.04.2011, 14:37   #16 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.192
Standard

Kann dir eig. egal sein obs nun für mich abgeschlossen ist oder nicht. Fakt ist: BIS stellt ihre KI so ein, das der Spieler die höheren Chancen hat zu gewinnen. Kurz gesagt: eine realistische Millitärsimulation! (IRONIE)

Und meine Frage ist: ob es irgendwie behoben werden kann, WEIL ich vernünftige Gefechte in Arma erleben möchte und auch mal unter Beschuss geraten möchte und solange Arma die einzige Alternative bleibt auf dem Markt habe ich leider keine anderen Ausweichmöglichkeiten.

"Du bist ein Troll" - Weil ich kein Fanboy bin und FAKTEN erwähne? Mehrere Leute haben bereits die Sache mit der KI bestätigt, das die KI gewinnt auf welcher SEITE der SPIELER spielt.

Aber naja, mit 40 SCHON so eine schöne Argumentation auf den Tisch legen.... super!

Geändert von JSR (27.04.2011 um 14:47 Uhr).
JSR ist offline  
Alt 27.04.2011, 19:57   #17 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von AyzOn
 
Registriert seit: 14.10.2010
Ort: NRW
Alter: 29
Beiträge: 347
Standard

Ich glaube du willst das unmögliche... Ich habe noch kein einziges Spiel gespielt in dem die KI durch einen höheren Schwierigkeitsgrad besser wurde, sie wurde einfach nur übertrieben treffsicher oder hielt mehr aus als vorher aber sie bekam nie ein besseres Verhalten, sie blieb wie immer einfach dumm. Das selbe ist auch bei ArmA der Fall, es ist halt KI da darf man sowieso nicht allzuviel verlangen... Hab zwar auch gemerkt das man häufig gewinnt, als USMC gegen Russland hab ich allerdings auch häufig verloren. Es ist spannend vllt. nicht so wie man es gerne hätte, aber wenn man gegen einen Gegner spielen will der sich wie in echt verhält, sollte man gegen Menschen spielen. Und das nicht unter Beschuss geraten ist bei mir jedenfalls noch nicht passiert.
AyzOn ist offline  
Alt 27.04.2011, 20:00   #18 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

Och... mit den richtigen Settings und Addons kann man da schon eine Menge mehr rausholen als Vanilla ArmA2 zu bieten hat.

Aber man kann natürlich lieber quengeln...
__________________
Buliwyf ist offline  
Alt 27.04.2011, 22:42   #19 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.192
Standard

Naja wie gesagt, mit Mods zocke ich schon!
ACE ist nicht wegzudenken... ansonsten wird halt viel rumgetestet... GL4 hat ein paar nette Einstellungen aber der SKILL der KI ist etwas jämmerlich im Nahkampf.

Ich rege mich auch nur deswegen dadrüber auf, weil ich viel Potenzial sehe in dem Game... es wird aber eben nicht genutzt! "OFP" DR ist ein schlechtes Spiel... es gibt aber eine KI Modifizierung die man noch etwas verändern kann.... dann ist die KI im Nahkampf und auf Distanz um einiges besser als in Arma. Sowas in Arma und Arma wäre der hammer. Arma brauch in meinen Augen nur ne hardcore KI.
JSR ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Einheiten aus den alternativen Schützenplätzen werfen! GER_CJ-187 Editing & Scripting 7 17.11.2010 16:29
Einheiten springen gleichzeitig aus Helikopter bei Bodenberührung ca$hflow Editing & Scripting 24 25.09.2010 19:41
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen Noobfire Editing & Scripting 8 06.08.2010 16:22
Script-Problem: Einheiten löschen Kampfmöhre Editing & Scripting 5 31.05.2010 13:37
Einheiten abspringen lassen. comrade91 Editing & Scripting 7 23.05.2010 09:27


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119