Page 1 of 1

What is your best/favorite library(ies)?

Posted: Sat Jun 07, 2008 6:09 pm
by madmarx
Hi,

Apart from Ogre of course ;-), what lib did you use that make you say :" this is so well done, that it's even a form of beauty ! ".

Personnaly, I found the C++ dlib on sourceforge 1 month ago, and I can say it now : "whow! it is the best library I have ever use!".

-> stunning coding rules
-> even more stunning performances (vector, list, map & so on quickier than the stl)
-> ultra quick compilation time
-> you can choose different implementation of the same tool, with clearly described algorithms
-> simplier to code than the stl (no need copy constructor & so on)
-> too much !

I now prefer it by far from stl & boost.

And you, what are your favorite libs?

Pierre

Posted: Sat Jun 07, 2008 6:39 pm
by betajaen
I tend to use my own storage/container classes than the STL versions. But recently I discovered tinytl (Tiny Template Library) and Loki. Both are alternatives to boost and have opened my eyes more on template meta programming. I wouldn't use either in my own programs, but I have been studying them in the precious spare time I have. To implement my own version of Boost Parameters.

Of course my favourite libraries are Ogre, NxOgre (of course), PhysX, json-cpp, tinyxml and a few others.

Posted: Sun Jun 08, 2008 11:23 am
by Chris Jones
we moved OGE from boost to POCO and Intels Threading Building Blocks. POCO is really nice to use, compiles very fast (compared to boost) and has a lot of very useful classes. TBB is great for multithreading of course but i havent used it extensively yet.

Re: What is your best/favorite library(ies)?

Posted: Sun Jun 08, 2008 2:12 pm
by PolyVox
madmarx wrote:Personnaly, I found the C++ dlib on sourceforge 1 month ago, and I can say it now : "whow! it is the best library I have ever use!".
That does look like a very good library - lots of useful features. I'm particularly curious what the GUI component is like? Presumably fairly minimul, but I don't see screenshots anywhere. I'm interested because not many general C++ libraries have a GUI component.

POCO also looks very cool and provides useful things that Boost doesn't (XML, logging, etc). I just wish I had time to try all these out!

I guess my favourite C++ lib would be Qt - awesome for GUI's and has loads of other stuff built in as well. It's just a complete development platform.

Posted: Sun Jun 08, 2008 8:01 pm
by madmarx
@ polyvox
well I have not yet used dlib GUI. And I don't plane to either, because I don't need/like to do/use GUI. (even at my job, I just use ogre).

@everyone
TTL : I really like some of its features.

Poco : interesting, reading it reminds me java. Strangely, I am never very confident when I see such big libraries. I prefer "little wild things" with cunning strategies (like pantheios logging library ).

Posted: Sun Jun 08, 2008 9:05 pm
by PolyVox
madmarx wrote:...like pantheios logging library...
Wow, what's your trick?! A while ago I spent ages looking for a small, fast, powerful logging library and didn't find much. But that one looks great!

Posted: Sun Jun 08, 2008 11:06 pm
by madmarx
@polyvox
1/ it's part my job. I must decide which tools my guys will use.
2/ If I look for something, I ask the most experts : instead of google, ask people. It is the best source. For example, I already knew Loki because of Andrei Alexandrescu (who also wrote the boost mpl). Loki functionnalities were later injected in boost.
Another way is to ask on a forum : "what is your favorite lib?". 8)
other example : I know the dlib because of the vote on sourceforge. - I checked some source code, and it was quickly obvious that this guy was even better than me!-

Personnaly I also liked some of the AReVi's macro (but not the 3D engin itself). I am also waiting for the fastformat library to be released. I tried the sigslot and it was cool, but I haven't use it a lot (but it was made by the NASA, so I can trust it).

@whowants
After digging further I can say that I like things like dlib and loki, but not like poco. There are some clear errors in the way it's thought. (sorry but I will never trust people which pretend that a code with handle exception is better than a code that does not use exception. It's like they are not even aware of the B method and of what real quality means, which is tragic).

