QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: wq1977

关于建立一个网络游戏平台的倡议

[复制链接]
发表于 2003-12-30 22:37:20 | 显示全部楼层
看着代码觉着晕~~
wq1977, 能不能简述一下你的设计呀~   
回复

使用道具 举报

发表于 2003-12-31 09:00:44 | 显示全部楼层
看懂了一点点  wq1977最好说一下
回复

使用道具 举报

发表于 2003-12-31 09:29:03 | 显示全部楼层
兄弟,安装成功,演示的时候,怎么点不了啊?
回复

使用道具 举报

 楼主| 发表于 2003-12-31 09:31:27 | 显示全部楼层
好吧,先来说说Server端:

Server端的代码包括 src里面的 gamesrv.c 和gamesrv.h.

剩下的都是客户端的代码。

Main函数创建了两个新的进程以后杀死了自己的主进程

        杀死自己的过程是在函数daemonize里面的,这个函数负责创建一个新的进程并把它变成守护进行,然后杀死自己。

        创建新进程使用fork函数,返回值>0代表原来的进程,返回值=0代表新创建的进程。


两个新的进程都是守护进程:

一个负责处理新建的客户端进行发过来的消息。
        这个进程在main函数的调用daemonize之后创建,所作的事情就是不断的查询进程间的消息队列,处理进程间消息。
       
一个负责等待客户端连接,每一个新的连接都会创建一个新的进程。

        这部分代码在main函数的最后一个While(1)里面,这时候由于在daemonize函数里已经杀死了自己,其实已经是一个子进程中了。

        在这个死循环中你会看见一旦建立一个客户端连接,就会fork一个新的进程。


由于在Main的一开始创建了一个消息队列,所有这些进程共享这个队列。队列ID为msgqueue_id。所有的进程都可以往这个队列里面发送消息。

消息的第一个UL(前4个字节)代表消息类型(参考mymsgbuf结构)。

我是通过以下规则来辨别发往不同地方的消息。

        如果客户端进程要向主处理进程发送消息,那么消息类型固定填1(参考函数do_proxy),同时将接下来的一个mClientPid域添上自己的Pid

。主处理进程在处理完这个消息以后,如果需要发送响应,也往同样的消息队列发送消息,消息类型填这个pid。在客户端进程的主循环中,会不断的

检查1:是否有socket数据到达,2: 是否有发给自己这个pid的消息到达,如果有发往自己的消息,就把这个消息的内容写到socket里面去。参考

do_proxy的代码,在do_proxy函数中使用select并且最后一个参数为0,实现轮询(不阻塞)。

主进程处理所有消息的处理和转发,参见gamesrv_main_proc函数,这个函数被主处理进程调用,处理所有消息类型为1的消息。把消息的内容取出来,按照自定义的消息类型和结构,分别处理GS_REG_GAME_REQ..GS_TRANS_MSG的消息。在需要的时候发送响应。

客户端比较简单,在Start函数创建了一个socket,需要和Server交互的时候按照server.h定义的消息结构发送消息给Server,

在Start里增加了Idle处理函数gtk_idle_add(IdleProcess, NULL);这个Idle处理函数会不断的检测有没有来自Server的消息,如果有就处理。

如果有gnome-canvas-card方面的问题,只能一起看代码了,我也还没有很弄懂,可以在http://sourceforge.net/下载gnome-canvas-card的源代码。
回复

使用道具 举报

 楼主| 发表于 2003-12-31 09:34:24 | 显示全部楼层
wuhu兄弟,点了以后的反映是很小的(除了最后一下),你最好看一看你的终端里面有没有printf输出。呵呵,我对这个小Demo一点信心都没有,昨晚发现了好几个bug(除了功能哦),但是我会继续把它搞好。我的同学想要我作个找朋友然后一起在网上玩,这就是我的下一个目标了。
呵呵。
回复

使用道具 举报

发表于 2004-1-17 21:35:33 | 显示全部楼层
支持!早就想开设的游戏开发项目终于有了核心开发人员。

作为公社计划部的工作人员,我愿意利用春节放假的时间根据公社的条件就这个项目的开放式运做模式进行研究,以便确保这个项目的良性的可持续发展。

现在立即设立“游戏开发项目组”,任命楼主wq1977为组长,任命sjinny为副组长。请sjinny利用编程学习活动的有关资源全面协助wq1977为公社的游戏开发项目做好全面的技术准备。等我把项目运作计划制定出来后就正式开设项目开发区,服务器资源我也会积极去筹措,就看大家在技术方面的进展了。
回复

使用道具 举报

