Lance is a real-time multiplayer game server
It provides an extendible Node.JS based server, on which game logic runs, as well as a client-side library which synchronizes the client's game state with the server game state. In order to provide a smooth visual experience for each connected client, Lance implements efficient networking methods, position interpolation and extrapolation, user input coordination, shadow objects, physics and pseudo-physical movement, automatic handling of network spikes.
Lance aims to optimize the player's visual experience, while providing a simple development model which is highly configurable and easy to analyze and debug.
- Focus on writing your game. Lance takes care of the netcode
- Can support any type of game or genre
- Optimized networking
- TCP via websockets
- Communication is packed and serialized into binary
- Automatic handling of network spikes with step correction
- Intelligent sync strategies for lag handling
- Extrapolation (client side prediction) with step re-enactment or:
- Interpolation for optimal object motion
- Tools for debugging and tracing
More features in the pipeline:
- UDP via WebRTC
- Full-stack testing suite
- Replay saving
- More physics engines
That's so neat! Where do I start?
The official Lance documentation contains articles on theory and rationale, as well as the structure and architecture of the project.
Something went wrong! I need help!
If you're not exactly sure how to do something, Stack Overflow is your friend.
If you've encountered a bug and it's not already in the issues page, open a new issue.