Hi, I've been learning allegro for a while and I think it's a very good library for 2d games. I mean, it gives you total control over the game, no design is imposed on you. At the same time, it gives you basic rendering, support for shaders and portability. It's perfect to build a game or a more complex engine on top of it.
However, it seems that(no offence, but) a lot of people prefer sdl or sfml over allegro. Why? SDL provides less features for rendering, so unless you are using opengl and doing the rendering yourself, SDL has no advantages over allegro when it comes to 2d drawing.
Now, to the point. Allegro seems to be a perfect suitable library for building a game on top of it, so, what popular games are there made with allegro? What higher level frameworks/engines are made with allegro?
Any replies would be appreciated, thanks!
Alex the Alligator 4 comes to mind.
Also a little thing Called Icy Tower. Though i'm not sure that was ever ported to Allegro 5.
oh, yeah, I saw that one. Pretty damn addictive!
My game is a pretty big project and will help showcase a big project with Allegro that will be X platform https://www.facebook.com/StemwaterSpades it's up to 66,000 lines, plus my GUI which is 20K lines.
I believe Trent's games are a pretty good showcase of good quality large projects made with A5.
If I had to guess why the other ones are popular, #1 reason, nicer looking websites, #2 reason, binaries, and lots of them, # 3 I want to say probably better community; while I love it here and think everyone here is very nice, other people seem to think certain people on the forums are assholes. (They have just never heard of sarcasm
)
Because I honestly believe A5 is much better than SFML2 and SDL2, but you have to know what you are doing to compile it for all platforms, but it is a solid feature-rich set of APIs.
Also a little thing Called Icy Tower. Though i'm not sure that was ever ported to Allegro 5.
The Mac version uses Allegro 5.
Beat Hazard Ultra is an Allegro 5 game as well.
Factorio uses Allegro I think.
SFML2 and SDL2
I think these are our cohort competition, but our real competition (the reason people don't use allegro more, and the reason you don't see high caliber projects) is because people are moving to Unity and browser based game development. C/C++ is a tough place to start.
The Game was made with Allegro. It will be soon ported to allgro 5.
I think these are our cohort competition, but our real competition (the reason people don't use allegro more, and the reason you don't see high caliber projects) is because people are moving to Unity and browser based game development. C/C++ is a tough place to start.
The unreal engine makes use of C++ quite extensively and now that it's open source it will probably attract a lot more developers. I strongly doubt that they'll switch to a lower level API though.
I seem to remember that Allegro 4 was attractive to hobby game developers and there really weren't a lot of other options like it at the time. But now, that demographic has shifted and has become interested in different tools. I'm not sure what niche Allegro 5 actually fills at this point, but I believe it can no longer be the audience that was Allegro 4.
Personally, I see Allegro 5 as a native, cross-platform multimedia library. I've used it for so many things, but ironically not really to make games.
I think the biggest barrier to entry is probably the C/C++ language itself. I love working with it, but it took me a good 4 years to really learn it. My philosophy was that, if I learn C++ really well, then C#, Java, PHP, Objective-C, etc will all come very easily, which is true. I must say learning Haskell this year was quite a challenge though, I felt like I was starting over, but functional programming I think is a good way to learn how to code better in C-like languages.
I like C# too, for asp .net web development, but I just find tools like Unity and Unreal are overkill for a good bunch of 2D projects. Using C# / mono has a performance penalty that has to be worth it. Using really high level libraries has advantages for rapid development, but when you try to make something pretty big and custom, you end up either having to buy a bunch of plugins, or you write a fair amount of boilerplate code anyways to get what you want.
In my own game project, to really get what I wanted, I'm not sure how I really would have done it in Unity. First of all, there are very few aspects of C#/ Unity plugins that I feel would have sped up my development. I think certain parts of the GUI would have come faster, but I really wanted a very custom look and feel. I further customized that for iOS and Retina by hand.
I also have over 100 network events. While RPC would have made that easier than the way I am doing it, I still need 100+ network events, and I still need an event system that will be able to send messages to all my game objects. Unity helps eliminate a lot of boilerplate code, but you still have to be a good programmer and write a fair amount of code to write something big and interesting. Unity will never be able to code the game's logic for you, which is the bulk of my code.
But that doesn't really matter because having to use C/C++ is a realistically big deal for people in 2015. No GC, have to understand pointers, STL, know how to compile and use third-party libraries, etc. I can see how that is not very appealing in 2015.
An object-oriented port of A5 to C#, with some way to easily deploy your program on browser,desktop,mobile would probably score some nice points with people. I am sure there are a fair amount of people who are just intimidated by C/C++, but wish they had finer control than Unity.
An object-oriented port of A5 to C#, with some way to easily deploy your program on browser,desktop,mobile would probably score some nice points with people.
Sounds like an existential crisis to me. If you're not bringing anything new to the table, what is the point?
A direct port to a higher-level language defeats some of the point of using a high-level language. Some of the design decisions were affected by C. The API could be redesigned with the power of a higher-level language. Of course, you could go ahead and build a Unity killer in C# or Python or whatever that uses Allegro 5 under the hood. I don't think it would work out being very good unless you were strongly motivated to do it, and do it for a specific purpose.
What you're bringing is a very simple abstraction for engine development, which is what Allegro is. But if there is already something that does that then it would be useless. Unity I do not consider a replacement because it is much higher level.
I don't get how a lot of people use unity or other high level engines, all the engines like unity ask you to pay if you release a commercial game made with it. Also, c/c++ is the standard for game development, using c# will affect performance, they're not native and run inside a vm(pretty much like java). I just thought that people would want to avoid using these engines/frameworks, specially because of flexibility.
The overhead of a virtual machine doesn't necessarily have to be too much. Consider mobile games. Most of those are probably running on a virtual machine of some sort. A virtual machine can do a lot of stuff these days. There are advantages and disadvantages to everything. The advantages of a high-level programming platform may outweigh the performance, especially for 2D games or silly 3D games. Zero Point Software has managed to squeeze enough performance out of Unity for Interstellar Marines. Alas, Unity performs very poorly in Linux so far, but I think the Windows port is relatively smooth. Hopefully the Unity developers are working on Linux optimizations...
yeah, I know I'm just being obsessive, as I read somewhere, "99% of the times, the engine is fast as in fast enough". For simple 2d games it doesn't make any difference to run the game inside a vm
It's not so much the VM overhead that bothers me. It is more about the fact that I do not want to be tied to an engine, at least not for a 2D project. Like others have said on other threads, Unity could go out of business tomorrow and you would never be able to support new platforms. Odds are if Unity went out of business they would release Unity open-source, but still, scary thought for me. I also like to have complete control.
you know, I've been using libgdx for some time and the reason why I came down here(yea, "down here" means "this low level" xD) is because with frameworks, it's all about magic. You write, let's say, an "update" function, and it gets called every frame. You implement an interface(abstract class for c++ devs), and your class now manages the input. Everything works kind of obscurely, you never get control over how things works. That's annoying, and the reason why I don't like frameworks(although it was easier to get things done).
Anything by Peitz or Trent. There have been a number of Steam games, as well, and don't forget the most compatible Game Boy emulator on the Internet.
Not necessarily famous, but wasn't there a Tetris champion who practiced using Allegro Tetris? I couldn't find the thread.
There are still people actively posting Let's Plays of Zelda Classic on YouTube.
Before, people who wanted to make games had no choice but to learn C and use low level libraries like Allegro or SDL. Many were not up to the challenge and got nowhere. Those people now use existing game engines, and if they work for those people, then that's great for them!
But Allegro 5 is for people who want pedal-to-the-metal performance and low level control. Or for new programmers who understand that it's best to learn programming the hard way by starting with C. Unity and Javascript frameworks, etc are not competitors, but tools for a different, less hard-core audience.
Finally, while I'd like Allegro to have more developers, I don't use it because it's famous, but because it does what I need it to do.
Wasn't one of the more popular tile editors written in Allegro? Am I hallucinating?
If any other titles come to mind, you know what to do.
You mean Mappy?
Didn't AGS use Allegro (4)? At least it is mentioned on the legal page.
I thought I saw an Allegro DLL when playing Gemini Rue.
Indeed, at least the Mac and Linux ports of Gemini Rue seem to use AGS, which as you mention uses Allegro. They even added some code to the Allegro base? I wonder if those changes were pushed upstream. I took the liberty of adding both to the list.
You mean Mappy?
Maybe... Its web site doesn't make it look so famous, though.
Also, jeez! I never realized how popular Icy Tower was outside of A.cc! 11 million downloads? Fan sites across the globe? At the top of Download.com? ... Crazy.
I like puzzle games and my favorite Allegro puzzle games include:
My own game, Deluxe Pacman which I created in the '90s with Allegro 2 I think at the time, and currently compiled with Allegro 4.4 has had over 1.6 million downloads from http://deluxe-pacman.en.softonic.com/ alone, not counting other websites. Not that I am terribly fond of it being on softonic but. Last month it had over 3300 downloads. It's just too bad I don't make any $$$ on them.
It can be downloaded (as well as a newer, as yet unfinished Deluxe Pacman 2, made with Allegro 5) from my personal homepage at http://home.cogeco.ca/~nroy15/games_index.html if you're curious.
But that doesn't really matter because having to use C/C++ is a realistically big deal for people in 2015. No GC, have to understand pointers, STL, know how to compile and use third-party libraries, etc. I can see how that is not very appealing in 2015.
Yeah, they have to, like, know to program and not just use some magic editor (unity in mind).
Yeah, they have to, like, know to program and not just use some magic editor (unity in mind).
Ha! (As in, I agree, not sarcasm.)
I had a moment of learning yesterday. I guess I never, or rarely had to change a passed pointer inside of a function and have that change propagate outside. So I found out the hard way about the purpose of pointers-to-pointers when my asset code was setting bitmaps yet not actually changing them. That sure was an odd change to track down. ("Is it set? Yeah it's set right here. Wait... why isn't it set?!")
I also apparently forgot again that polymorphism doesn't work without pointers... but all structures and algorithms compile and behave as if it works normally, just that the derived destructor will never be called leaving lovely obscure bugs.
On the bright side, I got my first Advanced / Modern C++ book in today (more still in the mail). Exceptional C++ Style. Basically, it should be titled, "You don't know anything about C++ at all, and I can prove it." Wonderfully well written and laid out concisely in a logical manner.
I was finally getting close to understanding the STL and all the basic features then, they decide to release C++11 and now I know nothing anymore.
C++11 brought some great new features though, smart pointers and lambdas are nice to have, the other new features were harder to figure out though.
std::transform(position.begin(), position.end(), direction.begin(), position.begin(), [](Vector2f &v1, Vector2f &v2) { v1 += v2; });
One line of code to update my positions in my little test project.
@taron, this is what I do.
void bumpbody_integrate(BumpBody * self, double dt) { if (!self) return; self->v_next = self->v; self->p_next = bevec_add(self->p, bevec_mul(self->v_next, dt)); } BumpWorld * bumpworld_update(BumpWorld * self, double dt) { int index, jndex; /* simple integration for now. */ for (index = 0; index < self->body_max; index ++) { BumpBody * body = dynar_getptr(self->bodies, index); bumpbody_integrate(body, dt); } }
<sarcasm>Yeah, C++11 is much more clean and easy to understand that ANSI C... </sarcasm> Great illustration why I hate C++11 even more than C++98.
Funny, I find the c++ code easier to read than that C code
I believe in using whatever methodology makes the most sense for the problem, whether it's OO or modular, etc al, But yeah, that C++ seems more straight-forward. I did a simple Google for std::transform and understood the code and went "Hmm, that's pretty neat."
I wish I had the time to invest in learning boost (I'm also learning Modern C++ like generics, RAII, DI, and more at the moment). I've heard it's basically "C++ extensions everyone is already using while the C++ committee sits around debating them."
[edit]
This is interesting, Google's C++ style guide:
https://google-styleguide.googlecode.com/svn/trunk/cppguide.html
Well but you see, you had to look up transform, my code is clear immediately. But I guess it's in the eye of the beholder. I strongly prefer the spirit of C http://beza1e1.tuxen.de/articles/spirit_of_c.html over the monstruous complexity of C++, even if it means a bit more work for me. Just read that Google code guideline they prohibit the use of many C++ features and for good reasons.
I'll leave it at that thouh since I'm derailing the thread already... :p
I initially had a lot of trouble reading the C too, but that's because I'm not really familiar with vector transformations and I had no idea what those obscure functions were... Of course, the second function isn't returning anything either.
How is beoran's code hard to understand in any shape or form? It's self documenting. The methods aren't 'obscure' at all.