User Tag List

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 36

Thema: Psychologisches Experiment - Counter für Lichtschalter / Ausgabe in Message

  1. #1
    Neues Mitglied
    Registriert seit
    19.04.2014
    Beiträge
    6
    Renommee-Modifikator
    0

    Psychologisches Experiment - Counter für Lichtschalter / Ausgabe in Message

    Hallo liebe mapper,

    Ich bin ganz frisch hier im Forum angemeldet und angehende Psychologin. Wir wollen in einer Projektgruppe ein sozialpsychologisches Experiment durchführen, das in einer virtuellen Welt stattfinden soll. Und wir haben Hammer/die Source Engine dazu auserkoren, die Grundlage dieser Welt zu bilden.

    Konkret geht es darum, jetzt erstmal ein paar technische Machbarkeiten abzuklären. Ich hoffe, ihr könnt uns da ein paar Tips geben!

    Ist es möglich, dass z.B. das Umlegen von Lichtschaltern gecountet wird? (Es müssen jetzt nicht zwangsläufig Lichtschalter sein, aber die sind ja leicht zu erstellen und waren so mein erster Testlauf...) Ich habe für HL1 die game_counter-Funktion gefunden, aber in HL2 gibt es das ja nicht mehr. Was tut der math_counter? Hat sich mir irgendwie nicht ganz erschlossen. Geht das damit?
    Ziel soll sein, dass dem Player am Ende eine Statistik ausgegeben wird, wie viele Lichtschalter er umgelegt hat. Heißt, das muss dann wohl irgendwie in die point_message, aber mir ist noch nicht klar, ob das geht und wie genau.

    Dazu kommt, dass es zwei Versuchsbedingungen gibt. Die Versuchspersonen (VPs) laufen immer zu dritt oder zu viert durch die Welt und müssen die Schalter drücken. Je nach Bedingung soll ihnen am Ende entweder die Leistung jeder VP angezeigt werden (also im Sinne von "VP 1 hat X Schalter umgelegt, VP 2 Y Schalter usw.) oder nur die Gesamtleistung aller VP. Ist das irgendwie realisierbar?

    Viele Grüße und vielen Dank schonmal für eure Hilfe,
    Kasumi

    P.S.: Wir haben Lizenzen für HL2, HL2 E1, HL2 LC, Portal und Team Fortress 2.

  2. #2
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    29
    Beiträge
    4.212
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Hi und Willkommen im Forum!

    Puh, das sind ja schon mal recht komplexe Fragen für den Anfang!

    Also es ist auf jeden Fall möglich mit math_countern die Klicks auf einen/mehrere Lichtschalter zu zählen und den Wert am Ende dann in irgendeiner Form ausgeben zu lassen.
    Die Frage ist nur, ob es möglich ist die Statistiken für 3-4 Spieler gesondert zu speichern.
    Am ehesten sollte das noch mit filter_activator_**** gehen, wobei da wohl sehr viel Rumprobiererei und keine Funktionssicherheit gegeben wäre.

    Ich denke es sollte umsetzbar sein, aber einige Stunden Arbeit erfordern und jede Menge kleiner Tricksereien.
    Im Forum gibt es bereits einige Threads mit Fragen zu Countern und Filtern, die eventuell teilweise verwendbar sind.

    Vielleicht hast du ja Glück und jemand kennt sich auf dem Gebiet ein Stück besser aus als ich bzw. hat mit etwas ähnlichem bereits gearbeitet.

    Hier gäbe es ein Tutorial für die Counter, das man ein bisschen anpassen könnte:
    http://mappingbase.de/threads/66-Cou...t=math_counter

    Ich bin mir allerdings nicht sicher, ob man für mehr als zwei Spieler (also pro Team) einen eigenen Filter definieren kann.
    Pro Filter bräuchte man dann einen eigenen Output für die Lichtschalter und einen eigenen math_counter.

    Wie gesagt, die Frage ist für das schnelle Beantworten recht komplex und benötigt eventuell einige Stunden Einarbeitungszeit.

  3. #3
    Mapping-Profi Avatar von eMo
    Registriert seit
    10.12.2010
    Beiträge
    2.024
    Renommee-Modifikator
    21
    Sollte es nicht möglich sein, Ausgaben in den Server-Log schreiben zu lassen? "X activated trigger xy" oder so. Habe da was im Kopf, dass das möglich ist ^^
    Ein kreativer Geist findet immer eine Möglichkeit, sich auszuleben.

  4. #4
    Mitglied Avatar von EZ-one
    Registriert seit
    18.06.2010
    Ort
    Hessen
    Beiträge
    195
    Renommee-Modifikator
    11
    Zitat Zitat von BaShoR Beitrag anzeigen
    Ich bin mir allerdings nicht sicher, ob man für mehr als zwei Spieler (also pro Team) einen eigenen Filter definieren kann.
    Pro Filter bräuchte man dann einen eigenen Output für die Lichtschalter und einen eigenen math_counter.
    Das sollte eigendlich problemlos gehen, wenn man jedem Spieler zu Beginn einen Namen zuweist, was bei so kontrollierbaren Bedingungen wie max. 4 Spieler relativ einfach ist über AddOutPut.

    @Kasumi
    Ich kann dir da gerne weiter helfen, habe schon viele komplexe Entity-Konstruktionen gebaut.
    Mfg ΞZ-one

  5. #5
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    29
    Beiträge
    958
    Blog-Einträge
    3
    Renommee-Modifikator
    20
    Beachtet aber das man in der Source Engine maximal 32 Lichtern einen Namen für das Input/Output-System geben kann. Sonst gibt es einen Kompiliererungsfehler.

  6. #6
    Mitglied Avatar von Av3ris
    Registriert seit
    21.09.2010
    Beiträge
    489
    Renommee-Modifikator
    14
    Zitat Zitat von Dmx6 Beitrag anzeigen
    Beachtet aber das man in der Source Engine maximal 32 Lichtern einen Namen für das Input/Output-System geben kann. Sonst gibt es einen Kompiliererungsfehler.
    Ich glaube, env_sprites sollten es in dem Fall auch tun

  7. #7
    Mitglied Avatar von EZ-one
    Registriert seit
    18.06.2010
    Ort
    Hessen
    Beiträge
    195
    Renommee-Modifikator
    11
    Kann der !activator (also das ansprechende Entity) ne Information wie den Namen an das Empfänger-Entity übermitteln? Eine Zahl würde ja langen um separieren zu können welcher der Teilnehmer des Experiments das Licht eingeschaltet hat und es einem bestimmten math_counter zuzuweisen. Zumidest math_counter glaube ich können doch einen Wert weiterleiten an ein anderes Entity.
    Ansonten muss man halt mit Triggern arbeiten, da muss man aber ja wieder sicherstellen, dass auch nur ein Spieler im Trigger sein kann, damit nicht der falsche Spieler einen Punkt dazu bekommt.
    Geändert von EZ-one (24.04.2014 um 16:19:24 Uhr)
    Mfg ΞZ-one

  8. #8
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    29
    Beiträge
    4.212
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Oder man schaltet einen filter_activator_name dazwischen und macht für jeden Spieler am Button einen eigenen Output mit dem jeweiligen Filter, der einen von 4 math_countern hochsetzt und für jeden Spieler das Licht (de-)aktiviert.

  9. #9
    Neues Mitglied
    Registriert seit
    19.04.2014
    Beiträge
    6
    Renommee-Modifikator
    0
    Hallo BaShor, eMo, EZ-one, Dmx6 und Av3ris (und alle anderen Mitleser)!

    Erstmal vielen herzlichen Dank für eure zahlreichen Rückmeldungen und Ideen. Toll, wie ihr euch hier einsetzt! Und beeindruckend, was ihr für ein Know-How an den Tag legt!
    Ich musste einiges abklären, kann jetzt aber auch genauere Informationen rausrücken.

    EZ-one hatte die grandiose Idee, Dosen in einen Abfalleimer zu werfen und das counten zu lassen. Das wird also die Aufgabe der Versuchspersonen sein. Gleichzeitig werden wir doch keinen Multiplayer machen, sondern die VP einzeln testen und dann allerhöchstens am Ende eine Message brauchen, die den VP ihren Score mitteilt. Der Teil wird also etwas einfacher als erwartet (wobei ich das immer noch herausfordernd finde ).
    Wichtig wäre zudem, dass das Gecountete irgendwo in einer Textdatei gespeichert wird, da wir das ja letztendlich im Datensatz brauchen. Auch hier bin ich leider nicht so bewandert, was da im Rahmen der Möglichkeiten liegt.

    Unser Dozent hätte gerne noch die Laufwege getracked, ist das prinzipiell möglich?

    Fragen über Fragen... Vielen Dank fürs Mitdenken und Posten!

  10. #10
    Stammgast Avatar von Nilo
    Registriert seit
    28.06.2010
    Beiträge
    1.192
    Renommee-Modifikator
    18
    Also von Leveldesign-Wegen ist es meines Wissens nach nicht möglich eine Textdatei als Output zu generieren.

    Zudem wird das Tracken der Laufwege auch schwierig. Was ist genau mit Tracken gemeint?
    Soll während des Spielens ein zurückgelegter Weg sichtbar in Form von z.B. einem Streifen sein, welchen der Spieler sozusagen "hinter sich her zieht"?
    Oder soll der zurückgelegte Weg ebenfalls in einer Datei abgelegt werden? (wie auch immer)

    Habt ihr jemanden im Team der sich mit Coding auskennt? Die Funktionalitäten sind nämlich stark an der Grenze von Leveldesign. Vielleicht bräuchtet ihr ein Serverplugin. Das kann Events zuhören und auch Data-Outputs erstellen - wenn man denn das richtige hat (bin da auch nicht besonders bewandert...)
    Reden ist Schweigen, Silber ist Gold

  11. #11
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    29
    Beiträge
    958
    Blog-Einträge
    3
    Renommee-Modifikator
    20
    Dito. Wenn Ihr es ohne Multiplayer macht könnt Ihr das mit irgendwelchen Serverplugins vergessen. Ihr stosst hier echt an die Grenzen des Leveldesign. Modding heisst hier das Zauberwort.

  12. #12
    Stammgast Avatar von Nilo
    Registriert seit
    28.06.2010
    Beiträge
    1.192
    Renommee-Modifikator
    18
    Habe gerade mal etwas das Developer Wiki durchsucht: Es gibt ein einziges Entity, dass mit Dateien interagieren kann, und das auch noch begrenzt. Mit dem material_modify_control lassen sich wohl VMT-Dateien bzw. deren Parameter verändern. Wenn man es jetzt wirklich nur als kleine Nebenfunktionalität bräuchte, könnte man da auf eine VMT zugreifen und dessen Paramter entsprechend pro Interaktion mit einem Entity (Dose in Mülleimer oder so) erhöhen. Nach dem Versuch müsste man dann diese VMT auswerten.

    Ist aber wirklich ziemlich bei den Haaren herbei gezogen, kein Plan ob das so geht - wie Dmx sagt, um Coding kommt man wahrscheinlich nicht herum

    @Unter mir: Oh, ja wenn das mit Tracken gemeint war ist SourceTV eine gute Idee
    Geändert von Nilo (26.04.2014 um 23:44:08 Uhr)
    Reden ist Schweigen, Silber ist Gold

  13. #13
    Mapping-Profi Avatar von eMo
    Registriert seit
    10.12.2010
    Beiträge
    2.024
    Renommee-Modifikator
    21
    Ist doch gar nicht wahr. Laufwege kann man über Demos analysieren und den Consolen-Output kann man sich doch mit Sicherheit in Log-Files geben lassen.
    Es ist nicht einfach, aber durchaus machbar.

    Source-TV müsste doch generell für alle Source-Spiele möglich sein, oder nicht? Dann lasst ihr die Versuchsperson auf einen Server connecten, switched die Map und Source-TV würde automatisch aufnehmen. Am Ende könntet ihr dann der VP zuschauen, wie Sie durch die Map läuft. Damit kann man sicherlich Pfade tracken, aber es ist halt anstrengend und aufwendig, also tatsächlich nur sinnvoll, wenn sich niemand von euch mit Coden auskennt.

    LOG-Dateien des Consolen-Outputs: http://forums.steampowered.com/forum....php?t=1010068 (im Besonderen Post 3 relevant)


    Viel interessanter wäre, worum es dabei gehen soll, aber das darfst du wohl kaum verraten, oder? Zumindest, an welcher Uni du bist?
    Geändert von eMo (26.04.2014 um 23:44:01 Uhr)
    Ein kreativer Geist findet immer eine Möglichkeit, sich auszuleben.

  14. #14
    Neues Mitglied
    Registriert seit
    19.04.2014
    Beiträge
    6
    Renommee-Modifikator
    0
    Huhu,

    Mensch, ich kann es nur wiederholen, ich bin begeistert von eurer regen Aktivität.

    Wie viel ich zum Experiment selbst verraten darf, weiß ich ehrlich gesagt selbst nicht genau, muss ich mich erst erkundigen... Ich würde es euch natürlich gern verraten!
    Wir können das Spiel natürlich gern als Multiplayer laufen lassen und nur eine VP durch die Map rennen lassen, das dürfte wahrscheinlich kein Problem sein. Ich wollte damit eigentlich nur ausdrücken, dass die Schwierigkeit, das Gecountete für die VPs getrennt anzeigen zu lassen, damit beseitigt ist.

    Wie sich unser Dozent das Tracken der Laufwege genau vorgestellt hat, weiß ich auch nicht sicher, ich habe ihn mal gebeten, hier dazuzustoßen. Er kann auch ganz gut programmieren, das könnte sicher ebenfalls von Vorteil sein.
    Und die Laufwege sollten auch eher zur Sicherheit bzw. der Vollständigkeit halber getracked werden, es ist prinzipiell nicht geplant, die auszuwerten.

    Danke auf jeden Fall auch für die Links, ich werde mich da mal durchlesen...

  15. #15
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    29
    Beiträge
    958
    Blog-Einträge
    3
    Renommee-Modifikator
    20
    Also wenn du für jede Mülltonne die gefüllt wird ein Text ausgeben lassen willst. Wenn in einem Multiplayerspiel laufen lässt kannst du ja einen Trigger erstellen der ganz am Anfang den "condump" Befehl ausführt.
    Für jede befüllte Mülltonne kannst du ja eine einmalige Textnachricht mithilfe eines point_servercommand und "say ***" ausgeben. Dann hast du am ende einen Log der zeigt wieviele Mültonnen befüllt sind.

    Sieht dann z.B. so aus (Hier mit dem Text Testausgabe *):

    The server is using sv_pure 0. (Enforcing consistency for select files only)
    Loading 'autobuy.txt' ('cfg/autobuy.txt' was not found.)
    Loading 'rebuy.txt' ('cfg/rebuy.txt' was not found.)
    Dmx6 nimmt teil.
    Compact feed 380928 bytes
    Redownloading all lightmaps
    Game will not start until both teams have players.
    Scoring will not start until both teams have players
    MasterRequestRestart
    Your server is out of date. Please update and restart.
    console dumped to condump000.txt
    Dmx6 : Testausgabe 1
    Unknown command: headtrack_reset_home_pos
    Unknown command: headtrack_reset_home_pos
    Dmx6 : Testausgabe 2
    Unknown command: headtrack_reset_home_pos
    Unknown command: headtrack_reset_home_pos
    Dmx6 : Testausgabe 1
    Dmx6 : Testausgabe 3
    Mit den Servercommand kann man dann bestimmt am Rundenanfang auch automatisch eine Demo aufnehmen lassen.
    Musst nur Testen wenn man mehrere Demos mit den gleichen Namen aufgenommen werden, ob die vorherige überschrieben wird oder Source die Demos automatisch nummeriert.
    Die Demos müssten dann manuell analysiert werden.
    Geändert von Dmx6 (27.04.2014 um 11:25:14 Uhr)

  16. #16
    Mapping-Profi Avatar von eMo
    Registriert seit
    10.12.2010
    Beiträge
    2.024
    Renommee-Modifikator
    21
    Zitat Zitat von Dmx6 Beitrag anzeigen
    Also wenn du für jede Mülltonne die gefüllt wird ein Text ausgeben lassen willst. Wenn in einem Multiplayerspiel laufen lässt kannst du ja einen Trigger erstellen der ganz am Anfang den "condump" Befehl ausführt.
    Für jede befüllte Mülltonne kannst du ja eine einmalige Textnachricht mithilfe eines point_servercommand und "say ***" ausgeben. Dann hast du am ende einen Log der zeigt wieviele Mültonnen befüllt sind.

    Sieht dann z.B. so aus (Hier mit dem Text Testausgabe *):



    Mit den Servercommand kann man dann bestimmt am Rundenanfang auch automatisch eine Demo aufnehmen lassen.
    Musst nur Testen wenn man mehrere Demos mit den gleichen Namen aufgenommen werden, ob die vorherige überschrieben wird oder Source die Demos automatisch nummeriert.
    Die Demos müssten dann manuell analysiert werden.
    Eigentlich müsstest du doch auch beliebigen Text eingeben können, der würde dann nur nicht als Command erkannt, oder? Also nicht "say text" sondern nur "text"
    Ein kreativer Geist findet immer eine Möglichkeit, sich auszuleben.

  17. #17
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    29
    Beiträge
    4.212
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Ich würde wenn dann (falls nicht zu umständlich) alles am Ende ausgeben lassen, dann wäre in der Log Datei alles schön zusammen nacheinander dargestellt und der Spieler würde auch eine kleine Statistik im Chat sehen, was eigentlich alles passiert ist.

    Für die Laufwege sehe ich auch nur die Möglichkeit einer Demo, oder aber, dass alternative Wege ohne die Möglichkeit des Zurücklaufens gegeben sind, bei denen man sich entscheiden muss und ein Trigger die Entscheidung abspeichert.

  18. #18
    Mapping-Profi Avatar von eMo
    Registriert seit
    10.12.2010
    Beiträge
    2.024
    Renommee-Modifikator
    21
    Zitat Zitat von BaShoR Beitrag anzeigen
    Für die Laufwege sehe ich auch nur die Möglichkeit einer Demo, oder aber, dass alternative Wege ohne die Möglichkeit des Zurücklaufens gegeben sind, bei denen man sich entscheiden muss und ein Trigger die Entscheidung abspeichert.
    Dann ist die VP aber in ihrer Entscheidungsfindung eingeschränkt, was im Bezug auf den Versuch möglicherweise nicht gewollt ist. Aber ja, das wäre eine mögliche Alternative die ich nicht betrachtet hatte :/
    Ein kreativer Geist findet immer eine Möglichkeit, sich auszuleben.

  19. #19
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    29
    Beiträge
    4.212
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Jup klar, war nur ein möglicher Hinweis, der aber durch das Studiendesign möglicherweise eh flach fällt
    Aber da wir keine weiteren Infos haben könnte es eventuell hilfreich sein.

  20. #20
    Neues Mitglied
    Registriert seit
    28.04.2014
    Beiträge
    3
    Renommee-Modifikator
    0
    Hallo zusammen,

    ich bin der Dozent der Veranstaltung und es freut mich, dass ihr so hilfsbereit seid. Basierend auf euren Ideen habe ich aktuell folgenden Lösungsansatz, den wir demnächst mal probieren wollen. Bitte korrigiert mich, falls es so komplett unmöglich ist (ich habe bisher auch nicht mit Hammer gearbeitet und muss mich da erst einarbeiten, entsprechend könnten hier noch deutliche Logikfehler bzw. Fehlinterpretationen der Fähigkeiten des Hammer Editors drin sein):

    1.) Logging im Allgemeinen: Alle Kommandos an die Konsole schicken und diese mit einem condump speichern. Schickt man das an die Serverkonsole oder Clientkonsole, aktuell nehme ich Clientkonsole an, dafür braucht man dann point_clientcommand, richtig?

    2.) Wie in 1.) Beschrieben wird immer dann ein Kommando geschickt, wenn eine Dose in eine Mülltonne fällt. Damit kann man die Zahl der gesammelten Dosen zählen. (später, indem man das Logfile analysiert.. eventuell wäre es auch noch gut, wenn man die Leistung der Versuchsperson direkt anzeigt.. Dafür müsste man irgendwie eine globale Variable definieren und hochzählen, falls das mit dem Editor möglich ist.)

    3.) Das Bewegungslogging ist nur optional. Es wäre eventuell spannend zu sehen, ob man in einer Bedingung ohne Gruppe (wo man also allein Dosen sammelt und sich auch nicht als Mitglied einer Gruppe fühlt) auch weniger Wegstrecke zurücklegt als in einer Bedingung mit Gruppe (man sammelt auch allein Dosen ein, bekommt aber glaubhaft vorgespielt, dass man Teil einer Gruppe sei). Hierzu hätte ich die Idee, dass man immer dann, wenn sich der Spieler bewegt, dessen Position ausliest und in die Konsole schreibt. Diese Positionen könnte man später aus dem Konsolenlog extrahieren und daraus die Wegstrecken berechnen. Wir werden versuchen, ob ein trigger_playermovement hierfür die richtig Wahl ist. Ich bin gespannt :-S

Berechtigungen

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