This is a list of various yet useful-to-fix issues in our log files - fixing them will improve data analysis and also make logging more efficient.
The "SessionState" column only reads "Finished" - SessionState might be a duplicate of GameState - we should merge SessionState and GameState to just "GameState".
"SessionProgram" is logged to both Meta and Event files, which means they cant be easily merged. We should rename "SessionProgram" logged to Event so its called "SessionProgramCurrent".
✅ Duplicate columns "ParticipantID" and "ParticipantId" exist - should be merged into one ("ParticipantID").
✅ Duplicate columns "PlayedPattern" and "SessionProgram" exist. Should be merged into one ("SessionProgram")
✅ Duplicate columns "TestId" and "TestID" exist. should be merged into one ("TestID").
PointerShootOrder is never reset back to 0 when a treatment program has finished.
In some datasets, MoleSpawnOrder doesn't start from 0 but instead from e.g. "2".
In some cases it seems like "Mole Spawned" can appear prior to "Mole Missed" in the WAIT:HIT format.
The events called "Wall Size Update" do not actually log the new wall size in terms of WallBoundsXMin, WallBoundsXMax, WallBoundsYMin, WallBoundsYMax - instead the cells in these columns are just "NULL" in the csv files.
Moles currently carry a MoleID which spatially identifies a mole, but we should have an additional ID, which identifies it both spatially and temporally: "MoleOcurrenceID". Currently we generate this ID in post-processing by combining framecount and the mole id, but it would be nice to have it from the game side, to e.g. contextualize events like "Mole Spawned", "Mole Expired", "Pointer Shoot" etc.
A unique identifier for a given eye tracking calibration that can be checked in post processing, e.g. in case we have to reset the game mid-study and redo the calibration.
The MoleIDs shown in the "ControllerHover" column, are in some cases offset. In this file a mole "503" is reported as the hover in the beginning, but the mole is not spawned in the beginning:
log_2024_05_29_14_32_02_9676_Event.csv
The ControllerName is updated when moles are hit, but not based on events like Pointer Hover Begin / End. For now we (wrongly) assume that the nearest hover event might belong to one controller or the other - which only works when one controller is active.
"Pointer Hover Begin" and "Pointer Hover End" events seems to happen unpredictably, making them hard to analyze. E.g. there are scenarios where a Pointer Hover End is missing its corresponding Pointer Hover Begin and vice versa. Ideally we should enforce state via code and provide a unique ID e.g. Pointer Hover Begin 3,.. See e.g. above CSV file.
As fallback when no eye-tracking is available, we should project a ray from the Unity camera onto the board to get an approximation of what is within direct line of sight of the user. Ideally we capture both a world XYZ coordinate on the wall and try to identify what moleID is currently in direct line of sight.
Adding events for every SegmentPattern change, e.g. "Segment X started" "Segment X Ended".
Columns that would be convenient to have:
A "PlayPeriod" event column logged by the GameDirector, which indicates what is "PreGame", "Game" and "PostGame". We currently add this manually in post-processing.
We should ideally provide a column that logs the distance from currently hit target to previously target for each "Mole Hit" (when possible).
Will add further to the bullet list as I discover issues.
@ElMarchand if you could take a look at fixing these issues and make a PR that would be good.
This is a list of various yet useful-to-fix issues in our log files - fixing them will improve data analysis and also make logging more efficient.
Columns that would be convenient to have:
Will add further to the bullet list as I discover issues. @ElMarchand if you could take a look at fixing these issues and make a PR that would be good.