发表于 2004-1-17 22:02:56 | 显示全部楼层
呵呵,Fujinsan, 你终于现身了~
其实要研究的何只这个项目的运做模式?现在如果有人要提出一个开源项目,根本就不知如何开始:一般先得知道有没有类似的软件,但是仅靠google是不行的,这样就会出现重复开发和人才资源的分散,或者是已有资源得不到充分利用;要开发就得组建团队,但是现在又没有统一的信息集散地,只能在一些论坛里贴出自己的想法,这样对团队的组建构成了很大的阻力,而且也无法实现与国外开发人员的合作;项目的运做得不到保障也是个问题,组织纪律性得缺乏造成了开发人员的涣散,不仅是联系交流不足,还会造成开发人员意志上的涣散以至丧失开发的信息和动力,但是组织纪律性和开源软件本身开发模式的松散构成了矛盾;很多开源项目都在寂静中艰难成长,之后又在各种建议和批评中艰难跋涉,可以说参加开源项目更多的是艰难和孤独,传说中的乐趣很难找到。
今天才在困惑呢,不知道该写什么软件好,既然现在有了任命,嘿嘿,那我就看看自己能做出点什么~
回复

使用道具 举报

发表于 2004-1-17 22:14:48 | 显示全部楼层
[quote:ac47b36554="sjinny"]呵呵,Fujinsan, 你终于现身了~
其实要研究的何只这个项目的运做模式?现在如果有人要提出一个开源项目,根本就不知如何开始:一般先得知道有没有类似的软件,但是仅靠google是不行的,这样就会出现重复开发和人才资源的分散,或者是已有资源得不到充分利用;要开发就得组建团队,但是现在又没有统一的信息集散地,只能在一些论坛里贴出自己的想法,这样对团队的组建构成了很大的阻力,而且也无法实现与国外开发人员的合作;项目的运做得不到保障也是个问题,组织纪律性得缺乏造成了开发人员的涣散,不仅是联系交流不足,还会造成开发人员意志上的涣散以至丧失开发的信息和动力,但是组织纪律性和开源软件本身开发模式的松散构成了矛盾;很多开源项目都在寂静中艰难成长,之后又在各种建议和批评中艰难跋涉,可以说参加开源项目更多的是艰难和孤独,传说中的乐趣很难找到。
今天才在困惑呢,不知道该写什么软件好,既然现在有了任命,嘿嘿,那我就看看自己能做出点什么~[/quote]
问题提的好!我相信我可以找到万全的解决方案的,寻找非技术问题解决之道是我的职责所在。
回复

使用道具 举报

发表于 2004-1-17 22:17:51 | 显示全部楼层
嘿嘿,解决好这些问题,功在此项目,利在全社会呀~
回复

使用道具 举报

 楼主| 发表于 2004-1-18 00:11:37 | 显示全部楼层
对于公社来说,服务器就是最宝贵的资源,为什么公社软件社区那么多自己写的小游戏不能广泛传播开来,因为没有一个公共的服务器,没有一套统一开放的接口。

如果公社能够提供这样的服务器,只要接口足够简单清晰,相信会有很多目前已经存在的小游戏向这个平台靠拢,实现一个丰富多彩的游戏平台也不是什么遥远的目标。

目前最大的问题,就开发上来讲,我觉得
一是需要经验:成功和失败的经验,
二是需要好的领导团队:有能力有经验和项目开发经验的领导团队,
三就是需要优秀,执着而且愿意为免费和自由作出贡献的开发者。

这三样,我觉得目前公社都挺缺乏的。

另外有一点:己所不欲,勿施以人。没有谁天生有责任需要对开源项目作出贡献,所以我们不能要求别人怎么怎么样,作这样的事情,是兴趣,是爱好,是激情,是事业,但是不是责任,不是义务。

所以有兴趣的,我们欢迎,善意的批评,我们接受,恶意的攻击,我们不予理睬。我们要作的,就是坚持自己的事。

最重要的,是能坚持。在实践中学习,完善和壮大。
回复

使用道具 举报

 楼主| 发表于 2004-1-18 18:46:27 | 显示全部楼层
顺便问一下,组长有什么权限?
回复

使用道具 举报

发表于 2004-1-20 00:53:40 | 显示全部楼层
想法很好,可偶对网络游戏一窍不通,所以希望楼主把代码拿出来给大家研究一下。这样就会有很多类似的游戏了。
回复

使用道具 举报

发表于 2004-1-22 14:58:15 | 显示全部楼层
[quote:92ac9310e1="wq1977"]顺便问一下,组长有什么权限?[/quote]
目前你只有批准其他人加入“游戏开发项目组”的权限,根据你的表现将逐步提升权限(cjacker、xLoneStar现在具有论坛管理的所有权限)。

在软件设计时不要对服务器过渡依赖,由于资源有限,公社技术总监对提供服务器的项目的要求是十分严格的。过分依赖服务器的软件是不大可能在开源模式下生存多久的,毕竟服务器并不便宜。开源软件的成功就在它的低成本,低成本开发、低成本发行、低成本使用。当然,如果一个开源项目有较好的社会综合效应,或者能够培育开放模式下的产业链,公社请共创出面帮忙的话也不在话下。

过段时间我会请公社高层就游戏项目的事情开个讨论会。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-9 00:59 , Processed in 0.039235 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

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