User Tag List

Ergebnis 1 bis 3 von 3

Thema: Arbeiten mit NPCs: Teil 4 - Das ai_relationship Entity

  1. #1
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    26
    Beiträge
    948
    Blog-Einträge
    3
    Renommee-Modifikator
    17

    Arbeiten mit NPCs: Teil 4 - Das ai_relationship Entity

    Arbeiten mit NPCs Teil 4 - Das ai_relationship Entity


    Weiter geht’s mit den nächsten Teil der Tutorialreihe “Arbeiten mit NPC´s”.

    Preisfrage: Was passiert wenn wir einen Rebell, einen Combine und den Spieler in einen Raum einsperren?
    Der Combine und der Rebell gehen sich an die Gurgel. Überlebt der Combine diesen Kampf versucht er auch uns in Hackfleisch zu verwandeln. Warum? Weil der Combine uns aus tiefstem Herzen hasst. Der Combine wurde so programmiert das er die Rebellen und uns angreift. Logisch, sonst würde Half-Life 2 ja ganz schön langweilig sein.

    Welche NPC´s in Half-Life 2 wen hassen, mögen, fürchten oder neutral eingestellt sind findet ihr im Valve Developer Wiki: http://developer.valvesoftware.com/w...ionships/table

    Diese werte können wir mit einem Entity verändern: Das ai_relationship:

    Name:  Ai_relationship.png
Hits: 182
Größe:  5,7 KB

    Mit den ai_relationship können wir die vorgegebenen Werte für bestimmte NPC´s oder ganze Klassen verändern.

    Ai_relationship für bestimmte NPC´s

    Spinnen wir unsere Idee mit den Rebell und den Combine weiter.
    Als erstes bauen wir unseren Rebell in unsere Testmap.

    Erstellt dazu ein "npc_Citizen". Ihr seht nun einen Bürger. Um den Bürger zu einen Rebell zu machen, geht unter "Properties" auf "Type" und stellt dort Rebell ein. Unserem Rebell geben wir auch einen Namen: “Rebell“. Wenn ihr wollt könnt ihr ihm auch eine Waffe geben.

    Nun zum Combine Soldier: Erstellt ein "npc_combine_s" und gebt ihm den Namen “Combine”.

    Nun erstellen wir unser ai_relationship. Hier stellen wir unter "Properties" folgendes ein:

    Name: Dieses Feld lassen wir leer. Hier könnt ihr dem Entity einen Namen geben um es z.B. mit einen Trigger einzuschalten.
    Subject(s): “Rebell” (Name des NPC´s dessen Status sich verändern soll)
    Target(s): “Combine” (Name des NPC´s über den das Subject denkt)
    Disposition: “Like” (Das Gefühl des Subject gegenüber den Target. Es steht folgendes zu Auswahl: 1).Hate 2). Fear 3). Like 4). Neutral)
    Radius for Subject: “400” (Radius in der das ai_relationship wirken soll)
    Disposition Priority: “1” (Je höher der Wert desto höher ist das gefühl des Subjects gegenüber den Targets)
    Start Active: “Yes” (Soll das ai_relationship schon bei Mapstart aktiviert sein?)
    Reciprocal: “Yes” (Bei Yes wird der Status der NPC´s gespiegelt. Also der Combine hat als Target nun auch den Rebell als Subject lieb.)

    Damit unser Combine nun auch den Spieler mag bauen wir noch ein ai_relationship mit folgenden Werten:

    Name: Dieses Feld lassen wir leer.
    Subject(s): “Combine
    Target(s): “!Player
    Disposition: “Like
    Radius for Subject: “400
    Disposition Priority: “1
    Start Active: “Yes
    Reciprocal: “Yes

    Klicke auf die Grafik für eine größere Ansicht 

