QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2750|回复: 47

网络游戏的模块化讨论

[复制链接]
发表于 2003-9-10 23:33:16 | 显示全部楼层 |阅读模式
目前我只想到这些:

一个仿真模块。说“仿真”就是说,游戏世界里的一切,都存储在这个模块里,比如人物、物品等。

一个显示子系统。把仿真模块里的游戏世界在显示器上显示出来。

一个声音子系统。把仿真模块里的游戏世界里的一些声音播放出来。

一个网络子系统。负责维护和服务器或客户端之间的网络连接(不过不一定要用TCP,也许也可以用UDP)。再把socket这些封装一下,让我们这些不懂网络的人也能使用网络。

一个交互设备子系统。负责响应用户设备的一些操作,比如当用户按下了键盘上的一个组合键,就这个模块就会调用对应的一个函数进行响应。用这个模块可以实现用户操作的热键的定义。

一个数据库子系统。负责存取数据,所有的数据存取都由这个模块负责,包括对象的保存。

具体的没子细想过,大家一起来讨论讨论吧。

目前,显示子系统已经有了基础,工作量并不大。其他子系统还是一片空白。
发表于 2003-9-11 09:58:34 | 显示全部楼层

Re: 网络游戏的模块化讨论

[quote:ca8825560f="sjinny"]目前我只想到这些:

一个仿真模块。说“仿真”就是说,游戏世界里的一切,都存储在这个模块里,比如人物、物品等。

一个显示子系统。把仿真模块里的游戏世界在显示器上显示出来。

一个声音子系统。把仿真模块里的游戏世界里的一些声音播放出来。

一个网络子系统。负责维护和服务器或客户端之间的网络连接(不过不一定要用TCP,也许也可以用UDP)。再把socket这些封装一下,让我们这些不懂网络的人也能使用网络。

一个交互设备子系统。负责响应用户设备的一些操作,比如当用户按下了键盘上的一个组合键,就这个模块就会调用对应的一个函数进行响应。用这个模块可以实现用户操作的热键的定义。

一个数据库子系统。负责存取数据,所有的数据存取都由这个模块负责,包括对象的保存。

具体的没子细想过,大家一起来讨论讨论吧。

目前,显示子系统已经有了基础,工作量并不大。其他子系统还是一片空白。[/quote]


各个模块写的太简单了吧,尤其是仿真模块,因为好多模块都是要基于它的,大家都没有搞过游戏的经验,模块分工是明白了,但还是不知道应该怎么做,或是象斑竹那样,不知道还少些什么(个人认为应该还有补充的模块),老大是不是该就各个模块相应的找些资料让大家看看,了解努力的方向,不至于抓瞎。我在公司做的就是网络这部分,但怕自己能力有限,一个人搞不来,多个人更方便点,     
回复

使用道具 举报

 楼主| 发表于 2003-9-11 12:46:44 | 显示全部楼层
http://www.gameres.com/
这里有些资料

仿真模块,其实并不复杂。我举个简单的例子:
使用一个八叉树,把游戏里的人物(都是一些对象)放进八叉树。每个人物对象都有一些方法可以调用,比如moveTo (int x, int y, int z);当网络模块收到客户端的一个消息,要求移动到A(坐标为(a,b,c))点后,网络模块会把这个操作交给仿真模块,然后客户端所对应的那个人物对象就被调用了moveTo (a, b, c);然后仿真模块就把这个人物"正在某个方向移动"的消息发给所有能看到这个人物的其他人物,这个过程中仿真模块又会调用网络模块把消息通过网络广播出去。
对于仿真模块来说,它要给某个人物发送消息,只是调用这个对象的一个方法,比如send(void* data);仿真模块不会调用net.send(IP,Port,data)这样的函数。网络模块也不会去根据收到的消息自己去调用某个仿真模块里的对象的方法。
回复

使用道具 举报

发表于 2003-9-11 13:02:44 | 显示全部楼层
一个月后我还要考高程,最近一个月的计划为:
上午:看linux方面的书,查找linux下编程的资料;
下午:上机、上网、查资料;
晚上:复习操作系统、数据结构、数据库、软件工程等课程,准备考试。

对各个模块的划分,我得观点:
1、“一个显示子系统。把仿真模块里的游戏世界在显示器上显示出来。
一个声音子系统。把仿真模块里的游戏世界里的一些声音播放出来。”
可以合为一个。
2、大的方面,网络游戏首先应分为C/S:显示子系统、声音子系统和交互设备子系统等应属于C,其他属于S;
3、我可以负责网络模块或者数据库模块,不过我还需要一些人,本来我有同学可以帮我,可惜他们要考研   
回复

使用道具 举报

发表于 2003-9-11 14:57:00 | 显示全部楼层
sjinny,现在可以考虑在http://gro.clinux.org/或http://cosoft.org.cn/建立CVS,还有,你在https://gro.clinux.org/projects/myworld/上的cvs我不能设cvsroot,因为我没有SSH2--仅仅项目参与者才可以通过这个方法来访问CVS树,在客户端必须安装SSH2。输入替代模块名 和 开发者用户名,然后再输入分配给你的密码。我的qq:77337595
回复

使用道具 举报

 楼主| 发表于 2003-9-11 19:41:28 | 显示全部楼层
我的QQ:48431643
你可以下载my3dgui.tar.gz,里面的内容和CVS里是一样的。或者在 CVS页面的右边有这个:
仓库历史记录

此项目目前没有CVS历史记录。

浏览CVS树

你可以通过浏览 CVS树来得到此项目代码的当前状态。 你也可以看到仓库中任何文件的全部历史。

    * 浏览CVS仓库

