Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ordered message flows #101

Open
raboof opened this issue Nov 8, 2017 · 3 comments
Open

ordered message flows #101

raboof opened this issue Nov 8, 2017 · 3 comments

Comments

@raboof
Copy link

raboof commented Nov 8, 2017

vizceral currently shows messages travelling with various velocities, thus arriving out-of-order.

When visualizing systems that preserve ordering it'd be nice to show the particles arriving in-order. The easiest way would be to give particles a constant velocity, which would probably be a matter of making the velocity randomization in https:/Netflix/vizceral/blob/master/src/base/connectionView.js#L108 conditional.

@jrsquared
Copy link
Contributor

That's a perfectly reasonable request. Shouldn't be too hard of a PR if you want to take a stab at it.

@raboof
Copy link
Author

raboof commented Nov 13, 2017

I'd be willing to give it a go - where would be a reasonable place to configure this? As a setting in the GlobalStyles perhaps?

@aSqrd-eSqrd
Copy link
Contributor

It's not as simple as just "toggling" random vs static velocities on and off. If the only changes is to toggle between random velocities and static velocities the particle release issue #80 can be greatly exacerbated.

Since all particles are release at the starting point of the connection, all particles that are scheduled for release are released at once and at the some spot. The random velocities let them spread out as the travel and after a while start to spread across the connection. But if the particles system is bumping up against the maxParticleReleasedPerTick value then they never have enough time variance in the velocities to spread across the connection and so continue to travel in a "blob."

However, I found a solution that works in most cases, which I gave some details on in #80. Basically, it amounts to randomly placing the initial particles along the length of the connection, which also serves to keep the particle system from bursting the particles of the connection out at one time in one location (which is how it works now).

It isn't a perfect solution though. It works good for the highest volume connections as all the particles are populated along the connection at the beginning or with in a few frames. It also works well for the lower volumes as they release so few particles that all of its particles are also placed at the beginning. It is the medium volume ones that you can see the particles being placed on the connection for several seconds. These connections are ones that have a large number of particles but not so many that the connections max particle count is hit at the first rendering. So you see the particles appear along the connection for a few seconds until the particle stack is full and as particles hit the end point and are "released" so a new particle can be launched... It's hard to describe in text, but #80 has a lot of details along with code snippets for the "random placement along the connection at startup", with launch from source node there after.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants