Implement a feature flags system.
* Scenarios contain a string map of feature flags. The flag names are the keys, and flag versions are the values, so a typical value might be "fixed" for bug fixes or for evolving features, "V1", "V2", etc. * The game has a map of flags to lists of supported versions. The game can therefore signal that it supports a legacy behavior for a given feature flag. The last version in the list is considered to be this build version's default behavior. * When launching a scenario, we check to make sure the game supports the scenario's required versions of its feature flags. * When launching a replay, we make sure the game supports the feature flags that the version of the game that made the recording did. Fix #555 Close #591
This commit is contained in:
@@ -40,6 +40,11 @@
|
||||
<xs:element name="email" type="xs:string"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="feature-flags">
|
||||
<xs:sequence>
|
||||
<xs:any minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="scenText">
|
||||
<xs:sequence>
|
||||
<xs:element name="teaser" minOccurs="0" maxOccurs="2" type="xs:string"/>
|
||||
@@ -353,6 +358,7 @@
|
||||
<xs:element name="version" type="xs:string"/>
|
||||
<xs:element name="language" type="xs:language"/>
|
||||
<xs:element name="author" type="author"/>
|
||||
<xs:element name="feature-flags" type="feature-flags"/>
|
||||
<xs:element name="text" type="scenText"/>
|
||||
<xs:element name="ratings" type="ratings"/>
|
||||
<xs:element name="flags" type="scenFlags"/>
|
||||
|
Reference in New Issue
Block a user