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

Roadmap to Version 1.0.0 #1

Open
4 of 12 tasks
Lusito opened this issue Oct 11, 2020 · 7 comments
Open
4 of 12 tasks

Roadmap to Version 1.0.0 #1

Lusito opened this issue Oct 11, 2020 · 7 comments

Comments

@Lusito
Copy link
Owner

Lusito commented Oct 11, 2020

So there are a couple of things I'd like to address before a 1.0.0 release:

  • Find differences to official box2d code (c++ version) and try to merge them if possible. Done via Port upstream code #13
  • Further performance improvements if possible
  • Improve garbage collection
  • Making the code more idiomatic to TypeScript
  • Decide on a naming convention for files, classes, attributes, methods, functions, etc. and apply them to the code
  • Code cleanup
    • For example, instead of defining const b2Cos = Math.cos;, use Math.cos instead of b2Cos.
  • Readme files and package.json keywords for all packages for better npm pages.
  • Write documentation and possibly tutorials
  • Clean up comments
  • Take a good look at the current linting rules and which are being disabled in the code. Find ways to make things consistently good.
  • Establish build/publish/release workflow
  • Decide what to do with b2_version, which is currently showing 2.4.0 (just as upstream does). We can't use the same version as box2d upstream, but maybe we want to somehow show which version this is based on? Probably not in code though, rather in readme (0.8.0 => upstream 2.4.1, etc.)

We should create separate issues for each of these in order to keep discussions clean. If an issue doesn't exist yet, create it and I will insert a link in this description.

@Elvynia
Copy link

Elvynia commented Oct 25, 2020

I think I'll be able to find some time to help in a few months, maybe even spark a friend's interest to contribute. But I never used yarn, is there a reason for not using npm ?

@Lusito
Copy link
Owner Author

Lusito commented Oct 25, 2020

Sounds good :)

I usually use npm as well, but workspaces are not ready in npm, that's why I used yarn. I think npm 7 was released recently, but I haven't given it a try yet. If it works with it, we can go with npm instead.

@Elvynia
Copy link

Elvynia commented Oct 29, 2020

I'm still using one repo per package at the moment I didn't realize npm only supported this recently. From their blog I read v7 support yarn workspaces and v8 will have more advanced features, but latest version is still on v6 atm.
I'll try setting up a workspace with npm@next-7 this weekend or the next to see if it can relieve me from the npm link troubles I'm facing in dev mode.

@Lusito
Copy link
Owner Author

Lusito commented Nov 8, 2020

Moving that discussion to #5

@danzen
Copy link

danzen commented Dec 8, 2020

Really looking forward to giving all this a try. We use a version of box2web - for https://zimjs.com - (https://zimjs.org/cdn/Box2dWeb-2.1.a.3.min.js) - will the api be compatible, do you expect? And is it try you are roughly getting 5 times the speed? We have some physics demos here https://zimjs.com/physics and did a couple games https://zimjs.com/droid2 and https://zimjs.com/droid but could use more speed on mobile. Cheers - let's keep in touch.

@Lusito
Copy link
Owner Author

Lusito commented Dec 8, 2020

Honestly, I can't say. Box2dweb has not been touched in 5 years and they started from the flash version (rather than the original), so it is probably way behind the c++ version.

It' safe to say, that some changes will be required. Some things might just be search & replace. But since I never did anything except the benchmark code with it, I can't give details.

Not sure where you get the 5 times speed info from. This project improved speed compared to flyovers version. There are still ports which perform better at Benchmarks. But benchmarks are flawed. They might not reflect the way you use box2d and they also give different results for different browsers:
https://github.com/Lusito/box2d.ts/tree/master/packages/benchmark

The main goal of this project is to give a maintained box2d version which is in sync with upstream (c++), has good documentation and a set of extension libraries to make more of box2d, like particles, lighting, etc.

Performance and especially garbage collection is a tough thing to work on with javascript games, so it will be a big part of the documentation process to find best practices and bottlenecks to avoid.

If you want to discuss this further, please create a new ticket to avoid getting offtopic here.

For example, creating hundreds of b2vec2s within a frame , leaving them to the garbage collector to clean up will hurt performance and should be avoided.

@danzen
Copy link

danzen commented Dec 9, 2020

Thanks @Lusito the 5 times came from eyeballing the benchmarks at https://lusito.github.io/box2d.ts/benchmark/ - I see the box2D-web.js is more like 4 times the avg ms/frame of box2d.js (haha - here I was calculating when the ratio shows the result - duh). Not sure if avg ms/frame is equivalent to speed - as you say, various factors. Thanks for the added clarity of focus. Sounds great. Will start a new ticket with any implementation findings. Cheers.

Browser: Firefox 83

Name avg ms/frame 5th %ile 95th %ile Ratio
box2d.js 4.65 5 3 1.00
box2d-web 17.94 20 26 3.86
@box2d/core 29.23 32 21 6.29
box2d-html5 30.75 38 29 6.62
@flyover/box2d 48.71 48 42 10.48
planck.js 61.03 65 48 13.13

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

No branches or pull requests

3 participants