Oh, and lest we forget: game logic does not stop once you figured out at a high level that X has to happen. It still needs to set up and drive all the presentation that goes with it on top of the pure bookkeeping. The subtleties of this can be really amazing. To just name some trivial things that come to my mind: doors and elevators should stop when players stand in the way, players and objects should move with the platforms they're standing on (harder than it looks, esp. in 3D), enemies can't just be deleted from memory when their health goes below 0 (but their hitboxes might still go away immediately) and so on.
Yup, a lot of "game logic" is in fact bookkeeping, i.e. self-inflicted complexity. It's not necessary, but is what happens when you overdo it (though IMO it's more often a symptom of using more frameworks and libraries than less).