C-为什么要设计游戏服务端PHP程序与C程序相互调用?

C-为什么要设计游戏服务端PHP程序与C程序相互调用?

夜无邪 发布于 2016-11-07 字数 224 浏览 1004 回复 5

之前知道“侠客世界”游戏服务端程序使用PHP与C交互实现与客户端通信,C负责实现处理聊天频道、地图、组队什么的,为什么要这么设计?使用PHP直接与客户端交互不行吗,或者只使用C。各负责什么模块,在这些方面有什么优势?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

虐人心 2017-05-06 5 楼

目前已有几位的答案一看就是没有相关实际业务经验的同学回答的。

而且提问者提出的问题,范围界定不明显,其实提问者的问题应该拆分成两个问题:
第一个问题,为什么PHP和C在online game中在通讯层面会共存这两种语言?

这个问题的根本在于,实际业务的要求,比如以下两种应用场景:

用户登录、用户验证、用户充值接口(尤其是充值接口,更多的是类似支付宝这种平台对己方API的调用),这种场景用web语言更加合适;
需要Socket长链接的业务场景,比如聊天、同屏战斗、组队副本等,这些场景试用编译型语言更加合适;

对于online game来说,以上两种应用场景,决定了单一语言胜任起来非常吃力,甚至无法完成。

第二个问题,为什么PHP和C在online game中在语言语言层面会共存这两种语言?

使用PHP与C交互实现与客户端通信,C负责实现处理聊天频道、地图、组队什么的。

这种实现在现实中更多的是把lua绑定到C上去,用lua来做具体的业务逻辑。

临时要去打FB,回头再写!

瑾兮 2017-05-01 4 楼

类似的模式还有:Game服务器中内嵌Lua;
选PHP而不是Lua是由于PHPer比Luaer多吧,而且库比较多;
另外,PHP不如Lua易于嵌入,而通过协议相互连接脚本和Game服务器这种方式的优点大伙都知道。

夜无邪 2017-04-09 3 楼

我个人认为从语言特性,开发成本,以及项目组人员构成等方面考虑,这么设计应该是可以理解的。
C言语开发的工具运行效率高,但开发难度大,而像游戏中的聊天、地图、组队等功能其实各游戏之间的差别不会特别大,有经验的开发人员可以很容易的将别的游戏类似功能组件移植过来使用。
php言语开发的功能运行效率稍差,但开发成本要低得多,调整灵活,用php来处理一下业务逻辑是非常适合的。
另外像我们公司的游戏的一些对外接口,如跟平台之间的交互接口,我们平台部这边也一般是建议他们使用php来进行开发的。
对于做架构,我个人认为言语并不是最重要的,系统的瓶颈往往也不是因为某种语言,可以根据不同的需要使用不同的语言来进行灵活处理。
以上为我个人拙见。

晚风撩人 2017-03-21 2 楼

php只负责处理一些逻辑,通过fsocket去和c打交道,具体的一些大的数据还是交给c去处理,这样效率高点。返回给php,显示出来即可。

夜无邪 2016-12-15 1 楼

用c是为了能够使用长连接。php只负责业务逻辑,至于不直接用c开发,应该是考虑到业务的复杂度和开发成本吧。