Somewhere there is a balance, but for business purposes it leans closer to the "working ugly hack" side.
Somewhere there is a balance, but for business purposes it leans closer to the "working ugly hack" side.
There is no next release, maintenance, new features etc. Once Balloon Pirates is done it ships, and is never touched again.
There is also the side issue of game engines which many teams reuse from game to game so maybe that doesn't really apply.
One of the big lies of OO design is that you can manage that kind of complexity better with objects/classes, that you should factor out functionality into tiny pieces, and so on.
Unless you have written (and debugged!) an actual video game, you should spare your judgement.
Rules engines, statecharts and other forms of (declarative) behaviour modelling solve real problems.
But Modders also have a hard time adding features if logic for all items is in a single function. This seemed exactly what OOP / interfaces were designed for.
Also I'd love to see Terraria's actual source code. The de-compiled versions hat a ton of stuff like
> if (num1 != 109 && num1 != 110 && (num1 != 113 && num1 != 115) && (num1 != 116 && num1 != 117 && num1 != 118)) return;
or
> else if ((int) Main.tile[i, j].type == 19) Type = 94;
20x in a row, with obviously different numbers. Hope the actual code was more readable and just lost a lot in translation. But many more readable styles should be visible in IL (enums, constants, etc). There might also have been some obfuscation (can't remember), but couldn't have a strong one since names were preserved.
But yes, there are also advantages to their style of code. And in the end they delivered a product and that's all that counts.