If you look at any application, you see that it consists of lots and lots and lots of logic and error checking and correcting, to determine what actions have to be performed. Like a tree, that branches out to some relatively small functions (and collects the required parameters on the way). And then those functions are actually going to do the work that has to be done.
In current games, it is the same. First you collect the states and inputs, fall very fast through a branch of the logic tree, start crunching away, and repeat until done.
So, while the layout of the program resembles lots and lots of simple, general purpose (mostly integer) logic, the actual work is done in only a small piece of the code. And that is mostly floating point streams and data structures, for current 3D games.
Like, when you want to optimize your program, you don't care at all about the efficiency of all that logic. Quite the opposite, actually: slower but better readable logic is much better to understand and maintain. But you spend your time trimming a few clocks of each iteration of those few core functions instead.
In current games, it is the same. First you collect the states and inputs, fall very fast through a branch of the logic tree, start crunching away, and repeat until done.
So, while the layout of the program resembles lots and lots of simple, general purpose (mostly integer) logic, the actual work is done in only a small piece of the code. And that is mostly floating point streams and data structures, for current 3D games.
Like, when you want to optimize your program, you don't care at all about the efficiency of all that logic. Quite the opposite, actually: slower but better readable logic is much better to understand and maintain. But you spend your time trimming a few clocks of each iteration of those few core functions instead.