I was just looking at my linker and I discovered I was using more third party libs than I had expected. I'm already using OpenGL, Glew, SDL, SDL_image, SDL_mixer, Bullet physics an Assimp and theres way more stuff to integrate that I will need a library for. But I still want to keep my game lightweight and portable. I was wondering how many libs are usually used by the average 3d game and if I still had room for more libs.
anybody know? how many Libraries do you use in your projects normally?
How many third party libraries do most games use?
Agreed with the above; you should use as many libraries as you need to satisfactorily complete the task at hand, and it isn't uncommon for complex software (such as a game) to make use of anywhere from a couple up to 10 or more libraries.
Be aware of increases in filesize, performance impact, licencing issues, and any potential distribution problems -- and if you're aiming for portable code keep it in mind when choosing libraries -- but don't worry about the number of libraries used -- it simply doesn't have any impact on the end user.
Be aware of increases in filesize, performance impact, licencing issues, and any potential distribution problems -- and if you're aiming for portable code keep it in mind when choosing libraries -- but don't worry about the number of libraries used -- it simply doesn't have any impact on the end user.
- Jason Astle-Adams
Why would "big title" games even need libraries besides the small free open source ones? There can't be that many proprietary algorithms out there?
Can you give a short list of libraries most used, what they do, and why they are worh $$$?
Can you give a short list of libraries most used, what they do, and why they are worh $$$?
It has nothing to do with proprietary algorithms, it has to do with functionality, and the time it takes to implement you own.
C++ itself is a small, systems programming language. It doesn't do much other than talk directly to a processor, and read and write bytes. For everything else you need libraries that read and write bytes in the correct ways to achieve useful results. This is why languages come with standard libraries.
Do you want to use cout to type text to the console, or do you want to waste time programming up a system that read and writes bytes to the correct memory addresses to get something useful onto the screen? Do you want to re-implement all the math functions, and then optimize them for all different kinds of processors and memory layouts, or do you just want to call sqrt() and move on with your life?
Eventually, you may want to write out data into XML files. Do you want to spend a few months coming up with a good set of XML functions, or would you rather just use something like TinyXML and get it out of the way? When I needed to use XML data, my time to implement saving and loading with TinyXML was something like 45 minutes. My goal wasn't to write a complex parser for data files. My goal was to get data in and out of my program. So.. use a library! Problem solved.
There are lots of library and middleware for big companies to use. They help with cost (it costs nothing to develop them), and they help with risk. It's risky to spend 3 months writing out a lighting system, or an animation player, or anything else, and then come to a point where it fails miserably and stalls the whole project. So why not just license some technology from a company who specializes in that area?
Also, the people maintaining these libraries have dealt with tons of problems that you hopefully will never have to even find out about. Platform quirks, edge cases, low level stuff, non standard configuration issues, hardware differences, etc...
There aren't any reasons to implement most things from scratch anymore. Everything has become too complex. Do it because:
1) You're a hobbyist. You just want to implement something from scratch for the fun and challenge of it. Or for a learning experience.
2) You're going to specialize in this area, and create a product that other people can use as one of the building blocks of their products.
3) You need something that doesn't exist yet, or you have a unique problem that has gone unsolved in the existing libraries.
C++ itself is a small, systems programming language. It doesn't do much other than talk directly to a processor, and read and write bytes. For everything else you need libraries that read and write bytes in the correct ways to achieve useful results. This is why languages come with standard libraries.
Do you want to use cout to type text to the console, or do you want to waste time programming up a system that read and writes bytes to the correct memory addresses to get something useful onto the screen? Do you want to re-implement all the math functions, and then optimize them for all different kinds of processors and memory layouts, or do you just want to call sqrt() and move on with your life?
Eventually, you may want to write out data into XML files. Do you want to spend a few months coming up with a good set of XML functions, or would you rather just use something like TinyXML and get it out of the way? When I needed to use XML data, my time to implement saving and loading with TinyXML was something like 45 minutes. My goal wasn't to write a complex parser for data files. My goal was to get data in and out of my program. So.. use a library! Problem solved.
There are lots of library and middleware for big companies to use. They help with cost (it costs nothing to develop them), and they help with risk. It's risky to spend 3 months writing out a lighting system, or an animation player, or anything else, and then come to a point where it fails miserably and stalls the whole project. So why not just license some technology from a company who specializes in that area?
Also, the people maintaining these libraries have dealt with tons of problems that you hopefully will never have to even find out about. Platform quirks, edge cases, low level stuff, non standard configuration issues, hardware differences, etc...
There aren't any reasons to implement most things from scratch anymore. Everything has become too complex. Do it because:
1) You're a hobbyist. You just want to implement something from scratch for the fun and challenge of it. Or for a learning experience.
2) You're going to specialize in this area, and create a product that other people can use as one of the building blocks of their products.
3) You need something that doesn't exist yet, or you have a unique problem that has gone unsolved in the existing libraries.
There can't be that many proprietary algorithms out there?
In some cases a library is about accessing a proprietary algorithm, but it's much more common that a library is used simply because it's cheaper and to licence an existing, performant, well-tested implementation rather than paying to develop your own.
It isn't always cost effective to develop your own alternative to libraries such as Scaleform, SpeedTree, Euphoria, etc. when you can licence the existing library, and even get support from the creator. In some cases you might also gain access to proprietary algorithms or services, but it's more about saving cost and effort.
//EDIT: Beaten to it -- well answered Daark!
- Jason Astle-Adams
As a side note, if you're still looking for some well known examples, both Source and Unreal Dev Kit use or can use a ton of 3rd party libs.
- http://www.unrealeng...om/en/partners/
- Can't find a link for Source Engine but if you have an installed game from Valve there are a lot of 3rd party dlls in there source engine folder.
- http://www.unrealeng...om/en/partners/
- Can't find a link for Source Engine but if you have an installed game from Valve there are a lot of 3rd party dlls in there source engine folder.
3) You need something that doesn't exist yet, or you have a unique problem that has gone unsolved in the existing libraries.
3b) You need something that has been solved already, but the libraries aren't supported anymore and you can't find a suitable replacement.
Has happened to me in the past =/
Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement