A frequent question we receive from users of our flow-based video editor is in regards to the attributes: "What the heck actually IS an attribute?" Good question. Say, for example, you take a picture with your camera. In addition to the actual picture data (i.e. the pixels of color which comprise the photo), you may want to know where the photo was taken, who took the photo, what time the photo was taken etc. Those are attributes: data about data.
So how does this apply to our video editing? Simple: our timeline uses this attribute concept. Here is why:
1. Natural Organization
By organizing the data into sections, it gives all the data a natural organization. For example, the above picture shows a shot tag on the timeline. This shot tag has attributes associated with the result. Was the shot a goal or a save? Did it sail wide, or was it blocked? That result has been made a characteristic of the shot tag, all thanks to the attributes.
Sure, we could have made a 'goal' tag and a 'blocked' tag, a 'wide' tag and a 'save' tag, but we'll see in a bit why that wouldn't have been a very good idea.
2. Clutter Reduction
By avoiding the use of a goal tag, a shot tag, a wide shot tag, etc., we reduce the amount of timeline clutter immensely. Once you add all your own custom tags to the mix (on top of all the basic system tags), your timeline would be overflowing with data points, and your list of tags would be bursting at the seams. Our goal was to simplify the look, form, feel, and function of the video editor.
3. Flexibility
Because we have organized the data into subsets, you now have the flexibility to add any other data point you want to the 'Shot' tag (in addition to our system data points; 'goal', 'save', etc.). Maybe field position on the shot is important to you? Maybe shot location in the net? You can add whatever you want and need to know about that shot directly to your 'Shot' tag. If you were to add this data point outside of the 'Shot' tag, it would immediately have less contextual meaning and would clutter your timeline, making searching more difficult (which is our next point).
4. More Powerful and Accurate Searches
Our data structure gives you the most powerful way to search your games for the situations you're looking for. For example, let's say you wanted to search for shots on goal. If you weren't using attributes, you would need to pull up all goal tags, all save tags, and all blocked tags. That's a lot of tags, a bunch of searching, and it doesn't even even address any player-specific information! If we were just using tags (and no attributes), there would have to be a player tag and a shot tag on the timeline. Our search would then have to look for the intersection of those two tags in order to return the proper shot. Now, some sorts of intersection searches are great across very broad items, like looking for all shots in the first period. But when trying to make data associations with very short duration events, the accuracy falls apart. If two small tags (that should correspond) happen to be off by a fraction of a second, they may not intersect. The association between player and shot would not be made. And that's bad for calculating stats accurately.