Skip to content

Running multiple groups in Griduniverse from the same Heroku instance: 13pts #290

@nataliavelez

Description

@nataliavelez

Description of the problem: We cannot set up Griduniverse to run (a) multiple groups from the same instance, and (b) multiple generations. We cannot use any network settings from Dallinger, or take advantage of the Dallinger functionality that allows for large-scale multiplayer, multi-generational studies.

  • We cannot run multiple iterations of the game from the same instance. That means we need to create a separate game instance / Prolific experiment / Heroku app for every single group we collect data from. This is a very limiting problem, as it dramatically increases the cost and rate of attrition of each study, making it impractical to collect data with Griduniverse at all.
  • We cannot change the network to allow for multi-generational studies. When we try to change the network to a Chain or Discrete Generational network, it changes in the database but not the server itself (you still see all of the players on the screen, and the next generation can’t spawn afterwards).

We have tried to address these problems ourselves by commenting out create_network and create_node, but nothing changes in the game. We can’t change these functions or figure out if they are actually being called.

We think this issue stems from how Griduniverse is set up as a Fully Connected network internally in order to allow concurrency.

Proposed solution: We think that these issues stem from the same source - of these, the highest priority is allowing Griduniverse to run multiple iterations of the game from the same instance. That means that, as the experimenter, I could specify that I'd like to recruit, e.g., N = 60 participants in groups of 4 and that, as the participant, I would be assigned to whichever of 15 groups has an opening available.

Notes from brainstorming session

  1. Dallinger's waiting room implementation will need to support adding participants to multiple networks, if it doesn't already
  2. The code that manages game state (scores, players, time left, etc) and the game event loop is currently part of the Experiment class. This makes it impossible to create multiple games within an experiment run. We need to separate game state and event loop management, so that the experiment can create multiple games within a single experiment run.
  3. In order to support 2., experiment setup needs to assign a different griduniverse_ctrl and griduniverse style websocket channels to each of these new GameState instances.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Client Review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions