title: How can you organize the code for a game to fit the MVC pattern?
body: <p>I'm a freshman in college going for my computer science degree... I've programmed plenty the last several years but just lately I've been getting more into theoretical ideas about organizing code, design patterns, differences in languages, etc.</p>
  
  <p>I have a Java class, so I've dropped my C++ research/development and moved into Java and JOGL (Java OpenGL). It's wonderful! But that's beside the point.</p>
  
  <p>I want to make a small role-playing game, but this question really applies to any sort of game. How do you organize the game objects in a way that is structured, like the Model-View-Controller pattern? It looks to be an amazing pattern, very widely used and makes a lot of sense, but I'm having trouble figuring out how to implement it.</p>
  
  <p>For instance, I need to keep track of a GL object for drawing to the screen. I have to have classes that implement MouseListener, MouseMotionListener, MouseWheelListener, and KeyListener (or one class, an all-in-one input manager). And I have to put my game data somewhere where all these different classes can access and modify it; if someone presses a button on the keyboard, the input managing class needs to somehow perform the action that the key is mapped to; when a frame needs to be drawn, the graphics class needs to find a way to loop through all the different 'things' and draw them all.</p>
  
  <p>And my biggest issue, the GUI; where does it tie into it all? It's something like the input, but not quite, and it needs to both set and get pieces of data from the actual game simulation... And complicating it even MORE is if I decide to try and add networking, which (similar to the GUI) also needs to have access to a lot of the data for modifying and reading...</p>
  
  <p>Oh, I'm just all confused. I don't know how to make all this work together in an object-oriented fashion... It's easy enough writing things that clearly fit the patterns, but when you have tons of things happening all tied to one game loop, modifying each other and the game data and so on, ... I don't even know any more. Maybe I'm just making this a bigger deal than it actually is.</p>
  
  <p>Has anyone else felt this way? Please offer some clarity to my situation so I can spend less time worrying and not knowing where to start!</p>
  
  <p>Edit: Found a nice diagram that might help me figure this all out... Source: (beware, PS file!) <a href="http://www.tucs.fi/publications/attachment.php?fname=TR553.ps.gz" rel="nofollow noreferrer">http://www.tucs.fi/publications/attachment.php?fname=TR553.ps.gz</a></p>
  
  <p>Edit2: I also like this guy's explanation of how he planned his MVC game: <a href="http://interactivesection.wordpress.com/2007/11/19/dum-de-dum-drum-my-first-mvc-game-development/" rel="nofollow noreferrer">http://interactivesection.wordpress.com/2007/11/19/dum-de-dum-drum-my-first-mvc-game-development/</a></p>
  
  <p>Edit3: Another great article!
  <a href="http://dewitters.koonsolo.com/gamemvc.html" rel="nofollow noreferrer">http://dewitters.koonsolo.com/gamemvc.html</a></p>