max-mapper / max-mapper/voxel-server
Suggested Revision of Architecture
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 76
- Forks
- 25
- PR merge metrics
- No merged PRs in 30d
Description
I have some suggestions for Improving the multiplayer server engine.
Does anyone else experience the lag on Movements.
Generally to build real time multiplayer engines. The server should replicate actions and state, rather than replicating player position.
The client should have all the necessary Game State to render the actions as a results of doAction(action, playerstate, gamestate);
So quick little breakdown
Client:
- Entire Game State
- Renders Player Actions dependent on Current GameState & PlayerState
- All Players are considered Actors on a Scene. Even the current player who is running the client.
Engine (Where engine is a subset of client):
- Manages the SceneGraph.
- Iterates over Registered Actors Applying Actions from a Queue (Limit this complexity of this by iterating only over those actors who have registered actions since the last frame)
Server:
- Handles Client Connections.
- Replicates both the Client State and the Actions to Apply
- Actions must be replicated in FiFo order.
- Client State is eventually consistent so out of order packets may not be an issue.
Either the Server or Client or Both can handle optimizations such as RedBlack trees.
Server can restrict registered receivers based on a function of (gamestate, playerstate)
Client can do the same as well, but we lose the bonus of restricting network overhead.
As far as Voxel-* is concerned there needs to be a way to register plugins with the replication framework. Something similar to level-manifest probably
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named. Start by locating the server, client/engine, replication framework, and level-manifest code, then determine whether the repository has an existing movement or state-sync implementation. The issue does not define a scoped deliverable or acceptance criteria, so the architecture and meaning of “done” need maintainer agreement first.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend, distributed-systems, game-dev, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100