http://ciniao.me/article.php?id=9

刺鸟原创文章,转载请注明出处
    在开始之前,先简单描述一下项目的特点:我要实现的是一个mmorpg的webgame,地图上需要看到其他的玩家,战斗系统采用半回合制的模式,所谓的半回合制,即是:采用回合制的画面布局,友方和敌方分列左右,但是战斗的中途,其他的玩家可以及时的随时插入这场战斗。当然,作为一款rpgGame,装备加工,NPC对话,任务逻辑等是必不可少的了。

在分析了需求以后,我为这款game的程序结构定义如下:客户端,毋庸置疑肯定是flash,服务端分为两块:一是通讯不需要很及时,但是会涉及到很多逻辑处理的模块(如:各UI窗口内的逻辑,NPC对话逻辑,装备加工等),我为此选择了PHP作为服务端,二是需要及时的通讯,但是逻辑处理相对简单的模块(如:地图模块,战斗系统,聊天等),从性能上考虑,要实现这些模块,首选的当然是C、C++等,但若选择这样太底层的语言,再加上当前的人员配置,必将意味着开发周期的增加。经过讨论,在ZengRong的建议下,决定尝试使用python(我选择的版本是2.6,以下代码均基于该版本)。

首先,要测试的是python的socket处理能力,我选择了Twisted作为网络处理库,在我的开发机(windows 2003)上安装Twisted。安装过程很easy,到pypi上找到Twisted的最新版本:http://pypi.python.org/pypi/Twisted/ 下载Twisted-11.0.0.winxp32-py2.6.msi安装即可。

测试是否安装成功:
from twisted.internet import reactor
在我的电脑上,运行该脚本后提示缺少模块:
ImportError: No module named zope.interface
到http://pypi.python.org/pypi/zope.interface 下载并安装最新的zope.interface模块:zope.interface-3.7.0-py2.6-win32.egg。好吧,也许很多新手看到这个“蛋”一样的egg文件,不知如何安装,其实很简单,你需要的有以下几步:

1:先下载并运行一个叫做ez_setup.py的脚本,这个脚本会自动到网上下载相关的安装程序,提示完成后,会在python安装目录的的scripts文件下生成几个exe可执行文件。
2:将zope.interface-3.6.4-py2.6-win32.egg放到{python安装目录}\Scripts下
3:开始->运行->CMD

  1. C:\>cd Python26\Scripts
  2. C:\Python26\Scripts>easy_install.exe zope.interface-3.6.4-py2.6-win32.egg

安装完毕。接下来写一最简单的个socket的服务器:

  1. from twisted.internet.protocol import Factory,Protocol
  2. from twisted.internet import reactor
  3. class gameSocket(Protocol):
  4. #有新用户连接至服务器
  5. def connectionMade(self):
  6. print 'New Client'
  7. #客户端断开连接
  8. def connectionLost(self,reason):
  9. print 'Lost Client'
  10. #收到客户端发送数据
  11. def dataReceived(self, data):
  12. print 'Get data:' + str(data)
  13. if __name__=='__main__':
  14. f = Factory()
  15. f.protocol = gameSocket
  16. reactor.listenTCP(5200,f)
  17. print 'server started...'
  18. reactor.run()

你没看错,在python的世界里,一切就是这个简单,这样就实现了一个socket服务器,监听5200端口,我们来运行它试试,看能否正常工作,作为现阶段的socket客户端,最简单的当然就是telnet了:
telnet 127.0.0.1 5200
   

BingGo!一切正常,但是它的处理能力,并发连接等性能如何呢?一切都还需要进一步的测试,不过我们开了个好头,不是吗?