Posted: Mon Jun 09, 2008 4:44 am
by Kojack
One that I've found useful over the years is Pixel Toaster. It's a tiny and highly specialised library for easy cross platform framebuffer access.
It lets you work directly with 32 bit integer or 96 bit floating point pixels, regardless of what your hardware can really handle. All it does is handle opening, closing and updating a framebuffer (full screen or windowed) on linux, freebsd, mac and windows, plus receive mouse and keyboard input.

Example program:

Code: Select all

const int width = 320;
const int height = 240;

Display display( "Example", width, height );

vector<Pixel> pixels( width, height );

while ( display.open() )
{
    const int x = rand() % width;
    const int y = rand() % height;

    pixels[x+y*width].b = 1.0f;

    display.update( pixels );
}
That opens a 320x240 floating point window and makes random pixels blue until you close it.


A handy and pretty unique library is Microsoft Research's Detours. It's purpose is to bypass functions in a dll with replacement functions in another dll. The less nice use is things like game cheats (you can intercept any opengl function call and do your own code instead, like force transparency or full lighting), but it has legitimate uses too. Currently I'm using it to make a network problem simulator. It replaces the upd socket functions in winsock with new ones which create fake packet loss, corruption, duplicates, low bandwidth, high pings, etc. So I can test network code on a lan as if it's really running on a really crappy network.
No changes to the main code are needed, all the detour code is built into a seperate dll and can be injected either when a program starts, or even into an already running process.

There's a lot of cool debugging stuff you can do with it. It can even bypass system dlls, so you could replace the MessageBox function in any executable with logging to a file instead, or do something fun with the Sleep function.

Posted: Mon Jun 09, 2008 12:43 pm
by Klaim
About logging in boost, there is a lib that have been reviewed and rejected for minor improvement (that mean that they wanted some modifications before putting it in boost officially, but the lib was good).
The lib have been reworked since and is back in the review stack of boost.org

You can try it it's available there : http://torjo.com/log2/index.html

It seem verry flexible and useful, but i don't have time to try it in my projects as i've my own minimal solution working fine for what i do. The performance of this lib is not clear as (as always) it depends a lot of what feature you use, but there is a profiler inside to help you see the logging performance.

Posted: Mon Jun 09, 2008 6:56 pm
by madmarx
Kojack has got 2 winning tickets! :D thanks for sharing knowledge!

Posted: Mon Jun 09, 2008 8:45 pm
by joeld
Wow.. Great thread. I haven't heard of most of these and they all look useful.

I'll add:
ImgDebug
http://billbaxter.com/projects/imdebug/

It's like printf, but for image data.

Posted: Wed Jul 23, 2008 12:46 pm
by Red5_StandingBy
I am an ACE fan:
http://www.cs.wustl.edu/~schmidt/ACE.html

Very stable, cross-platform, users' list is impressive. But it is somewhat heavyweight for game development.

Posted: Thu Jul 24, 2008 12:37 pm
by lonewolff
For some reason, I have been hooked on Winsock and BSD Sockets for the past few years.

I think it is the love of being able write software that can communicate to someone else anywhere in the world. 8)

Posted: Fri Aug 15, 2008 4:10 pm
by Brocan
how about a xml library easy to use? i have looked at tinyxml but it doesn't link in my app :(

Posted: Fri Aug 15, 2008 4:41 pm
by thbusch
Gtkmm, because building good tools is extremely important. It is by far the easiest to use, best designed cross-platform gui lib i know, outperforms wxWidgets in many, many aspects if you ask me.

Posted: Sun Aug 17, 2008 10:00 am
by Firecracker
madmarx wrote:@ polyvox
well I have not yet used dlib GUI. And I don't plane to either, because I don't need/like to do/use GUI. (even at my job, I just use ogre).

@everyone
TTL : I really like some of its features.

Poco : interesting, reading it reminds me java. Strangely, I am never very confident when I see such big libraries. I prefer "little wild things" with cunning strategies (like pantheios logging library ).
I googled pantheios logging library and Wow, just wow. It just looks so simple and elegant to use. I hacked togeather my own simple logging solution a while back, but when I have some free time to work on my hobby project I am so swapping it out for this. Thanks !