incheon
Version:
A Node.js based real-time game server
34 lines (20 loc) • 3.44 kB
Markdown
This list of questions is derived mostly from recurring questions and discussions on our slack group. The list is meant as a high-level starting point, but you are encouraged to join in the conversation. Auto-join the [Incheon Slack group with this link](http://slack.incheon.gg).
Incheon is an open-source project which makes it easier to write multiplayer networked games in JavaScript. Incheon implements some components of the multiplayer game, so that a game developer can focus on the game itself. The components which Incheon implements are networking, client-side prediction of object positions, extrapolation, 3D/2D networked physics, and more.
Incheon uses a client-server model. There is a single authoritative server, and multiple clients in each networked game. A game based on Incheon will have server code, client code, and common code.
Client-side prediction is the logic which runs on every client, and extrapolates the state of the game. In the Incheon implementation, client-side prediction uses physical attributes such as position, velocity, orientation, and angular velocity to predict the game state on each client. This provides a smooth playing experience for each client, hiding the side-effects of network lag and network spikes.
Bending is the process of gradually correcting the positions and orientations of game objects on the client, which have drifted from their authoritative positions and orientations on the server.
The answer to this question highly depends on the game type. For games where a few players join separate rooms or “zones” within the game, an Incheon server can be used for each room. This is the simple case.
In the case of large worlds, where hundreds of players join a single space, Incheon needs to separate the single space into subspaces such that each Incheon server is responsible for one of the subspaces. This feature has not been implemented yet. If you’re interested in this feature please upvote the following [feature request](https://github.com/OpherV/Incheon/issues/30).
Since Incheon is designed for real-time calculation of position, running typically at 60 steps per second, state-preservation is not a primary concern. However, this has been requested in the past. If you’re interested in this feature please upvote the following [feature request](https://github.com/OpherV/Incheon/issues/31).
It’s preferred that non-real time communication is handled by a different server than the one which runs the game state, therefore chat services are outside the scope of Incheon. The preferred approach is to use an existing chat service together with Incheon in your game. There is a feature request to provide a sample game which demonstrates Incheon working together with a third-party chat service. If you’re interested in this feature please upvote the following [feature request](https://github.com/OpherV/Incheon/issues/32).
See the [Incheon Roadmap](http://docs.incheon.gg/develop/tutorial-introduction_roadmap.html). Some of the major planned features include UDP support, and Visual Debugging.