When the server needs to notify the client that something significant is happening, it sends it a server event. Examples include incoming missiles, the fact that the player’s ship is destroyed, or a chat message.

Like actions, events have types that identify them over the wire. They are also property holders so they can contain whatever information they need. To keep the client and server in sync and avoid having different names for the properties (which is hard to detect at compile time), we rely on server event decorators to wrap access to the properties. These decorators are referenced by both client and server which allows us to make changes to either of them without worrying that the other would go out of sync (as long as they are both built together).

When the client receives an event, it is sent to the currently active ServerEventHandlerFactory to construct its event handler. The ActionManager tracks the active ServerEventHandler, and the SceneManager will swap it depending on the currently active scene to allow different handling of the same event based on the context of the game. For the factory to create the correct action, the event has to be added to the factory explicitly.

An event handler is just a client action. For convenience we have the ServerEventHandler derived class which simplifies the structure by allowing us to specify the decorator as a type parameter. In most cases the handling code would just exist in the Start() method of the action and we’ll return false to terminate the action at that point.



Author Lotus
Views 901
War to the Core

Recent Comments

Latest Updates

  • Solo missions

    Solo missions

    Hey guys, here are the specifics of the first two solo missions, those are sketches of the first two missions. First mission: A harvester is placed near the ship, generating supply caches. The player collects energy caches and escapes a ring of mines. No supply links allowed. The sensor component is introduced by one of […]Read More »
  • We made it to the Top 100!

    We made it to the Top 100!

    We are stoked that we managed to land on IndieDB’s Indie of the Year’s Top 100 list! We are also the only MOBA that made it to the list! The support we got from the community was overwhelming, and we would like to thank each and every person that helped us get this far. Whether […]Read More »
  • Full Campaign Series, Version 3

    Full Campaign Series, Version 3

    Characters: Daniel Blaze. Protagonist, player-character. Headstrong and rebellious. Ambiguous loyalty to the Shepherd Coalition. Joseph Blaze. Father of Daniel Blaze. Commander of the Leviathan mothership until executed for treason by the Shepherd Coalition. Sylvia. AI assistant. Provides intel, advice, mission objectives. Captain Zhukov. Cyborg commander assigned to hunt down player during the first several missions. […]Read More »
  • Story: Episode 1, Version 2

    Story: Episode 1, Version 2

    The Blaze family had long been controversial. They supported the Shepherds, but continually frustrated the Orthodox elements of their faction. Joseph Blaze was especially known for his tolerance of the weakling families that used genetic engineering to alleviate the sicknesses that exposure to the Earth’s surface had inflicted on them. Such tensions between orthodoxy and […]Read More »
  • Story: Episode 1

    Story: Episode 1

    Location: The Pole Base. When Daniel Blaze passed his final test and became the primary candidate to pilot the Leviathan, the Shepherds’ newest ship, he caused a quite a stir. Not because he’s the youngest member of the Pole fleet to be nominated for admiralship, the faction had already made peace with this as a […]Read More »
Skip to toolbar