Skip to content
George Michaelides edited this page Mar 25, 2015 · 4 revisions

Network Packages

Network packages are used for communication between clients and servers

Decorate your class with the [NetworkPackage("profile")] attribute

    [NetworkPackage("ExampleGame")]
    public class Package
    {
        public string Player{ get; set; }
        public float X { get; set; }
        public float Y { get; set; }
    }

Client / Server Network Packages

Client and server package setup is the same. The configuration must start either from GemClient or GemServer.

Create an event that sends the package

    var networkPackageEvent = GemClient.Profile("ExampleGame")
                             .CreateNetworkProtocolEvent<Package>()
                             .GenerateSendEvent();

And invoke

     networkPackageEvent.Send(new Package 
     {
          Player = "Me",
          X = 100.0f,
          Y = 10.0f
     });

Handle an incoming network package

    GemClient.Profile("ExampleGame")
             .CreateNetworkProtocolEvent<Package>()
             .HandleIncoming(package =>
             {
                 Console.WriteLine("{0} is at X:{1} Y:{2}",
                                  package.Name, package.X, package.Y);
             });

Additionally, you can chain HandleIncoming and GenerateSendEvent

    var networkPackageEvent = GemClient.Profile("ExampleGame")
                             .CreateNetworkProtocolEvent<Package>()
                             .HandleIncoming(package =>
                             {
                                 Console.WriteLine("{0} is at X:{1} Y:{2}",
                                            package.Name, package.X, package.Y);
                             })
                             .GenerateSendEvent();
Clone this wiki locally