This is a modified client for Net64 aka Sm64O, that uses the Websocket protocol.
Download the client in the release section.
Because the official client uses the Hazel protocol and I want to make a dedicated server with Node.js. The Hazel protocol is only implemented in C# and honestly, noone uses it (sorry).
With this client you won't be able to connect to any official server. You can only connect to servers, that use my dedicated server software. You also won't be able to create a server with this client.
If you want to get the original client, please go here. If you only want to play with friends, the official client is a better choice.
The client has been rewritten in JavaScript and it uses modern frameworks to make my life easier. It will let me develop much faster and it also looks a lot nicer, since now I can use HTML and CSS to make a GUI.
However Electron and Chromium are not know to be cheap with RAM and the bundled program size became much larger.
Performance
Bandwidth and CPU (for the server) performance should be a lot better. Even though it uses TCP, it will outperform the original Net64 software by far and I will explain to you why:
Player data is what makes 95% of the bandwith while hosting a Net64 server.
- Net64 sends one packet per player per player to be sent. Net64+ sends one packet that contains all player data and sends it to all players.
- Net64 does not use compression. Net64+ uses Gzip compression. This is only possible, because packets for player data are united in one large packet, otherwise Gzip header data would add additional overhead.
Here is a table to break down Networking performance with an example:
Net64 | Net64+ | |
---|---|---|
# of packets to send to N clients | O(N2) | O(N) |
# of bytes to send to N clients (with a player data length of 24) | N2 * (24 + 4 (bytes used for memory offset) + headers) | N * (N * 24 * Gzip compression size + headers) |
# of bytes to send for 24 clients (assume 10 bytes for all headers and an average Gzip compression size of 60%) | 242 * (24 + 4 + 10) = 21888B = 21.375KB | 24 * (24 * 24 * 0.6 + 10 + 10 (Gzip header)) = 8775B = 8.57KB |
# of bytes/s to send for 24 clients with an update rate of 16ms | 21.375KB / 0.016s = 1335.94KB/s = 1.3MB/s | 8.57KB / 0.016s = 535.63KB/s = 0.52MB/s |
Net64+ server is written in JavaScript and runs with Node.js, which uses Google's super fast V8 engine. It is platform independent and you don't have to run an emulator for hosting a dedicated server. However Gzip compression requires CPU, but it should not affect gameplay that much.