我是一名大学新生,正在攻读计算机科学学位......过去几年里我已经编写了很多代码,但最近我开始更深入地研究有关代码组织、设计模式、语言差异等方面的理论知识。
我正在上Java课程,所以我已经放弃了C++的研究和开发,并转而学习Java和JOGL(Java OpenGL)。这很好!但这不是重点。
我想制作一个小型角色扮演游戏,但这个问题适用于任何类型的游戏。如何将游戏对象组织成结构化的形式,例如Model-View-Controller模式?它看起来是一个非常棒、被广泛使用并且非常合理的模式,但我很难想出如何实现它。
例如,我需要跟踪一个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