All Projects → oguzeroglu → Rhubarb

oguzeroglu / Rhubarb

Licence: mit
A WebSocket library optimized for multiplayer JS games, works on WebWorkers with binary data.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Rhubarb

Kaetram Open
An open-source 2D HTML5 adventure based off BrowserQuest (BQ).
Stars: ✭ 138 (-17.37%)
Mutual labels:  game-development, multiplayer, game-server, html5
Agones
Dedicated Game Server Hosting and Scaling for Multiplayer Games on Kubernetes
Stars: ✭ 4,252 (+2446.11%)
Mutual labels:  game-development, multiplayer, game-server
Iogrid
Multiplayer game engine/framework built using SocketCluster and Phaser
Stars: ✭ 455 (+172.46%)
Mutual labels:  game-development, multiplayer, websocket
Melonjs
a fresh & lightweight javascript game engine
Stars: ✭ 3,721 (+2128.14%)
Mutual labels:  game-development, webgl, html5
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (+292.22%)
Mutual labels:  game-development, multiplayer, game-server
Gophergameserver
🏆 Feature packed, easy-to-use game server API for Go back-ends and Javascript clients. Tutorials and examples included!
Stars: ✭ 61 (-63.47%)
Mutual labels:  multiplayer, game-server, websocket
Lance
Multiplayer game server based on Node.JS
Stars: ✭ 1,161 (+595.21%)
Mutual labels:  game-development, multiplayer, game-server
Gdk For Unity Fps Starter Project
SpatialOS GDK for Unity FPS Starter Project
Stars: ✭ 119 (-28.74%)
Mutual labels:  game-development, multiplayer
Freeciv Web
Freeciv-web is an Open Source strategy game implemented in HTML5 and WebGL, which can be played online against other players, or in single player mode against AI opponents.
Stars: ✭ 1,626 (+873.65%)
Mutual labels:  webgl, html5
Tap Tap Adventure
Tap Tap Adventure is a massively online 2D MMORPG set in the medieval times with twists.
Stars: ✭ 123 (-26.35%)
Mutual labels:  websocket, html5
Reldens
Reldens - You can make it - Open Source MMORPG Platform
Stars: ✭ 130 (-22.16%)
Mutual labels:  game-development, multiplayer
Phaser Kinetic Scrolling Plugin
Kinetic Scrolling plugin for Canvas using Phaser Framework
Stars: ✭ 117 (-29.94%)
Mutual labels:  webgl, html5
Websocket Fuzzer
HTML5 WebSocket message fuzzer
Stars: ✭ 115 (-31.14%)
Mutual labels:  websocket, html5
Hilo3d
Hilo3d, a WebGL Rendering Engine.
Stars: ✭ 123 (-26.35%)
Mutual labels:  webgl, html5
Foster Ts
A WebGL + TypeScript 2D Game framework with a Scene>Entity>Component model.
Stars: ✭ 112 (-32.93%)
Mutual labels:  webgl, html5
Toho Like Js
Touhou style danmaku shooter game which runs on your chrome.
Stars: ✭ 127 (-23.95%)
Mutual labels:  webgl, websocket
React 3d Viewer
A 3D model viewer component based on react.js 一个基于react.js的组件化3d模型查看工具
Stars: ✭ 100 (-40.12%)
Mutual labels:  webgl, html5
Openage
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Stars: ✭ 10,712 (+6314.37%)
Mutual labels:  game-development, multiplayer
Skia Wasm Port
Port of the Skia drawing library to wasm, for use in javascript (node & browser)
Stars: ✭ 131 (-21.56%)
Mutual labels:  webgl, html5
Alien.js
Future web pattern
Stars: ✭ 141 (-15.57%)
Mutual labels:  webgl, html5

Rhubarb

See Wiki page

Rhubarb is a lightweight WebSocket library for multiplayer HTML5 games. It is originally designed to be used by the ROYGBIV Engine. However it can be used outside of ROYGBIV as well.

Rhubarb is named after this Aphex Twin track.

Rhubarb works both on browsers and NodeJS.

Philosophy

Javascript is slow, therefore we want to have as much main-process-power as we can in order to do game related calculations, graphics rendering and achieving 60 FPS.

For multiplayer games achieving 60 FPS gets even more complicated given that transferring data over WebSockets is a slow operation. It also triggers GC activity by copying the transferred data (if JSON is the preferred way), which eventually slows down the main thread as well.

Rhubarb is designed to overcome these problems by:

  1. Using WebWorkers to handle networking out of main thread -> More time left for rendering in main thread
  2. Using transferables between the main thread and the worker to prevent GC activity (zero copy)
  3. Redefining/compressing and sending protocols using Float32Arrays -> Much less bandwidth consumption than JSON.stringify.
  4. Allowing users to define their protocols in a high-level way and taking care of all the dirty bitwise operations internally.
  5. Allowing sharing same protocol definitions between server/client.
  6. Allocating objects only when being initialized. Reusing everything to prevent GC activity (That means mutating things, yeah get over it.)

Installation

For clients: <script src="PATH_TO_Rhubarb.min.js"> </script>

For servers: npm install rhubarb-js

Usage

See this tutorial to see how to use Rhubarb.

See here for the API reference.

Demo

See here

Licence

Rhubarb uses MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].