Simplifying Aircraft Deployment: Difference between revisions

Jump to navigation Jump to search
m
Line 35: Line 35:
We should check for version compatibility of the installed FlightGear binary (as of 03/2008, the FlightGear binary fgfs doesn't yet provide any sort of version information). If an aircraft is not compatible with the current version of FlightGear, do not allow the installation of it.
We should check for version compatibility of the installed FlightGear binary (as of 03/2008, the FlightGear binary fgfs doesn't yet provide any sort of version information). If an aircraft is not compatible with the current version of FlightGear, do not allow the installation of it.


=== Compatibility checking ===
Regarding compatibility between aircraft and fgfs binaries, it is important to keep in mind that so far FlightGear doesn't provide any reliable way for aircraft authors and other contributors to determine what version of FlightGear they're running, or which features are supported by a binary.  
Regarding compatibility between aircraft and fgfs binaries, it is important to keep in mind that so far FlightGear doesn't provide any reliable way for aircraft authors and other contributors to determine what version of FlightGear they're running, or which features are supported by a binary.  
In fact, currently the only way for aircraft authors to account for different versions of FlightGear (and thus different feature sets) is to provide separate *-set.xml files, so that users themselves may explicitly chose the right ones (or fail to do so, for that matter).
In fact, currently the only way for aircraft authors to account for different versions of FlightGear (and thus different feature sets) is to provide separate *-set.xml files, so that users themselves may explicitly chose the right ones (or fail to do so, for that matter).
Line 41: Line 42:
   
   
This would also be an important factor because of FlightGear's irregular release cycles.
This would also be an important factor because of FlightGear's irregular release cycles.
=== Feature-based version tracking ===
Thus, the most promising approach to address overall versioning requirements in the context of FlightGear resources might be to tackle this issue from a feature-centric point of view, where the presence (or absence) of features is simply communicated to FlightGear resources by tracking corresponding properties within the property tree.
Thus, the most promising approach to address overall versioning requirements in the context of FlightGear resources might be to tackle this issue from a feature-centric point of view, where the presence (or absence) of features is simply communicated to FlightGear resources by tracking corresponding properties within the property tree.


Line 60: Line 62:
   </PropertyList>
   </PropertyList>


So that relevant feature set modifications would simply be "communicated" by having contributors use fgSet("/sim/feature-support/...",true) and additionally edit the corresponding XML files. This way, it would be fairly easy for aircraft authors to sort of "query" the binary for its capabilities and feature support.
So that relevant feature set modifications would simply be "communicated" by having contributors use fgSet("/sim/feature-support/...",true/false) and additionally edit the corresponding XML files. This way, it would be fairly easy for aircraft authors to sort of "query" the binary for its capabilities and feature support.


== Updating ==
Updating an aircraft involves checks if the aircraft is installed and then comparing the installed version with the latest version on a server. if the versions are the same, alert the user that the versions are the same and no update will occur.
Updating an aircraft involves checks if the aircraft is installed and then comparing the installed version with the latest version on a server. if the versions are the same, alert the user that the versions are the same and no update will occur.
''Note:'' While explicit versioning (in XML files) may be one way to tackle the compatibility issue, another one might be to to read in both *-set.xml files and directly compare the resulting SGPropertyNode* structure, this could tell if the XML contents are identical. To do the same for resources included via XML files (i.e. textures, sounds, 3D models etc), one could calculate a simple CRC of each included file.
''Note:'' While explicit versioning (in XML files) may be one way to tackle the compatibility issue, another one might be to to read in both *-set.xml files and directly compare the resulting SGPropertyNode* structure, this could tell if the XML contents are identical. To do the same for resources included via XML files (i.e. textures, sounds, 3D models etc), one could calculate a simple CRC of each included file.


== Deleting ==
Deleting an aircraft is even easier as we may not need to talk to the server. Instead we check if the aircraft is installed and should check to ensure that there are no dependencies for the aircraft. An example of which is an aircraft that makes use of another aircrafts instruments and is not centrally installed.
Deleting an aircraft is even easier as we may not need to talk to the server. Instead we check if the aircraft is installed and should check to ensure that there are no dependencies for the aircraft. An example of which is an aircraft that makes use of another aircrafts instruments and is not centrally installed.


== Extracting a new aircraft ==
== Extracting a new aircraft ==
2,561

edits

Navigation menu