title: Game Architecture
body: <p>I have a question about a XNA game I'm making, but it is also a generic question for future games. I'm making a Pong game and I don't know exactly what to update where, so I'll explain better what I mean. I have a class Game, Paddle and Ball and, for example, I want to verify the collisions between the ball with the screen limits or the paddles, but I come across 2 approaches to do this:</p>
  
  <p><strong>Higher Level Approach</strong> - Make paddle and ball properties public and on the Game.Update check for collisions?</p>
  
  <p><strong>Lower Level Approach</strong>- I supply every info I need (the screen limits and paddles info) to the ball class (by parameter, or in a Common public static class) and on the Ball.Update I check for collisions?</p>
  
  <p>I guess my question in a more generic way is:</p>
  
  <p>Does an object need to know how to update and draw itself, even having dependencies from higher levels that somehow are supplied to them?</p>
  
  <p><strong>or</strong></p>
  
  <p>Is better to process it at higher levels in Game.Update or Game.Draw or using Managers to simplify code?</p>
  
  <p>I think this is a game logic model question that applies to every game. I don't know if I made my question clear, if not, feel free to ask.</p>