用python来开发webgame服务端(1)[通俗易懂]

用python来开发webgame服务端(1)[通俗易懂]http://ciniao.me/article.php?id=9 刺鸟原创文章,转载请注明出处    在开始之前,先简单描述一下项目的特点:我要实现的是一个mmorpg的webgame,地图上需要看到其他的玩家,战斗系统采用半回合制的模式,所谓的半回合制,即是:采用回合制的画面布局,友方和敌方分列左右,但是战斗的中途,其他的玩家可以及时的随时插入这场战斗。当然,作为一款rpgGa

大家好,又见面了,我是你们的朋友全栈君。

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.interface3.6.4py2.6win32.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.     #客户端断开连接
  9.     def connectionLost(self,reason):
  10.         print ‘Lost Client’
  11.     
  12.     #收到客户端发送数据
  13.     def dataReceived(self, data):
  14.         print ‘Get data:’ + str(data)
  15. if __name__==‘__main__’:
  16.     f = Factory()
  17.     f.protocol = gameSocket
  18.     reactor.listenTCP(5200,f)
  19.     print ‘server started…’
  20.     reactor.run()



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


telnet 127.0.0.1 5200


   
用python来开发webgame服务端(1)[通俗易懂]




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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138799.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中级JAVA:简单介绍下Ajax「建议收藏」

    中级JAVA:简单介绍下Ajax「建议收藏」首先Ajax是AsynchronousJavaScriptandXML的全称,Asynchronous是异步的意思,这跟传统的web不同。什么是同步什么是异步?同步是发送方发送数据之后,必须等接收方接收数据做出回应之后,才可以进行下一步。异步则是发送方发送数据之后不需等接收方做出回应,可以进行下一步操作。.

    2022年8月26日
    2
  • 教你win10系统显卡驱动安装失败的解决方法【系统天地】

    教你win10系统显卡驱动安装失败的解决方法【系统天地】我们日常在对电脑的使用过程中,经常都会遇到这样或那样的问题。比如说win10系统显卡驱动安装失败该怎么办呢?别着急,还有小编在呢?接下来小编就来告诉大家win10电脑系统显卡驱动安装失败怎么解决。详细教你win10系统显卡驱动安装失败怎么办:方法一,删除之前的显卡驱动文件重新安装1,首先,右键点击“此电脑”,菜单栏选择“管理”。2,进入计算机管理界面后,点击“设备管理器”,然后在界面右侧展开“显示适配器”选项,并右键点击显卡驱动程序,菜单栏选择“属性”下一步。3,点击“卸载设备”。4,显卡驱动程

    2022年5月22日
    33
  • 我是如何学习和工作的(1) – 番茄工作法(1)[通俗易懂]

    我是如何学习和工作的(1) – 番茄工作法(1)[通俗易懂]我是如何学习和工作的(1) – 番茄工作法(1)

    2022年4月21日
    45
  • ActiveX 部件不能创建对象: ‘scripting.FileSystemObject’

    ActiveX 部件不能创建对象: ‘scripting.FileSystemObject’解决方法:1.首先,是不是从来都是这种情况,如果只是偶尔的,一会儿是,一会儿不是,问题就不好办。如果是本身就有问题,那就是“scrrun.dll”文件未注册。使用regsvr32scrrun.dll就可以2.VB里用setfso=CreateObject("Scripting.FileSystemObject")asp里边用setfso=Serv…

    2022年7月14日
    17
  • 蓝桥杯算法比赛题目_蓝桥杯一般大几参加

    蓝桥杯算法比赛题目_蓝桥杯一般大几参加欢迎回到:遇见蓝桥遇见你,不负代码不负卿!前言:提到深度优先搜索(DFS),我们很容易就会想到广度优先搜索(BFS),它们两合在一起成为一个搜索专题,今天笔者先把DFS讲清楚,BFS的内容留在下一章详细讲解。OK,废话不多说,走着…先送你一朵小红花…一、引入:深度优先搜索(DFS)这块内容很重要哦,为了方便大家理解,先举一个(来自胡凡、曾磊老师编写的《算法笔记》一书)的栗子。举个栗子:设想我们现在以第一视角身处一个巨大的迷宫当中,没有上帝视角,没有通..

    2025年6月19日
    0
  • 朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)…[通俗易懂]

    朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)…[通俗易懂]朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)…

    2022年4月20日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号