Tegimus wrote :It is not the viewer which will be a problem. It is the sheer amount of data that needs to be stored for each match (think player positions, movement, action information etc. for each of the 22 players)
Depending on how your simulation engine works and your choice of data storage, you can implement a few tricks to minimize the load.
My favorite implementation is "scene by scene" storage. In that case, you don't store the entire match, but only important parts separated as "scenes". For example for my suggestion, you'd only need to store an array of 2: [attacking_side, Position].
In that case first picture: [0,11] .. meaning home team, LM Position.
2nd picture: [0,25] Home team, FR Position,
3rd picture: [1,23] Away team, FC Position.
For keeper, it would be [x,0]
I checked the match reports and there are max 40 cases you might need this. And that's it, the whole data you'd need, an extra 40*8=320 bytes per match to implement this example.
You also store 3 images: Field, Home arrow, and Away arrow.
Then client HTML takes care of positioning.
For more complicated viewings, I'd suggest using cases. For example, I've noticed that there are about 15 different attacks in this game. Again, you don't store the actual action but only the type of that attack as an array
action_Array(ID1, ID2, ID3, ID4, D1, D2, K1, typeID)
Where ID1-4 are the IDs of attacking players, D1-D2 defending players, K1 is the keeper and typeID is the type of attack (Winger crosses, freekick, cornerkick_farpost etc) and the client HTML uses this data to display the scene by pre-recorded animation engine.
Obviously, despite the huge data storage and speed efficiency advantage, this can get a little repetitive over time.