"Imagine the kinds of amazing new software that could be created in alternative cultural environments."
Game development - looking across the aisle from the Linux world - is such an insanely backwards place. Everyone reinvents everything, most developer shops refuse to even use the standard library implementation of whatever compiler they are using, and the entire process is a grindhouse for millions of lines of code, thousands of 3D models, textures, shaders, music, and dialog and all of it often never even sees the l…
1. We don't re-invent everything, but the hardware keeps getting better and we want to take advantage of it. To do so requires rewriting large portions of code. It is only because the basic hardware capabilities everyone has these days are pretty good, that using an engine not designed for your game has become so much more viable. Previously you'd build the engine to fit the game in order to get the performance you expect.
Shader's for example went through a massive upheaval when we changed from fixed function to custom, and now compute shaders have changed things again. Additionally there are always new algorithms presented each year which produce better results, which we must have!
2. Code that works well in an event based system does not necessarily work well when you are running it 60 times a second. This is why companies sometimes go in and replace standard functionality. We don't want to, but to get the speed everyone expects, we have to.
3. Models, textures, animations, dialog and so on are data, which the computer doesn't really understand. Where we see a person it sees a triangle mesh, or where we see signs of a bloody battle it just sees red pixels. This semantic mismatch is the biggest problem in the industry today, and makes re-usability incredibly hard. Manpower is usually the only way to overcome this, with people spending months on a single character model. Additionally better tools are always welcome but the industry has stalemated a bit in this regard.
Generally animation is still best imported from real life, EA for example have an entire building devoted to just motion capture [1] with over 100 cameras.
4. Many old games are still available on GOG and other websites, so these companies still make money from them which likely influences their decision to not release source code. Console games also are restricted by proprietary console-only APIs.