QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2731|回复: 58

关于网络游戏的初步设想

[复制链接]
发表于 2003-9-9 23:16:54 | 显示全部楼层 |阅读模式
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&p=45974&highlight=#45974
这是我以前发的贴子,当然我现在的想法会有变化,上面的贴子就当做背景贴子吧

是这样的,现在先不要心大,不用做个真正的游戏引擎,因为一个真正的游戏引擎会包含很多东西,一个剧情脚本就很让人头疼了。所以现在的任务不是开发游戏引擎,而是先开发一个demo,比如能载入一些三维模型,然后用OpenGL显示出来,并且能让用户控制这个模型,还有是让多个人通过网络进行一些简单的交互,比如发送一些字符串什么的。
现在的基础是这样的,我开发了一个my3Dgui,虽然不是游戏引擎,但是封装了openGL的一些函数,有一定的数据管理的功能,这样要载入模型就好办一些了,不过这个可以由我负责(如果没有人对openGL感兴趣的话)。我也看过一些关于游戏编程的文章,目前也在看,有些东西有了一些概念性的了解,但是还没有真正实践过。多线程和socket编程我也看过一些,写过小的程序,交流是没问题的,但是似乎没法自己写个满意的程序。
编程方面,我觉得用C++比较好,因为面向对象的一些优良特性是非常好的,而且my3Dgui也是用C++写的。我对STL不了解,也不知道是否需要这个东东。OpenGL的硬件支持是必须的,我想现在大多数人都是用的nVIDIA的显示芯片,所以Linux下的硬件3D加速应该是有广泛性的。编译器当然是gcc,但是开发工具,我真正会用的就是Kdevelop,emacs只会用来写写文本文件,vim是基本不会用,终端里的gdb也不会,我都是用Kdevelop里的debug工具的,觉得也够用了。不知道大家的代码风格是怎样的,好像有个工具能自动统一代码风格,可惜我不会用;不过,其实只要大家能做好注释、有良好的编程习惯,也就够了。因为要通过网络协作开发,所以CVS的使用是不可避免的了,我以前还经常用,现在又忘了,不过一些基本的功能倒不是很难学。协作开发平台,国内有这些:
http://gro.clinux.org/
http://cosoft.org.cn/
http://sf.linuxforum.net/
我的my3Dgui是放在gro上的,linuxforum那个是刚开站不久的,gro是武汉自由软件协会办的,似乎名气不是很响,但是帮我走过了Linux入门阶段。他们其实都用的sourceforge。
像Makefile什么的我还不会写,都是用Kdevelop生成的。好像Kdevelop还能帮助管理项目文档。数据库我觉得可以用mySQL。
关于游戏,最终的目标是一个游戏引擎,当然希望有很多好的特性,不过这不是短期内能达到的。
我先说说近期的目标:
客户端:
使用八叉树来管理场景数据,并且每个人物的数据也放在这个八叉树里管理。
能和服务器通信,得到这些信息:
自己附近的人物(或玩家)的基本信息。
向服务器发送这些信息:
自己的行为请求,目前就是行走。

服务器端:
使用八叉树来管理人物数据。
能向一个空间范围内的所有玩家广播这些信息:
其他玩家的行为,目前只是其他玩家的行走。也许还有玩家人物模型的id,这样可以有不同的人物造型。
能接受客户端发送的数据,目前只是行为请求,这目前也只是行走的请求,然后判断这个人是否能够走到目的地,然后批准请求,然后把这个消息广播给这个玩家附近的所有玩家(也要包括这个玩家自己,这样他那就可以看到自己走动了)。
暂时还不需要做数据库操作。

所以,当前涉及的编程技术有:
C++、OpenGL、socket、多线程、一些数据结构的操作(比如链表和八叉树)
涉及的工具有:
Kdevelop、CVS,可能还要用Dia画画UML图

