It seems like the status quo in the games industry is to write most software in-house, maybe excluding the engine if you use one of the dozen or so big ones. Before working here I was mostly an open-source developer, so this mindset seems downright crazy to me. Is there any good way we can all stop building things like log viewers, network diagnostics, and patching systems?


We can stop reinventing the wheel by... ceasing to reinvent the wheel. Use external libraries, game engines, etc.

I get the sense that people do reinvent the wheel to:

  • Avoid copyrights, royalties, etc on libraries or borrowed code
  • Avoid paying for a game engine (for a full on AAA game, this can be enormously expensive)
  • Maintain intimate familiarity with the entire codebase--adding external libraries, linking to game engines, etc just means more code to become familiar with and possibly maintain
  • Writing all your code yourself means that you can optimize it specifically for your game
  • That code can then be licensed to others if desired, reuse it for other projects, etc while you maintain proprietary control
| improve this answer | |
  • \$\begingroup\$ I agree with all that! I myself had to re-invent some stuff to avoid patented code, also I had to avoid paying for a game engine, and finally, I often have problems that are not my fault (like my current game that has 3 defects, one is that the physics engine has counter-intuitive behavior... this mean I will need to read its source deeply... the other is that the mixer seemly has some arbitrary way to choose priorities, and finally, the game engine itself with map editor, randomly segfaults when I unload a map... Again this mean code sweeping...) \$\endgroup\$ – speeder Jul 21 '10 at 22:13
  • \$\begingroup\$ The question is more a social one, how can we encourage that? Are there, for example, tools for patching that are game-agnostic? There are some underlying algorithms and libraries for data manipulation (rsync algorithm, zlib) but I don't know of anything that goes as far as a UI. \$\endgroup\$ – coderanger Jul 22 '10 at 2:52
  • 1
    \$\begingroup\$ You've missed out actually being able to wade in and fix problems in libraries during release crunch without having to factor in a third party's turnaround time on their closed source, and to optimise the libraries for your precise use case. Those can be pretty valuable. \$\endgroup\$ – moonshadow Aug 8 '10 at 11:00

It depends. I think there is actually a fair amount of middle-ware out there, that gets used, ... if you are willing to pay of it.

At the same time sometimes it is easy to hack something to get really fast without that many external dependencies, if the scope is small.

I think on the highend, you have to compare companies like EA and Ubisoft to other large software companies, like Apple, Google, Facebook, what have you.

They all write a very large amount of custom code, when there are existing alternatives, because they want to get a competitive advantage.

As @Sean James said there are legal reasons and host of other reasons, but I think even if there were no road blocks, inventive software companies would still develop custom alternatives to common existing software components if they thought they could make them better.

However I also agree that there is always room to start some projects we all could benefit from. For instance, I think we need to replace COLLADA with something much simpler that is JSON based. Maybe something that only handles arbitrary meshes, but nothing else. I think we really need a better mesh format.

  • \$\begingroup\$ There's not only the competetive advantage to writing your own 'middleware' but it also means in-house support. That can come in handy at times of major crisis, or when a bug is impossible to reproduce without handing over your entire game. \$\endgroup\$ – Kaj Jul 29 '10 at 5:48
  • \$\begingroup\$ Not too mention if the game engine company gets bought, or their code is pirated, the list goes on. Depending on someone else code is a liability that can be hard to quantify it there are not many users, which is the case with a lot of specialist middleware \$\endgroup\$ – Jonathan Fischoff Jul 29 '10 at 5:50
  • \$\begingroup\$ I don't think custom code will every go away, but the lack of a workable format(s) for sharing data is not helping the development of tools. \$\endgroup\$ – Jonathan Fischoff Jul 29 '10 at 5:54
  • \$\begingroup\$ A lot of time, at my company at least, people would rather re-build stuff in house just because headcount is already budgeted for and buying commercial middleware isn't (and its easier to ask programmers to work 10 hour days than it is to get HQ to authorize big capital expenses). Wouldn't the benefits from freer collaboration be a bigger boon than the competitive advantage from proprietary tools? \$\endgroup\$ – coderanger Jul 29 '10 at 6:16
  • \$\begingroup\$ I think it can be improved, but it think it is a problem that extends beyond game companies. There is much less code reuse then there should in general, not just with games. On a personal level I would love to help get some projects going. \$\endgroup\$ – Jonathan Fischoff Jul 29 '10 at 6:21

Is there any good way we can all stop building things like log viewers, network diagnostics, and patching systems?

In my experience, these things are treated as simple extras that can be bolted on alongside your 'real' programming. Of course, they turn out to be far from simple and far from 'extra', being complex and important parts of the system, but by then there's already too much investment in the bespoke version.

Are there good open-source or commercial libraries that provide this type of functionality? I am not sure there are, and until someone steps up and provides one, it'll stay this way. The business developers often aren't able to produce libraries that are suitable for games ("what, you mean you can't completely remove all the calls in a Release build?!") and game developers are often uninterested in making this sort of thing as a standalone package when they have a game to be getting on with.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.