Index of /Flags

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[DIR]Contextual-AI/2019-11-04 19:00 -  
[DIR]Kat/2019-11-03 23:18 -  
[DIR]SyncAdmin/2019-11-04 19:09 -  
[DIR]Zombie-Resurgence/2019-11-04 18:00 -  

###################################################################################################################################
#					>> WARNING: FOR INTERNAL USE ONLY <<							  #
#			Changing advanced configuration options can impact performance or security.				  #
#															  	  #
#      We recommend that you do not change any configuration options unless instructed to do so by a Polymatic Labs engineer.	  #
#	    Polymatic Labs will be unable to assist you in the event that you've changed default configurations.	   	  #
###################################################################################################################################


>> Description <<
-----------------
A feature flag system (aka Feature Toggle) is a system used in development to allow engineers 
to toggle on and off specific sections of code. We also use this system to handle configurations for specific features.

When updates are published, not all code is active. Most changes are suppressed by flags which 
can be changed later on throughout the development process.

This allows us to test new features, update configurations and make remote changes without 
requiring the product to be restarted or reinstalled.

>> Types of Fast Flags <<
--------------------------
Fast Flags (FFlag): 
	Regular Fast Flag are retrieved on startup and do not change unless the product is shutdown and restarted.

Dynamic Fast Flags (DFFlag): 
	Dynamic Fast Flags are retrived every 30 seconds and can be changed at any moment in time.

Synced Fast Flags (SFFlag): 
	Synced Fast Flags are synchronized between the client and the server. 
	They are retrived at startup. The client uses whatever value the server has at the time.

Dynamic Synced Fast Flags (DSFFlag): 
	Dynamic Synced Flags are retrieved every 30 seconds, which can be changed at any time. 
	The client will use whatever value the server has. If this value is updated, the server will notify the client of the new updated value.

>> Format <<
------------
 - 04 bytes: Length of FFlags (in # of values, 0 for 'not passed')
 - 04 bytes: Length of DFFlags (in # of values, 0 for 'not passed')
 - 04 bytes: Length of SFFlags (in # of values, 0 for 'not passed')
 - 04 bytes: Length of DSFFlags (in # of values, 0 for 'not passed')
 - Remainder: Data

>> Flag format (Data consists of these appended end-to-end) <<
--------------------------------------------------------------
 - 01 bytes: Length of the name
 - 01 bytes: Type
	00 - Int08                + 1 byte
	01 - Int16                + 2 bytes
	02 - Int32                + 4 bytes
	03 - String               + 1 byte for length, + nBytes
	04 - LogType              + 1 byte
	05 - Double               + 8 bytes
	06 - Boolean False        + 0 bytes
	07 - Boolean True         + 0 bytes
	08 - Array                + 2 bytes for length, followed by each list item in the format [1B - Length][nB - Data]
	09 - Table                + 2 bytes for length, followed by each item in the format [1B - Length][1B - Name Length][nB - Name][nB - Data]

The name and string bytes are passed through a bitwise NOT to make them less apparent in the overall data stream, but no strong encryption/complicated encoding is required on this

>> Internal Information <<
--------------------------
Each directory contains the following:

FastFlags.bin 	<-- Used for network transfer and decoding efficiency. This is the default format for fast flags.
FastFlags.json 	<-- The raw file information for public information and used for software that does not support our custom binary format.