RealtimeMultiplayerNodeJS is a framework specifically for building HTML5 multiplayer games with the Client / Server model. In this model, connected users send only input and the game itself runs on the server.
Clients are interpolate between two known world snapshots based on the current synchronized time.
How to use
- Download this repo
- In the terminal type “node js/DemoHelloWorld/server.js”
- Browse to “/DemoHelloWorld.html”
RealtimeMultiplayerNodeJS comes with 3 demos
The most basic interesting working demo I could come up with. Objects move from left to right
A demonstration of the engine’s simple CircleCollision engine, which can provide you with simple collision information and fires an event when two objects collide with the two objects.
This demo also shows one implementation of having a special kind of entity which is controlled by the keyboard from a connected user. A character controlled entity
This demo uses a Box2D.js implementation to create a world, and show’s off the idea of synchronized physics, and taking advantage that all the simulation happens on the server.
It also shows synchronized interaction between multiple users, and an example of sending a message to the server which it interprets back into the game
This is a project I recently created for an installation. It uses the kinect to place the user into a world that has many particles in it – and they basically interact with the particles which are also being influenced by some perlin noise.
It was a spin off of my previous project, CinderRibbons which I never finished because it was getting a little too out of hand.
For this project my goal was simple: Quads influenced by a 3d mapped human skeleton, and perlin noise
I figured that if i scaled down my previous goal, and made it something that was actually attainable i would actually be able to finish the project.
I also decided to put the project on Github, however the code inside is rather messy because as the installation deadline got closer I had to make some, ahem sacrifices. I was actually coding and changing it up until 1 minute before the performer started her dance, while my computer was already hooked up to the projector. That part was pretty frantic.
Here are some images, they are sort of in chronological order, sort of:
Initial “get something on the screen”
Creating a floor plane:
Making quads ‘rise’ from the floor plane
Now add some beautiful perlin noise (Actually this is simplex noise technically)
The view from above:
All hail the glowing cube:
User controlled gravity swarms using the kinect skeleton data mapped back into 3d space:
Project Source Code
One Day It Will Make
One Day from mario gonzalez on Vimeo.
This is a pretty cool still frame – of an application I’m working on at the moment.
Changing this single parameter ( which controls acceleration ) – to a number i only accidentally set it to gave me this:
( You have to click on these to actually see what it looks like, the thumbnail scaling hides the effect )
Linewaves from mario gonzalez on Vimeo.
I was tasked with the idea of creating some proof-of-concept (I notice i do a lot of those, imo they’re the most fun part of the project) data-visualizations involving the movement of objects on an international scale. You can obviously tell i’m trying to give out as few specific details as possible that could get me into trouble, so sorry for being so seemingly mysterious.
The first concept I had was to take the data, and use various classic key elements of infographics to denote and show at a glance the voluminous information displayed. One of the problems I came across was that I basically had more data than my computer could handle, so I had to truncate it, but that left me with information that heavily favored specific ports. In the end I used Perlin Noise to generate realistic feeling randomness to these proof-of-concepts.
(Sorry. Again, cant get into specifics, but this might be as close as this project gets to getting made so i thought i’d share.)
The key is as follows:
X axis represents something
Y axis represents a different value Logarithmicly scaled
Size is controlled by weight
Color is controlled by destination country
I’m very happy to share a new painting application I have created for OSX called RibbonPaint
GravitySwarm is an application I’m creating for the ipad.
It’s a gravity swarm simulation, you create gravitational forces with your fingers and watch how the swarm interacts.
The swarm moves via low-octave perlin noise combined with proximity attraction.
I created it using Cinder which I’ve been using a lot lately and its really tons of fun.
Gravity Swarm from mario gonzalez on Vimeo.