你点那个“浏览CVS仓库”就可以从web访问CVS了。
你们在GRO上注册一下,然后告诉我用户名。
这个网络游戏叫什么名子呢?不把名子确定下来没法建项目的

的确应该把显示和声音并为一个大模块(和仿真模块在同一层次),然后在这个模块里再分成两个子模块。

其实我觉得客户端和服务器端在数据结构方面的差别不是太大的~
回复

使用道具 举报

发表于 2003-9-12 15:38:25 | 显示全部楼层
rocklgk,我们一齐负责网络这一块吧.
回复

使用道具 举报

发表于 2003-9-12 16:13:33 | 显示全部楼层
今天真是倒霉,linux的xwindows进不去,可能是我昨天装的一个字体导致的,只好重装了,又花了3个小时装乱七八糟的软件. :-(
sjinny兄我已经在http://gro.clinux.org/中注册了,用户名是deaboway--我在所有网站上的用户名都是deaboway
今天上午我到南图去借linux网络方面的书,很少,只借到了unix网络程序设计和管理,不是很好~~~~~rocklgk兄,你能留一个联系方式吗,以方便我们讨论.
我们的游戏真该有个名字了,不然不好立项 这要看我们编什么内容的东东了~
回复

使用道具 举报

发表于 2003-9-12 16:48:49 | 显示全部楼层
也许我们的网络游戏可以先叫“linux理想国”----我瞎说的,我可不擅长起名子,命名权还是给最大的赞助商吧     
现在一共有多少人声明加入这个项目阿?我所知道的就是我/sjinny/rocklgk三个人。
我初步想了一下网络方面的开发:
网络通讯不就是将客户端的操作封装后发送给服务器端,由服务器端负责处理消息及与数据库的交互,然后,服务器端再将处理后的信息和指令反还给客户端,由客户端表现出来。
其中,网络模块的任务就是提供用户操作的接口,服务器响应的接口及数据库的接口。数据传输涉及广播,多播,单播。我提议使用socket,语言使用C++,不知大家有什么意见和建议?
回复

使用道具 举报

 楼主| 发表于 2003-9-12 19:33:05 | 显示全部楼层
呵呵,我们三个就先干起来吧,以后会有更多的人加入的~~
deaboway, 你对于网络方面的理解是完全正确的。我还要补充一点,网络模块最重要的一个任务,就是屏蔽网络功能。从仿真模块的角度讲,仿真模块不是通过网络向用户发送消息,而是调用某个对象的成员方法而已,但从这一点讲,在各个对象的外部是不能分辨这个对象到底是本地的还是网络另一端的,也不能分辨是网络上同一台机器上的还是不同机器上的。对于一个对象,我们得尽量  把和网络相关的操作  在基类或尽量少继承次数的类中  封装好,这样以后再继承出新类的时候,就可以不再去管网络操作了。

我想,一个游戏的名称要看它的内容。游戏的内容往往决定了制作的难度。现在的客观情况是,我们没有策划,没有美工,没有文案人员,没有音频制作人员。我们三个都是搞程序的。所以没法有曲折的剧情、精美的画面、优美的音乐,所以RPG做不了,即时战略也做不了,剩下的主要是FPS、网络RPG这两类。如果是FPS,我想做成使用冷兵器作战的quake类游戏;如果是网络RPG,我想做成武侠网络游戏。内容都相近,所以名子可以叫:遗失的记忆。这个名子的好处是,以后可以做出多种不同的游戏,却能成为一个系列。
回复

使用道具 举报

发表于 2003-9-12 20:50:12 | 显示全部楼层
你说的我当然明白,C++作为一种面向对象语言,封装/继承/多态都是它的重要特征,我们的确要把它们都封装成类,只留几个通讯接口,不过这要详细划分几个模块间的关系,可惜这里不能帖图,我看http://cgd.pages.com.cn/cgd/develop/network/200306/ServerProg-2.htm#2.2上的这种结构就不错。
此外,我在实习的时候参加了一个IP网络视频会议系统的开发,里面有更加细致的网络模型,在什么地方可以帖图讨论呢?
还有,项目的整体创意和规划设计就先靠你了,到时候我们再讨论。
回复

使用道具 举报

发表于 2003-9-12 21:16:35 | 显示全部楼层
http://cgd.pages.com.cn/cgd/develop/network/200201/Q3ANetSpecs.htm介绍了Quake III Arena网络协议规范,如果打算编以激烈和极强的操作性而著称的FPS游戏,网络方面的开发可以借鉴之   
回复

使用道具 举报

 楼主| 发表于 2003-9-12 22:21:54 | 显示全部楼层
你把图片当做附件上传,然后看看贴子里附件的URL,然后编辑这个贴子,再把图片贴上去。
整体设计我还没开始呢,还在想法解决显示方面的问题。
回复

使用道具 举报

发表于 2003-9-13 20:27:27 | 显示全部楼层
那我们的项目要到什么时候上马?   
我想,我们将各个模块和他们间的关系定义好后,分给每个模块小组,然后每个小组的负责人再将模块用类定义好,定义好公用的接口,将每个成员函数分给组员编写。这样,各种水平的人都会有自己能胜任的工作   
回复

使用道具 举报

发表于 2003-9-13 22:06:04 | 显示全部楼层
[quote:64c8db91be="sjinny"]你把图片当做附件上传,然后看看贴子里附件的URL,然后编辑这个贴子,再把图片贴上去。
整体设计我还没开始呢,还在想法解决显示方面的问题。[/quote]

如何当做附件上传我也不知道,能不能说详细一些~~多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-9 10:46 , Processed in 0.052192 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表