我的情况:
C++、openGL、八叉树等数据结构,这些我没问题
socket、多线程我不行,还有hash表(哈希表)我也不行
Kdevelop、Dia我没问题
CVS已经忘了差不多了,心里没底
发表于 2003-9-10 01:10:42 | 显示全部楼层
网络方面,可以由Magic Linux Messager Platform提供复杂、强大、高效的支持。现在很多即时通信软件都在向网络游戏方面发展,Magic Linux Messager Platform也需要提供群组游戏接口,在设计时也应充分考虑网络游戏的功能调用需求,对服务器定位、消息中转、群发、点对点、上线通知、数据网络保存等功能进行封装。

游戏方面,要突出做客户端引擎,my3DGUI向3D游戏场景、角色转换的工作量还是很大
的。特别是曲面拟和方面,可能要用到大量的高等数学知识。sjinny正在读高三,参加开
发的时间可能不多,建议结合代数、几何、物理等科目的复习,研究游戏引擎中用到的数学问题和物理模拟问题,这样可以一举两得。而对於API,可以尽量少接触。

至於服务器的方面的设计,其他相关内容和技术,可以列出来,由其他人负责。
回复

使用道具 举报

 楼主| 发表于 2003-9-10 13:13:37 | 显示全部楼层
呵呵,隔行如隔山,Fujinsan说得好天真噢~~~
曲面在游戏里是很少用的,况且在OpenGL的帮助下也并不需要太多的高数知识。
游戏开发的确涉及一些数学、物理知识,不过都不复杂,而且很多物理仿真都没有使用精确的物理公式,只是在一定的条件限定下,使用一些近似的、占用资源少的公式。电脑游戏没有你想的那么完美,呵呵
API已经没什么关系了,反正openGL常用的我基本都做了封装,游戏里要再用个显示列表功能,也不是什么复杂的事。如果不管显示子系统的效率,现有的my3Dgui加个读取.3ds文件的功能就可以做场景漫游,然后就只剩下了网络方面了。
网络游戏的客户端其实反而简单,它只是一个“表现信息”的程序,把服务器发来的信息在显示器、音响里表现出来而已。真正复杂的是服务器端,完整的服务器端还要涉及负载平衡等问题。服务器端不主要是socket编程,还有很多其他的问题。
现在不是要做一个完整的游戏,而是一个demo,一是确定下游戏的总体设计,二是了解一下大家的水平,以后分配工作就知道该怎么办了,三是验证设计并做个东东来维持我们开发游戏的热情   

Magic Linux Messager Platform是ML开发组做的?做好了吗?给点资料
什么?不会是要我们做吧??我对系统级开发可不感兴趣哦~     
回复

使用道具 举报

发表于 2003-9-10 15:30:21 | 显示全部楼层
sjinny的计划很好,也有实现的可能性,我到http://gro.clinux.org/projects/myworld/ 看了一下,也下载了my3Dgui_Demos-linux,还没有看,因此也没有发言权。
说一下我的情况:
熟练使用C++/C,学过数据结构/离散数学/编译原理/软件工程/操作系统……等等计算机系的专业课。
对linux下的编程的实践时间很短,也就是两三个月,现阶段可以用Perl/GTK+2.0编一些东东,GCC当然不是问题,Emacs用的多,vim用的很少对版本控制软件如控制源代码的RCS和进行并行版本控制的CVS有一定了解。Kdevelop我却根本没接触过,我会找资料看看
先写这么多……
回复

使用道具 举报

发表于 2003-9-10 15:52:20 | 显示全部楼层
sjinny,你的my3Dgui_Demos-linux解压缩/config/make后好像有两个错误,我不知道是什么问题,可以给我讲一讲吗?
还有,希望你能讲网络游戏项目详细分解为各个模块,每个模块由一个小组负责,再由小组分配给个人,这样对以后软件的维护和升级也有好处。
回复

使用道具 举报

 楼主| 发表于 2003-9-10 23:20:34 | 显示全部楼层
