In March 2014
It’s so simple
…or so we thought. We started with research into the best way to detect location information from the user device. GPS signal was too week to penetrate the arena architecture. Next, we tried to use a standard location, but update the device display based on time and the compass direction the user was facing. The device compass was not accurate enough and users like to move too much for this to be effective in a crowd of 15,000.
Finally, we decided to use seat numbers to locate each user in the arena. With openCV and Python, we dissected each frame to create the animation as an image. The result produces a JSON array of color and time duration for an X,Y coordinate on a grid. With a CAD seating arena chart, we were able to translate the Section, Row, and Seat numbers for each user to the corresponding X,Y value in our database, and deliver the “seat pixels” to each device.
Timing is everything
We expected each device to have near identical time across every network. Our assumption was that we could start the animations on all devices based on a simple time sync, but even among identical devices, system time could vary by as much as 40 seconds.
This meant that we needed to create our own syncing system. We did this by passing a timestamp from the device to our server, coupling it with a second timestamp from our server, then passing the couple back to the device. The device would use an algorythem to determine a time shift from our
fixed point of time truth, and adjust the starting time of the animation by that number of milliseconds.
The real world
We were able to test the system at scale in some of the last basketball games of the Shocker’s 2016-2017 season. While we had success with our technology, the lighting system was not cooperative. In November, 2017 we were able to use the app with a new arena lighting system that allowed the arena to go dark. This let the devices show with more clarity.
In February, 2017 Wichita news station KWCH covered the early tests and development of the software.