如何组织游戏的代码以适应 MVC 模式?
我是一名大学新生,正在攻读计算机科学学位...在过去的几年里,我已经编写了很多程序,但最近我一直在更多地了解组织代码,设计模式,语言差异等理论思想。
我有一个Java类,所以我放弃了C++研究/开发,转而使用Java和JOGL(Java OpenGL)。太好了!但这不是重点。
我想做一个小型的角色扮演游戏,但这个问题确实适用于任何类型的游戏。如何以结构化的方式组织游戏对象,如模型-视图-控制器模式?它看起来是一个惊人的模式,使用非常广泛,很有意义,但我很难弄清楚如何实现它。
例如,我需要跟踪GL对象以绘制到屏幕上。我必须有实现MouseListener,MouseMotionListener,MouseWheelListener和KeyListener的类(或一个类,一个多合一的输入管理器)。我必须把我的游戏数据放在所有这些不同的类都可以访问和修改它的地方。如果有人按下键盘上的按钮,输入管理类需要以某种方式执行键映射到的操作;当需要绘制框架时,图形类需要找到一种方法来遍历所有不同的“事物”并绘制它们。
我最大的问题是GUI;它在哪里与这一切联系在一起?它类似于输入,但并不完全如此,它需要设置和获取实际游戏模拟的数据片段......更复杂的是,如果我决定尝试添加网络,它(类似于GUI)还需要访问大量数据以进行修改和读取...
哦,我只是很困惑。我不知道如何以面向对象的方式使所有这些协同工作......写出明显符合模式的东西很容易,但是当你有很多事情发生时,都与一个游戏循环有关,相互修改和游戏数据等等,......我甚至不知道了。也许我只是在做一个比实际更大的交易。
有没有人有这种感觉?请澄清我的情况,这样我就可以花更少的时间担心和不知道从哪里开始!
编辑:找到一个漂亮的图表,可能会帮助我弄清楚这一切...来源:(当心,PS文件!http://www.tucs.fi/publications/attachment.php?fname=TR553.ps.gz
编辑2:我也喜欢这个家伙对他如何计划他的MVC游戏的解释:http://interactivesection.wordpress.com/2007/11/19/dum-de-dum-drum-my-first-mvc-game-development/
编辑3:另一篇很棒的文章!http://dewitters.koonsolo.com/gamemvc.html