[quote:2c8ab8c80e="deaboway"]sjinny,你的my3Dgui_Demos-linux解压缩/config/make后好像有两个错误,我不知道是什么问题,可以给我讲一讲吗? [/quote]

你是指解包后make发生错误吗?那把错误提示帖出来给我看看。
my3Dgui是用Kdevelop开发的,Makefile是Kdevelop自动生成的。
我记得我是先编译后再打包的,你解包后在/my3dgui下找找,应该有个文件叫“my3dgui”的,就是编译后的可执行文件。你用终端切换到这个目录下(要在X里,还要有Mesa或安装了显卡驱动),再运行看看。

Kdevelop并不难用的,至少可以不写Makefile   
回复

使用道具 举报

发表于 2003-9-11 12:43:37 | 显示全部楼层
OK,我只是一点建议。目前编程学习活动已经初步展开,我的砖已抛,现在就等大家继续出玉了,呵呵! 预祝由sjinny负责的公社游戏项目开发组早日建立起来!

至於Magic Linux Messager Platform,目前yufei已经答应来负责进行有关工作,等他工作调动完毕,就考虑组建公社通信项目开发组的事宜。如果有意参加Magic Linux Messager Platform项目的社员可以多和交流交流。 :-)

现在就剩下网站系统开发组需要我继续进行推动了。閃~~
回复

使用道具 举报

发表于 2003-9-11 12:46:57 | 显示全部楼层
好的,我再试一试吧,不过我现在在Windows下面--好久没进Windows了 在装传奇。原因是:我没有玩过网络游戏,现在既然我们要开发Linux下的网络游戏,我总要先看看网络游戏究竟是怎么回事,都要有哪些功能。   
还有,我昨天和今天又看了CVS、套接字、数据库方面的书,感觉如果有资料的话,在linux下实现网络游戏还是可行的,就是我们有编大型游戏的经验,还要再找些资料。
回复

使用道具 举报

发表于 2003-9-11 13:01:02 | 显示全部楼层
斑竹的意思是让我们写个网络部分的demo?
deaboway我玩传奇都两年了,你可别着迷啊!   
回复

使用道具 举报

发表于 2003-9-11 13:07:03 | 显示全部楼层
哈哈,不会不会,再好玩的游戏我也只会玩两三天就没有兴趣了
回复

使用道具 举报

发表于 2003-9-11 14:14:42 | 显示全部楼层
我已经把同学的传奇拖过来了,竟然有3G,后来才发现他把补丁装错了,我又手动删了不少主要是map、wav、data下面的东东——现在我得传奇只有1g了,哈哈……清爽了许多!  
我分析了一下,发现他的主干很少,主要是map、wav、data三个文件夹占的多,难道这只是客户端?服务器端又是什么样的?
在传奇的客户端我就发现了socket等几个dll文件,很少啊……
回复

使用道具 举报

发表于 2003-9-11 14:33:57 | 显示全部楼层
是的传奇这个游戏就是这样,把大部分的内容都放在服务器上,也就是说消息和决策都有服务器来执行,这样可以避免外挂(虽然现在外挂还是很猖獗 ),但你看看石器那个大大的客户端就知道了为什么石器的外挂更无赖,不过现在我们考虑这些问题还早吧。    最后祝你短暂的传奇旅程愉快!
回复

使用道具 举报

发表于 2003-9-11 15:14:27 | 显示全部楼层
[quote:dadd25101f="sjinny"][quote:dadd25101f="deaboway"]sjinny,你的my3Dgui_Demos-linux解压缩/config/make后好像有两个错误,我不知道是什么问题,可以给我讲一讲吗? [/quote]

你是指解包后make发生错误吗?那把错误提示帖出来给我看看。
my3Dgui是用Kdevelop开发的,Makefile是Kdevelop自动生成的。
我记得我是先编译后再打包的,你解包后在/my3dgui下找找,应该有个文件叫“my3dgui”的,就是编译后的可执行文件。你用终端切换到这个目录下(要在X里,还要有Mesa或安装了显卡驱动),再运行看看。

