#include "common.cfg"

// Configure module gateway for front end operation
StartCommands +=
{
	// Add a security plugin (will add player info on player module proxy)
	"gw.securityCreate FESecurity",
	// create a front end service transport
	"gw.transportAdd FEServer fes",
	// set the transport option (need PeerInvisible and Firewalled)
	"gw.transportOptions fes(PeerInvisible Firewalled)",
	// open the transport
	"gw.transportCmd fes(open)",
};


// UDP port for client communication
//FrontendPort = 47851;

ListenAddress = FSListenHost+":"+FSUDPPort;

// Maximum size that can be read from a client message
DatagramLength = 10000;

// Time-out before removing a client when it does not send any more data
ClientTimeOut = 600000; // 10 min

// Time-out before removing a limbo client when it does not send any more data
LimboTimeOut = 60000; // 1 min

// Maximum bytes per game cycle sent to all clients (currently not used/implemented)
TotalBandwidth = 536870911; // <512 MB : max value for 32 bit bitsize !

// Maximum bytes per game cycle sent to a client, including all headers
ClientBandwidth = 332 * BandwidthRatio; // 332 <=> 13 kbit/s at 5 Hz; 202 <=> 16 kbit/s at 10 Hz

// Maximum bytes for impulsion channels per datagram sent to a client
ImpulsionByteSize0 = 20 * BandwidthRatio;
ImpulsionByteSize1 = 200 * BandwidthRatio;
ImpulsionByteSize2 = 200 * BandwidthRatio;
NbMinimalVisualBytes = 50;

// Distance/delta ratio that triggers the sending of a position
DistanceDeltaRatioForPos = 100;

// Number of game cycles per front-end cycle
GameCycleRatio = 1;
// Execution period of distance calculation
CalcDistanceExecutionPeriod = 8;
// Execution period of position prioritization
PositionPrioExecutionPeriod = 2;
// Execution period of orientation prioritization
OrientationPrioExecutionPeriod = 8;
// Execution period of discreet properties prioritization
DiscreetPrioExecutionPeriod = 2;

SortPrioExecutionPeriod = 1;

// Display or not the "FE" nlinfos
DisplayInfo = 1;

// Prioritizer mode (currently the only mode is 1 for DistanceDelta)
PriorityMode = 1;

// Strategy for selecting pairs to prioritize (Power2WithCeiling=0, Scoring=1)
SelectionStrategy = 1;

// Minimum number of pairs to select for prioritization
MinNbPairsToSelect = 2000;

// Index of client to monitor, or 0 for no monitoring
ClientMonitor = 0;

// Allow or not beeping
AllowBeep = 1;

Lag = 0;				// The lag on the simulated network (used by simlag)
PacketLoss = 0;				// percentage of lost packet (used by simlag)
PacketDuplication = 0;			// percentage of duplicated packet (used by simlag)
PacketDisordering = 0;			// percentage of disordered packet (used by simlag) (Lag must be >100 to use disordering)

// ----------------------------------------
// Frontend/Patch mode settings

// If 1, the frontend server is used in Patch/Frontend mode (0 = only frontend mode, old behaviour)
UseWebPatchServer = 1;

// If 0, the frontend service is in Patch mode at startup, and it won't accept clients unless WS tells it to do so.
AcceptClientsAtStartup = 1;

// Patch URL footer. PatchURL will look like 'http://223.254.124.23:43435/patch'
PatchingURLFooter = ":43435/patch";

// System command to be executed when FS tries to start Web Patch server (ideally at FS startup)
StartWebServerSysCommand = "";

// System command to be executed when FS tries to stop Web Patch server (ideally when FS turns to frontend mode)
StopWebServerSysCommand = "";

// Use Thread for sending
UseSendThread = 1;

// Unidirectional Mirror mode (FS part)
ExpediteTOCK = 1;