virtualcommons / port-of-mars-analysis

R analysis pipeline for Port of Mars "Mars Madness" tournaments
https://portofmars.asu.edu
GNU General Public License v3.0
0 stars 0 forks source link

add special case summarizers for events with interaction #10

Open alee opened 2 years ago

alee commented 2 years ago
  1. Personal Gain (VotedForPersonalGain)
  2. Hero or Pariah (VoteHeroOrPariah)
  3. Compulsive Philanthropy (VotedForPhilanthropist)
  4. Breakdown of Trust: keep up to 2 influence resource units (BreakdownOfTrust
  5. Bonding through Adversity
  6. Efforts Wasted
  7. any others?

Identify a way to programmatically discover these events and emit their data payloads in MarsEventSummarizer, possibly GameEventWithData will work?

chrstngyn commented 2 years ago

I was able to emit their individual payloads like so:

export interface MarsEventExport {
  gameId: number;
  round: number;
  name: string;
  description: string;
  index: number;
  payload: string;
}

and in the MarsEventSummarizer class:

_summarizeEvent(game: GameState, event: entity.GameEvent): Array<MarsEventExport> {
    return game.marsEvents.map((marsEvent, index) => ({
      gameId: event.gameId,
      round: game.round,
      name: marsEvent.name,
      description: marsEvent.effect,
      index,
      payload: JSON.stringify(event.payload),
    }));
  }

However, in the current MarsEventSummarizer approach, in an event of type exited-mars-event-phase, there is no payload. Payloads for interactive events are emitted in its respective event type e.g. in a Personal Gain event, voted-for-personal-gain has the payload in the form of {""role"":""Researcher"",""vote"":false} so by the time there is an event type exited-mars-event-phase, there is no available payload

So therefore, if we were to find these interactive events programmatically by type, it would result in 6 occurrences of Personal Gain in the data output if we try to identify when the votes are occurring and when we reach exited-mars-event-phase. We should be emitting payloads in the exited-mars-event-phase

alee commented 2 years ago

Thanks for looking into this Christine! Could we collect all GameEventWithData events that we find into a data structure and then aggregate them and emit an aggregated payload when we reach an exited-mars-event-phase event? Then we clear that data structure and move on again...

Happy to meet sometime tomorrow after the comses meeting @ 10 to discuss / pair program on it