Name:	ai_map1.jpg 
Hits:	61 
Größe:	95,0 KB 
ID:	2225

    Compiliert Ihr nun die Map habt Ihr kein Zwist zwischen den beiden NPS´s und der Combine wird euch nicht angreifen.


    Ai_relationship für NPC Klassen, De- & Aktivieren verschiedener ai_relationships

    Mann kann auch statt jedem NPC einen Namen zuzuweisen auch ganze NPC Klassen mit den ai_relationship benutzen. In unserem Fall werden wir eine Typische Szene aus Half-Life 2 nachbauen: Der Spieler betritt einen Raum mit Combines und Turrets die einen Angreifen. Nun wird ein Event getriggert (in unserem Fall ein Button betätigt) und die Turrets werden umprogrammiert. Sie töten nun die Combines anstatt uns.
    Nun fangen wir mit unserer Map an. Als erstes bauen wir ein paar Geschütztürme mit den “npc_turret_floor” Entity.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	2ai_relationships.jpg 
Hits:	57 
Größe:	67,3 KB 
ID:	2224

    Dahinter ein paar Combine mit dem “npc_combine_s” Entity.
    Wir geben den Geschütztürmen und den Combine keine Namen, denn die Änderung soll sich auf alle NPC´s in unserer Map auswirken.

    Nun bauen wir 2 ai_relationships. Eines damit die Geschütztürme uns nicht angreifen und eines damit die Geschütztürme die Combines angreifen.

    Die Einstellungen des ersten ai_relationship das dafür sorgt das die Geschütztürme uns nicht angreifen:

    Name: “player_like
    Subject(s): “npc_turret_floor” (Statt nun einen Namen einzugeben geben wir eine ganze NPC Klasse ein, dies sorgt dafür das unser ai_relationship für alle npc_turnet_Floor´s im Radius funktioniert)
    Target(s): “!Player
    Disposition: “Like
    Radius for Subject: “1000
    Disposition Priority: “1
    Start Active: “No
    Reciprocal: “No

    Und des zweiten ai_relationships das dafür sorgt das die Combines von den Geschütztürmen angegriffen werden:

    Name: “combine_hate
    Subject(s): “npc_turret_floor
    Target(s): “npc_combine_s
    Disposition: “Hate
    Radius for Subject: “1000
    Disposition Priority: “1
    Start Active: “No
    Reciprocal: “Yes

    Klicke auf die Grafik für eine größere Ansicht 

Name:	turrents.png 
Hits:	60 
Größe:	111,5 KB 
ID:	2227

    Nun brauchen wir noch ein Button der die ai_relationships anschaltet.

    Dazu Bauen wir einen "Func_Button" mit folgenden Outputs:

    My Output Named: OnPressed
    Targets Entities Named: player_like
    Via this Input: ApplyRelationship

    und

    My Output Named: OnPressed
    Targets Entities Named: combine_hate
    Via this Input: ApplyRelationship

    Das Input “ApplyRelationship” aktiviert die ai_relationships.
    Das Input “RevertRelationship” kehrt das aktuelle verhalten des ai_relationships um.
    RevertToDefaultRelationship” ändert das verhalten zurück zu den Standartwerten.

    So das war es auch schon mit unserem Tutorial, wenn ihr nun den Button betätigt hören die Geschütztürme auf euch anzugreifen und attackieren stattdessen die Combine.

    Hier ist meine .vmf als Anhang falls es noch fragen gibt:
    ai_relationship_klassen.vmf

    Den nächsten Teil der Tutorialreihe findet Ihr hier.
    Geändert von DaEngineer (14.02.2016 um 17:37:19 Uhr)

  2. #2
    Super-Duper-Moderator Avatar von Ricetlin
    Registriert seit
    18.06.2010
    Beiträge
    2.694
    Renommee-Modifikator
    26
    Heyho,

    dass ganze funktioniert aber nicht mit Gegenständen, sprich einen NPC ein Relationship zu einem Gegenstand zu verpassen oder?
    Ich habs grad zumindest mal ausprobiert und der NPC rührt sich aber nicht, bin dem Tutorial gefolgt.

    Edit:
    Ah damm it
    Geändert von Ricetlin (13.03.2012 um 21:51:41 Uhr)

  3. #3
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    26
    Beiträge
    948
    Blog-Einträge
    3
    Renommee-Modifikator
    17
    Das System funktioniert nur zwischen NPC´s und anderen NPC´s oder dem Spieler.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
[email protected]