Kdevelop并不难用的,至少可以不写Makefile   [/quote]

./configure make 时错误如下:
main.h:21:21: GL/glut.h: 没有那个文件或目录
main.cpp: In function `int main(int, char**)':
main.cpp:34: `glutInit' undeclared (first use this function)
main.cpp:34: (Each undeclared identifier is reported only once for each
   function it appears in.)
main.cpp:35: `GLUT_DOUBLE' undeclared (first use this function)
main.cpp:35: `GLUT_RGBA' undeclared (first use this function)
main.cpp:35: `GLUT_DEPTH' undeclared (first use this function)
main.cpp:35: `glutInitDisplayMode' undeclared (first use this function)
main.cpp:36: `glutInitWindowSize' undeclared (first use this function)
main.cpp:37: `glutInitWindowPosition' undeclared (first use this function)
main.cpp:38: `glutCreateWindow' undeclared (first use this function)
main.cpp:44: `glutDisplayFunc' undeclared (first use this function)
main.cpp:45: `glutReshapeFunc' undeclared (first use this function)
main.cpp:46: `glutKeyboardFunc' undeclared (first use this function)
main.cpp:49: `glutMainLoop' undeclared (first use this function)
main.cpp: In function `void display()':
main.cpp:61: `glutSwapBuffers' undeclared (first use this function)
main.cpp: In function `void keyboard(unsigned char, int, int)':
main.cpp:83: `glutFullScreen' undeclared (first use this function)
main.cpp:96: `glutPostRedisplay' undeclared (first use this function)
main.cpp: In function `void init()':
main.cpp:250: warning: deprecated conversion from string constant to `char*'
main.cpp:267: warning: deprecated conversion from string constant to `char*'
main.cpp:341: warning: deprecated conversion from string constant to `char*'
make[3]: *** [main.o] Error 1
make[3]: Leaving directory `/root/now/my3dgui_demo_1-0.1_1.7/my3dgui-0.1/my3dgui
'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/now/my3dgui_demo_1-0.1_1.7/my3dgui-0.1/my3dgui
'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/now/my3dgui_demo_1-0.1_1.7/my3dgui-0.1'
make: *** [all] Error 2


我想主要原因是“main.h:21:21: GL/glut.h: 没有那个文件或目录”,不知你装过什么库或者开发工具,我没有的。
此外,我找过了,并没有找到可执行文件my3dgui,好像你并没有编译。我下载的是你的my3dgui_demo_1-0.1_1.7
回复

使用道具 举报

发表于 2003-9-11 15:16:37 | 显示全部楼层
[quote:e2d345ac97="rocklgk"]是的传奇这个游戏就是这样,把大部分的内容都放在服务器上,也就是说消息和决策都有服务器来执行,这样可以避免外挂(虽然现在外挂还是很猖獗 ),但你看看石器那个大大的客户端就知道了为什么石器的外挂更无赖,不过现在我们考虑这些问题还早吧。    最后祝你短暂的传奇旅程愉快![/quote]

没办法,只好再找服务端来看看了。
回复

使用道具 举报

 楼主| 发表于 2003-9-11 19:34:03 | 显示全部楼层
sorry,我用了glut:
http://www.rpmfind.net/linux/rpm2html/search.php?query=glut&submit=Search+...

各位,我们目前的开发任务不算复杂,因为不需要考虑游戏的内容,只是先初步进行尝试,获得一些经验。游戏也是程序,不用担心的~~
这里有一些游戏开发站点:
http://cgd.pages.com.cn/cgd/
http://cgd.pages.com.cn/cvbb/
http://www.gameres.com/
你们到里面看看吧。目前我在思考一些具体的问题。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-9 03:14 , Processed in 0.044502 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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