I'm pretty proficient with C++ and wanted to get out of the "game engine" trend and decided to just write my own, my choice are sfml 2, sdl 1.3/2.0(practically NO documentation..), and allegro 5.

I do plan on writing a level editor as who likes writing out there maps by hand?

The game I'm creating would work on either 3 libraries as it's C++ at the end of the day, but I'm more focused on the game than low level stuff if I do have to use low level I would integrate DirectX 11 or OpenGL 4.3.

Speaking of DirectX or OpenGL does allegro or the others allow linking to other graphics api's?

I'm pretty against sdl 2.0 mainly because there is no documentation, sfml 2 doesn't have documentation but it's forums are like a beehive and there's plenty of unofficial docs for sfml 2, sdl forums aren't really active and for some reason you can't post either.. how convenient for them.

Since documentation is pretty important go for the one that is the most well documented option (Allegro 4 had really good documentation, I haven't tried Allegro 5 so I can't say which one to chose for you).

I once tried to learn frameworks, I had about 3 to chose from in a language that I was already very familiar with however the documentation was sporadic and lacking and it required me to read source code, and 1 other framework that was really well documented but in a language that I was not familiar with.

After fighting for 3-4 weeks with the language that I was already very familiar with & undocumented frameworks I switched to the language I did not know but had a really well documented framework and I never looked back. I believe that strong documentation is what makes the programming tools functional to humans.

I'm more focused on the game than low level stuff if I do have to use low level I would integrate DirectX 11 or OpenGL 4.3.

If you don't want to focus on low-level stuff, then for Eris's sake target an earlier OpenGL version than 4.3 (which when removing the cruft from the OpenGL API went too far and removed pretty much everything convenient).

Quote:

Speaking of DirectX or OpenGL does allegro or the others allow linking to other graphics api's?

All of them provide easy access to OpenGL.

-- Move to the Democratic People's Republic of Vivendi Universal (formerly known as Sweden) - officially democracy- and privacy-free since 2008-06-18!

I'm using SFML 1.6 (last of the 1.x branch) in my game engine. The API is fairly similar to 2.x from what I've seen. 1.6 has great documentation, so I assume that 2.x is going to have good docs when it's finished. In the meantime, you could use 1.6 if you wanted. It's stupid simple and complies to modern programming paradigms like RAII, OOP, etc.

--------------------------------------------------"If only our dreams were fires to ignite, then we could let the whole world burn" -Emery

I don't know about any of the others, but Allegro lets you use D3D or OpenGL directly if you want. On Windows the default backend is D3D, but you can specify that you want OpenGL. You can then very easily port your game over to OS X, Linux, Android or iOS.

