-
Notifications
You must be signed in to change notification settings - Fork 24
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
Questions about migration to PlayRho! #217
Comments
@ninnghazad Thank you for the questions. I love them and find them helpful too! I will have to get back to you on these but here's a response for what I can tell you right now...
I will update this issue as I work on addressing these questions further. Adding a migration guide for instance is something I want to do as is adding engine-engine comparisons so people can more easily recognize what the pros and cons of various engines are. |
I've opened the following issues related to this issue:
I've also created the following projects that are related to this issue:
|
Thanks for the answers! |
Just a fun update for me on this... With my latest commit, I believe I've gotten a To achieve this simulation, the code uses a I'm pretty certain that more work needs to be done still for these huge scales but what's available now feels very promising to me. |
Mhm i like the sound of that. I am eager to see how i can utilize the new possibilities PlayRho seems to offer. |
My thinking was to move away from Looking at the sources just now, I see there's not as much documentation/explanation of this as I'd like and I apologize about that. Admittedly I'm not entirely happy with the current visitor pattern solution either. I like it better than using enumerable types but it does bother me that adding a new shape subclass will still require every switching point to get updated to recognize the new subclass.
I had looked into using a more dynamic dispatch mechanism like a CRTP augmented solution but was finding myself spending more time on that then it seemed worth. I wonder if a runtime polymorphic solution (like what's described in Sean Parent's "Runtime Polymorphism" talk or as shown in Dyno) could be devised that would be an even better way to mitigate this extension problem. |
- Adds documentation comments regarding use of visitor pattern. - Updates documentation comments to more thoroughly explain what types can be used for the Real type alias.
My last merged commit provides two visitor classes that can be directly instantiated and use lambdas for visiting: Here's an example of the use of
Please let me know what you think of these additions. |
I for one like lambdas. The syntax in this case i had to take multiple looks at to see whats going on. What strikes me as odd is the for_each: what i see is we get all joints from world into "range", and then for each joint in "range" we pass our lamba to the joint's accept. the lambda and template are typed towards the joint's actual type. now wouldn't this mean that if we had lots of joints of every actual type, each per-type invocation of ForAll would have to loop over all joints, and would try to pass non-fitting visitor to all joints that are not of its type? |
Updated details regarding visiting shapes and my thoughts on that... Pull request #279, changed the initializing construction of The way I'm thinking of visitation now is as application defined visitation. The PlayRho library code should explicitly list the methods of the concept that it uses itself and leave any other access up to the user to setup using the underlying visit mechanism. A user of the PlayRho library achieves that by specializing the With this architecture, it's now possible for a user to devise their own shape configurations and specialize Hope this write-up helps with making sense of visiting shapes as it now stands. I'm pretty excited about how this fits together and what it means for the future like for the Reducing Use of Pointers project and the Unifying Contact & Joint Classes project. |
I believe this question has been addressed or separated off to other issues so am closing this issue now. |
Some questions i have about the project (esp. in relation to Box2D) that @louis-langholtz or someone else might just know the answer to, in order to spare me writing tests and possibly pointless reintegrations.
How does the performance of the 32/64/fixed32/fixed64 version compare to it's counterparts? Is using the fixed-point implementation on worlds containing roughly (low)hundreds of bodies at all feasible?
How do the float-types impact maximum scale ratios between bodies in this engine? Can this get me beyond Box2D's 0.1m - 10m rule for bodys' sizes and maybe even beyond 0.1m - ~1000m?
Apart from namespacing and renaming - what are the most obvious pitfalls one might encounter migrating from Box2D to PlayRho in an existing project?
Are there any plans to implement liquidfun's additions to Box2D in PlayRho? (ParticleSystems)
I read about 3D in the issues - will this project move away from a pure 2D engine? and if so will the API for the 2D usage as well as the 2D performance of the engine change/suffer due to that change?
My hopes are that i can more or less drop in PlayRho as a replacement for Box2D and get a similar performance but stronger determinism (syncing Box2D over network is... tedious to say the least) on a larger range of scale.
The text was updated successfully, but these errors were encountered: