It's like people isn't programming videogames anymore, right?

Man like two years without posting anything... Internet forums are so cold.

Specter Phoenix

A lot of the users have moved onto Unity and Unreal. Even the great Johan Pietz told me on Twitter that he hasn't used Allegro in a long time and moved on to Unity when everyone else did.

With me, I just still have confidence issues and don't publish anything I do. I'm currently working on my TINS2017 entry even though I dropped out. I simply called it Dr. Health, but since I've never made a game outside a single level I had to spend majority of my time searching state machines and game states because I got side tracked reading all the different ways to do them.

Chris Katko

I've just been busy with work and health stuff. I'm still planning on releasing a game and I've been brushing up on skills and building framework tools here and there.


Well, for those who just want to make a game, it is easier to use a prebuilt game engine. For that crowd, something like Unity, or for 2D, Godot, is fine.

But for people like us who like to program a game, Allegro is better because it gives much more fine level of control.

I am still programming a game with Allegro but I have not much time, and for my
own projects I keep changing my mind on what I want. And I like to investigate many side paths. And then I also play quite a lot of games myself. So progress on the game is very slow. But I am enjoying the trip.

Chris Katko

Allegro is better suited for games with massive simulations with tons of calculations/units/gigantic worlds. Factorio, for example, would be slow as poop in Unity.

I've heard good things about Corona SDK (John Romero himself, uses and recommends it) which is cross-platform, well-tested, and uses Lua for all scripts. Kind of interesting halfway between Unity and Allegro.

I do not think it would be suited for high power games like I'm working on with tens of thousands of units and many exotic features.

But there are certainly options out there these days. Bare metal programming experience is no longer required for smaller-simulation games, like say, an adventure game where there are a max of 10 objects ever really moving around and almost no collision detection.

If I build a 3-D game in the long future though, I'd definitely consider Unreal (or Unity) since there's no way I could compete with the amount of specialized programmers and systems in those packages. There's no way I could build a better animation system, for example, without spending a year or more of my time learning "what" a better system would be and then building and testing it.


Mike Acton moved over to Unity today, and they've been sucking up a lot of talent in graphics for awhile. I'm curious to see where Unity is in two to three years. I might have to stop dumping on it.

We just released WWII on Friday, but I'm sorry to say there isn't a drop of Allegro in there.

Chris Katko

Mike Acton... really? That's really impressive considering his previous talks.

WW2? What's the link? Are you working for a commercial AAA now?

[edit] Wait, did he USE Unity or is actually JOINING the Unity company to help fix their crap?


Joined Unity, along with Fredrikson (another high level Insomniac dev). Unity has been pulling a lot of talent lately.

WWII. I've only been doing the Activision thing for a bit over a year. before that was Nintendo and before that Blizzard.

CoD catches a lot of flak by default, but I thought the campaign on this one was quite good. I don't do multiplayer though, so I can't comment.


Well, our main competitor is SDL, not Unity. I think Allegro5 has the better, easier to use API, but SDL is sometimes more robust and supports more platforms. Of course, since the license allows it, we can port SDL internal code over to Allegro as well., Like I did myself before.


I haven't made anything with Unity yet. I've been meaning to try it out, just to compare it. I don't think allegro needs to "beat" Unity. But at game development meetup I went to, I was asked about the differences, and I would like to be able to answer that question honestly. I suspect that there are plenty of niche areas where the choice for Allegro still makes some sense.

I have used a high level framework at one point - - for html5/JavaScript. Although Phaser isn't bad per se, it doesn't take long before you start to see restrictions in the high level API. In JavaScript it's always possible to hack the internals, so it wasn't a big problem in this case.

Specter Phoenix

One thing I've noticed is that even when people use Allegro they don't have a clue what they are using. Watched a video several hours ago where the guy claimed A4 was coded in C, but A5 was coded in C++.


I guess he thought he was using Allegro "4++"


Well, Allegro5 is written partially in C++ for some Windows drivers...

I was a clueless newbie too when I started with Allegro 3 on DOS/DJGPP... Let's not be too harsh on them...

Mark Oates
beoran said:

But for people like us who like to program a game, Allegro is better because it gives much more fine level of control.

I would fall under this category. I garner a lot more enjoyment from programming than playing.

Mike Acton moved over to Unity today

:o He's like, Mr. Performance!!

I was asked about the differences, and I would like to be able to answer that question honestly. I suspect that there are plenty of niche areas where the choice for Allegro still makes some sense.

For me, it's mostly the appeal fine-grain control, more so than making games.

Chris Katko

For one, making an real game, requires creating a tool chain. Programming on the raw level means your tool chain easily integrates directly in no matter what kind of niche game you make. As long as you're forward thinking with your code (ala unit testing/modular architecture), adding something like a "in game renderer" to any of your tools (so your artists see exactly what it'll look like in real game), will take a single work day or less.

But if you're just making a game that looks/feels like 99% of what's out there (omg another platformer on steam!) then you can often save time by going with a third-party framework. However, there are the classic negatives of not being able to know if a problem is your fault, or a bug in the engine, and if there is a bug can you get the devs to fix it in time (or are you stuck working around it through insane means).

But again, in real 3-D games, the pendulum swings the other way and you gain WAY more by using Unreal/Unity than trying to roll your own. You can get 80% of the performance and quality of the best programmers with their dedicated, custom 3-D engines, and instead of investing 3 man-years of your life to make ONE ENGINE you could you know... be working on a game instead. GTA V (custom engine) runs on TONS more computers than PUBG (Unreal). But GTA V had >$100 million dollar budget, and PUBG started with a team of like 5 people.

But when it's 2-D games, there's still tons of room for either using a small framework that allows you fine control, or, making your own engine. Factorio would be nearly impossible (or slow as hell) without an engine that can take advantage of specific game similarities/assumptions appropriate only for Factorio.

The main game I've been working toward is going to be an ultra-lean networked game. The entire game is on the server with only blind, dumb clients. The clients merely send their keyboard/mouse input (which is verified server-side). You can't hack data that you're never given. (Like off-screen players positions.) Likewise, there's tons of optimizations related to my specific game universe / game mechanics. I've been looking into basically multi-threading... a single-threaded game. The game is mostly in space with space stations. Groups of rooms connected by long walkways. One natural optimization is treating every group-of-rooms as a single entity with its own memory space in RAM and CPU core. Any data that needs to "sync" across these groups of rooms (a bullet passing through, or a chat message) is synced, but otherwise, they're separate "simulations." The goal is at least 100 (possibly 200) players per server with very very low lag and a high simulation tick rate while running on normal internet connections. When you're doing fluid simulations on gigantic grid "worlds", being able to split the workloads into multi-threads is a big deal.

Tons of other things too. User mods are a strong part of the game and community.

I'm also using a D backend with a Lua front end for scripting with TONS of scripts (almost every object in the game is scripted with common cases off-loaded to the D binary.)

Probably plenty of other stuff but the point is, anything a computer can do (even off-loading physics calculations into CUDA cores to utilize your GPU to simulate my simple 2-D graphics game) I can do. I've even considered off-loading logic to those 200 connected peers with majority rules voting to reduce the burden on the server. The more players there are (normally slowing down the server), the more total distributed computing is available in the "network".

Many of those optimizations, I probably won't even need. I'm basically re-implementing a decade old, super-complex game, that runs on a piece-of-crap single-threaded interpreted-language "game system" that was never designed to implemented the physics (finite element/finite difference method) that was built into the game. So merely re-writing it in a real langauge like C++/D will almost guarantee a real 100x speed-up. And since I'm directly controlling the packet structure, I can optimize them to reduce spurious wastes of bandwidth generated by a "generic" engine written by a couple of dudes who may have no idea what they're doing (and never planned for their engine to be used for a game like this).

Basically, I'm re-writing my own Space Station 13 if anyone knows what that is.


And BYOND (the engine) is written in a Java VM (remember how slow Minecraft was?), that is then an interpreter for their custom language, that is all single-threaded and server-side. The "best" servers top out at around 100 players because after that (and also some in-game events) destroy the performance down to 1 FPS or less. The engine has almost NO support for multiple graphics layers, no easy support for animations or blending/coloring. The sound is super basic and has no support for "3-D" (well 2-D in this case) sound based on propagation rules. (I'm a big sound nut so my version will definitely improve the sound big time.) The game engine, which is Java, running a custom intrepretted language, is then used (read: abused) into running 2-D finite element physics calculations. The entire game was originally a 4chaner's physics engine built in the BYOND engine for fun during his grad school. Then people bolted on an entire game onto that. But fundamentally, BYOND is the WRONG TOOL for doing physics and the entire game (as someone with extensive playing and modding experience in the engine) is a "bad fit" for the engine.

They also have horrible encapsulation issues where BYOND supports Linux, but, certain "games" written in BYOND... like SS13.. don't actually work. Ugggghhhh...


Unity is PROPRIETARY software...
And I like Allegro better.

@ Chris Katko: That looks nice !
Do you have a website ?


I pee on Unity and still use Allegro the Almighty.

Chris Katko

My website is currently down. I do own though (for whenever I get it back online).

Here's a screenshot from my game awhile back.


(Using FTL asset for the ship background.)

In the pic I was experimenting with:
- Fire spreading
- Animated sprites (fire)
- Allowing multiple "maps" that can actually rotate and offset from each other and still "dock" with each other. (BYOND has only one map. You can't have a ship fly around on a map.) I've considered letting you "ram" structures to collide "maps" together so a ship can ram into a space station.
- Playing around with "shields"
- Doors/airlocks are in there too.
- FPS measurements. (It was off-the-chart just using Allegro5 and OpenGL :) )

I've actually thought about testing using CUDA cores for FEA fluid physics updates. Huge grids with small calculations, seems like a candidate for a GPU.


Using CUDA is a great way to lock out about half the user base. Stick with simple compute shaders. Perf isn't quite as good, but they work with nVida and AMD.

Unless you meant server side only, in which case, not the best idea to assume you'll have a GPU at all.

Chris Katko

I understand CUDA is nVidia only. Well, I think I forgot about it during the discussion but yeah.

It'd be server-side only. Many users host their own servers. It wouldn't be required, it'd be optional. As in, "if you've got a videocard, use it."

But yeah, it'll be setup for "plugins" so you can use the CUDA module, software module, or etc.

But either way, good point. I sometimes forget AMD can't run CUDA. (Although nVidia has >80% of the market. :P :P) Compute shaders would work too.

I'm a big AMD CPU fan but I'm straight nVidia when it comes to GPU's these days.

So all those poorly connected sentences lead to: CUDA isn't actually required to run a server or client. It'd just use it if available... and I actually bother to write it.


Why not open CL, that's more portable, at least.


OpenCL has pretty bad nVidia support. It's getting reasonable now, but nowhere near CUDA.

Both manufacturers are good with graphics though. If you can put your problem in terms of pixel/vertex shaders, neither will disappoint you. For most problems, this isn't actually too difficult.


Allegro or SDL2 are the only real options for me. Both are excellent libraries, both have no strings attached so you can sell what you create without paying someone else.

If I were to go with an engine, I would probably go with Unreal as you can actually sell what you make to a certain amount without paying them which I thought was reasonable, and they have much more experience with engines than Unity.

But, if I create something, I want to actually code it, that's part of the enjoyment and a certain level of pride as well.

I try to use as much free software in development as possible, just to show people you don't have to spend a dime to get into it. You can use Code::Blocks to compile (with MinGW). Yes, Visual Studio is free now, but there are still strings attached if you wish to sell anything you make with it. Allegro or SDL2 as both are totally free, Audacity for my sound creation, Blender for my graphics etc.

And I still insist on using C, not C++. :P


CoD catches a lot of flak by default, but I thought the campaign on this one was quite good.

The reviews on it are mixed. Sounds like the enemy AI has "aimbots" (something I've noticed in past CoD titles), and a lot of people are complaining that it's completely historically inaccurate: locations, weapons, ... apparently there are black female Nazi soldiers... :-X It's $80 for me on Steam which seems extreme even if it was an amazing experience with no issues..


I am programing using allegro 5

Specter Phoenix
bamccaig said:

The reviews on it are mixed. Sounds like the enemy AI has "aimbots" (something I've noticed in past CoD titles), and a lot of people are complaining that it's completely historically inaccurate: locations, weapons, ... apparently there are black female Nazi soldiers... :-X It's $80 for me on Steam which seems extreme even if it was an amazing experience with no issues..

Didn't you know? Historical accuracy no longer matters so long as you make it diverse.

Chris Katko

I like how they censored the nazi flag when you're in multiplayer, but single player they have nazi flags.

And if they can be progressive enough to have black women nazis... why can't I play as a trans-nazi? Why are they oppressing me?

That said, good for relpatseht for working in an industry he loves.


That said, good for relpatseht for working in an industry he loves.

From what I've heard, the games industry is akin to slavery. :P Most people apparently burn out after 5 years, or 10 max just from the horrible hours and [relatively] poor pay/benefits/etc (though it's still probably better than mine, so there's that). :P I think there's a difference between loving the work that you do versus loving the industry though.


So much misinformation.

In multiplayer, they let you choose what your character looks like (because people like character customization). When playing multiplayer, half the time your on the axis and half on the allies. You've chosen what you look like. Why would they take that away from you? It has nothing to do with progressive this or oppression that.

Same with the Nazi flag. That's censored in multiplayer because otherwise the game couldn't ship in Germany (and maybe a few other EU countries).

The engine just doesn't support asymmetric information like that. There are much better places to spend engineering resources than adding it, testing it, etc.

There are shitty places to work in the industry, but none of the places I've ever worked or would ever work. The stereo type is old and doesn't apply so well any longer.

Chris Katko

Dude, I'm just poking fun. :P

That's censored in multiplayer because otherwise the game couldn't ship in Germany

Actually that's misinformation. They only have to censor the GERMAN version of the game. Previous COD games even had Nazi flags. ::) You know EXACTLY why they censored this version. Because "omg white supremacists will be emboldened!" There's literally no other difference in situation between the previous WW2 CoD game and this one.

It's pretty sad that millennials are so butthurt they can't even let us enjoy classics like Mel Brooks. "How dare a Jew make fun of Hitler!"


Also, re: flags censored for multiplayer. Germany won't let flags in single player either. So that logic completely collapses. So you're either intentionally trying to mislead us, or you listened to your bosses without bothering to analyze it critically. ::)


Sorry, I was reading some youtube earlier. It shakes my faith in humanity.

The engine doesn't support asymmetric information. The maps can't be different in multiplayer for a player in Germany and a player in the US. The hash would fail. They can make a separate release for Germany with no Nazi flags in single player, but the multi-player maps need to be identical between regions.

Chris Katko

Fair enough. We probably just had a miscommunication.

Sorry, I was reading some youtube earlier. It shakes my faith in humanity.

That's a great website to lose faith in humanity. Twitter is like 100x that though.

Check out Joe Rogan's podcast. It's like one of the top 5 YT channels out there. He just has experts come on and talk. It's like TV used to be. Actual experts talking about poverty, drugs, Jay Leno talking about the history of comedy, and more.

Specter Phoenix

I actually unsubbed from a lot of YT channels because they went from talking about multiple topics from gaming, to politics, education, etc., to purely being Anti-SJWs and anti-feminists after the 2014 GamerGate controversy.


Well, that's an understandable reaction to the way gamers were maligned. But best not to get stuck on that. Now we know the media and most politicians on any side like to use gaming for a Scapegoat for whatever social ills they perceive.

Best focus on keep on making and playing games and getting our message past the inevitable censorship imposed upon us from all sides.


So, what is the conclusion? ;D

Chris Katko

I'll never forget John Oliver doing a piece on "internet bullying" and completely ignoring that women bully and framing it as a "men with tiny penises vs poor innocent cute womyns" hit piece.

Specter Phoenix

Yeah, look at the coverage of GamerGate. You could tell which author was friends with which victimhood candidate. They ignored the facts that came out in The Zoe Post, even ignored that Quinn said Gjoni dumped her due to her cheating and behavior, but every media outlet claimed he was the jilted ex-lover that was dumped by her. The wonderful "Gamers are dead" articles with my personal favorite being "Gamers don't have to be your audience" by Leigh Alexander posted on Gamasutra. Then the articles that claimed it was gamers having issues with women in the industry and trying to chase them out. Never mind that being a journalist doesn't make you in the industry, nor does being a culture critic. Apparently though, making a single game makes you in the industry which is good to know since I released the pong clone back in 2006, I'm safe then ;).

Then the friendships came into play as every article that told the origins of GamerGate claimed their friend was the spark. Some articles claimed Quinn was it, some claimed Anita was it, some claimed Wu was it, saw a few that claimed Leigh and Harper (created a block bot) were it.

Gamers have issue with women playing games and coming into their space. Would work if you completely ignore Amy Hennig, Jade Raymond, Carol Shaw, and the hundreds of women that are in the industry making the games we play everyday, because we obviously hate them.

Then you have NBC's latest anti-gamer, "blame GamerGate", Discord hit piece:


AAA Dev commenting on it (Disclaimer: my tweet starts the video):

And article mentioned in video calling out NBC fabricating information:


People get too worked up over nothing, on both sides of the debate.


Specter Phoenix

People get too worked up over nothing, on both sides of the debate.

The element that added fuel to the fire was when game journalists, the people that stood by gamers when Jack Thompson attacked them for being murder simulators suddenly sided with a new critic that was saying games were sexist, but they doubled down and actually started docking points in rating systems for sexism, sexualized characters, etc.


The last version of Allegro I used was 4.2, and that was only because there were others working on the same project. If I can't work in a team, I usually have little motivation to work on a project.

After Allegro, I started Unity and had to learn C# for it. At the time, they had a Javascript hybrid they called Unityscript, which they are deprecating, which helped some of the transition to their engine easier if you didn't know C#. It was a love-hate relationship, but I found that coding games was at least pleasant.

From there, we attempted to write a VR game in Unity but Unity had virtually no VR support then, and everything was jittery/laggy to the point of being unusable. So our small team (of 3 or 4; I forget) reinvented the game under Unreal using C++ (since we all came from a C++ background).

Unreal's blueprints were kind of a weird combination for us. It was certainly easy to switch back and forth between "hook up this wire to that node" and see instant results without having to recompile, but when most of the game assets were these binary blueprints, it made collaboration nearly impossible. So we had to shift almost entirely away from blueprints and code all the functionality in source. Each recompile took no fewer than 4 minutes, since it had to include the entire Unreal Engine's sources as well.

If something were to compel me to learn and work with Allegro 5, it would have to be a project that has more than a few members each working on something. Nothing helps me out more than "Hey... how would I do this thing?" and get instant feedback, rather than ask a forum some vague question in a way that doesn't give away too much IP. :P

I actually liked the Monday threads, especially when Allegro 5 was just coming out and we were using it to learn the new interface/API. But it fizzled and died. I just didn't have the motivation to learn it if I would be the "lone person working on it."

Chris Katko

Allegro 5's API can be learned in a a day. Much less if you're actually used to programming proper modern Windows programs.

The only differences are:

- Everything is videocard. So don't do pixel manipulations unless you have to. This is true for every modern API. All graphics get sent by default to the "double buffer" in VRAM so you don't specify the destination in every draw call. Instead, if you ever want a different destination you call a specific al_set_target (or something like that). It's super rare I ever need that.

- Event queues exist. No more timer threading/volatile crap. Just make a timer, attach it to a queue, and have a "message handler" switch statement inside your main loop. Timers, keyboard, mouse, everything all fires off "messages" that get handled in your message/event handler. (Which is how Windows has worked since what? Pre Windows 95?)

That's about it.


Allegro 5's API can be learned in a a day.

Agreed. It was a little different at first, being used to Allegro 4, but after a few questions in these forums I became more comfortable with it. For a few functions which I really missed in Allegro 4, I simply made up my own with Allegro 5 which called Allegro 5 functions properly. Like a Wait_For_Keypress() or whatever, I just made my own.

I was always fairly impressed With Allegro 5... except with the sound. I think some people forgot that Allegro was originally made to make things easier, and Allegro 4 done that in spades. But there are aspects of the sound system in Allegro 5 that drive me up the wall. In Allegro 4, I could easily vary the pitch on the fly. In Allegro 5, nope. I have been told a few times how to accomplish this, but it feels like a lot of hoops to jump through for what used to be readily available in Allegro 4. And the lack of a default GUI, which is minor but it is a thing. Usually newer versions improve a library, not take away from it.

Otherwise, I prefer Allegro 5 for the most part... when I use Allegro anyhow, which I have done for all my projects up until recently. Trying some new things out now (sadly). But then again, I haven't been coding much anymore, all the ideas have been taken it seems and my enthusiasm is waning (age perhaps? It sucks).


I think a simplex pure C GUI library for Allegro5 would be a great contribution. There are a few out there, but they need some love. And improvements to the sound system would be welcome.

If you don't feel inspired to write your own games, you can still contribute to Allegro. 8-)

Chris Katko

I honestly haven't done anything with sound so maybe it's got some issues. I did try (and give up) like twice to do an audio generator and gave up out of frustration.


Don't get me wrong, Allegro 5 does sound just fine. My Deluxe Pacman 2 game is 100% Allegro 5. I just can't do certain effects with it like pitch without jumping through a lot of hoops. In the end, my game sounds just fine and I am pleased with it, so this is admittedly a minor thing. If I had the skill to improve Allegro 5 I would, so I don't want to complain too much when people donate their free time to this. And I honestly prefer my own "GUI", as I don't normally need anything fancy for a video game, so that is also a minor thing.

Compiling Allegro... well... when people can easily download premade binaries for SDL2, that's hard to resist. Though Edgar has done a nice job in that regard.


I'm working in a game engine now. Does it count? 8-)


It certainly does! Pascal is not very fashionable these days, but it's a nice language to learn programming with. My first language was Pascal. ;D


You should back. Both Allegro.pas and Mingro are still "alpha" because they're not complete but they're quite stable with Free Pascal compiler. :)

Thread #617123. Printed from