Sorry about the issue comments thing.
The data file xml isn't too much of an issue as you say. We can use XML
for all of non-binary file needs and we can create a suitable
infrastructure for allowing clients to update the data files. As far as
updating the application files, well, that one's a bit trickier. It
depends on which tradeoff we want to make.
We can have an update check a flag on each of the files (checksum +
timestamp, etc) and if its not the latest version, it would download the
requisite file and overwrite the local copy. This would have larger
downloads and smaller patch times.
We could have a system that issues binary diff patches on each of the
files that are not the updated versions. This would be smaller downloads
but longer patch times. I would also assume that it would have more
complex coding requirements.
We could have a system that checks for installer version and downloads
and runs the installer entirely as well. It would be simpler in
execution, but much larger downloads and wouldn't support an "atomic"
upgrade method.
A couple thoughts as I sit down to come up with an xml schema...
Do we want a "hard typed" schema, ie:
<filter type="cardtype">
<type name="stronghold">
<displayName>Stronghold</displayName>
<deckType>Fate</deckType>
<goldCost>-</goldCost>
</type>
</filter>
Or a soft type schema, ie:
<filter type="cardtype">
<item name="stronghold">
<attribute name="displayName">Stronghold</attribute>
<attribute name="deckType">Fate</attribute>
<attribute name="goldCost">-</attribute>
</item>
</filter>
Another thought... What information do we need to have in the data files
to ensure proper operation with the application files? Do we need a
required version, data file version, or other flags that don't deal
explicitly with the data that we're storing?
-Bryan