Somehow I missed this news last month: Epic Games is offering the Unreal Engine 4 - the latest version of the engine that drives a huge number of AAA games - for just $19 a month. Since you can cancel access at any time, it means you can get access to the engine and all the source code for about the cost of an MMO subscription and a cup of coffee.
(Note that I'm going to be a little bit loose with terms here. I'm not going to draw distinctions between game engines or graphics engines. Also I'm not going to get into the other engines, like CryEngine, Unity, or id Tech. We can do that in another column if you like.)
Previously, they didn't license the game engine to individuals like this. If your company wanted access to a full-featured game engine, then you went to Epic Games (or iD, or Crytek) and negotiated a price. That price would run somewhere from hundreds of thousands to millions of dollars. Then you would sign some form of non-disclosure agreement stating who was allowed to see the code and promising you wouldn't share it with anyone else. The code was treated like this secret, sacred, and incredibly expensive thing.
And now Epic Games is willing to let scrubs like me at their code for about one hundred thousand times less. (To be clear, they also get a cut of the profits if you ever use it to make a commercial game, but that's a topic for another time.) It might seem like a crazy move, but it actually makes a lot of sense.
In the past, code was guarded because it usually contained important secrets. There were very few programmers in the business that could make an engine that could hold up to Quake, for example, in terms of visuals and performance. A lot of tricks were used to get the thing to run as fast as possible while using the least possible resources. Those tricks were discovered either through long cycles of R&D or through the inventiveness of your far-above-average coders. (Usually both.) If someone got the source code, they could copy those techniques and write their own game engine that would compete with yours. Your rendering tricks and techniques were like the "secret formula" for Coke. (Or would be, if all cola didn't taste the same to me.) It was the thing that gave your company value and allowed you to stand out in the market.
But now? Those days are mostly over. Everyone knows how to do this stuff. The industry has largely settled on a small number of core techniques and those ideas have been pretty well explored and documented. Game colleges are pumping out folks that can already wrap their heads around the stuff you need to turn art assets into polygons on screen. That's not to say there aren't secrets at all, but there are fewer of them and they don't matter as much. If I come up with some trick that lets my game engine push twice as many polygons (unlikely) it's not going to wow the audience today the way it did back in 1996. In fact, they probably won't even notice. If you're really interested in making your game pretty then it's far more important to hire talented artists and make sure they have a clear artistic vision. Giving them more polygons will make their job a bit easier, but it won't make them better artists.
Today the value of a game engine isn't in its secret sauce of clever mathematical shortcuts and visual trickery. Today the value is in the whole. Games are now huge, complex beasts and developing them takes a lot of time. You want a stable, reliable platform that's made from code that is clear, well-documented, and free of bugs. (And Unreal Engine 4 is reportedly in great shape, code-wise.) You want built-in tools (like level editors) that are stable and easy to use. You want an engine that plugs right in to the big tool sets (like Photoshop or Blender) so people can use their favorite creative programs without jumping through a bunch of hoops or going through some annoying and highly technical conversion process. You want an engine that handles all of the various file systems you might throw at it, so your coders can write one bit of code for (say) loading a save game without needing to worry if that game is being loaded on an Xbox, a Playstation, or a PC. Ideally, you also want a bunch of tools and concepts that are common to all games but not really part of the C++ programming language. You want sound, physics, collision detection, and a clean way to handle controller inputs so you don't have to re-write your player controls every time you port the game. These things are not secrets. Any coder worth his student loans ought to be able to build any of these systems. The problem is that it takes time to do it right, and time is money.