刺鸟原创文章,转载请注明出处
在开始之前,先简单描述一下项目的特点:我要实现的是一个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安装即可。
测试是否安装成功:
在开始之前,先简单描述一下项目的特点:我要实现的是一个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
点击(此处)折叠或打开
C:\>cd Python26\Scripts
C:\Python26\Scripts>easy_install.exe zope.interface-3.6.4-py2.6-win32.egg
安装完毕。接下来写一最简单的个socket的服务器:
点击(此处)折叠或打开
- from twisted.internet.protocol import Factory,Protocol
- from twisted.internet import reactor
- class gameSocket(Protocol):
- #有新用户连接至服务器
- def connectionMade(self):
- print 'New Client'
-
- #客户端断开连接
- def connectionLost(self,reason):
- print 'Lost Client'
-
- #收到客户端发送数据
- def dataReceived(self, data):
- print 'Get data:' + str(data)
- if __name__=='__main__':
- f = Factory()
- f.protocol = gameSocket
- reactor.listenTCP(5200,f)
- print 'server started...'
- reactor.run()
你没看错,在python的世界里,一切就是这个简单,这样就实现了一个socket服务器,监听5200端口,我们来运行它试试,看能否正常工作,作为现阶段的socket客户端,最简单的当然就是telnet了: