News for hackers. Stuff that matters.
Re:Absolute truths I unlearned as junior developer by gridlockd on Friday June 07, 2019 @10:53AM (#20125136)
> all of the business logic is encoded in one great big chain of if-statements

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.

Re:Absolute truths I unlearned as junior developer by Faark on Friday June 07, 2019 @02:29PM (#20127362)
There are certainly disadvantages. For a start, it keeps freezing my VS code :D

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.

Re:Absolute truths I unlearned as junior developer by wa1987 on Friday June 07, 2019 @01:27PM (#20126820)
Exactly, having conditionals being spread throughout the program is a great way to increase complexity.

Rules engines, statecharts and other forms of (declarative) behaviour modelling solve real problems.