我是大学一年级学生,正在攻读计算机科学学位... 过去几年我编写了很多程序,但是最近我开始更多地从理论上思考如何组织代码、设计模式、语言的差异等等。
我有一个 Java 类,所以我放弃了 C + + 的研究/开发,转而使用 Java 和 JOGL (JavaOpenGL)。太棒了!但这不是重点。
我想做一个小小的角色扮演游戏,但是这个问题确实适用于任何类型的游戏。您如何以一种结构化的方式组织游戏对象,比如模型-视图-控制器模式?它看起来是一个令人惊奇的模式,非常广泛地使用,并且非常有意义,但是我在找出如何实现它方面遇到了麻烦。
例如,我需要跟踪 GL 对象,以便将其绘制到屏幕上。我必须拥有实现 MouseListener、 MouseMotionListener、 MouseWheelListener 和 KeyListener 的类(或者一个类,一个一体化的输入管理器)。我必须把我的游戏数据放在所有这些不同的类可以访问和修改它的地方; 如果有人按下键盘上的一个按钮,输入管理类需要以某种方式执行键被映射到的动作; 当需要绘制一个框架时,图形类需要找到一种方法来循环遍历所有不同的“东西”并绘制它们。
我最大的问题是 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