GithubHelp home page GithubHelp logo

railgunnet's People

Contributors

ashoulson avatar

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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

railgunnet's Issues

TODO: Switch to Entity/Module Paradigm

Entities are a standard class.

Snapshots contain:
Frame #
Entity Bag
Events

Entity contains:
Id
Priority(?)
BoxHolders

Has a function T GetBox() casts and returns the appropriate box from the boxholders.

BoxHolders are always stored in order(how?). BoxHolders contain typed Boxes. Each Box is end-user defined, implements Encode/Decode taking a bitpacker and potentially a basis Box (just cast it). Entity loops over all boxes and delta-serializes them.

State sync dependencies or Safe Entity Pointers

Handling for entities to refer to other entities. If the other entity hasn't been received yet, add a callback registration system to be notified when it has.

Note: For entity arrival callbacks, handle entity removal (I.e. The entity never arrived before it was called to remove, so kill the pending callback)

Entity freeze notifications

If we have been getting packets but have't heard anything about an entity, notify that entity to freeze or hide.

Support for "initialization only" values on states

If we're doing a full encode, we can just grab the latest state and copy over the initialization only values. Or to be safe, save the very first state and use that. Also can add "created tick" as an initialization value since it may be different from the tick the first state was sent from.

Where is the example project?

I love what you've done here and can't wait to start using it, but with no documentation and no example it's extremely difficult to figure out where to even start.

How do I register message recieved callbacks? How do I initialise a railgun entity? etc.

There's a reference to a Unity project folder, but it's not in the latest commit. Appreciate everything you've done, would be great if you could sort this so we can use it.

Thanks again!

Error handling for delta decode with no valid basis

Decode the state against the first state received as a dummy and then discard the result. This lets us read the rest of the snapshot without a problem.

Also need to add a status flag to the state for whether or not it was delta encoded (or it may be implicit from the tick offset)

May not need Ticks in State updates after all...

Entity looks at last acked tick and generates a StateDelta that contains flags and field updates. Client receives StateDelta and dejitters them according to packet tick. Every client update, the client just gets the latest delta in the dejitter buffer and applies it.

Server-side entities only create a new state when theirs changes. Can keep 50 in buffer that aren't necessarily the last 50 frames. Solves the blackboard entity problem.

Probably will need to redo prediction with this system though.

Noticeable Lag on same computer.

Hello,

Running the demo (server, Unity build + unity player) on one computer I experienced a very noticeable lag in the the demo.

Is this expected? If not, it it due to the UPD library, to the physics engine or to some test code?

Thanks.

Blackboard vs. Dynamic Entities

Dynamic Entities:

  • Behave as they do now, producing and storing a state every tick and keeping a buffer of them

Blackboard Entities:

  • Only produce a state when they change, meant for game state data or player data

Both should live in the state/entity stream and blackboards should occupy entity slots when filling packets.

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.