Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Version 1 (modified by scheusso, 16 years ago) (diff)

Synchronisable

The most important part of the Network API is the Synchronisable Class (see also Synchronisable):

  • This class provides the functionality for objects to get synchronised over the network:
    • REGISTERDATA/REGISTERSTRING: these functions register a variable (to the Network Engine) that needs synchronisation
    • setObjectMode: this function sets the direction of synchronisation (server→client / server↔client / server←client)
  • Every class that needs synchronisation must fullfill some dependencies:
    • It must (public) inherit from Synchronisable
    • It must have a default constructor
    • All steps in object creation that need data (from the levelfile or the network) must be in the create() function
    • It must implement the following functions:
      • registerAllVariables: register all variables (currently only basic types and strings), that need synchronisation, to the network engine by calling REGISTERDATA and/or REGISTERSTRING
      • create: (as described above)
      • set appropriate synchronisation direction (default: server→client) by calling setObjectMode

Synchronisable functions:
REGISTERDATA(varname)
Use this makro to synchronise a membervariable of a class (like position, velocity, …). This makro sets the sync-direction of the variable to server→client

int SomeClass::i; // membervariable i
REGISTERDATA(i);

REGISTERDATA_WITHMODE(varname, mode)
Use this makro if you want to sync a variable using a different direction than the default.

int SomeClass::i; //membervariable i
REGISTERDATA_WITHMODE(i, network::direction::toclient); //same as REGISTERDATA(i)
//or
REGISTERDATA_WITHMODE(i, network::direction::toserver); //sync i only to the server (be carefull when using this)
//or
REGISTERDATA_WITHMODE(i, network::direction::bidirectional); //sync i in both directions

REGISTERSTRING(stringname)
same as REGISTERDATA but for strings

REGISTERSTRING_WITHMODE(stringname, mode)
same as REGISTERDATA_WITHMODE but for strings

setObjectMode
this sets the sync direction of the whole object (default: server→client). Note: if you don't call setObjectMode with a value other than network::direction::toclient then the variables will only be synchronised to the client (if at all)