|
|
|
|
|
by tstrimple
2004 days ago
|
|
None of your points are unique to game development. Moving goal posts and requirements changing constantly is a challenge at literally every single development job I've had. There is an eternal back and forth between what the sales team says the software can do, and what the programmers desperately attempt to account for late in the development cycle. Plenty of teams have idiosyncrasies around their tool chain, refuse to reflect on it and maintain that their project is a special case to justify all the mess. |
|
> Moving goal posts and requirements changing constantly is a challenge at literally every single development job I've had.
It is hard to describe because it sounds the same. But game development is really different because there are no fundamentals of things you care to test.
Even doing a combat sequence requires a herculean effort. You need basically the whole game running because otherwise what is the point. You fake out most of the data so your test doesn't fail when the designers decide to make combat harder. But now it ends up that pressing A defends instead of attacks because reasons and all of your combat tests now fail.
This is all fixable but it makes the cost per test of anything but the tiniest things hard enough that broad test coverage can sometimes be a determent as you end up testing what the game is now which means it will all be thrown away if your assumptions change.
Sure that can always be the case but "the sum of the lines equals the total" kind of tests are much less likely to backfire in this way.
> Plenty of teams have idiosyncrasies around their tool chain
C++ is chosen because the tooling doesn't exist outside of C++. Full stop. You have to build all the tooling in language X which when talking about 3D graphics is a huge amount of tooling.
Rust is starting to have some cool stuff but if you compare you will see there is a world of difference.
Thus if you choose not C++ you get to write C wrappers around your API and deal with all that nonsense since C++ interop is the worst in most languages.
At some point Rust will get proper C++ interop and then the gap will be smaller but for now you are giving up a ton for a slightly safer language by not choosing C++.
Also note that nearly everybody writes a huge amount of non-C++ code, they just call it a scripting language instead.