Julio Jerez wrote:I do not understand why you have a resistance to it. I like to have things compartmentalized.
Yes, from a library builders perspective that is great. But if you have to include such a clustered library in a custom build processes and you have to maintain all those makefiles across multiple platforms it is incredibly tedious. It also means you have to recompile even more dependencies. There is a trend on the internet amongst coders and that is to develop single file librarys. They're insanely popular for exactly that reason I've stated. Ease of integration and no dependencies.
Compiling on console platforms is incredibly slow, and that makes it even worse, when you have to recompile a library where you're only using a single method. Hard to justify that wasted time. Yup, 10+ minutes of build time.
IMHO, this would be less of a problem if there would be dynamic link libraries available on ALL platforms and precompiled binaries. However some platforms only allow for static linked libs, so this does not work. And if it works, who will maintain the libs with the proper compilation flags for your project? And if there are no precompiled libs available then recompiling all that is tedious again, because you compile certain consoles on Win8.1, other consoles on Win7, ios/osx on a mac etc.
JoeJ wrote:You could build a single newton lib that includes only the joints you really need. That means more work to keep up to date when Julio adds or removes files, but that does not happen so often. I do it a similar way because i add all newton source to my project.
Sure, but that means to maintain an own fork of a project, that's even worse than maintaining dependency builds. Things like that are not feasible when you have to ship games and you are a small studio.
When architecting our engine we made sure to avoid huge external dependencies, we've learned from previous mistakes with many dependencies and custom forks that become hard to maintain. I speak from my personal experience that it's best to avoid huge libs like gtk, libglib, wxWidgets, libJPG etc. when you want to create a system that builds accross multiple platforms out of the box. You'll have to care about your own code enough so it's best to not maintain third party code.
Julio, maybe the solution is to include a special makefile/project that we maintain for all major platforms that builds newton dynamics as a single library. But the project already includes so many project files (all those vs project files...), might not be wise to add even more project files.
ugh,
TL;DR; it's time consuming to integrate and maintain a library in a 3d engine build process, so every library that is integrated has to be reviewed if that commitment now and in the future is really worth it.