用python来开发webgame服务端(1)相关推荐

  1. 聚播微信多开客服系统二次开发SDK服务端接口

    聚播微信多开客服系统二次开发SDK服务端接口 case HeartBeatReq: {// 客户端发送的心跳包heartBeatReqHandler.handleMsg(ctx, msgVo);bre ...

  2. python搭建客户端和服务端

    python搭建客户端和服务端 前言 一.客户端搭建 搭建过程整理 TCP客户端 2.x版本 3.x版本 UPD客户端 2.x版本 3.x版本 二.TCP服务端搭建 搭建过程整理 2.x版本 3.x版 ...

  3. C++后端开发程序员应该彻底搞懂的【libevent网络库】,libevent组件构成以及编程要领丨Linux服务器开发丨服务端编程

    90分钟搞懂libevent网络库 1. 服务端事件组成 2. libevent组件构成以及编程概要 3. memcached是如何使用libevent 视频讲解如下,点击观看: C++后端开发程序员 ...

  4. 聚播微信群控云控引擎二次开发SDK服务端对接接口

    聚播微信群控云控引擎二次开发SDK服务端对接接口 case HeartBeatReq: {// 客户端发送的心跳包heartBeatReqHandler.handleMsg(ctx, msgVo);b ...

  5. 17 SSR:使用 React.js 开发 Serverless 服务端渲染应用

    今天我想和你聊一聊怎么用 Serverless 开发一个服务端渲染(SSR)应用. 对前端工程师来说,Serverless 最大的应用场景之一就是开发服务端渲染(SSR)应用.因为传统的服务端渲染应用 ...

  6. C++ 开发SOAP服务端和SOAP客户端

    C++ 开发SOAP服务端和SOAP客户端 作者:flyfish  2012-5-12 目的:利用gSOAP自带的Calc例子 仿写一个 网络中使用计算器 客户端通过http发送xml格式的数据请求, ...

  7. 使用KBEngine开发UE4服务端——开发详解

    使用KBEngine开发UE4服务端--开发详解 1. 简述 开始正式进入开发,网络上关于开发和修改文件的文章较少,这里会记录自己开发过程中需要更改的地方和一些流程. 2. 前期的配置说明 根据前文配 ...

  8. Python 主流棋牌游戏 服务端 框架分析 原创笔记

    经测试此产品运营稳定 包含数十款房卡子游戏.俱乐部(五级权限).比赛场 客户端采用Lua脚本开发 .后端Python 看过一些棋牌产品 很多产品基于此套棋牌框架开发而来 算市面上一个主流框架 但却没有 ...

  9. 【转】使用Apache CXF开发WebServices服务端

    原地址:http://cnjava.blog.51cto.com/1208887/335630 在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apach ...

  10. grpc(3):使用 golang 开发 grpc 服务端和client

    1,关于grpc-go golang 能够能够做grpc的服务端和client. 官网的文档: http://www.grpc.io/docs/quickstart/go.html https://g ...

最新文章

  1. 一文读懂神经网络(附解读案例)
  2. 特别推荐:RHCE考试经验
  3. 嵌入式Linux学习1——Linux常用指令1
  4. 51CTO各位博友大家好!
  5. Shell 的简单常用语法
  6. Pycharm在Ubuntu14.04中的基本使用指南
  7. 红橙Darren视频笔记 自定义View总集篇
  8. 51信用卡微服务集成测试自动化探索
  9. 分布式团队中沟通引发的问题, itest 解决之道
  10. C#实现HTTP下载文件的方法
  11. 地图导航软件测试大乐,敢问路在何方?四款手机地图软件横向测评!
  12. 史上最详细的梯度下降优化算法介绍(从SGD到Adam至Lookahead)
  13. 揪出手机耗电元凶——高德地图缓存数据
  14. QT实现TCP断点传输文件
  15. Jsoup实现网络爬虫抓取数据
  16. U3d 代码修改图片的尺寸
  17. 正负数排列(用链表和数组实现)
  18. 在word2016中对图片插入题注
  19. C#蓝牙链接+传输文件
  20. 基本概念:转发和重定向

热门文章

  1. 用js企业微信推送通知
  2. 适合程序员的护眼显示器——大上科技Paperlike系列电子墨水显示器
  3. re2正则表达式引擎学习(四)
  4. 法学生民法方面的论文选题,有什么推荐吗?
  5. Rational Rose工具栏中没有参与者工具(小人图标)的解决方法
  6. win10下载日文输入法时,无法使用日文键盘的问题解决
  7. 顶级摄影师的磨皮美白利器Portraiture,支持搭配微设证件大师使用
  8. 在html里怎么在图片在添加文字,在HTML中,怎么在图片上添加文字?
  9. 回波损耗和电压驻波比
  10. 关于VS2019调试问题:进程已退出,代码为-1073741819(已解决)