top of page

Chase Morgan

Data Upload

Data Tracking

Interactive Media & Immersive Audio Technologies Sprint 4

10/23/2025

Sprint Overview

Sprint 4 is finished and with it came a lot of work on the project! This sprint allowed me to complete pretty much all of the necessary components to now start data collection! During this sprint I completed networking for data uploading to the cloud, the ability to dynamically link data points that will be serialized, linking various KickBack elements to my systems, and met with various designers and producers of the 495 teams.

A big part of this sprint was the completion of data uploading. This is something that is integral to keeping a good flow of data within the project. If I kept everything local I would have to get that data either via email or have them test using my machine. Doing it this way works; however, it comes with a significant decrease in productivity in my workflow. Having the data automatically uploaded to the cloud significantly speeds up my work as I would not have to wait on the user to give me their data. This also allows me to fill out fields in a spreadsheet with that data automatically.

The main way I am gathering data is in a string formatted as CSV. I can hook up to Unity Web Services and create a form that opens and sends information back and forth on the web. A lot of things can go wrong when talking to the internet via Unity so a lot of care has to go into sanitizing my data and only sending data via the correct methods. If not, data can easily become corrupted or fail to send. One of the biggest forms of failure is losing internet connection; however, since I already created an internet checking system I just have to hook up into that for verification. After that I can create a new form which hooks into a Google Form that asks for a string input field. I send the string and wait to hear back on whether it was successful or not. If it wasn't, look into why and then try again. Once it was successful it will automatically send that data from Google Forms to a Google Sheets spreadsheet. If time allows I would like to separate the data via project, but that is a secondary goal and not necessary for completion.

The next thing I finished this sprint was weighing the pros and cons of expanding this project. I eventually came to the consensus that I would also include Trucking Time in my data collection project. When researching for this project I found a very good research paper on the exact thing I am testing; however, it was for a car driving game. Using Trucking Time could be used almost like a control so I can at least make sure that my other data is significant or not. I met with the producer and got the all good for integrating my code into their project; however, I still need to meet with the designer just to make sure.

During the sprint I also made another system was creating a dynamic field linker for data in the project. It allows me to generalize the systems in this project so it can actually be used meaningfully in other projects. It basically has general fields combined with a list of objects linked at runtime and will serialize all data points to CSV when triggered to do so. I want to make sure the general data points are serialized first as they are usually more important than the data linked at runtime. The static data includes the user id, date of data, and the reason for data upload (this was added after). Dynamic data for KickBack would include player health, cloobits, and memories. 

The last thing I finished during this sprint was a neat little system that tracks KickBack's data. It is a static class that utilizes Unity attributes to run internally alongside the scene collecting data when necessary. It has a dictionary that holds data name and the delegate to retrieve the value. It also runs asynchronously alongside the game every frame checking values that are also stored in a dictionary to see if it should capture data or not and give a reason for doing so. One example is when the player's health decreases we should collect data. The system stores the reason alongside a delegate that if it returns true it should collect data.

Overall, this sprint seemed a little light on the surface; however, a lot of work was done to make sure that less work needs to be done inside Unity until all work within is done! Next sprint I am going to be focusing on actually collecting data inside Trucking Time as KickBack is pretty much done! Thank you for reading! 

Data Linking

bottom of page