Allegro 5's documentation is a bit rough (compared to A4's) but it generally ok (http://alleg.sourceforge.net/api.html). There's also the Wiki, that people are busy adding more documentation and tutorials to (http://wiki.allegro.cc/, it's not quite as organised as it could be, though people are working on that too). There are the examples, that are mostly clear and well-commented. Last but not least, there's these forums where you can always ask questions if you get stuck on something.

If you want the latest stuff (including shaders, multi-touch and more extensive primitives) you should check out the latest 5.1 WIP version (beware: you may contribute to Allegro development by finding bugs), otherwise stick with 5.0.

In the end it's mostly about personal preference which library you use.

Nowadays all of these API's are good options and are feature-similar. Your results are primarily going to come down to your own experience more than anything... which you will build by coding lots of projects.

If you're using straight C or C++ as an "Extended C", then Be sure to check out SFML 2's C port. It's far smaller syntactically.

I know this may seem obvious, but for documentation, the respective API references for each library will be invaluable.

Allegro, SDL and SFML can all use OpenGL; I wouldn't recommend doing graphics any other way, even if you're doing 2D. Also you can do top-notch 2D with OpenGL going back to the earliest versions (1.1?).

SDL has a ton of tutorials showing how to use it. I think Lazyfoo's tutorials are the more popular SDL series out there. Also, while Allegro has documentation, I think most Allegro users look at the included examples and games to see how to use it rather than sifting through the docs. This is where other libraries fail or come up short, they don't have very good examples to look at and pick apart.

"Can't a man even talk to himself without being interrupted?" -Krull(1983)"Through vengence I was born. Through war I was trained. Through love I was found. Through death I was released. Through release I was given a purpose." -- Specter Phoenix"Programming == AWESOME the rest is just tools to accomplish it."END OF LINE

True, that sounds like a documentation stub. On al_create_event_queue the example links give you plenty of code to look at though. And to be fair events.html is a quite long read already so even with some functions only documented in brief it already shouldn't be much trouble figuring out how to use them.

It may just be my nostalgia, but I liked how the A3 and A4 layout looked compared to A5. That is just my personal preference though.

Don't know why I like this old layout:{"name":"606090","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/7\/47b4ee85fa3c666e1770e0b6a78c2040.png","w":1366,"h":768,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/7\/47b4ee85fa3c666e1770e0b6a78c2040"}

"Can't a man even talk to himself without being interrupted?" -Krull(1983)"Through vengence I was born. Through war I was trained. Through love I was found. Through death I was released. Through release I was given a purpose." -- Specter Phoenix"Programming == AWESOME the rest is just tools to accomplish it."END OF LINE

Any particular reason you're using archive.org to access the A4 manual despite it still being available directly on Allegro's homepage?

Didn't know it was still available on the Allegro homepage. When I went there I saw "API--5.1" and assumed it only linked to the new A5 API, so I used archive.org to get it.

Quote:

And more examples, obviously.

Not just examples, but simple examples as most programmers coming to Allegro may see the included examples on the documents and not have a clue what is going on there. I know I've looked at some examples and thought "WTF?!".

"Can't a man even talk to himself without being interrupted?" -Krull(1983)"Through vengence I was born. Through war I was trained. Through love I was found. Through death I was released. Through release I was given a purpose." -- Specter Phoenix"Programming == AWESOME the rest is just tools to accomplish it."END OF LINE

Just use Allegro 5. The examples are good, the library is good and so is the community.

It's A5 examples that make me say "WTF" to. Of course I'm referring to the Manual examples that were attached to some things. For example, under al_create_bitmap there is an example (ex_bitmap_target.c) and it makes me think "WTF?!" when looking at the code(sorry for the bad format, apparently copy/paste doesn't copy the format from the manual to the forums at all, so I had to manually tweak it or have one long line of code):

"Can't a man even talk to himself without being interrupted?" -Krull(1983)"Through vengence I was born. Through war I was trained. Through love I was found. Through death I was released. Through release I was given a purpose." -- Specter Phoenix"Programming == AWESOME the rest is just tools to accomplish it."END OF LINE

The above example is meant to demonstrate the difference between memory and video bitmaps. It is especially relevant to longtime Allegro 4 users. In Allegro 4, you can pretty much write to bitmaps with reckless abandon. In Allegro 5 if you write to a bitmap you take a hefty performance hit if you don't know what you are doing.

Perhaps a simpler explanation of what the example is trying to demonstrate could be placed at the top of the header.

I'm not that experienced in C++ and looking at that code I can't tell what the hell it is being done because the variable naming is terrible and I have to try to figure out what variable names mean and what is going on in the example. On top of trying to understand what is going on with the Allegro code. For an experienced programmer I'm sure it all makes sense, but most of our new users are new to programming too and trying A5 for the first time to get met with confusing examples like that.

"Can't a man even talk to himself without being interrupted?" -Krull(1983)"Through vengence I was born. Through war I was trained. Through love I was found. Through death I was released. Through release I was given a purpose." -- Specter Phoenix"Programming == AWESOME the rest is just tools to accomplish it."END OF LINE

I think its alright if the beginning user can't understand all the examples at first glance. Plenty of the included examples are far more simplistic. To a certain extent, complexity is why I like Allegro. The power is there if you want it. If I want to do raw bitmap manipulation I can. I am, however not required to and I can successfully develop a game without knowing anything about bitmap manipulation.

You are correct however in that this example could use better documentation. Perhaps the examples should come with some sort of rating system. I.E. beginner, intermediate, advanced etc. I am grateful that someone took the time to write all the examples. I myself am too busy developing with Allegro 5 to write examples.

I think the API documentation is fine. The n00bs needs a well written, high level book to walk them through everything from A-Z. The wiki articles are fine if you are looking for a single topic, but they always are going to lack the context and continuity that a single-authored book provides.

For some reason I thought the documentation source was written in some horrible custom syntax. Instead I see it's written in a very understandable custom(?) syntax. Maybe I'll start making patches ^^ Should I use SVN for that or what?There definitely are English mistakes, and some entries could refer to a bigger number of appropriate entries.