Created
August 28, 2017 19:17
-
-
Save slembcke/532e1d38ca02cb5cd29ab7ceee43d0e9 to your computer and use it in GitHub Desktop.
Future of Chipmunk2D.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
So I haven't worked on Chipmunk heavily for several years. Why? I used to make games for myself in the past, but other than game jams I haven't in a few years. We also used to make part of our living working on Chipmunk, but now have to focus on a lot of other projects. I've gotten to work on some really neat projects lately, like a PS4/Xbox game and drone mapping software. Nothing that has needed 2D physics simulation though. | |
At the same time, Chipmunk will be 11 years old in September of 2017. On the one hand, I feel like it has become very mature. It does what it's supposed to do very well at this point. On the other hand there are changes that I'd like to make, but it's very hard to make them at this point. For example: | |
* Supporting C code on MSVC is a giant pain. They've made it clear that they will never, ever support anything newer than C89. I could save myself a lot of trouble by switching the implementation to C++11, and leaving the API as plain old C. | |
* Speculative contacts would be a very interesting way to implement continuous collisions, but has proven hard to integrate with Chipmunk without breaking other features. | |
* Serialization has also proven hard since there are a lot of internal data structures to serialize and it involves chasing a _lot_ of pointers, many of which are opaque user pointers. | |
* Chipmunk is, in general, too dependent on pointers. For some time I've thought it would be better to move to using flat/SoA storage and object ids. This would be good for performance, make serialization easier, and make better SIMD and GPU processing possible. | |
* In 2006, dual core CPUs were just barely becoming commonplace. I never put too much thought into how to properly support multithreading internally. | |
* While you can make custom constraints in Chipmunk today, it's not very easy. Constraints are like the shaders of the physics world. It would be neat if it was a little better thought out. | |
Simply due to momentum, I'm guessing that Chipmunk 7 will be the last major version. That's not to imply that I'm abandoning it, I just don't see myself developing any new major features for it. When I do, they'll be going into something completely fresh and new. In the meantime, It's looking like I'll finally have the time to work on some game projects of my own choosing. Maybe I'll finally start that 2D asteroid mining game I've always wanted to make. :D | |
- Scott |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment