游戏服务端C/C++与脚本语言(php,Lua,Squirrel)共服务

星期五, 2012-08-31 | Author: Lee | webgame, 游戏开发 | 6,814 views

前两年一直用java做页游的服务端编程,也没有想过对应的语言混合编程,毕竟java可以一种搞定,效率上也还不错.
现在就职的技术老大以前是做客户端游戏出身的,c/c++功力比较牛,技术上就采用 c + Squirrel(一种类似Lua的脚本),刚好在网上看到有人提出为什么要脚本加C,简要回答记录下.

实际上只要底层通信和数据层做好对应的框架后(c封装并提供接口),游戏开发的关键还主要在 对策划功能的理解和实现,即功能实现的设计方案,主要业务逻辑的处理,偶尔也要呼唤底层c的支持而已. 个人的一点认识.

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

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

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

3.类似的模式还有:Game服务器中内嵌Lua;
选PHP而不是Lua是由于PHPer比Luaer多吧,而且库比较多;
另外,PHP不如Lua易于嵌入,而通过协议相互连接脚本和Game服务器这种方式的优点就是 实现游戏逻辑的脚本和Game服务器独立开来,通过协议(如FastCGI)连接并交互。
php只负责处理一些逻辑,通过fsocket去和c打交道,具体的一些大的数据还是交给c去处理,这样效率高点。返回给php,显示出来即可。

Tags: , , , , , ,

文章作者: Lee

本文地址: https://www.pomelolee.com/1007.html

除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址

一条评论 to 游戏服务端C/C++与脚本语言(php,Lua,Squirrel)共服务

Kayo
2012 年 09 月 08 日

个人只学过c和php,c功能强大,php灵活!

Reply

Leave a comment

Search

文章分类

Meta