Giter Club home page Giter Club logo

bevy_prototype_networking_laminar's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bevy_prototype_networking_laminar's Issues

Networked Pong Example

Build a simple two player pong game that can be played over the network. The goal of the pong example should be to demonstrate very basic gameplay functionality.

This should be a sample that can demonstrate basic interaction between components, but could also be built on for higher level networking plugins.

Therefore it should be:

  • deterministic, to allow for future deterministic lockstep
  • simple, to allow for it being a basic comprehensive demonstration of networking
  • able to demonstrate the diagnostic plugins by showing injecting latency

Testbed Code cleanup: Message sync

The messages are currently fully serialized whenever a message is changed. Clean this up to be a better representation of the desired sync model so that the server only sends the changes on a Reliable channel, and the Client can request the full list of messages when they connect, or need to reset their state.

Allow external callers to set Laminar Config values for socket

Currently we hardcode the laminar config for a socket

let mut cfg = Config::default();
cfg.idle_connection_timeout = Duration::from_millis(2000);
cfg.heartbeat_interval = Some(Duration::from_millis(1000));
cfg.max_packets_in_flight = 2048;

We should modify this so that this configuration can be provided when calling bind to allow external callers to configure some or all of the laminar config values.

Closing sockets

The prototype right now doesn't have the ability to manually close a socket. Sockets are closed when the application exists. Add the functionality to manually close a socket.

Multiple sockets

The prototype currently only allows a single socket, but was designed to easily allow for multiple sockets.

Improve error handling

Currently errors are resolved through .unwrap(), .expect(), .panic() or silently being dropped. The error handling should be cleaned up throughout the plugin, with a clean presentation of errors to the caller.

Add some basic tests

Once the interface has stabilized, consider adding some basic functionality tests in addition to the examples.

Testbed code cleanup: net/prototype interface

The testbed has some rough areas in the split between the net/mod.rs and net/prototype.rs. Consider cleaning up this interface to make it cleaner to implement a plugin integration

Testbed Code cleanup: Rename Messages

For a networking testbed, having a domain entity called Message is unreasonably burdensome. Rename these to something that doesn't have a networking connotation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.